Merge "(bug 31313) Clarify watchlist preference messages"
authorReedy <reedy@wikimedia.org>
Sat, 7 Jul 2012 20:56:35 +0000 (20:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 7 Jul 2012 20:56:35 +0000 (20:56 +0000)
460 files changed:
.jshintignore [new file with mode: 0644]
.jshintrc [new file with mode: 0644]
CREDITS
README
RELEASE-NOTES-1.19 [deleted file]
RELEASE-NOTES-1.20
api.php
docs/export-0.7.xsd
docs/export-demo.xml
docs/hooks.txt
includes/Article.php
includes/AuthPlugin.php
includes/AutoLoader.php
includes/ChangeTags.php
includes/ChangesList.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Exception.php
includes/Export.php
includes/FileDeleteForm.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/Linker.php
includes/MagicWord.php
includes/Namespace.php
includes/OutputPage.php
includes/Pager.php
includes/ProtectionForm.php
includes/RecentChange.php
includes/Revision.php
includes/Sanitizer.php
includes/ScopedPHPTimeout.php
includes/Setup.php
includes/SiteConfiguration.php
includes/SiteStats.php
includes/SkinLegacy.php
includes/SkinTemplate.php
includes/SpecialPage.php
includes/SpecialPageFactory.php
includes/SquidPurgeClient.php
includes/Title.php
includes/User.php
includes/Wiki.php
includes/WikiPage.php
includes/actions/HistoryAction.php
includes/actions/RevisiondeleteAction.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiComparePages.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiEmailUser.php
includes/api/ApiExpandTemplates.php
includes/api/ApiFileRevert.php
includes/api/ApiImport.php
includes/api/ApiLogin.php
includes/api/ApiLogout.php
includes/api/ApiMain.php
includes/api/ApiMove.php
includes/api/ApiOptions.php
includes/api/ApiParamInfo.php
includes/api/ApiPatrol.php
includes/api/ApiProtect.php
includes/api/ApiPurge.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryInfo.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryExternalLinks.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryIWBacklinks.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryImages.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLangBacklinks.php
includes/api/ApiQueryLangLinks.php
includes/api/ApiQueryLinks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryProtectedTitles.php
includes/api/ApiQueryQueryPage.php
includes/api/ApiQueryRandom.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySearch.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryStashImageInfo.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiQueryWatchlistRaw.php
includes/api/ApiRollback.php
includes/api/ApiTokens.php
includes/api/ApiUnblock.php
includes/api/ApiUndelete.php
includes/api/ApiUpload.php
includes/api/ApiWatch.php
includes/cache/HTMLFileCache.php
includes/cache/SquidUpdate.php
includes/dao/IDBAccessObject.php [new file with mode: 0644]
includes/db/Database.php
includes/db/DatabaseIbm_db2.php
includes/db/DatabasePostgres.php
includes/db/DatabaseUtility.php
includes/db/IORMTable.php
includes/db/ORMIterator.php [new file with mode: 0644]
includes/db/ORMResult.php
includes/db/ORMTable.php
includes/diff/DifferenceEngine.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/backend/FileBackendStore.php
includes/filerepo/backend/SwiftFileBackend.php
includes/filerepo/backend/TempFSFile.php
includes/filerepo/backend/lockmanager/LSLockManager.php
includes/filerepo/backend/lockmanager/LockManager.php
includes/filerepo/backend/lockmanager/LockManagerGroup.php
includes/filerepo/backend/lockmanager/MemcLockManager.php [new file with mode: 0644]
includes/filerepo/file/LocalFile.php
includes/installer/Installer.i18n.php
includes/installer/PostgresUpdater.php
includes/job/Job.php [new file with mode: 0644]
includes/job/JobQueue.php [deleted file]
includes/libs/CSSMin.php
includes/logging/LogEventsList.php
includes/logging/LogFormatter.php
includes/logging/PatrolLog.php
includes/mobile/DeviceDetection.php
includes/objectcache/DBABagOStuff.php
includes/objectcache/MemcachedPeclBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderLanguageDataModule.php
includes/search/SearchEngine.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialLog.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPopularpages.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
languages/Language.php
languages/Names.php
languages/messages/MessagesAf.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAz.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCu.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 [new file with mode: 0644]
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFit.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFur.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGl.php
languages/messages/MessagesGn.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHe.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIlo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKw.php
languages/messages/MessagesKy.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLn.php
languages/messages/MessagesLt.php
languages/messages/MessagesLtg.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMg.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNan.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSe.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTg_latn.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTo.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVi.php
languages/messages/MessagesVot.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/attachLatest.php
maintenance/changePassword.php
maintenance/checkAutoLoader.php
maintenance/checkBadRedirects.php
maintenance/checkImages.php
maintenance/checkSyntax.php
maintenance/checkUsernames.php
maintenance/cleanupPreferences.php [new file with mode: 0755]
maintenance/cleanupSpam.php
maintenance/convertLinks.php
maintenance/convertUserOptions.php
maintenance/copyFileBackend.php
maintenance/createAndPromote.php
maintenance/deleteArchivedFiles.inc
maintenance/deleteArchivedFiles.php
maintenance/deleteArchivedRevisions.php
maintenance/doMaintenance.php
maintenance/formatInstallDoc.php
maintenance/importSiteScripts.php
maintenance/install.php
maintenance/language/generateCollationData.php
maintenance/language/messages.inc
maintenance/locking/LockServerDaemon.php
maintenance/parse.php
maintenance/proxy_check.php
maintenance/purgeParserCache.php
maintenance/purgeStaleMemcachedText.php
maintenance/runJobs.php
maintenance/storage/checkStorage.php
maintenance/term/MWTerm.php
maintenance/updateCollation.php
resources/Resources.php
resources/jquery.tipsy/images/tipsy.png
resources/jquery.ui/themes/vector/images/button-disabled-blue.png
resources/jquery.ui/themes/vector/images/button-disabled-green.png
resources/jquery.ui/themes/vector/images/button-disabled-red.png
resources/jquery.ui/themes/vector/images/button-disabled.png
resources/jquery.ui/themes/vector/images/button-down-blue.png
resources/jquery.ui/themes/vector/images/button-down-green.png
resources/jquery.ui/themes/vector/images/button-down-red.png
resources/jquery.ui/themes/vector/images/button-down.png
resources/jquery.ui/themes/vector/images/button-off-green.png
resources/jquery.ui/themes/vector/images/button-off.png
resources/jquery.ui/themes/vector/images/button-over-green.png
resources/jquery.ui/themes/vector/images/button-over-red.png
resources/jquery.ui/themes/vector/images/button-over.png
resources/jquery.ui/themes/vector/images/close.png
resources/jquery.ui/themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png
resources/jquery.ui/themes/vector/images/ui-bg_flat_70_000000_40x100.png
resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png
resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png
resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png
resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
resources/jquery.ui/themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png
resources/jquery/images/jquery.arrowSteps.divider-ltr.png
resources/jquery/images/jquery.arrowSteps.divider-rtl.png
resources/jquery/jquery.byteLimit.js
resources/jquery/jquery.cookie.js
resources/jquery/jquery.qunit.completenessTest.js
resources/jquery/jquery.qunit.css
resources/jquery/jquery.qunit.js
resources/jquery/jquery.tablesorter.js
resources/mediawiki.action/mediawiki.action.watch.ajax.js [deleted file]
resources/mediawiki.api/mediawiki.api.js
resources/mediawiki.language/languages/ar.js
resources/mediawiki.language/languages/nl.js [deleted file]
resources/mediawiki.language/languages/pt-br.js [deleted file]
resources/mediawiki.language/languages/pt.js [deleted file]
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki.page/mediawiki.page.watch.ajax.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.changeslist.css
resources/mediawiki.special/mediawiki.special.preferences.js
resources/mediawiki.special/mediawiki.special.search.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.jqueryMsg.js
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.user.js
resources/mediawiki/mediawiki.util.js
skins/Chick.php
skins/Modern.php
skins/Vector.php
skins/common/images/Arr_.png
skins/common/images/ar/button_bold.png
skins/common/images/ar/button_link.png
skins/common/images/ar/button_nowiki.png
skins/common/images/be-tarask/button_bold.png
skins/common/images/button_hr.png
skins/common/images/button_sig.png
skins/common/images/button_template.png
skins/common/images/closewindow.png
skins/common/images/closewindow19x19.png
skins/common/images/cyrl/button_italic.png
skins/common/images/fa/button_italic.png
skins/common/images/fa/button_nowiki.png
skins/common/images/nextredirectltr.png
skins/common/images/nextredirectrtl.png
skins/common/images/tooltip_icon.png
skins/modern/document.png
skins/modern/footer-grad.png
skins/modern/news_icon.png
skins/modern/video.png
skins/monobook/document.png
skins/monobook/news_icon.png
skins/monobook/video.png
skins/vector/images/arrow-down-focus-icon.png
skins/vector/images/arrow-down-icon.png
skins/vector/images/audio-icon.png
skins/vector/images/border.png
skins/vector/images/bullet-icon.png
skins/vector/images/link-icon.png
skins/vector/images/lock-icon.png
skins/vector/images/mail-icon.png
skins/vector/images/page-base.png
skins/vector/images/page-fade.png
skins/vector/images/portal-break.png
skins/vector/images/preferences-base.png
skins/vector/images/preferences-break.png
skins/vector/images/preferences-edge.png
skins/vector/images/preferences-fade.png
skins/vector/images/search-fade.png
skins/vector/images/tab-current-fade.png
skins/vector/images/user-icon.png
skins/vector/images/video-icon.png
tests/parser/parserTests.txt
tests/phpunit/includes/MWNamespaceTest.php
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/WikiPageTest.php
tests/phpunit/includes/api/ApiBlockTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/api/generateRandomImages.php
tests/phpunit/includes/db/ORMRowTest.php
tests/phpunit/includes/filerepo/FileBackendTest.php
tests/phpunit/includes/libs/CSSMinTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/JavaScriptMinifierTest.php
tests/phpunit/includes/parser/ParserMethodsTest.php [new file with mode: 0644]
tests/phpunit/includes/upload/UploadFromUrlTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/backupPrefetchTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/data/load.mock.php [new file with mode: 0644]
tests/qunit/data/testloader.php [deleted file]
tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js

diff --git a/.jshintignore b/.jshintignore
new file mode 100644 (file)
index 0000000..fb2a42f
--- /dev/null
@@ -0,0 +1,20 @@
+# upstream libs
+resources/jquery/jquery.appear.js
+resources/jquery/jquery.async.js
+resources/jquery/jquery.cycle.all.js
+resources/jquery/jquery.cookie.js
+resources/jquery/jquery.farbtastic.js
+resources/jquery/jquery.form.js
+resources/jquery/jquery.js
+resources/jquery/jquery.json.js
+resources/jquery/jquery.mockjax.js
+resources/jquery/jquery.qunit.js
+resources/jquery/jquery.validate.js
+resources/jquery/jquery.xmldom.js
+resources/jquery.effects
+resources/jquery.ui
+tests/jasmine/lib/jasmine-1.0.1/jasmine-html.js
+tests/jasmine/lib/jasmine-1.0.1/jasmine.js
+
+# legacy stuff
+skins/common
diff --git a/.jshintrc b/.jshintrc
new file mode 100644 (file)
index 0000000..4e82155
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,10 @@
+{
+       "predef": [
+               "mediaWiki",
+               "jQuery",
+               "QUnit"
+       ],
+       "browser": true,
+       "smarttabs": true,
+       "laxbreak": true
+}
diff --git a/CREDITS b/CREDITS
index 89154a3..fd86da8 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -175,6 +175,7 @@ following names for their contribution to the product.
 * rgcjonas
 * Robert Treat
 * RockMFR
+* Russell Blau
 * Rusty Burchfield
 * Salvatore Ingala
 * Scott Colcord
diff --git a/README b/README
index 48cf336..805b8ee 100644 (file)
--- a/README
+++ b/README
@@ -46,8 +46,7 @@ The MediaWiki software was written by:
 * Victor Vasiliev
 * Rotem Liss
 * Platonides
-* Antoine Musso
-* Several others (view CREDITS for a more complete list)
+* Many others (view CREDITS for a more complete list)
 
 The contributors hold the copyright to this work, and it is licensed under the
 terms of the GNU General Public License, version 2 or later (see
diff --git a/RELEASE-NOTES-1.19 b/RELEASE-NOTES-1.19
deleted file mode 100644 (file)
index 6c7fa6d..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-= MediaWiki release notes =
-
-Security reminder: MediaWiki does not require PHP's register_globals
-setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
-
-== MediaWiki 1.19 ==
-
-MediaWiki 1.19 is a large release that contains many new features and bug
-fixes. This is a summary of the major changes of interest to users.
-You can consult the RELEASE-NOTES-1.19 file for the full list of changes in
-this version.
-
-Our thanks go to everyone who helped to improve MediaWiki by testing the beta
-release and submitting bug reports.
-
-=== Changes since 1.19 beta 2 ===
-* Special:Watchlist no longer sets links to feed when the user is anonymous.
-* (bug 35961) Hash comparison should always be strict.
-* Fix broken email confirmation expiration caused by MWCryptRand changes.
-* (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
-  on line 598.
-* (bug 36042) 'show' causes a fatal in blocks API.
-
-=== Changes since 1.19 beta 1 ===
-* (bug 35014) Including a special page no longer sets the page's title to the
-  included page
-* (bug 35019) Edit summaries are no longer transformed in notification e-mails
-* (bug 35152) Help message for e-mail is shown again in user preferences
-* (bug 34887) $3 and $4 parameters are now substituted correctly in message
-  "movepage-moved"
-* (bug 34841) Edit links are no longer displayed when display old page versions
-* (bug 34889) User name should be normalized on Special:Contributions
-* (bug 35051) If heading has a trailing space after == then its name is not 
-  preloaded into edit summary on section edit
-* (bug 31417) New ID mw-content-text around the actual page text, without categories,
-  contentSub, ... The same div often also contains the class mw-content-ltr/rtl.
-* (bug 35303) Proxy and DNS blacklist blocking works again
-* (bug 22555) Remove or skip strip markers from tag hooks like &lt;nowiki&gt; in 
-  core parser functions which operate on strings, such as padleft.
-* (bug 18295) Don't expose strip markers when a tag appears inside a link 
-  inside a heading.
-* (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
-  parameter present.
-* (bug 34907) Fixed exposure of tokens through load.php that could have facilitated
-  CSRF attacks.
-* (bug 35317) CSRF in Special:Upload.
-
-=== Configuration changes in 1.19 ===
-* Removed SkinTemplateSetupPageCss hook; use BeforePageDisplay instead.
-* (bug 27132) movefile right granted by default to registered users.
-* Default cookie lifetime ($wgCookieExpiration) is increased to 180 days.
-* (bug 31204) Removed old user.user_options.
-* $wgMaxImageArea now applies to jpeg files if they are not scaled with
-  ImageMagick.
-* Introduced $wgQueryPageDefaultLimit (defaults to 50) for the number of
-  items to show by default on query pages (special pages such as Whatlinkshere).
-* (bug 32470) Increase the length of ug_group.
-* (bug 32239) Removed $wgEnableTooltipsAndAccesskeys.
-* Removed $wgVectorShowVariantName.
-* Removed $wgExtensionAliasesFiles. Use $wgExtensionMessagesFiles.
-* Removed $wgResourceLoaderInlinePrivateModules , now always enabled.
-
-=== New features in 1.19 ===
-* (bug 19838) Add ability to get all interwiki prefixes also if the interwiki
-  cache is used.
-* $wgDnsBlacklistUrls now accepts an array with url and key as the
-  elements to work with DNSBLs that require keys, such as
-  Project Honeypot.
-* (bug 30022) Add support for custom loadScript sources to ResourceLoader.
-* (bug 19052) Unicode space separator characters (Zs) now terminates external
-  links and images links.
-* (bug 30160) Add public method to mw.loader to get module names from registry.
-* (bug 15558) Parameters to special pages included in wikitext can now be passed
-  as with templates.
-* Installer now issues a warning if mod_security is present.
-* (bug 29455) Add support for a filter callback function in jQuery byteLimit
-  plugin.
-* Added two new GetLocalURL hooks to better serve extensions working on a
-  limited type of titles.
-* Added a --no-updates flag to importDump.php that skips updating the links
-  tables.
-* Most presentational html attributes like valign are now converted to inline
-  css style rules. These attributes were removed from html5 and so we clean
-  them up when $wgHtml5 is enabled. This can be disabled using
-  $wgCleanupPresentationalAttributes.
-* Magic words (time and number-formatting ones, plus DIRECTIONMARK, but not
-  NAMESPACE) now depend on the page content language instead of the site
-  language. In theory this sets the right magic words in system messages,
-  although they are not used there.
-* (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent.
-* (bug 30450) Clear page_props table on page deletion.
-* Hook added to check for exempt from account creation throttle.
-* (bug 30344) Add configuration variable for setting custom priorities when
-  generating sitemaps.
-* (bug 96170) Add array support for space-separated list attributes (like
-  'class') in the Html helper class.
-* (bug 26470) Add checkered background image on hover on files pages.
-* (bug 30774) mediawiki.html: Add support for numbers and booleans in the
-  attribute values and element contents.
-* Conversion script between Tifinagh and Latin for the Tachelhit language.
-* (bug 16755) Add options 'noreplace' and 'noerror' to {{DEFAULTSORT:...}}
-  to stop it from replace an already existing default sort, and suppress error.
-* (bug 18578) Rewrote revision delete related messages to allow better
-  localisation.
-* (bug 30364) LanguageConverter now depends on the page content language
-  instead of the wiki content language.
-* Jump links will now be usable in CSS-capable browsers instead of only
-  in outdated text browsers.
-* New common*.css files usable by skins instead of having to copy piles
-  of generic styles from MonoBook or Vector's css.
-* Some deprecated presentational html attributes will now be automatically
-  converted to css.
-* (bug 31297) Add support for namespaces in Special:RecentChanges subpage filter
-  syntax.
-* The default user signature now contains a talk link in addition to the user link.
-* (bug 25306) Add link of old page title to MediaWiki:Delete_and_move_reason.
-* Added hook BitmapHandlerCheckImageArea.
-* (bug 30062) Add $wgDBprefix option to cli installer.
-* getUserPermissionsErrors and getUserPermissionsErrorsExpensive hooks are now
-  also called when checking for 'read' permission.
-* Introduce $wgEnableSearchContributorsByIP which controls whether searching
-  for an IP address redirects to the contributions list for that IP.
-* (bug 8859) Database::update should take array of tables too.
-* (bug 19698) Add "Inverse namespaces" option to Special:Contributions.
-* (bug 24037) Add byte length of revision to Special:Contributions.
-* (bug 1672) Added $wgDisableUploadScriptChecks to allow uploading of files
-  containing HTML or JS. DISABLING THESE CHECKS IS VERY DANGEROUS.
-* New path mappings can be added using the WebRequestPathInfoRouter hook
-  and adding paths to the PathRouter.
-* (bug 32666) Special:ActiveUsers now allows a subpage to be used as value for the
-  "target" query parameter (eg. Special:ActiveUsers/Username).
-* New JavaScript variable wgPageContentLanguage.
-* Added new debugging toolbar, enabled with $wgDebugToolbar.
-* Differences in the history page now uses slightly better colors for people
-  perceiving colors differently.
-* (bug 32879) Upgrade jQuery to 1.7.1.
-* jQuery UI upgraded to 1.8.17.
-* Extensions can use the 'Language::getMessagesFileName' hook to define new
-  languages using messages files outside of core.
-* (bug 32512) Add 'Associated namespace' checkbox to Special:Contributions.
-* Added $wgSend404Code, true by default, which can be set to false to send a 
-  200 status code instead of 404 for nonexistent articles.
-* (bug 33447) Link to the broken image tracking category from Special:Wantedfiles.
-* (bug 27724) Add timestamp to job queue.
-* (bug 30339) Implement SpecialPage for running javascript tests. Disabled by default, due to
-  tests potentially being harmful, not to be run on a production wiki.
-  Enable by setting $wgEnableJavaScriptTest to true.
-* Extensions can use the RequestContextCreateSkin hook to override what skin is
-  loaded in some contexts.
-* (bug 33456) Show $wgQueryCacheLimit on cached query pages.
-* (bug 10574) Add an option to allow all pages to be exported by Special:Export.
-* mediawiki.js Message object constructor is now publicly available as mw.Message.
-* (bug 29309) Allow CSS class per tooltip (tipsy).
-* (bug 33565) Add accesskey/tooltip to submit buttons on Special:EditWatchlist.
-* (bug 17959) Inline rendering/thumbnailing for Gimp XCF images.
-* (bug 27775) Namespace has it's own XML tag in the XML dump file.
-* (bug 30513) Redirect tag is now resolved in XML dump file.
-* sha1 xml tag added to XML dump file.
-* (bug 33646) Badtitle error page now emits a 400 HTTP status.
-* Special:MovePage now has a dropdown menu for namespaces.
-* (bug 34420) Special:Version now shows git HEAD sha1 when available.
-* (bug 33952) Refactor mw.toolbar to allow dynamic additions at any time.
-
-=== Bug fixes in 1.19 ===
-* $wgUploadNavigationUrl should be used for file redlinks if.
-  $wgUploadMissingFileUrl is not set. The first was used for this
-  until the second was introduced in 1.17.
-* BREAKING CHANGE:  Style rules for wikitable are now more specific and prevent
-  inheritance to nested tables which caused various issues (bug 30485 and bug
-  33434). If your wiki has overriden rules for ".wikitable", please revise them and
-  adjust where neccecary. For comparison, use the "table.wikitable" section in
-  skins/common/shared.css as base.
-* $wgUploadNavigationUrl is now used for file redlinks if
-  $wgUploadMissingFileUrl is not set. The former was used for this until the
-  second was introduced in 1.17.
-* (bug 27894) Move 'editondblclick' event listener down from body to
-  div#bodyContent.
-* (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
-  when the function exists but is disabled. Introduced
-  Maintenance::posix_isatty().
-* (bug 30264) Changed installer-generated LocalSettings.php to use
-  require_once() instead require() for included extensions.
-* Do not convert text in the user interface language to another script.
-* (bug 26283) Previewing user JS/CSS pages didn't load other user JS/CSS pages.
-* (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
-  warnings/notices to be thrown.
-* (bug 30335) Fix for HTMLForms using GET that were breaking when non-friendly
-  URLs are used.
-* (bug 28649) Preventing half truncated multi-byte unicode characters when
-  truncating log comments.
-* Show --batch-size option in help of maintenance scripts that support it.
-* (bug 4381) Magic quotes cleaning was not comprehensive, key strings were not
-  unescaped.
-* (bug 23057) Importers no longer can 'edit' or 'create' a fully-protected page by
-  importing a new revision into it.
-* Allow moving the associated talk pages of subpages even if the base page
-  has no subpage.
-* Per page edit-notices now work in namespaces without subpages enabled.
-* (bug 31081) $wgEnotifUseJobQ is no longer unconditionally enqueueing jobs.
-* (bug 30202) File names are now restricted on upload to 240 bytes, because of
-  restrictions on some of the database fields.
-* Timezones are now recognised in user preferences when offset is different
-  due to DST.
-* (bug 31692) "summary" parameter now also works when undoing revisions.
-* (bug 18823) "move succeeded" text displayed bluelinks even when redirect was
-  suppressed.
-* (bug 19186) Special:UserLogin's title on Special:SpecialPages now says
-  "create account" when the user cannot create an account.
-* (bug 31818) 'usercreated' message now supports GENDER.
-* (bug 32022) Our phpunit.php script can now be executed from another directory.
-* (bug 26020) Setting $wgEmailConfirmToEdit to true no longer removes diffs.
-  from recent changes feeds.
-* (bug 30232) add current time to message wlnote on Special:Watchlist.
-* (bug 29110) $wgFeedDiffCutoff did not affect new pages.
-* (bug 32168) Add wfRemoveDotSegments for use in wfExpandUrl.
-* (bug 32358) Do not display "No higher resolution available" for dimensionless
-  files (like audio files).
-* (bug 32168) Add wfAssembleUrl for use in wfExpandUrl.
-* (bug 32168) fixed - wfExpandUrl expands dot segments now.
-* (bug 31535) Upload comments now truncated properly, and don't have brackets.
-* (bug 32086) Special:PermanentLink now show an error message when no subpage
-  was specified.
-* (bug 30368) Special:Newpages now shows the new page name for moved pages.
-* (bug 1697) The way to search blocked usernames in block log should be clearer.
-* (bug 29747) eAccelerator shared memory caching has been removed since it is
-  now disabled by default and is buggy. APC, XCache and WinCache are not affected.
-* Installer now refuses to install if php was not compiled with Ctype support.
-* (bug 29475) Remove "trackback" feature entirely from core.
-* (bug 32665) Special:BlockList prefills the username in the input field if
-  using the Special:BlockList/username URL.
-* (bug 27721) Make JavaScript variables wgSeparatorTransformTable and
-  wgDigitTransformTable depend on page content language so the sort script
-  sorts correctly more often.
-* (bug 32230) Expose wgRedirectedFrom in JavaScript.
-* (bug 31212) History tab not collapsed when the screen is narrow.
-* (bug 15521) Use new section summary when the action of adding a new section
-  also happens to create the page.
-* (bug 32960) Remove EmailAuthenticationTimestamp from database when a
-  email address is removed.
-* (bug 32414) Empty page get a empty bytes attribute in Export/Dump.
-* (bug 33101) Viewing a User or User talk of username resembling IP ending
-  with .xxx causes Internal error.
-* Warning about undefined index in certain situations when $wgLogRestrictions
-  causes the first log type requested to be removed but not the others.
-* Use separate message ('prefixindex-namespace') for title of
-  Special:PrefixIndex rather then re-using Special:AllPages's allinnamespace.
-* (bug 33156) Special:Block now allows you to confirm you want to block yourself
-  when using non-normalized username.
-* (bug 33246) News icon shown for news:// URLs but not for news: URLs.
-* (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
-  cssText after DOM insertion.
-* (bug 30711) When adding a new section to a page with section=new, the text is
-  now always added to the current version of the page.
-* (bug 31719) Fix uploads of SVGs exported by Adobe Illustrator by expanding 
-  XML entities correctly.
-* (bug 30914) Embeddable ResourceLoader modules (user.options, user.tokens)
-  should be loaded in <head> for proper dependency resolution.
-* (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
-  for backward compatibility.
-* (bug 31469) Make sure tracking category messages expand variables like
-  {{NAMESPACE}} relative to correct title.
-* (bug 33454) ISO-8601 week-based year number (format character 'o') is now
-  calculated correctly with respect to timezone.
-* (bug 32219) InstantCommons now fetches content from Wikimedia Commons using
-  HTTPS when the local wiki is served over HTTPS.
-* (bug 33525) clearTagHooks doesn't clear function hooks.
-* (bug 33523) Function tag hooks don't appear on Special:Version.
-* Files with IPTC blocks we can't read no longer prevent extraction of exif
-  or other metadata.
-* (bug 33587) Remove action "historysubmit" from history pages.
-* (bug 25800) mw.config wgAction should contain the actually performed action instead
-  of whatever the query value contains.
-* (bug 4438) Add CSS hook for current WikiPage action.
-* (bug 33703) Common border-bottom color for <abbr> should inherit default (text) color.
-* (bug 33819) Display file sizes in appropriate units.
-* (bug 32948) {{REVISIONID}} and related variables are no longer blank after doing
-  a null edit.
-* (bug 33880) $wgUsersNotifiedOnAllChanges should not send e-mail to user who made
-  the edit.
-* (bug 33902) Decoding %2B with mw.Uri.decode results in ' ' instead of +.
-* (bug 33762) QueryPage-based special pages no longer misses *-summary message.
-* Other sizes links are no longer generated for wikis without a 404 thumbnail handler.
-* (bug 29454) Enforce byteLimit for page title input on Special:MovePage.
-* (bug 34114) CSSMin::remap() doesn't respect its $embed parameter.
-* Special:Contributions/newbies now shows the contributions for the user "newbies".
-  New user contributions are obtained using the form or using ?contribs=newbie in URL.
-* It is now possible to delete images that have no corresponding description pages.
-* (bug 33165) GlobalFunctions.php line 1312: Call to a member function
-  getText() on a non-object.
-* (bug 31676) Group dynamically inserted CSS into a single <style> tag, to work
-  around a bug where not all styles were applied in Internet Explorer.
-* (bug 28936, bug 5280) Broken or invalid titles can't be removed from watchlist.
-* (bug 34600) Older skins using useHeadElement=false were broken in 1.18.
-* (bug 34604) [mw.config] wgActionPaths should be an object instead of a numeral
-  array.* (bug 12262) Indents and lists are now aligned
-* (bug 29753) mw.util.tooltipAccessKeyPrefix should be alt-shift for Chrome
-   on Windows
-* (bug 25095) Special:Categories should also include the first relevant item
-   when "from" is filled.
-* (bug 34972) An error occurred while changing your watchlist settings for 
-  [[Special:WhatLinksHere/Example]]
-
-=== API changes in 1.19 ===
-* Made action=edit less likely to return "unknownerror", by returning the actual error
-  message (which may have come from a hook call or similar).
-* (bug 19838) siprop=interwikimap can now use the interwiki cache.
-* (bug 29748) Add API search prefix support.
-* (bug 29684) Set forgotten parameter types in ApiQueryIWLinks.
-* (bug 29685) do not output NULL parentid with list=deletedrevs&drprop=parentid.
-* siprop=interwikimap and siprop=languages can use silanguagecode to have
-  a best effort language name translation. Use CLDR extension for best result.
-* (bug 30230) action=expandtemplates should not silently override invalid title
-  inputs.
-* (bug 18634) Create API to fetch MediaWiki's language fallback tree structure.
-* (bug 26885) Allow show/hide of account blocks, temporary blocks and single IP
-  address blocks for list=blocks.
-* (bug 30591) Add support to only return keys in ApiAllMessages.
-* The API now respects $wgShowHostnames and won't share the hostname in
-  severedby if it's set to false.
-* wlexcludeuser parameter added to ApiFeedWatchlist.
-* (bug 7304) Links on redirect pages no longer cause the redirect page to show
-  up as a redirect to the linked page on Special:Whatlinkshere.
-* (bug 32609) API: Move captchaid/captchaword of action=edit from core
-  to Captcha extension(s).
-* Added 'APIGetDescription' hook.
-* (bug 32688) Paraminfo for parameter "generator" of the query module shows too
-  many types.
-* (bug 32415) Empty page get no size attribute in API output.
-* (bug 31759) Undefined property notice in querypages API.
-* (bug 32495) API should allow purge by pageids.
-* (bug 33147) API examples should explain what they do.
-* (bug 33482) Api incorrectly calls ApiBase::parseMultiValue if allowed
-  values is given as an array.
-* (bug 32948) {{REVISIONID}} and related variables are no longer blank after
-  calling action=purge&forcelinkupdate.
-* (bug 34377) action=watch now parses messages using the correct title instead
-  of "API".
-* (bug 35036) WikiLove messages were not automatically updated in JavaScript
-  after having been changed on-wiki due to a bug in core
-
-=== Languages updated in 1.19 ===
-
-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.
-
-* Canadian English (en-ca) (new).
-* Norwegian (bokmål) (nb) (renamed from no).
-* Uighur (Latin) (ug-latn) was incorrectly marked as right-to-left language.
-* (bug 30217) Make pt-br a fallback of pt.
-* (bug 31193) Set fallback language of Assamese from Bengali to English.
-* Update date format for dsb and hsb: month names need the genitive.
-* (bug 28643) Serbian variant conversion improvements (Nikola Smolenski).
-* (bug 29405, bug 30809) Lower diacritics are invisible in titles in Indic
-  languages Assamese, Bengali, Hindi, Malyalam and Odiya.
-* (bug 32826) Titles in indic languages are partially cut.
-* (bug 33367) Gendered namespaces for Czech.
-* (bug 33014) Language::formatSize()/formatBitrate() should be able to deal
-  with larger numbers (tera-yotta).
-
-=== Other changes in 1.19 ===
-* BREAKING CHANGE: Legacy global array 'ta' and global function 'akeytt' have
-  been removed from wikibits.js.
-* jquery.mwPrototypes module was renamed to jquery.mwExtension.
-* The maintenance script populateSha1.php was renamed to the more concise
-  populateImageSha1.php.
-* The Client-IP header is no longer checked for when trying to resolve a client's
-  real IP address.
-* (bug 22096) Although IE5.x and below was already unsupported officially, stylesheets
-  existing exclusively for IE5.0 and IE5.5 have now been removed (which were in skins
-  'chick' and 'monobook').
-* The constructor for CategoryView has changed, the second parameter is now a
-  Context source and is required.
-* The Title::escape{Local,Full,Canonical}URL methods are deprecated, please use
-  proper html building methods to escape the normal get{...}URL methods instead.
-* The $variant arguments in the Title::get{Local,Full,Link,Canonical}URL methods
-  have been replaced with a secondary query argument.
-* The $variant argument in the hooks for the Title::get{Local,Full,Link,Canonical}URL
-  methods have been removed, the variant is now part of the $query argument.
-* Removed Title::isValidCssJsSubpage(), deprecated since 1.17 in favor of
-  using Title::isCssJsSubpage() or checking Title::isWrongCaseCssJsPage().
-* Support for the deprecated hook MagicWordMagicWords was removed.
-* The Xml::namespaceSelector method has been deprecated, please use
-  Html::namespaceSelector instead (note that the parameters have changed also).
-* (bug 33746) Preload popular ResourceLoader modules (mediawiki.util) as stop-gap
-  for scripts missing dependencies.
-  New configuration variable $wgPreloadJavaScriptMwUtil has been introduced for this
-  (set to false by default for new installations). Set to true if your wiki has a large
-  amount of user/site scripts that are lacking dependency information. In the short to
-  medium term these user/site scripts should be fixed by adding the used modules to the
-  dependencies in the module registry and/or wrapping them in a callback to mw.loader.using.
-
-== Compatibility ==
-
-MediaWiki 1.19 requires PHP 5.2.3. PHP 4 is no longer supported.
-
-MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for IBM
-DB2 and Oracle.
-
-The supported versions are:
-
-* MySQL 5.0.2 or later
-* PostgreSQL 8.3 or later
-* SQLite 3.3.7 or later
-* Oracle 9.0.1 or later
-
-== Upgrading ==
-
-1.19 has several database changes since 1.18, and will not work without schema
-updates.
-
-As of 1.19 several JavaScript interfaces that were deprecated or superseeded in
-MediaWiki 1.17, MediaWiki 1.16 or even earlier have been removed. They are
-listed at the top of the "Other changes" list as a "BREAKING CHANGE".
-
-If upgrading from before 1.11, and you are using a wiki as a commons
-repository, make sure that it is updated as well. Otherwise, errors may arise
-due to database schema changes.
-
-If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
-new database fields are filled with data.
-
-If you are upgrading from MediaWiki 1.4.x or earlier, some major database
-changes are made, and there is a slightly higher chance that things could
-break. Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions.
-
-For notes on 1.18.x and older releases, see HISTORY.
-
-== Online documentation ==
-
-Documentation for both end-users and site administrators is available on
-MediaWiki.org, and is covered under the GNU Free Documentation License (except
-for pages that explicitly state that their contents are in the public domain):
-
-       https://www.mediawiki.org/wiki/Documentation
-
-== Mailing list ==
-
-A mailing list is available for MediaWiki user support and discussion:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-
-A low-traffic announcements-only list is also available:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
-
-It's highly recommended that you sign up for one of these lists if you're
-going to run a public MediaWiki, so you can be notified of security fixes.
-
-== IRC help ==
-
-There's usually someone online in #mediawiki on irc.freenode.net.
index 350b6b9..423e44f 100644 (file)
@@ -16,10 +16,13 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 
 === Configuration changes in 1.20 ===
 * $wgGitRepositoryViewers defines a mapping from Git remote repository to the
-  Gitweb instance URL used in Special:Version
+  Gitweb instance URL used in Special:Version.
 * `$wgUsePathInfo = true;` is no longer needed to make $wgArticlePath work on servers
   using like nginx, lighttpd, and apache over fastcgi. MediaWiki now always extracts
   path info from REQUEST_URI if it's available.
+* The user right 'upload_by_url' is no longer given to sysops by default.
+  This only affects installations which have $wgAllowCopyUploads set to true.
+* Removed f-prot support from $wgAntivirusSetup.
 
 === New features in 1.20 ===
 * Added TitleIsAlwaysKnown hook which gets called when determining if a page exists.
@@ -36,16 +39,16 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * Introduce a cryptographic random number generator source api for use when
   generating various tokens.
 * (bug 30963) Option on Special:Prefixindex and Special:Allpages to not show redirects.
-* (bug 18062) new message when edit or create the local page of a shared file.
+* (bug 18062) New message when edit or create the local page of a shared file.
 * (bug 22870) Separate interface message when creating a page.
 * (bug 17615) nosummary option should be reassigned on preview/captcha.
-* (bug 34355) add a variable and parser function for the namespace number.
+* (bug 34355) Add a variable and parser function for the namespace number.
 * (bug 35649) Special:Version now shows hashes of extensions checked out from git.
 * (bug 35728) Git revisions are now linked on Special:Version.
 * "Show Changes" on default messages shows now diff against default message text
 * (bug 23006) create #speciale parser function.
 * generateSitemap can now optionally skip redirect pages.
-* (bug 27757) new API command just for retrieving tokens (not page-based)
+* (bug 27757) New API command just for retrieving tokens (not page-based).
 * Added GitViewers hook for extensions using external git repositories to have a web-based
   repository viewer linked to from Special:Version.
 * Memcached debug logs can now be sent to their own file logs by setting
@@ -54,7 +57,9 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
   Special:Version
 * Edit notices can now be translated.
 * (bug 35680) jQuery upgraded to 1.7.2.
-* jQuery UI upgraded to 1.8.19.
+* jQuery UI upgraded to 1.8.21.
+* (bug 35705) QUnit upgraded from v1.2.0 to v1.8.0.
+* (bug 37604) jquery.cookie upgraded to 2011 version.
 * (bug 22887) Add warning and tracking category for preprocessor errors
 * (bug 31704) Allow selection of associated namespace on the watchlist
 * (bug 5445) Now remove autoblocks when a user is unblocked.
@@ -67,7 +72,24 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * New getCreator and getOldestRevision methods added to WikiPage class
 * (bug 4220) the XML dump format schema now have unique identity constraints
   for page and revision identifiers. Patch by Elvis Stansvik.
-* (bug 35705) QUnit upgraded from 1.2.0 to 1.7.0
+* cleanupSpam.php now can delete spam pages if --delete was specified instead of blanking
+  them.
+* Added new hook ChangePasswordForm to allow adding of additional fields in Special:ChangePassword
+* Added new function getDomain to AuthPlugin for getting a user's domain
+* (bug 23427) New magic word {{PAGEID}} which gives the current page ID.
+  Will be null on previewing a page being created.
+* (bug 37627) UserNotLoggedIn() exception to show a generic error page whenever
+  a user is not logged in.
+* Watched status in changes lists are no longer indicated by <strong></strong>
+  tags with class "mw-watched". Instead, each line now has a class
+  "mw-changeslist-line-watched" or "mw-changeslist-line-not-watched", and the
+  title itself is surrounded by <span></span> tags with class "mw-title".
+* Added ContribsPager::reallyDoQuery hook allowing extensions to data to MyContribs
+* Added new hook ParserAfterParse to allow extensions to affect parsed output
+  after the parse is complete but before block level processing, link holder
+  replacement, and so on.
+* (bug 34678) Added InternalParseBeforeSanitize hook which gets called during Parser's
+  internalParse method just before the parser removes unwanted/dangerous HTML tags.
 
 === Bug fixes in 1.20 ===
 * (bug 30245) Use the correct way to construct a log page title.
@@ -110,11 +132,32 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 35572) Blocks appear to succeed even if query fails due to wrong DB structure
 * (bug 31757) Add a word-separator between help-messages in HTMLForm
 * (bug 30410) Removed deprecated $wgFilterCallback and the 'filtered' API error.
-* (bug 32604) Some messages needs escaping of wikitext inside username
+* (bug 32604) Some messages needs escaping of wikitext inside username.
 * (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with wfCgiToArray.
-* (bug 25946) The message on the top of Special:RecentChanges is now displayed
-  in user language instead of content language
+* (bug 25946) The message on the top of Special:RecentChanges is now displayed.
+  in user language instead of content language.
 * (bug 35264) Wrong type used for <ns> in export.xsd
+* (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
+  who don't have access to /tmp can specify an alternative.
+* (bug 27283) SqlBagOStuff breaks PostgreSQL transactions.
+* (bug 35727) mw.Api ajax() should put token parameter last.
+* (bug 37708) mw.Uri.clone() should make a deep copy.
+* (bug 38024) ResourceLoader should not create empty stylesheets for modules
+  that don't have stylesheets.
+* (bug 36812) Special:ActiveUsers "Hide bots" should hide users from any group
+  having the "bot" user right, instead of just the default "bot" user group.
+* (bug 35082) mw.util.addPortletLink incorrectly adds link to mutiple <ul> tags.
+* (bug 36495) Sanitizer::fixDeprecatedAttributes should convert "align"
+  attribute to margin or float instead of text-align (for non-table-cells).
+* (bug 36991) jquery.tablesorter should extract date sort format from date
+  string instead of global config. Dates like "April 1 2012" and "1 April 2012"
+  now sort correctly regardless of the content language's DefaultDateFormat.
+* (bug 31895) mw.loader mode now correct when triggered from a $.fn.ready
+  handler that is bound before mediawiki.js's handler (e.g. browser-userscripts
+  like greasemonkey).
+* (bug 38152) jquery.tablesorter: Use .data() instead of .attr(), so that live
+  values are used instead of just the fixed values from when the tablesorter
+  was initialized.
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
@@ -122,16 +165,25 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
   the format parameter.
 * (bug 32384) Allow descending order for list=watchlistraw.
 * (bug 31883) Limit of bkusers of list=blocks and titles of action=query is not documented in API help.
-* (bug 32492) API now allows editing using pageid
-* (bug 32497) API now allows changing of protection level using pageid
-* (bug 32498) API now allows comparing pages using pageids
-* (bug 30975) API import of pages with invalid characters in this wiki leads to Fatal Error
+* (bug 32492) API now allows editing using pageid.
+* (bug 32497) API now allows changing of protection level using pageid.
+* (bug 32498) API now allows comparing pages using pageids.
+* (bug 30975) API import of pages with invalid characters in this wiki leads to Fatal Error.
 * (bug 30488) API now allows listing of backlinks/embeddedin/imageusage per pageid
 * (bug 34927) Output media_type for list=filearchive
 * (bug 28814) add properties to output of action=parse
 * (bug 33224) add variants of content language to meta=siteinfo
 * (bug 36761) "Mark pages as visited" now submits previously established filter options
 * (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit is reached
+* The paraminfo module now also contains result properties for most modules
+* (bug 32348) Allow descending order for list=alllinks
+* (bug 31777) Upload unknown error ``fileexists-forbidden''
+* (bug 32382) Allow descending order for list=iwbacklinks
+* (bug 32381) Allow descending order for list=backlinks, list=embeddedin and list=imageusage
+* (bug 32383) Allow descending order for list=langbacklinks
+* API meta=siteinfo can now return the list of known variable IDs
+* (bug 30836) siteinfo prop=specialpagealiases will no longer return nonexistent special pages
+* (bug 35980) list=deletedrevs now honors drdir correctly in "all" mode (mode #3)
 
 === Languages updated in 1.20 ===
 
@@ -139,6 +191,7 @@ 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.
 
+* Emilian (egl) added.
 * Tornedalen Finnish (fit) added.
 * Mizo (lus) added.
 * Santali (sat) added.
@@ -154,6 +207,10 @@ changes to languages because of Bugzilla reports.
 * Removed ./tests/qunit/index.html from core. It wasn't actively maintained and
   has been made obsolete when [[Special:JavaScriptTest/qunit]] was introduced,
   which actually uses ResourceLoader, LocalSettings and the Skin.
+* Removed $wgDBtransactions global. This was only checked in one class
+  and only applies to MyISAM or similar DBs. Those should only be used
+  for archived sites anyway. We can't get edit conflicts on such sites,
+  so the WikiPage code wasn't useful there either.
 
 == Compatibility ==
 
diff --git a/api.php b/api.php
index 1cd5497..9e1f5dd 100644 (file)
--- a/api.php
+++ b/api.php
@@ -62,43 +62,6 @@ if ( !$wgEnableAPI ) {
        die(1);
 }
 
-// Selectively allow cross-site AJAX
-
-/**
- * Helper function to convert wildcard string into a regex
- * '*' => '.*?'
- * '?' => '.'
- *
- * @param $search string
- * @return string
- */
-function convertWildcard( $search ) {
-       $search = preg_quote( $search, '/' );
-       $search = str_replace(
-               array( '\*', '\?' ),
-               array( '.*?', '.' ),
-               $search
-       );
-       return "/$search/";
-}
-
-if ( $wgCrossSiteAJAXdomains && isset( $_SERVER['HTTP_ORIGIN'] ) ) {
-       $exceptions = array_map( 'convertWildcard', $wgCrossSiteAJAXdomainExceptions );
-       $regexes = array_map( 'convertWildcard', $wgCrossSiteAJAXdomains );
-       foreach ( $regexes as $regex ) {
-               if ( preg_match( $regex, $_SERVER['HTTP_ORIGIN'] ) ) {
-                       foreach ( $exceptions as $exc ) { // Check against exceptions
-                               if ( preg_match( $exc, $_SERVER['HTTP_ORIGIN'] ) ) {
-                                       break 2;
-                               }
-                       }
-                       header( "Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}" );
-                       header( 'Access-Control-Allow-Credentials: true' );
-                       break;
-               }
-       }
-}
-
 // Set a dummy $wgTitle, because $wgTitle == null breaks various things
 // In a perfect world this wouldn't be necessary
 $wgTitle = Title::makeTitle( NS_MAIN, 'API' );
@@ -107,7 +70,7 @@ $wgTitle = Title::makeTitle( NS_MAIN, 'API' );
  * is some form of an ApiMain, possibly even one that produces an error message,
  * but we don't care here, as that is handled by the ctor.
  */
-$processor = new ApiMain( $wgRequest, $wgEnableWriteAPI );
+$processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI );
 
 // Process data & print results
 $processor->execute();
index 6a4a8b7..4803746 100644 (file)
@@ -22,6 +22,8 @@
        revision identifiers. See also bug 4220.
        Fix type for <ns> from "positiveInteger" to "nonNegativeInteger" to allow 0
        Moves <logitem> to its right location.
+       Add parentid to revision.
+       Fix type for <id> within <contributor> to "nonNegativeInteger"
 
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.7.xsd
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" />
+                       <element name="parentid" type="positiveInteger" minOccurs="0" />
                        <element name="timestamp" type="dateTime" />
                        <element name="contributor" type="mw:ContributorType" />
                        <element name="minor" minOccurs="0" maxOccurs="1" />
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0" />
-                       <element name="id" type="positiveInteger" minOccurs="0" />
+                       <element name="id" type="nonNegativeInteger" minOccurs="0" />
 
                        <element name="ip" type="string" minOccurs="0" />
                </sequence>
index b28022f..d198b93 100644 (file)
@@ -70,6 +70,8 @@
       <!-- Unique revision ID number (rev_id) in the source database.  -->
       <!-- This number uniquely identifies the revision on that wiki.  -->
       <id>100</id>
+      <!-- revision id of the parent revision -->
+      <parentid>99</parentid>
       <timestamp>2001-01-15T13:15:00Z</timestamp>
       <contributor>
         <username>Foobar</username>
index 8d4bdea..70c334a 100644 (file)
@@ -331,6 +331,11 @@ descriptions.
 &$module: ApiBase Module object
 &$desc: Array of parameter descriptions
 
+'APIGetResultProperties': use this hook to mofify the properties
+in a module's result.
+&$module: ApiBase Module object
+&$properties: Array of properties
+
 'APIQueryAfterExecute': after calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
@@ -422,6 +427,8 @@ $user: the user (object) deleting the article
 $reason: the reason (string) the article is being deleted
 $error: if the deletion was prohibited, the (raw HTML) error message to display
   (added in 1.13)
+$status: Status object, modify this to throw an error. Overridden by $error
+  (added in 1.20)
 
 'ArticleDeleteComplete': after an article is deleted
 $article: the WikiPage that was deleted
@@ -672,6 +679,10 @@ $output: OutputPage object in use
 'CategoryPageView': before viewing a categorypage in CategoryPage::view
 $catpage: CategoryPage instance
 
+'ChangePasswordForm': For extensions that need to add a field to the ChangePassword form
+via the Preferences form
+&$extraFields: An array of arrays that hold fields like would be passed to the pretty function.
+
 'ChangesListInsertArticleLink': Override or augment link to article in RC list.
 &$changesList: ChangesList instance.
 &$articlelink: HTML of link to article (already filled-in).
@@ -692,10 +703,18 @@ $user: user (object) whose email is being confirmed
 &$pager: Pager object for contributions
 &$queryInfo: The query for the contribs Pager
 
+'ContribsPager::reallyDoQuery': Called before really executing the query for My Contributions
+&$data: an array of results of all contribs queries
+$pager: The ContribsPager object hooked into
+$offset: Index offset, inclusive
+$limit: Exact query limit
+$descending: Query direction, false for ascending, true for descending
+
 'ContributionsLineEnding': Called before a contributions HTML line is finished
 $page: SpecialPage object for contributions
-$ret: the HTML line
+&$ret: the HTML line
 $row: the DB row for this line
+&$classes: the classes to add to the surrounding <li>
 
 'ContributionsToolLinks': Change tool links above Special:Contributions
 $id: User identifier
@@ -921,6 +940,14 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored
 $user: user who performed the undeletion
 $reason: reason
 
+'FormatAutocomments': When an autocomment is formatted by the Linker
+ &$comment: Reference to the accumulated comment. Initially null, when set the default code will be skipped.
+ $pre: Initial part of the parsed comment before the call to the hook.
+ $auto: The extracted part of the parsed comment before the call to the hook.
+ $post: The final part of the parsed comment before the call to the hook.
+ $title: An optional title object used to links to sections. Can be null.
+ $local: Boolean indicating whether section links should refer to local page.
+
 'GetAutoPromoteGroups': When determining which autopromote groups a user
 is entitled to be in.
 &$user: user to promote.
@@ -1102,8 +1129,16 @@ $prefix: interwiki prefix we are looking for.
 &$iwData: output array describing the interwiki with keys iw_url, iw_local,
   iw_trans and optionally iw_api and iw_wikiid.
 
+'InternalParseBeforeSanitize': during Parser's internalParse method just before the
+parser removes unwanted/dangerous HTML tags and after nowiki/noinclude/includeonly/
+onlyinclude and other processings. Ideal for syntax-extensions after template/parser
+function execution which respect nowiki and HTML-comments.
+&$parser: Parser object
+&$text: string containing partially parsed text
+&$stripState: Parser's internal StripState object
+
 'InternalParseBeforeLinks': during Parser's internalParse method before links
-but after noinclude/includeonly/onlyinclude and other processing.
+but after nowiki/noinclude/includeonly/onlyinclude and other processings.
 &$parser: Parser object
 &$text: string containing partially parsed text
 &$stripState: Parser's internal StripState object
@@ -1443,6 +1478,12 @@ A parser extension which depends on user options should install
 this hook and append its values to the key.
 $hash: reference to a hash key string which can be modified
 
+'ParserAfterParse': Called from Parser::parse() just after the call to
+Parser::internalParse() returns
+$parser: parser object
+$text: text being parsed
+$stripState: stripState used (object)
+
 'ParserAfterStrip': Same as ParserBeforeStrip
 
 'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
index fdf0820..3b259e2 100644 (file)
@@ -496,7 +496,7 @@ class Article extends Page {
                if ( $outputPage->isPrintable() ) {
                        $parserOptions->setIsPrintable( true );
                        $parserOptions->setEditSection( false );
-               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit' ) ) {
+               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user ) ) {
                        $parserOptions->setEditSection( false );
                }
 
@@ -956,7 +956,7 @@ class Article extends Page {
                $user = $this->getContext()->getUser();
                $rcid = $request->getVal( 'rcid' );
 
-               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol' ) ) {
+               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol', $user ) ) {
                        return;
                }
 
@@ -1050,16 +1050,12 @@ class Article extends Page {
                } elseif ( $this->getTitle()->getNamespace() === NS_MEDIAWIKI ) {
                        // Use the default message text
                        $text = $this->getTitle()->getDefaultMessageText();
+               } elseif ( $this->getTitle()->quickUserCan( 'create', $this->getContext()->getUser() )
+                       && $this->getTitle()->quickUserCan( 'edit', $this->getContext()->getUser() )
+               ) {
+                       $text = wfMsgNoTrans( 'noarticletext' );
                } else {
-                       $createErrors = $this->getTitle()->getUserPermissionsErrors( 'create', $this->getContext()->getUser() );
-                       $editErrors = $this->getTitle()->getUserPermissionsErrors( 'edit', $this->getContext()->getUser() );
-                       $errors = array_merge( $createErrors, $editErrors );
-
-                       if ( !count( $errors ) ) {
-                               $text = wfMsgNoTrans( 'noarticletext' );
-                       } else {
-                               $text = wfMsgNoTrans( 'noarticletext-nopermission' );
-                       }
+                       $text = wfMsgNoTrans( 'noarticletext-nopermission' );
                }
                $text = "<div class='noarticletext'>\n$text\n</div>";
 
@@ -1137,9 +1133,11 @@ class Article extends Page {
 
                $current = ( $oldid == $this->mPage->getLatest() );
                $language = $this->getContext()->getLanguage();
-               $td = $language->timeanddate( $timestamp, true );
-               $tddate = $language->date( $timestamp, true );
-               $tdtime = $language->time( $timestamp, true );
+               $user = $this->getContext()->getUser();
+
+               $td = $language->userTimeAndDate( $timestamp, $user );
+               $tddate = $language->userDate( $timestamp, $user );
+               $tdtime = $language->userTime( $timestamp, $user );
 
                # Show user links if allowed to see them. If hidden, then show them only if requested...
                $userlinks = Linker::revUserTools( $revision, !$unhide );
@@ -1224,7 +1222,7 @@ class Article extends Page {
                                array( 'known', 'noclasses' )
                        );
 
-               $cdel = Linker::getRevDeleteLink( $this->getContext()->getUser(), $revision, $this->getTitle() );
+               $cdel = Linker::getRevDeleteLink( $user, $revision, $this->getTitle() );
                if ( $cdel !== '' ) {
                        $cdel .= ' ';
                }
@@ -1371,10 +1369,12 @@ class Article extends Page {
 
                        $this->doDelete( $reason, $suppress );
 
-                       if ( $request->getCheck( 'wpWatch' ) && $user->isLoggedIn() ) {
-                               WatchAction::doWatch( $title, $user );
-                       } elseif ( $title->userIsWatching() ) {
-                               WatchAction::doUnwatch( $title, $user );
+                       if ( $user->isLoggedIn() && $request->getCheck( 'wpWatch' ) != $user->isWatched( $title ) ) {
+                               if ( $request->getCheck( 'wpWatch' ) ) {
+                                       WatchAction::doWatch( $title, $user );
+                               } else {
+                                       WatchAction::doUnwatch( $title, $user );
+                               }
                        }
 
                        return;
@@ -1406,7 +1406,7 @@ class Article extends Page {
                        }
                }
 
-               return $this->confirmDelete( $reason );
+               $this->confirmDelete( $reason );
        }
 
        /**
@@ -1438,7 +1438,7 @@ class Article extends Page {
                } else {
                        $suppress = '';
                }
-               $checkWatch = $user->getBoolOption( 'watchdeletion' ) || $this->getTitle()->userIsWatching();
+               $checkWatch = $user->getBoolOption( 'watchdeletion' ) || $user->isWatched( $this->getTitle() );
 
                $form = Xml::openElement( 'form', array( 'method' => 'post',
                        'action' => $this->getTitle()->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
@@ -1522,7 +1522,8 @@ class Article extends Page {
        public function doDelete( $reason, $suppress = false ) {
                $error = '';
                $outputPage = $this->getContext()->getOutput();
-               if ( $this->mPage->doDeleteArticle( $reason, $suppress, 0, true, $error ) ) {
+               $status = $this->mPage->doDeleteArticleReal( $reason, $suppress, 0, true, $error );
+               if ( $status->isGood() ) {
                        $deleted = $this->getTitle()->getPrefixedText();
 
                        $outputPage->setPageTitle( wfMessage( 'actioncomplete' ) );
@@ -1535,8 +1536,9 @@ class Article extends Page {
                } else {
                        $outputPage->setPageTitle( wfMessage( 'cannotdelete-title', $this->getTitle()->getPrefixedText() ) );
                        if ( $error == '' ) {
+                               $errors = $status->getErrorsArray();
                                $outputPage->wrapWikiMsg( "<div class=\"error mw-error-cannotdelete\">\n$1\n</div>",
-                                       array( 'cannotdelete', wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) )
+                                       $errors[0]
                                );
                                $outputPage->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
 
index e550473..c7fcf93 100644 (file)
  * someone logs in who can be authenticated externally.
  */
 class AuthPlugin {
+
+       /**
+        * @var string
+        */
+       protected $domain;
+
        /**
         * Check whether there exists a user account with the given name.
         * The name will be normalized to MediaWiki's requirements, so
@@ -83,6 +89,19 @@ class AuthPlugin {
                $this->domain = $domain;
        }
 
+       /**
+        * Get the user's domain
+        *
+        * @return string
+        */
+       public function getDomain() {
+               if ( isset( $this->domain ) ) {
+                       return $this->domain;
+               } else {
+                       return 'invaliddomain';
+               }
+       }
+
        /**
         * Check to see if the specific domain is a valid domain.
         *
index d29c4e3..11cf616 100644 (file)
@@ -176,6 +176,7 @@ $wgAutoloadLocalClasses = array(
        'MWException' => 'includes/Exception.php',
        'MWExceptionHandler' => 'includes/Exception.php',
        'MWFunction' => 'includes/MWFunction.php',
+       'MWHookException' => 'includes/Hooks.php',
        'MWHttpRequest' => 'includes/HttpFunctions.php',
        'MWInit' => 'includes/Init.php',
        'MWNamespace' => 'includes/Namespace.php',
@@ -208,6 +209,7 @@ $wgAutoloadLocalClasses = array(
        'ReplacementArray' => 'includes/StringUtils.php',
        'Replacer' => 'includes/StringUtils.php',
        'ReverseChronologicalPager' => 'includes/Pager.php',
+       'RevisionItem' => 'includes/RevisionList.php',
        'RevisionItemBase' => 'includes/RevisionList.php',
        'RevisionListBase' => 'includes/RevisionList.php',
        'Revision' => 'includes/Revision.php',
@@ -248,6 +250,7 @@ $wgAutoloadLocalClasses = array(
        'TitleArrayFromResult' => 'includes/TitleArray.php',
        'ThrottledError' => 'includes/Exception.php',
        'UnlistedSpecialPage' => 'includes/SpecialPage.php',
+       'UploadSourceAdapter' => 'includes/Import.php',
        'UppercaseCollation' => 'includes/Collation.php',
        'User' => 'includes/User.php',
        'UserArray' => 'includes/UserArray.php',
@@ -275,10 +278,12 @@ $wgAutoloadLocalClasses = array(
        'Xml' => 'includes/Xml.php',
        'XmlDumpWriter' => 'includes/Export.php',
        'XmlJsCode' => 'includes/Xml.php',
+       'XMLReader2' => 'includes/Import.php',
        'XmlSelect' => 'includes/Xml.php',
        'XmlTypeCheck' => 'includes/XmlTypeCheck.php',
        'ZhClient' => 'includes/ZhClient.php',
        'ZipDirectoryReader' => 'includes/ZipDirectoryReader.php',
+       'ZipDirectoryReaderError' => 'includes/ZipDirectoryReader.php',
 
        # includes/actions
        'CachedAction' => 'includes/actions/CachedAction.php',
@@ -430,6 +435,9 @@ $wgAutoloadLocalClasses = array(
        'IContextSource' => 'includes/context/IContextSource.php',
        'RequestContext' => 'includes/context/RequestContext.php',
 
+       # includes/dao
+       'IDBAccessObject' => 'includes/dao/IDBAccessObject.php',
+
        # includes/db
        'Blob' => 'includes/db/DatabaseUtility.php',
        'ChronologyProtector' => 'includes/db/LBFactory.php',
@@ -444,6 +452,7 @@ $wgAutoloadLocalClasses = array(
        'DatabaseSqlite' => 'includes/db/DatabaseSqlite.php',
        'DatabaseSqliteStandalone' => 'includes/db/DatabaseSqlite.php',
        'DatabaseType' => 'includes/db/Database.php',
+       'DBAccessError' => 'includes/db/LBFactory.php',
        'DBConnectionError' => 'includes/db/DatabaseError.php',
        'DBError' => 'includes/db/DatabaseError.php',
        'DBObject' => 'includes/db/DatabaseUtility.php',
@@ -456,7 +465,10 @@ $wgAutoloadLocalClasses = array(
        'Field' => 'includes/db/DatabaseUtility.php',
        'IBM_DB2Blob' => 'includes/db/DatabaseIbm_db2.php',
        'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
+       'IBM_DB2Helper' => 'includes/db/DatabaseIbm_db2.php',
+       'IBM_DB2Result' => 'includes/db/DatabaseIbm_db2.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',
@@ -466,15 +478,20 @@ $wgAutoloadLocalClasses = array(
        'LoadMonitor' => 'includes/db/LoadMonitor.php',
        'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
        'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
+       'MssqlField' => 'includes/db/DatabaseMssql.php',
+       'MssqlResult' => 'includes/db/DatabaseMssql.php',
        'MySQLField' => 'includes/db/DatabaseMysql.php',
        'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
        'ORAField' => 'includes/db/DatabaseOracle.php',
        'ORAResult' => 'includes/db/DatabaseOracle.php',
+       'ORMIterator' => 'includes/db/ORMIterator.php',
        'ORMResult' => 'includes/db/ORMResult.php',
        'ORMRow' => 'includes/db/ORMRow.php',
        'ORMTable' => 'includes/db/ORMTable.php',
        'PostgresField' => 'includes/db/DatabasePostgres.php',
+       'PostgresTransactionState' => 'includes/db/DatabasePostgres.php',
        'ResultWrapper' => 'includes/db/DatabaseUtility.php',
+       'SavepointPostgres' => 'includes/db/DatabasePostgres.php',
        'SQLiteField' => 'includes/db/DatabaseSqlite.php',
 
        # includes/debug
@@ -514,6 +531,7 @@ $wgAutoloadLocalClasses = array(
        'LocalRepo' => 'includes/filerepo/LocalRepo.php',
        'NullRepo' => 'includes/filerepo/NullRepo.php',
        'RepoGroup' => 'includes/filerepo/RepoGroup.php',
+       'TempFileRepo' => 'includes/filerepo/FileRepo.php',
 
        # includes/filerepo/file
        'ArchivedFile' => 'includes/filerepo/file/ArchivedFile.php',
@@ -557,6 +575,8 @@ $wgAutoloadLocalClasses = array(
        'FSLockManager' => 'includes/filerepo/backend/lockmanager/FSLockManager.php',
        'DBLockManager' => 'includes/filerepo/backend/lockmanager/DBLockManager.php',
        'LSLockManager' => 'includes/filerepo/backend/lockmanager/LSLockManager.php',
+       'MemcLockManager' => 'includes/filerepo/backend/lockmanager/MemcLockManager.php',
+       'QuorumLockManager' => 'includes/filerepo/backend/lockmanager/LockManager.php',
        'MySqlLockManager'=> 'includes/filerepo/backend/lockmanager/DBLockManager.php',
        'NullLockManager' => 'includes/filerepo/backend/lockmanager/LockManager.php',
        'FileOp' => 'includes/filerepo/backend/FileOp.php',
@@ -613,7 +633,7 @@ $wgAutoloadLocalClasses = array(
        'DoubleRedirectJob' => 'includes/job/DoubleRedirectJob.php',
        'EmaillingJob' => 'includes/job/EmaillingJob.php',
        'EnotifNotifyJob' => 'includes/job/EnotifNotifyJob.php',
-       'Job' => 'includes/job/JobQueue.php',
+       'Job' => 'includes/job/Job.php',
        'RefreshLinksJob' => 'includes/job/RefreshLinksJob.php',
        'RefreshLinksJob2' => 'includes/job/RefreshLinksJob.php',
        'UploadFromUrlJob' => 'includes/job/UploadFromUrlJob.php',
@@ -625,13 +645,18 @@ $wgAutoloadLocalClasses = array(
 
        # includes/libs
        'CSSJanus' => 'includes/libs/CSSJanus.php',
+       'CSSJanus_Tokenizer' => 'includes/libs/CSSJanus.php',
        'CSSMin' => 'includes/libs/CSSMin.php',
        'HttpStatus' => 'includes/libs/HttpStatus.php',
        'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php',
        'IEUrlExtension' => 'includes/libs/IEUrlExtension.php',
        'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
+       'JSCompilerContext' => 'includes/libs/jsminplus.php',
        'JSMinPlus' => 'includes/libs/jsminplus.php',
+       'JSNode' => 'includes/libs/jsminplus.php',
        'JSParser' => 'includes/libs/jsminplus.php',
+       'JSToken' => 'includes/libs/jsminplus.php',
+       'JSTokenizer' => 'includes/libs/jsminplus.php',
 
        # includes/logging
        'DatabaseLogEntry' => 'includes/logging/LogEntry.php',
@@ -674,6 +699,7 @@ $wgAutoloadLocalClasses = array(
        'PNGMetadataExtractor' => 'includes/media/PNGMetadataExtractor.php',
        'SvgHandler' => 'includes/media/SVG.php',
        'SVGMetadataExtractor' => 'includes/media/SVGMetadataExtractor.php',
+       'SVGReader' => 'includes/media/SVGMetadataExtractor.php',
        'ThumbnailImage' => 'includes/media/MediaTransformOutput.php',
        'TiffHandler' => 'includes/media/Tiff.php',
        'TransformParameterError' => 'includes/media/MediaTransformOutput.php',
@@ -714,6 +740,7 @@ $wgAutoloadLocalClasses = array(
        'LinkHolderArray' => 'includes/parser/LinkHolderArray.php',
        'LinkMarkerReplacer' => 'includes/parser/Parser_LinkHooks.php',
        'MWTidy' => 'includes/parser/Tidy.php',
+       'MWTidyWrapper' => 'includes/parser/Tidy.php',
        'PPCustomFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
        'PPCustomFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
        'PPCustomFrame_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
@@ -785,6 +812,7 @@ $wgAutoloadLocalClasses = array(
        # includes/revisiondelete
        'RevDel_ArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
+       'RevDel_ArchivedRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_FileItem' => 'includes/revisiondelete/RevisionDelete.php',
@@ -800,6 +828,7 @@ $wgAutoloadLocalClasses = array(
        'RevisionDeleteUser' => 'includes/revisiondelete/RevisionDeleteUser.php',
 
        # includes/search
+       'MssqlSearchResultSet' => 'includes/search/SearchMssql.php',
        'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
        'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
        'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
@@ -809,6 +838,7 @@ $wgAutoloadLocalClasses = array(
        'SearchIBM_DB2' => 'includes/search/SearchIBM_DB2.php',
        'SearchMssql' => 'includes/search/SearchMssql.php',
        'SearchMySQL' => 'includes/search/SearchMySQL.php',
+       'SearchNearMatchResultSet' => 'includes/search/SearchEngine.php',
        'SearchOracle' => 'includes/search/SearchOracle.php',
        'SearchPostgres' => 'includes/search/SearchPostgres.php',
        'SearchResult' => 'includes/search/SearchEngine.php',
@@ -826,6 +856,7 @@ $wgAutoloadLocalClasses = array(
        'AncientPagesPage' => 'includes/specials/SpecialAncientpages.php',
        'BlockListPager' => 'includes/specials/SpecialBlockList.php',
        'BrokenRedirectsPage' => 'includes/specials/SpecialBrokenRedirects.php',
+       'CategoryPager' => 'includes/specials/SpecialCategories.php',
        'ContribsPager' => 'includes/specials/SpecialContributions.php',
        'DBLockForm' => 'includes/specials/SpecialLockdb.php',
        'DBUnlockForm' => 'includes/specials/SpecialUnlockdb.php',
@@ -834,11 +865,14 @@ $wgAutoloadLocalClasses = array(
        'DeletedContributionsPage' => 'includes/specials/SpecialDeletedContributions.php',
        'DisambiguationsPage' => 'includes/specials/SpecialDisambiguations.php',
        'DoubleRedirectsPage' => 'includes/specials/SpecialDoubleRedirects.php',
+       'EditWatchlistCheckboxSeriesField' => 'includes/specials/SpecialEditWatchlist.php',
+       'EditWatchlistNormalHTMLForm' => 'includes/specials/SpecialEditWatchlist.php',
        'EmailConfirmation' => 'includes/specials/SpecialConfirmemail.php',
        'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
        'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
        'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
        'HTMLBlockedUsersItemSelect' => 'includes/specials/SpecialBlockList.php',
+       'ImageListPager' => 'includes/specials/SpecialListfiles.php',
        'ImportReporter' => 'includes/specials/SpecialImport.php',
        'IPBlockForm' => 'includes/specials/SpecialBlock.php',
        'LinkSearchPage' => 'includes/specials/SpecialLinkSearch.php',
@@ -846,6 +880,7 @@ $wgAutoloadLocalClasses = array(
        'LoginForm' => 'includes/specials/SpecialUserlogin.php',
        'LonelyPagesPage' => 'includes/specials/SpecialLonelypages.php',
        'LongPagesPage' => 'includes/specials/SpecialLongpages.php',
+       'MergeHistoryPager' => 'includes/specials/SpecialMergeHistory.php',
        'MIMEsearchPage' => 'includes/specials/SpecialMIMEsearch.php',
        'MostcategoriesPage' => 'includes/specials/SpecialMostcategories.php',
        'MostimagesPage' => 'includes/specials/SpecialMostimages.php',
@@ -854,9 +889,12 @@ $wgAutoloadLocalClasses = array(
        'MostlinkedTemplatesPage' => 'includes/specials/SpecialMostlinkedtemplates.php',
        'MostrevisionsPage' => 'includes/specials/SpecialMostrevisions.php',
        'MovePageForm' => 'includes/specials/SpecialMovepage.php',
+       'NewFilesPager' => 'includes/specials/SpecialNewimages.php',
        'NewPagesPager' => 'includes/specials/SpecialNewpages.php',
        'PageArchive' => 'includes/specials/SpecialUndelete.php',
        'PopularPagesPage' => 'includes/specials/SpecialPopularpages.php',
+       'ProtectedPagesPager' => 'includes/specials/SpecialProtectedpages.php',
+       'ProtectedTitlesPager' => 'includes/specials/SpecialProtectedtitles.php',
        'RandomPage' => 'includes/specials/SpecialRandompage.php',
        'ShortPagesPage' => 'includes/specials/SpecialShortpages.php',
        'SpecialActiveUsers' => 'includes/specials/SpecialActiveusers.php',
@@ -907,10 +945,11 @@ $wgAutoloadLocalClasses = array(
        'SpecialUnlockdb' => 'includes/specials/SpecialUnlockdb.php',
        'SpecialUpload' => 'includes/specials/SpecialUpload.php',
        'SpecialUploadStash' => 'includes/specials/SpecialUploadStash.php',
+       'SpecialUploadStashTooLargeException' => 'includes/specials/SpecialUploadStash.php',
        'SpecialUserlogout' => 'includes/specials/SpecialUserlogout.php',
        'SpecialVersion' => 'includes/specials/SpecialVersion.php',
        'SpecialWatchlist' => 'includes/specials/SpecialWatchlist.php',
-       'SpecialWhatlinkshere' => 'includes/specials/SpecialWhatlinkshere.php',
+       'SpecialWhatLinksHere' => 'includes/specials/SpecialWhatlinkshere.php',
        'UncategorizedCategoriesPage' => 'includes/specials/SpecialUncategorizedcategories.php',
        'UncategorizedImagesPage' => 'includes/specials/SpecialUncategorizedimages.php',
        'UncategorizedPagesPage' => 'includes/specials/SpecialUncategorizedpages.php',
@@ -919,6 +958,8 @@ $wgAutoloadLocalClasses = array(
        'UnusedimagesPage' => 'includes/specials/SpecialUnusedimages.php',
        'UnusedtemplatesPage' => 'includes/specials/SpecialUnusedtemplates.php',
        'UnwatchedpagesPage' => 'includes/specials/SpecialUnwatchedpages.php',
+       'UploadChunkFileException' => 'includes/upload/UploadFromChunks.php',
+       'UploadChunkZeroLengthFileException' => 'includes/upload/UploadFromChunks.php',
        'UploadForm' => 'includes/specials/SpecialUpload.php',
        'UploadSourceField' => 'includes/specials/SpecialUpload.php',
        'UserrightsPage' => 'includes/specials/SpecialUserrights.php',
@@ -953,6 +994,7 @@ $wgAutoloadLocalClasses = array(
        'UploadStashNoSuchKeyException' => 'includes/upload/UploadStash.php',
 
        # languages
+       'ConverterRule' => 'languages/LanguageConverter.php',
        'FakeConverter' => 'languages/Language.php',
        'Language' => 'languages/Language.php',
        'LanguageConverter' => 'languages/LanguageConverter.php',
@@ -982,6 +1024,7 @@ $wgAutoloadLocalClasses = array(
 
        # maintenance/language
        'csvStatsOutput' => 'maintenance/language/StatOutputs.php',
+       'extensionLanguages' => 'maintenance/language/languages.inc',
        'languages' => 'maintenance/language/languages.inc',
        'MessageWriter' => 'maintenance/language/writeMessagesArray.inc',
        'statsOutput' => 'maintenance/language/StatOutputs.php',
@@ -994,17 +1037,21 @@ $wgAutoloadLocalClasses = array(
 
        # mw-config
        'InstallerOverrides' => 'mw-config/overrides.php',
+       'MyLocalSettingsGenerator' => 'mw-config/overrides.php',
 
        # tests
        'DbTestPreviewer' => 'tests/testHelpers.inc',
        'DbTestRecorder' => 'tests/testHelpers.inc',
+       'DelayedParserTest' => 'tests/testHelpers.inc',
        'TestFileIterator' => 'tests/testHelpers.inc',
        'TestRecorder' => 'tests/testHelpers.inc',
 
+       # tests/phpunit/includes/db
+       'ORMRowTest' => 'tests/phpunit/includes/db/ORMRowTest.php',
+
        # tests/parser
        'ParserTest' => 'tests/parser/parserTest.inc',
        'ParserTestParserHook' => 'tests/parser/parserTestsParserHook.php',
-       'ParserTestStaticParserHook' => 'tests/parser/parserTestsStaticParserHook.php',
 
        # tests/selenium
        'Selenium' => 'tests/selenium/Selenium.php',
@@ -1015,6 +1062,23 @@ $wgAutoloadLocalClasses = array(
        'SeleniumTestListener' => 'tests/selenium/SeleniumTestListener.php',
        'SeleniumTestSuite' => 'tests/selenium/SeleniumTestSuite.php',
        'SeleniumConfig' => 'tests/selenium/SeleniumConfig.php',
+
+       # skins
+       'CologneBlueTemplate' => 'skins/CologneBlue.php',
+       'ModernTemplate' => 'skins/Modern.php',
+       'MonoBookTemplate' => 'skins/MonoBook.php',
+       'NostalgiaTemplate' => 'skins/Nostalgia.php',
+       'SkinChick' => 'skins/Chick.php',
+       'SkinCologneBlue' => 'skins/CologneBlue.php',
+       'SkinModern' => 'skins/Modern.php',
+       'SkinMonoBook' => 'skins/MonoBook.php',
+       'SkinMySkin' => 'skins/MySkin.php',
+       'SkinNostalgia' => 'skins/Nostalgia.php',
+       'SkinSimple' => 'skins/Simple.php',
+       'SkinStandard' => 'skins/Standard.php',
+       'SkinVector' => 'skins/Vector.php',
+       'StandardTemplate' => 'skins/Standard.php',
+       'VectorTemplate' => 'skins/Vector.php',
 );
 
 class AutoLoader {
index 204df45..34e9eba 100644 (file)
@@ -35,6 +35,8 @@ class ChangeTags {
         *
         */
        static function formatSummaryRow( $tags, $page ) {
+               global $wgLang;
+
                if( !$tags )
                        return array( '', array() );
 
@@ -51,7 +53,7 @@ class ChangeTags {
                        );
                        $classes[] = Sanitizer::escapeClass( "mw-tag-$tag" );
                }
-               $markers = '(' . implode( ', ', $displayTags ) . ')';
+               $markers = wfMessage( 'parentheses' )->rawParams( $wgLang->commaList( $displayTags ) )->text();
                $markers = Xml::tags( 'span', array( 'class' => 'mw-tag-markers' ), $markers );
 
                return array( $markers, $classes );
index d280c9a..fe0db10 100644 (file)
@@ -123,7 +123,7 @@ class ChangesList extends ContextSource {
                if( !isset( $this->message ) ) {
                        foreach ( explode( ' ', 'cur diff hist last blocklink history ' .
                        'semicolon-separator pipe-separator' ) as $msg ) {
-                               $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
+                               $this->message[$msg] = $this->msg( $msg )->escaped();
                        }
                }
        }
@@ -192,6 +192,7 @@ class ChangesList extends ContextSource {
                $this->rcCacheIndex = 0;
                $this->lastdate = '';
                $this->rclistOpen = false;
+               $this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
                return '';
        }
 
@@ -199,22 +200,31 @@ class ChangesList extends ContextSource {
         * Show formatted char difference
         * @param $old Integer: bytes
         * @param $new Integer: bytes
+        * @param $context IContextSource context to use
         * @return String
         */
-       public static function showCharacterDifference( $old, $new ) {
-               global $wgRCChangedSizeThreshold, $wgLang, $wgMiserMode;
+       public static function showCharacterDifference( $old, $new, IContextSource $context = null ) {
+               global $wgRCChangedSizeThreshold, $wgMiserMode;
+
+               if ( !$context ) {
+                       $context = RequestContext::getMain();
+               }
+
+               $new = (int)$new;
+               $old = (int)$old;
                $szdiff = $new - $old;
 
-               $code = $wgLang->getCode();
+               $lang = $context->getLanguage();
+               $code = $lang->getCode();
                static $fastCharDiff = array();
                if ( !isset($fastCharDiff[$code]) ) {
-                       $fastCharDiff[$code] = $wgMiserMode || wfMsgNoTrans( 'rc-change-size' ) === '$1';
+                       $fastCharDiff[$code] = $wgMiserMode || $context->msg( 'rc-change-size' )->plain() === '$1';
                }
 
-               $formattedSize = $wgLang->formatNum($szdiff);
+               $formattedSize = $lang->formatNum( $szdiff );
 
                if ( !$fastCharDiff[$code] ) {
-                       $formattedSize = wfMsgExt( 'rc-change-size', array( 'parsemag' ), $formattedSize );
+                       $formattedSize = $context->msg( 'rc-change-size', $formattedSize )->text();
                }
 
                if( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) {
@@ -234,11 +244,34 @@ class ChangesList extends ContextSource {
                        $formattedSizeClass = 'mw-plusminus-neg';
                }
 
-               $formattedTotalSize = wfMsgExt( 'rc-change-size-new', 'parsemag', $wgLang->formatNum( $new ) );
+               $formattedTotalSize = $context->msg( 'rc-change-size-new' )->numParams( $new )->text();
 
                return Html::element( $tag,
                        array( 'dir' => 'ltr', 'class' => $formattedSizeClass, 'title' => $formattedTotalSize ),
-                       wfMessage( 'parentheses', $formattedSize )->plain() ) . $wgLang->getDirMark();
+                       $context->msg( 'parentheses', $formattedSize )->plain() ) . $lang->getDirMark();
+       }
+
+       /**
+        * Format the character difference of one or several changes.
+        *
+        * @param $old RecentChange
+        * @param $new RecentChange last change to use, if not provided, $old will be used
+        * @return string HTML fragment
+        */
+       public function formatCharacterDifference( RecentChange $old, RecentChange $new = null ) {
+               $oldlen = $old->mAttribs['rc_old_len'];
+
+               if ( $new ) {
+                       $newlen = $new->mAttribs['rc_new_len'];
+               } else {
+                       $newlen = $old->mAttribs['rc_new_len'];
+               }
+
+               if( $oldlen === null || $newlen === null ) {
+                       return '';
+               }
+
+               return self::showCharacterDifference( $oldlen, $newlen, $this->getContext() );
        }
 
        /**
@@ -255,7 +288,7 @@ class ChangesList extends ContextSource {
 
        public function insertDateHeader( &$s, $rc_timestamp ) {
                # Make date header if necessary
-               $date = $this->getLanguage()->date( $rc_timestamp, true, true );
+               $date = $this->getLanguage()->userDate( $rc_timestamp, $this->getUser() );
                if( $date != $this->lastdate ) {
                        if( $this->lastdate != '' ) {
                                $s .= "</ul>\n";
@@ -339,10 +372,8 @@ class ChangesList extends ContextSource {
                if( $this->isDeleted($rc,Revision::DELETED_TEXT) ) {
                        $articlelink = '<span class="history-deleted">' . $articlelink . '</span>';
                }
-               # Bolden pages watched by this user
-               if( $watched ) {
-                       $articlelink = "<strong class=\"mw-watched\">{$articlelink}</strong>";
-               }
+               # To allow for boldening pages watched by this user
+               $articlelink = "<span class=\"mw-title\">{$articlelink}</span>";
                # RTL/LTR marker
                $articlelink .= $this->getLanguage()->getDirMark();
 
@@ -358,7 +389,7 @@ class ChangesList extends ContextSource {
         */
        public function insertTimestamp( &$s, $rc ) {
                $s .= $this->message['semicolon-separator'] .
-                       $this->getLanguage()->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
+                       $this->getLanguage()->userTime( $rc->mAttribs['rc_timestamp'], $this->getUser() ) . ' . . ';
        }
 
        /**
@@ -369,7 +400,7 @@ class ChangesList extends ContextSource {
         */
        public function insertUserRelatedLinks( &$s, &$rc ) {
                if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
-                       $s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
+                       $s .= ' <span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
                } else {
                        $s .= $this->getLanguage()->getDirMark() . Linker::userLink( $rc->mAttribs['rc_user'],
                                $rc->mAttribs['rc_user_text'] );
@@ -385,12 +416,13 @@ class ChangesList extends ContextSource {
         */
        public function insertLogEntry( $rc ) {
                $formatter = LogFormatter::newFromRow( $rc->mAttribs );
+               $formatter->setContext( $this->getContext() );
                $formatter->setShowUserToolLinks( true );
                $mark = $this->getLanguage()->getDirMark();
                return $formatter->getActionText() . " $mark" . $formatter->getComment();
        }
 
-       /** 
+       /**
         * Insert a formatted comment
         * @param $rc RecentChange
         * @return string
@@ -398,7 +430,7 @@ class ChangesList extends ContextSource {
        public function insertComment( $rc ) {
                if( $rc->mAttribs['rc_type'] != RC_MOVE && $rc->mAttribs['rc_type'] != RC_MOVE_OVER_REDIRECT ) {
                        if( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) {
-                               return ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
+                               return ' <span class="history-deleted">' . $this->msg( 'rev-deleted-comment' )->escaped() . '</span>';
                        } else {
                                return Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
                        }
@@ -422,8 +454,7 @@ class ChangesList extends ContextSource {
                static $cache = array();
                if( $count > 0 ) {
                        if( !isset( $cache[$count] ) ) {
-                               $cache[$count] = wfMsgExt( 'number_of_watching_users_RCview',
-                                       array('parsemag', 'escape' ), $this->getLanguage()->formatNum( $count ) );
+                               $cache[$count] = $this->msg( 'number_of_watching_users_RCview' )->numParams( $count )->escaped();
                        }
                        return $cache[$count];
                } else {
@@ -558,6 +589,10 @@ class OldChangesList extends ChangesList {
                        }
                }
 
+               // Indicate watched status on the line to allow for more
+               // comprehensive styling.
+               $classes[] = $watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
+
                // Moved pages (very very old, not supported anymore)
                if( $rc->mAttribs['rc_type'] == RC_MOVE || $rc->mAttribs['rc_type'] == RC_MOVE_OVER_REDIRECT ) {
                // Log entries
@@ -588,9 +623,9 @@ class OldChangesList extends ChangesList {
                # Edit/log timestamp
                $this->insertTimestamp( $s, $rc );
                # Bytes added or removed
-               if( $wgRCShowChangedSize ) {
-                       $cd = $rc->getCharacterDifference();
-                       if( $cd != '' ) {
+               if ( $wgRCShowChangedSize ) {
+                       $cd = $this->formatCharacterDifference( $rc );
+                       if ( $cd !== '' ) {
                                $s .= "$cd  . . ";
                        }
                }
@@ -614,8 +649,7 @@ class OldChangesList extends ChangesList {
 
                # How many users watch this page
                if( $rc->numberofWatchingusers > 0 ) {
-                       $s .= ' ' . wfMsgExt( 'number_of_watching_users_RCview',
-                               array( 'parsemag', 'escape' ), $this->getLanguage()->formatNum( $rc->numberofWatchingusers ) );
+                       $s .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers );
                }
 
                if( $this->watchlist ) {
@@ -667,7 +701,7 @@ class EnhancedChangesList extends ChangesList {
                $curIdEq = array( 'curid' => $rc->mAttribs['rc_cur_id'] );
 
                # If it's a new day, add the headline and flush the cache
-               $date = $this->getLanguage()->date( $rc->mAttribs['rc_timestamp'], true );
+               $date = $this->getLanguage()->userDate( $rc->mAttribs['rc_timestamp'], $this->getUser() );
                $ret = '';
                if( $date != $this->lastdate ) {
                        # Process current cache
@@ -715,7 +749,7 @@ class EnhancedChangesList extends ChangesList {
                        $showdifflinks = false;
                }
 
-               $time = $this->getLanguage()->time( $rc->mAttribs['rc_timestamp'], true, true );
+               $time = $this->getLanguage()->userTime( $rc->mAttribs['rc_timestamp'], $this->getUser() );
                $rc->watched = $watched;
                $rc->link = $clink;
                $rc->timestamp = $time;
@@ -764,7 +798,7 @@ class EnhancedChangesList extends ChangesList {
 
                # Make user links
                if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
-                       $rc->userlink = ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
+                       $rc->userlink = ' <span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
                } else {
                        $rc->userlink = Linker::userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
                        $rc->usertalklink = Linker::userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
@@ -808,14 +842,16 @@ class EnhancedChangesList extends ChangesList {
                wfProfileIn( __METHOD__ );
 
                # Add the namespace and title of the block as part of the class
+               $classes = array( 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' );
                if ( $block[0]->mAttribs['rc_log_type'] ) {
                        # Log entry
-                       $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-'
+                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
                                        . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
                } else {
-                       $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns'
+                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
                                        . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
                }
+               $classes[] = $block[0]->watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
                $r = Html::openElement( 'table', array( 'class' => $classes ) ) .
                        Html::openElement( 'tr' );
 
@@ -875,9 +911,9 @@ class EnhancedChangesList extends ChangesList {
                }
 
                $users = ' <span class="changedby">'
-                       . $this->getContext()->msg( 'brackets' )->rawParams(
+                       . $this->msg( 'brackets' )->rawParams(
                                implode( $this->message['semicolon-separator'], $users )
-                       )->plain() . '</span>';
+                       )->escaped() . '</span>';
 
                $tl = '<span class="mw-collapsible-toggle mw-enhancedchanges-arrow"></span>';
                $r .= "<td>$tl</td>";
@@ -895,7 +931,7 @@ class EnhancedChangesList extends ChangesList {
 
                # Article link
                if( $namehidden ) {
-                       $r .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-event' ) . '</span>';
+                       $r .= ' <span class="history-deleted">' . $this->msg( 'rev-deleted-event' )->escaped() . '</span>';
                } elseif( $allLogs ) {
                        $r .= $this->maybeWatchedLink( $block[0]->link, $block[0]->watched );
                } else {
@@ -909,7 +945,7 @@ class EnhancedChangesList extends ChangesList {
                $n = count($block);
                static $nchanges = array();
                if ( !isset( $nchanges[$n] ) ) {
-                       $nchanges[$n] = wfMsgExt( 'nchanges', array( 'parsemag', 'escape' ), $this->getLanguage()->formatNum( $n ) );
+                       $nchanges[$n] = $this->msg( 'nchanges' )->numParams( $n )->escaped();
                }
                # Total change link
                $r .= ' ';
@@ -970,8 +1006,7 @@ class EnhancedChangesList extends ChangesList {
                                $first--;
                        }
                        # Get net change
-                       $chardiff = $rcObj->getCharacterDifference( $block[$first]->mAttribs['rc_old_len'],
-                               $block[$last]->mAttribs['rc_new_len'] );
+                       $chardiff = $this->formatCharacterDifference( $block[$first], $block[$last] );
 
                        if( $chardiff == '' ) {
                                $r .= ' ';
@@ -1032,8 +1067,11 @@ class EnhancedChangesList extends ChangesList {
                        $r .= ' . . ';
 
                        # Character diff
-                       if( $wgRCShowChangedSize && $rcObj->getCharacterDifference() ) {
-                               $r .= $rcObj->getCharacterDifference() . ' . . ' ;
+                       if ( $wgRCShowChangedSize ) {
+                               $cd = $this->formatCharacterDifference( $rcObj );
+                               if ( $cd !== '' ) {
+                                       $r .= "$cd . . ";
+                               }
                        }
 
                        if ( $rcObj->mAttribs['rc_type'] == RC_LOG ) {
@@ -1082,9 +1120,8 @@ class EnhancedChangesList extends ChangesList {
         * @return String: HTML <img> tag
         */
        protected function sideArrow() {
-               global $wgLang;
-               $dir = $wgLang->isRTL() ? 'l' : 'r';
-               return $this->arrow( $dir, '+', wfMsg( 'rc-enhanced-expand' ) );
+               $dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
+               return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() );
        }
 
        /**
@@ -1093,7 +1130,7 @@ class EnhancedChangesList extends ChangesList {
         * @return String: HTML <img> tag
         */
        protected function downArrow() {
-               return $this->arrow( 'd', '-', wfMsg( 'rc-enhanced-hide' ) );
+               return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() );
        }
 
        /**
@@ -1118,14 +1155,16 @@ class EnhancedChangesList extends ChangesList {
 
                $type = $rcObj->mAttribs['rc_type'];
                $logType = $rcObj->mAttribs['rc_log_type'];
+               $classes = array( 'mw-enhanced-rc' );
                if( $logType ) {
                        # Log entry
-                       $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-'
+                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
                                        . $logType . '-' . $rcObj->mAttribs['rc_title'] );
                } else {
-                       $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' .
+                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
                                        $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
                }
+               $classes[] = $rcObj->watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
                $r = Html::openElement( 'table', array( 'class' => $classes ) ) .
                        Html::openElement( 'tr' );
 
@@ -1162,20 +1201,22 @@ class EnhancedChangesList extends ChangesList {
                }
                $r .= ' . . ';
                # Character diff
-               if( $wgRCShowChangedSize && ($cd = $rcObj->getCharacterDifference()) ) {
-                       $r .= "$cd . . ";
+               if ( $wgRCShowChangedSize ) {
+                       $cd = $this->formatCharacterDifference( $rcObj );
+                       if ( $cd !== '' ) {
+                               $r .= "$cd . . ";
+                       }
                }
 
                if ( $type == RC_LOG ) {
                        $r .= $this->insertLogEntry( $rcObj );
-               } else { 
+               } else {
                        $r .= ' '.$rcObj->userlink . $rcObj->usertalklink;
                        $r .= $this->insertComment( $rcObj );
-                       $r .= $this->insertRollback( $r, $rcObj );
+                       $this->insertRollback( $r, $rcObj );
                }
 
                # Tags
-               $classes = explode( ' ', $classes );
                $this->insertTags( $r, $rcObj, $classes );
                # Show how many people are watching this if enabled
                $r .= $this->numberofWatchingusers($rcObj->numberofWatchingusers);
index 508add4..7441932 100644 (file)
@@ -128,28 +128,6 @@ $wgUsePathInfo =
  */
 $wgScriptExtension  = '.php';
 
-/**
- * The URL path to index.php.
- *
- * Will default to "{$wgScriptPath}/index{$wgScriptExtension}" in Setup.php
- */
-$wgScript = false;
-
-/**
- * The URL path to redirect.php. This is a script that is used by the Nostalgia
- * skin.
- *
- * Will default to "{$wgScriptPath}/redirect{$wgScriptExtension}" in Setup.php
- */
-$wgRedirectScript = false;
-
-/**
- * The URL path to load.php.
- *
- * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}".
- */
-$wgLoadScript = false;
-
 
 /**@}*/
 
@@ -172,7 +150,30 @@ $wgLoadScript = false;
  */
 
 /**
- * The URL path of the skins directory. Will default to "{$wgScriptPath}/skins" in Setup.php
+ * The URL path to index.php.
+ *
+ * Defaults to "{$wgScriptPath}/index{$wgScriptExtension}".
+ */
+$wgScript = false;
+
+/**
+ * The URL path to redirect.php. This is a script that is used by the Nostalgia
+ * skin.
+ *
+ * Defaults to "{$wgScriptPath}/redirect{$wgScriptExtension}".
+ */
+$wgRedirectScript = false;
+
+/**
+ * The URL path to load.php.
+ *
+ * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}".
+ */
+$wgLoadScript = false;
+
+/**
+ * The URL path of the skins directory.
+ * Defaults to "{$wgScriptPath}/skins".
  */
 $wgStylePath = false;
 $wgStyleSheetPath = &$wgStylePath;
@@ -191,7 +192,8 @@ $wgLocalStylePath = false;
 $wgExtensionAssetsPath = false;
 
 /**
- * Filesystem stylesheets directory. Will default to "{$IP}/skins" in Setup.php
+ * Filesystem stylesheets directory.
+ * Defaults to "{$IP}/skins".
  */
 $wgStyleDirectory = false;
 
@@ -199,29 +201,31 @@ $wgStyleDirectory = false;
  * The URL path for primary article page views. This path should contain $1,
  * which is replaced by the article title.
  *
- * Will default to "{$wgScript}/$1" or "{$wgScript}?title=$1" in Setup.php,
+ * Defaults to "{$wgScript}/$1" or "{$wgScript}?title=$1",
  * depending on $wgUsePathInfo.
  */
 $wgArticlePath = false;
 
 /**
- * The URL path for the images directory. Will default to "{$wgScriptPath}/images" in Setup.php
+ * The URL path for the images directory.
+ * Defaults to "{$wgScriptPath}/images".
  */
 $wgUploadPath = false;
 
 /**
- * The maximum age of temporary (incomplete) uploaded files
+ * The filesystem path of the images directory. Defaults to "{$IP}/images".
  */
-$wgUploadStashMaxAge = 6 * 3600; // 6 hours
+$wgUploadDirectory = false;
 
 /**
- * The filesystem path of the images directory. Defaults to "{$IP}/images".
+ * Directory where the cached page will be saved.
+ * Defaults to "{$wgUploadDirectory}/cache".
  */
-$wgUploadDirectory = false;
+$wgFileCacheDirectory = false;
 
 /**
  * The URL path of the wiki logo. The logo size should be 135x135 pixels.
- * Will default to "{$wgStylePath}/common/images/wiki.png" in Setup.php
+ * Defaults to "{$wgStylePath}/common/images/wiki.png".
  */
 $wgLogo = false;
 
@@ -240,7 +244,16 @@ $wgAppleTouchIcon = false;
  * The local filesystem path to a temporary directory. This is not required to
  * be web accessible.
  *
- * Will default to "{$wgUploadDirectory}/tmp" in Setup.php
+ * When this setting is set to false, its value will be set through a call
+ * to wfTempDir(). See that methods implementation for the actual detection
+ * logic.
+ *
+ * Developers should use the global function wfTempDir() instead of this
+ * variable.
+ *
+ * @see wfTempDir()
+ * @note Default changed to false in MediaWiki 1.20.
+ *
  */
 $wgTmpDirectory = false;
 
@@ -278,6 +291,11 @@ $wgActionPaths = array();
 /** Uploads have to be specially set up to be secure */
 $wgEnableUploads = false;
 
+/**
+ * The maximum age of temporary (incomplete) uploaded files
+ */
+$wgUploadStashMaxAge = 6 * 3600; // 6 hours
+
 /** Allows to move images and other media files */
 $wgAllowImageMoving = true;
 
@@ -451,28 +469,38 @@ $wgUpdateCompatibleMetadata = false;
  * $wgForeignFileRepos variable.
  */
 $wgUseSharedUploads = false;
+
 /** Full path on the web server where shared uploads can be found */
 $wgSharedUploadPath = "http://commons.wikimedia.org/shared/images";
+
 /** Fetch commons image description pages and display them on the local wiki? */
 $wgFetchCommonsDescriptions = false;
+
 /** Path on the file system where shared uploads can be found. */
 $wgSharedUploadDirectory = "/var/www/wiki3/images";
+
 /** DB name with metadata about shared directory. Set this to false if the uploads do not come from a wiki. */
 $wgSharedUploadDBname = false;
+
 /** Optional table prefix used in database. */
 $wgSharedUploadDBprefix = '';
+
 /** Cache shared metadata in memcached. Don't do this if the commons wiki is in a different memcached domain */
 $wgCacheSharedUploads = true;
+
 /**
-* Allow for upload to be copied from an URL. Requires Special:Upload?source=web
-* The timeout for copy uploads is set by $wgHTTPTimeout.
-*/
+ * Allow for upload to be copied from an URL. Requires Special:Upload?source=web
+ * The timeout for copy uploads is set by $wgHTTPTimeout.
+ * You have to assign the user right 'upload_by_url' to a user group, to use this.
+ */
 $wgAllowCopyUploads = false;
+
 /**
  * Allow asynchronous copy uploads.
  * This feature is experimental and broken as of r81612.
  */
 $wgAllowAsyncCopyUploads = false;
+
 /**
  * A list of domains copy uploads can come from
  */
@@ -723,14 +751,19 @@ $wgSVGConverters = array(
        'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
        'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
        );
+
 /** Pick a converter defined in $wgSVGConverters */
 $wgSVGConverter = 'ImageMagick';
+
 /** If not in the executable PATH, specify the SVG converter path. */
 $wgSVGConverterPath = '';
+
 /** Don't scale a SVG larger than this */
 $wgSVGMaxSize = 2048;
+
 /** Don't read SVG metadata beyond this point.
- * Default is 1024*256 bytes */
+ * Default is 1024*256 bytes
+ */
 $wgSVGMetadataCutoff = 262144;
 
 /**
@@ -879,20 +912,6 @@ $wgAntivirusSetup = array(
 
                'messagepattern' => '/.*?:(.*)/sim',
        ),
-
-       #setup for f-prot
-       'f-prot' => array (
-               'command' => "f-prot ",
-
-               'codemap' => array (
-                       "0" => AV_NO_VIRUS, # no virus
-                       "3" => AV_VIRUS_FOUND, # virus found
-                       "6" => AV_VIRUS_FOUND, # virus found
-                       "*" => AV_SCAN_FAILED, # else scan failed
-               ),
-
-               'messagepattern' => '/.*?Infection:(.*)$/m',
-       ),
 );
 
 
@@ -1372,9 +1391,6 @@ $wgDBClusterTimeout = 10;
  */
 $wgDBAvgStatusPoll = 2000;
 
-/** Set to true if using InnoDB tables */
-$wgDBtransactions = false;
-
 /**
  * Set to true to engage MySQL 4.1/5.0 charset-related features;
  * for now will just cause sending of 'SET NAMES=utf8' on connect.
@@ -1624,7 +1640,8 @@ $wgObjectCaches = array(
 $wgParserCacheExpireTime = 86400;
 
 /**
- * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php> to use as CACHE_DBA backend
+ * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php>
+ * to use as CACHE_DBA backend.
  */
 $wgDBAhandler = 'db3';
 
@@ -1736,12 +1753,6 @@ $wgStyleVersion = '303';
  */
 $wgUseFileCache = false;
 
-/**
- * Directory where the cached page will be saved.
- * Will default to "{$wgUploadDirectory}/cache" in Setup.php
- */
-$wgFileCacheDirectory = false;
-
 /**
  * Depth of the subdirectory hierarchy to be created under
  * $wgFileCacheDirectory.  The subdirectories will be named based on
@@ -2625,7 +2636,7 @@ $wgResourceModules = array();
 $wgResourceLoaderSources = array();
 
 /**
- * Default 'remoteBasePath' value for resource loader modules.
+ * Default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
  * If not set, then $wgScriptPath will be used as a fallback.
  */
 $wgResourceBasePath = null;
@@ -3599,7 +3610,6 @@ $wgGroupPermissions['sysop']['reupload']         = true;
 $wgGroupPermissions['sysop']['reupload-shared']  = true;
 $wgGroupPermissions['sysop']['unwatchedpages']   = true;
 $wgGroupPermissions['sysop']['autoconfirmed']    = true;
-$wgGroupPermissions['sysop']['upload_by_url']    = true;
 $wgGroupPermissions['sysop']['ipblock-exempt']   = true;
 $wgGroupPermissions['sysop']['blockemail']       = true;
 $wgGroupPermissions['sysop']['markbotedits']     = true;
@@ -3609,6 +3619,7 @@ $wgGroupPermissions['sysop']['noratelimit']      = true;
 $wgGroupPermissions['sysop']['movefile']         = true;
 $wgGroupPermissions['sysop']['unblockself']      = true;
 $wgGroupPermissions['sysop']['suppressredirect'] = true;
+#$wgGroupPermissions['sysop']['upload_by_url']    = true;
 #$wgGroupPermissions['sysop']['mergehistory']     = true;
 
 // Permission to change users' group assignments
@@ -4180,6 +4191,13 @@ $wgLogExceptionBacktrace = true;
  */
 $wgShowHostnames = false;
 
+/**
+ * Override server hostname detection with a hardcoded value.
+ * Should be a string, default false.
+ * @since 1.20
+ */
+$wgOverrideHostname = false;
+
 /**
  * If set to true MediaWiki will throw notices for some possible error
  * conditions and for deprecated functions.
index 9e337fd..1f526cc 100644 (file)
@@ -756,7 +756,7 @@ class EditPage {
                } elseif ( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) {
                        # Watch creations
                        $this->watchthis = true;
-               } elseif ( $this->mTitle->userIsWatching() ) {
+               } elseif ( $wgUser->isWatched( $this->mTitle ) ) {
                        # Already watched
                        $this->watchthis = true;
                }
@@ -1063,7 +1063,6 @@ class EditPage {
                                        '</div>';
                                return true;
                }
-               return false;
        }
 
        /**
@@ -1471,7 +1470,7 @@ class EditPage {
         */
        protected function commitWatch() {
                global $wgUser;
-               if ( $this->watchthis xor $this->mTitle->userIsWatching() ) {
+               if ( $wgUser->isLoggedIn() && $this->watchthis != $wgUser->isWatched( $this->mTitle ) ) {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->begin( __METHOD__ );
                        if ( $this->watchthis ) {
@@ -2415,7 +2414,16 @@ HTML
                        '</div>' );
        }
 
+       /**
+        * Get the copyright warning
+        *
+        * Renamed to getCopyrightWarning(), old name kept around for backwards compatibility
+        */
        protected function getCopywarn() {
+               return self::getCopyrightWarning( $this->mTitle );
+       }
+
+       public static function getCopyrightWarning( $title ) {
                global $wgRightsText;
                if ( $wgRightsText ) {
                        $copywarnMsg = array( 'copyrightwarning',
@@ -2426,7 +2434,7 @@ HTML
                                '[[' . wfMsgForContent( 'copyrightpage' ) . ']]' );
                }
                // Allow for site and per-namespace customization of contribution/copyright notice.
-               wfRunHooks( 'EditPageCopyrightWarning', array( $this->mTitle, &$copywarnMsg ) );
+               wfRunHooks( 'EditPageCopyrightWarning', array( $title, &$copywarnMsg ) );
 
                return "<div id=\"editpage-copywarn\">\n" .
                        call_user_func_array( "wfMsgNoTrans", $copywarnMsg ) . "\n</div>";
index 9f6d5bd..502f2ad 100644 (file)
@@ -292,7 +292,13 @@ class ErrorPageError extends MWException {
        public $title, $msg, $params;
 
        /**
+        * @todo document
+        *
         * Note: these arguments are keys into wfMsg(), not text!
+        *
+        * @param $title A title
+        * @param $msg String|Message . In string form, should be a message key
+        * @param $params Array Array to wfMsg()
         */
        function __construct( $title, $msg, $params = null ) {
                $this->title = $title;
@@ -457,6 +463,49 @@ class UserBlockedError extends ErrorPageError {
        }
 }
 
+/**
+ * Shows a generic "user is not logged in" error page.
+ *
+ * This is essentially an ErrorPageError exception which by default use the
+ * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
+ * @see bug 37627
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon ) {
+ *     throw new UserNotLoggedIn();
+ * }
+ * @endcode
+ *
+ * Please note the parameters are mixed up compared to ErrorPageError, this
+ * is done to be able to simply specify a reason whitout overriding the default
+ * title.
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon ) {
+ *     throw new UserNotLoggedIn( 'action-require-loggedin' );
+ * }
+ * @endcode
+ *
+ * @param $reasonMsg A message key containing the reason for the error.
+ *        Optional, default: 'exception-nologin-text'
+ * @param $titleMsg A message key to set the page title.
+ *        Optional, default: 'exception-nologin'
+ * @param $params Parameters to wfMsg().
+ *        Optiona, default: null
+ */
+class UserNotLoggedIn extends ErrorPageError {
+
+       public function __construct(
+               $reasonMsg = 'exception-nologin-text',
+               $titleMsg  = 'exception-nologin',
+               $params = null
+       ) {
+               parent::__construct( $titleMsg, $reasonMsg, $params );
+       }
+}
+
 /**
  * Show an error that looks like an HTTP server error.
  * Replacement for wfHttpError().
index 6c47e34..36d98d6 100644 (file)
@@ -626,6 +626,9 @@ class XmlDumpWriter {
 
                $out  = "    <revision>\n";
                $out .= "      " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
+               if( $row->rev_parent_id ) {
+                       $out .= "      " . Xml::element( 'parentid', null, strval( $row->rev_parent_id ) ) . "\n";
+               }
 
                $out .= $this->writeTimestamp( $row->rev_timestamp );
 
@@ -754,7 +757,7 @@ class XmlDumpWriter {
         * @return string
         */
        function writeUploads( $row, $dumpContents = false ) {
-               if ( $row->page_namespace == NS_IMAGE ) {
+               if ( $row->page_namespace == NS_FILE ) {
                        $img = wfLocalFile( $row->page_title );
                        if ( $img && $img->exists() ) {
                                $out = '';
index 9d6ab65..ecdb5ba 100644 (file)
@@ -119,10 +119,12 @@ class FileDeleteForm {
                                // file, otherwise go back to the description page
                                $wgOut->addReturnTo( $this->oldimage ? $this->title : Title::newMainPage() );
 
-                               if ( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
-                                       WatchAction::doWatch( $this->title, $wgUser );
-                               } elseif ( $this->title->userIsWatching() ) {
-                                       WatchAction::doUnwatch( $this->title, $wgUser );
+                               if ( $wgUser->isLoggedIn() && $wgRequest->getCheck( 'wpWatch' ) != $wgUser->isWatched( $this->title ) ) {
+                                       if ( $wgRequest->getCheck( 'wpWatch' ) ) {
+                                               WatchAction::doWatch( $this->title, $wgUser );
+                                       } else {
+                                               WatchAction::doUnwatch( $this->title, $wgUser );
+                                       }
                                }
                        }
                        return;
@@ -154,12 +156,19 @@ class FileDeleteForm {
                        $status = $file->deleteOld( $oldimage, $reason, $suppress );
                        if( $status->ok ) {
                                // Need to do a log item
-                               $log = new LogPage( 'delete' );
                                $logComment = wfMsgForContent( 'deletedrevision', $oldimage );
                                if( trim( $reason ) != '' ) {
                                        $logComment .= wfMsgForContent( 'colon-separator' ) . $reason;
                                }
-                               $log->addEntry( 'delete', $title, $logComment );
+
+                               $logtype = $suppress ? 'suppress' : 'delete';
+
+                               $logEntry = new ManualLogEntry( $logtype, 'delete' );
+                               $logEntry->setPerformer( $user );
+                               $logEntry->setTarget( $title );
+                               $logEntry->setComment( $logComment );
+                               $logid = $logEntry->insert();
+                               $logEntry->publish( $logid );
                        }
                } else {
                        $status = Status::newFatal( 'cannotdelete',
@@ -170,7 +179,10 @@ class FileDeleteForm {
                        try {
                                // delete the associated article first
                                $error = '';
-                               if ( $page->doDeleteArticleReal( $reason, $suppress, 0, false, $error, $user ) >= WikiPage::DELETE_SUCCESS ) {
+                               $deleteStatus = $page->doDeleteArticleReal( $reason, $suppress, 0, false, $error, $user );
+                               // doDeleteArticleReal() returns a non-fatal error status if the page
+                               // or revision is missing, so check for isOK() rather than isGood()
+                               if ( $deleteStatus->isOK() ) {
                                        $status = $file->delete( $reason, $suppress );
                                        if( $status->isOK() ) {
                                                $dbw->commit( __METHOD__ );
@@ -210,7 +222,7 @@ class FileDeleteForm {
                        $suppress = '';
                }
 
-               $checkWatch = $wgUser->getBoolOption( 'watchdeletion' ) || $this->title->userIsWatching();
+               $checkWatch = $wgUser->getBoolOption( 'watchdeletion' ) || $wgUser->isWatched( $this->title );
                $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getAction(),
                        'id' => 'mw-img-deleteconfirm' ) ) .
                        Xml::openElement( 'fieldset' ) .
index 4cfd946..7e75958 100644 (file)
@@ -1758,6 +1758,15 @@ function wfDebugDieBacktrace( $msg = '' ) {
 function wfHostname() {
        static $host;
        if ( is_null( $host ) ) {
+
+               # Hostname overriding
+               global $wgOverrideHostname;
+               if( $wgOverrideHostname !== false ) {
+                       # Set static and skip any detection
+                       $host = $wgOverrideHostname;
+                       return $host;
+               }
+
                if ( function_exists( 'posix_uname' ) ) {
                        // This function not present on Windows
                        $uname = posix_uname();
@@ -2610,11 +2619,10 @@ function swap( &$x, &$y ) {
 }
 
 /**
- * Tries to get the system directory for temporary files. The TMPDIR, TMP, and
- * TEMP environment variables are then checked in sequence, and if none are set
- * try sys_get_temp_dir() for PHP >= 5.2.1. All else fails, return /tmp for Unix
- * or C:\Windows\Temp for Windows and hope for the best.
- * It is common to call it with tempnam().
+ * Tries to get the system directory for temporary files. First
+ * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
+ * environment variables are then checked in sequence, and if none are
+ * set try sys_get_temp_dir().
  *
  * NOTE: When possible, use instead the tmpfile() function to create
  * temporary files to avoid race conditions on file creation, etc.
@@ -2622,8 +2630,15 @@ function swap( &$x, &$y ) {
  * @return String
  */
 function wfTempDir() {
-       foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
-               $tmp = getenv( $var );
+       global $wgTmpDirectory;
+
+       if ( $wgTmpDirectory !== false ) {
+               return $wgTmpDirectory;
+       }
+
+       $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+
+       foreach( $tmpDir as $tmp ) {
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
index 4f69638..36008fb 100644 (file)
@@ -727,7 +727,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setSubmitTextMsg( $msg ) {
-               return $this->setSubmitText( $this->msg( $msg )->text() );
+               $this->setSubmitText( $this->msg( $msg )->text() );
        }
 
        /**
@@ -775,7 +775,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setWrapperLegendMsg( $msg ) {
-               return $this->setWrapperLegend( $this->msg( $msg )->escaped() );
+               $this->setWrapperLegend( $this->msg( $msg )->escaped() );
        }
 
        /**
index 35b6a8f..526ad0c 100644 (file)
@@ -978,7 +978,7 @@ class Linker {
         * @param $userName String: user name in database.
         * @param $altUserName String: text to display instead of the user name (optional)
         * @return String: HTML fragment
-        * @since 1.19 Method exists for a long time. $displayText was added in 1.19.
+        * @since 1.19 Method exists for a long time. $altUserName was added in 1.19.
         */
        public static function userLink( $userId, $userName, $altUserName = false ) {
                if ( $userId == 0 ) {
@@ -1216,41 +1216,45 @@ class Linker {
                $pre = $match[1];
                $auto = $match[2];
                $post = $match[3];
-               $link = '';
-               if ( $title ) {
-                       $section = $auto;
-
-                       # Remove links that a user may have manually put in the autosummary
-                       # This could be improved by copying as much of Parser::stripSectionName as desired.
-                       $section = str_replace( '[[:', '', $section );
-                       $section = str_replace( '[[', '', $section );
-                       $section = str_replace( ']]', '', $section );
-
-                       $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
-                       if ( $local ) {
-                               $sectionTitle = Title::newFromText( '#' . $section );
-                       } else {
-                               $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
-                                       $title->getDBkey(), $section );
+               $comment = null;
+               wfRunHooks( 'FormatAutocomments', array( &$comment, $pre, $auto, $post, $title, $local ) );
+               if ( $comment === null ) {
+                       $link = '';
+                       if ( $title ) {
+                               $section = $auto;
+
+                               # Remove links that a user may have manually put in the autosummary
+                               # This could be improved by copying as much of Parser::stripSectionName as desired.
+                               $section = str_replace( '[[:', '', $section );
+                               $section = str_replace( '[[', '', $section );
+                               $section = str_replace( ']]', '', $section );
+
+                               $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
+                               if ( $local ) {
+                                       $sectionTitle = Title::newFromText( '#' . $section );
+                               } else {
+                                       $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
+                                               $title->getDBkey(), $section );
+                               }
+                               if ( $sectionTitle ) {
+                                       $link = self::link( $sectionTitle,
+                                               $wgLang->getArrow(), array(), array(),
+                                               'noclasses' );
+                               } else {
+                                       $link = '';
+                               }
                        }
-                       if ( $sectionTitle ) {
-                               $link = self::link( $sectionTitle,
-                                       $wgLang->getArrow(), array(), array(),
-                                       'noclasses' );
-                       } else {
-                               $link = '';
+                       if ( $pre ) {
+                               # written summary $presep autocomment (summary /* section */)
+                               $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
                        }
+                       if ( $post ) {
+                               # autocomment $postsep written summary (/* section */ summary)
+                               $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
+                       }
+                       $auto = '<span class="autocomment">' . $auto . '</span>';
+                       $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                }
-               if ( $pre ) {
-                       # written summary $presep autocomment (summary /* section */)
-                       $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
-               }
-               if ( $post ) {
-                       # autocomment $postsep written summary (/* section */ summary)
-                       $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
-               }
-               $auto = '<span class="autocomment">' . $auto . '</span>';
-               $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                return $comment;
        }
 
@@ -1642,11 +1646,17 @@ class Linker {
         * other users.
         *
         * @param $rev Revision object
+        * @param $context IContextSource context to use or null for the main context.
         * @return string
         */
-       public static function generateRollback( $rev ) {
+       public static function generateRollback( $rev, IContextSource $context = null ) {
+               if ( $context === null ) {
+                       $context = RequestContext::getMain();
+               }
+
                return '<span class="mw-rollback-link">'
-                       . wfMessage( 'brackets' )->rawParams( self::buildRollbackLink( $rev ) )->plain()
+                       . $context->msg( 'brackets' )->rawParams(
+                               self::buildRollbackLink( $rev, $context ) )->plain()
                        . '</span>';
        }
 
@@ -1654,24 +1664,28 @@ class Linker {
         * Build a raw rollback link, useful for collections of "tool" links
         *
         * @param $rev Revision object
+        * @param $context IContextSource context to use or null for the main context.
         * @return String: HTML fragment
         */
-       public static function buildRollbackLink( $rev ) {
-               global $wgRequest, $wgUser;
+       public static function buildRollbackLink( $rev, IContextSource $context = null ) {
+               if ( $context === null ) {
+                       $context = RequestContext::getMain();
+               }
+
                $title = $rev->getTitle();
                $query = array(
                        'action' => 'rollback',
                        'from' => $rev->getUserText(),
-                       'token' => $wgUser->getEditToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
+                       'token' => $context->getUser()->getEditToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
                );
-               if ( $wgRequest->getBool( 'bot' ) ) {
+               if ( $context->getRequest()->getBool( 'bot' ) ) {
                        $query['bot'] = '1';
                        $query['hidediff'] = '1'; // bug 15999
                }
                return self::link(
                        $title,
-                       wfMsgHtml( 'rollbacklink' ),
-                       array( 'title' => wfMsg( 'tooltip-rollback' ) ),
+                       $context->msg( 'rollbacklink' )->escaped(),
+                       array( 'title' => $context->msg( 'tooltip-rollback' )->text() ),
                        $query,
                        array( 'known', 'noclasses' )
                );
index f838ad0..9745b9a 100644 (file)
@@ -99,6 +99,7 @@ class MagicWord {
                'numberoffiles',
                'numberofedits',
                'articlepath',
+               'pageid',
                'sitename',
                'server',
                'servername',
index c87a12b..2e2b8d6 100644 (file)
@@ -339,6 +339,33 @@ class MWNamespace {
                        return $wgContentNamespaces;
                }
        }
+
+       /**
+        * List all namespace indices which are considered subject, aka not a talk
+        * or special namespace. See also MWNamespace::isSubject
+        *
+        * @return array of namespace indices
+        */
+       public static function getSubjectNamespaces() {
+               return array_filter(
+                       MWNamespace::getValidNamespaces(),
+                       'MWNamespace::isSubject'
+               );
+       }
+
+       /**
+        * List all namespace indices which are considered talks, aka not a subject
+        * or special namespace. See also MWNamespace::isTalk
+        *
+        * @return array of namespace indices
+        */
+       public static function getTalkNamespaces() {
+               return array_filter(
+                       MWNamespace::getValidNamespaces(),
+                       'MWNamespace::isTalk'
+               );
+       }
+
        /**
         * Is the namespace first-letter capitalized?
         *
index 35b2f38..c00cfbe 100644 (file)
@@ -237,7 +237,6 @@ class OutputPage extends ContextSource {
        private $mFollowPolicy = 'follow';
        private $mVaryHeader = array(
                'Accept-Encoding' => array( 'list-contains=gzip' ),
-               'Cookie' => null
        );
 
        /**
@@ -1722,6 +1721,16 @@ class OutputPage extends ContextSource {
                $this->mVaryHeader[$header] = array_unique( (array)$this->mVaryHeader[$header] );
        }
 
+       /**
+        * Return a Vary: header on which to vary caches. Based on the keys of $mVaryHeader,
+        * such as Accept-Encoding or Cookie
+        * 
+        * @return String
+        */
+       public function getVaryHeader() {
+               return 'Vary: ' . join( ', ', array_keys( $this->mVaryHeader ) );
+       }
+
        /**
         * Get a complete X-Vary-Options header
         *
@@ -1834,11 +1843,12 @@ class OutputPage extends ContextSource {
                        $response->header( "ETag: $this->mETag" );
                }
 
+               $this->addVaryHeader( 'Cookie' );
                $this->addAcceptLanguage();
 
                # don't serve compressed data to clients who can't handle it
                # maintain different caches for logged-in users and non-logged in ones
-               $response->header( 'Vary: ' . join( ', ', array_keys( $this->mVaryHeader ) ) );
+               $response->header( $this->getVaryHeader() );
 
                if ( $wgUseXVO ) {
                        # Add an X-Vary-Options header for Squid with Wikimedia patches
@@ -2470,7 +2480,7 @@ $templates
                        wfRunHooks( 'AjaxAddScript', array( &$this ) );
 
                        if( $wgAjaxWatch && $this->getUser()->isLoggedIn() ) {
-                               $this->addModules( 'mediawiki.action.watch.ajax' );
+                               $this->addModules( 'mediawiki.page.watch.ajax' );
                        }
 
                        if ( $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
@@ -2512,13 +2522,15 @@ $templates
        protected function makeResourceLoaderLink( $modules, $only, $useESI = false, array $extraQuery = array(), $loadCall = false ) {
                global $wgResourceLoaderUseESI;
 
+               $modules = (array) $modules;
+
                if ( !count( $modules ) ) {
                        return '';
                }
 
                if ( count( $modules ) > 1 ) {
                        // Remove duplicate module requests
-                       $modules = array_unique( (array) $modules );
+                       $modules = array_unique( $modules );
                        // Sort module names so requests are more uniform
                        sort( $modules );
 
@@ -2535,7 +2547,7 @@ $templates
                // Create keyed-by-group list of module objects from modules list
                $groups = array();
                $resourceLoader = $this->getResourceLoader();
-               foreach ( (array) $modules as $name ) {
+               foreach ( $modules as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        # Check that we're allowed to include this module on this page
                        if ( !$module
@@ -2556,7 +2568,7 @@ $templates
                }
 
                $links = '';
-               foreach ( $groups as $group => $modules ) {
+               foreach ( $groups as $group => $grpModules ) {
                        // Special handling for user-specific groups
                        $user = null;
                        if ( ( $group === 'user' || $group === 'private' ) && $this->getUser()->isLoggedIn() ) {
@@ -2580,10 +2592,10 @@ $templates
                        $context = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
                        // Extract modules that know they're empty
                        $emptyModules = array ();
-                       foreach ( $modules as $key => $module ) {
+                       foreach ( $grpModules as $key => $module ) {
                                if ( $module->isKnownEmpty( $context ) ) {
                                        $emptyModules[$key] = 'ready';
-                                       unset( $modules[$key] );
+                                       unset( $grpModules[$key] );
                                }
                        }
                        // Inline empty modules: since they're empty, just mark them as 'ready'
@@ -2601,7 +2613,7 @@ $templates
                        }
 
                        // If there are no modules left, skip this group
-                       if ( $modules === array() ) {
+                       if ( count( $grpModules ) === 0 ) {
                                continue;
                        }
 
@@ -2612,12 +2624,12 @@ $templates
                        if ( $group === 'private' ) {
                                if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
                                        $links .= Html::inlineStyle(
-                                               $resourceLoader->makeModuleResponse( $context, $modules )
+                                               $resourceLoader->makeModuleResponse( $context, $grpModules )
                                        );
                                } else {
                                        $links .= Html::inlineScript(
                                                ResourceLoader::makeLoaderConditionalScript(
-                                                       $resourceLoader->makeModuleResponse( $context, $modules )
+                                                       $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                )
                                        );
                                }
@@ -2633,7 +2645,7 @@ $templates
                        if ( $group === 'user' ) {
                                // Get the maximum timestamp
                                $timestamp = 1;
-                               foreach ( $modules as $module ) {
+                               foreach ( $grpModules as $module ) {
                                        $timestamp = max( $timestamp, $module->getModifiedTime( $context ) );
                                }
                                // Add a version parameter so cache will break when things change
@@ -2641,7 +2653,7 @@ $templates
                        }
 
                        $url = ResourceLoader::makeLoaderURL(
-                               array_keys( $modules ),
+                               array_keys( $grpModules ),
                                $this->getLanguage()->getCode(),
                                $this->getSkin()->getSkinName(),
                                $user,
index 438a99a..750636d 100644 (file)
@@ -194,6 +194,7 @@ abstract class IndexPager extends ContextSource implements Pager {
                        $queryLimit,
                        $descending
                );
+
                $this->extractResultInfo( $this->mOffset, $queryLimit, $this->mResult );
                $this->mQueryDone = true;
 
@@ -303,7 +304,20 @@ abstract class IndexPager extends ContextSource implements Pager {
         * @param $descending Boolean: query direction, false for ascending, true for descending
         * @return ResultWrapper
         */
-       function reallyDoQuery( $offset, $limit, $descending ) {
+       public function reallyDoQuery( $offset, $limit, $descending ) {
+               list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo( $offset, $limit, $descending );
+               return $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
+       }
+
+       /**
+        * Build variables to use by the database wrapper.
+        *
+        * @param $offset String: index offset, inclusive
+        * @param $limit Integer: exact query limit
+        * @param $descending Boolean: query direction, false for ascending, true for descending
+        * @return array
+        */
+       protected function buildQueryInfo( $offset, $limit, $descending ) {
                $fname = __METHOD__ . ' (' . $this->getSqlComment() . ')';
                $info = $this->getQueryInfo();
                $tables = $info['tables'];
@@ -327,8 +341,7 @@ abstract class IndexPager extends ContextSource implements Pager {
                        $conds[] = $this->mIndexField . $operator . $this->mDb->addQuotes( $offset );
                }
                $options['LIMIT'] = intval( $limit );
-               $res = $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
-               return new ResultWrapper( $this->mDb, $res );
+               return array( $tables, $fields, $conds, $fname, $options, $join_conds );
        }
 
        /**
@@ -682,35 +695,24 @@ abstract class AlphabeticPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $lang = $this->getLanguage();
-
-               $opts = array( 'parsemag', 'escapenoentities' );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'prevn',
-                               $opts,
-                               $lang->formatNum( $this->mLimit )
-                       ),
-                       'next' => wfMsgExt(
-                               'nextn',
-                               $opts,
-                               $lang->formatNum($this->mLimit )
-                       ),
-                       'first' => wfMsgExt( 'page_first', $opts ),
-                       'last' => wfMsgExt( 'page_last', $opts )
+                       'prev' => $this->msg( 'prevn' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'nextn' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'page_first' )->escaped(),
+                       'last' => $this->msg( 'page_last' )->escaped()
                );
 
+               $lang = $this->getLanguage();
+
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $lang->pipeList( $limitLinks );
 
-               $this->mNavigationBar = wfMessage( 'parentheses' )->rawParams(
-                       $lang->pipeList(
-                               array( $pagingLinks['first'],
-                                       $pagingLinks['last'] )
-                       ) )->escaped() . " " .
-                       wfMsgHtml( 'viewprevnext', $pagingLinks['prev'],
-                               $pagingLinks['next'], $limits );
+               $this->mNavigationBar = $this->msg( 'parentheses' )->rawParams(
+                       $lang->pipeList( array( $pagingLinks['first'],
+                       $pagingLinks['last'] ) ) )->escaped() . " " .
+                       $this->msg( 'viewprevnext' )->rawParams( $pagingLinks['prev'],
+                               $pagingLinks['next'], $limits )->escaped();
 
                if( !is_array( $this->getIndexField() ) ) {
                        # Early return to avoid undue nesting
@@ -724,21 +726,21 @@ abstract class AlphabeticPager extends IndexPager {
                        if( $first ) {
                                $first = false;
                        } else {
-                               $extra .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+                               $extra .= $this->msg( 'pipe-separator' )->escaped();
                        }
 
                        if( $order == $this->mOrderType ) {
-                               $extra .= wfMsgHTML( $msgs[$order] );
+                               $extra .= $this->msg( $msgs[$order] )->escaped();
                        } else {
                                $extra .= $this->makeLink(
-                                       wfMsgHTML( $msgs[$order] ),
+                                       $this->msg( $msgs[$order] )->escaped(),
                                        array( 'order' => $order )
                                );
                        }
                }
 
                if( $extra !== '' ) {
-                       $extra = ' ' . wfMessage( 'parentheses' )->rawParams( $extra )->escaped();
+                       $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
                        $this->mNavigationBar .= $extra;
                }
 
@@ -776,35 +778,23 @@ abstract class ReverseChronologicalPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $nicenumber = $this->getLanguage()->formatNum( $this->mLimit );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'pager-newer-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'next' => wfMsgExt(
-                               'pager-older-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'first' => wfMsgHtml( 'histlast' ),
-                       'last' => wfMsgHtml( 'histfirst' )
+                       'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'histlast' )->escaped(),
+                       'last' => $this->msg( 'histfirst' )->escaped()
                );
 
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $this->getLanguage()->pipeList( $limitLinks );
-               $firstLastLinks = wfMessage( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
-                       wfMsgExt( 'pipe-separator' , 'escapenoentities' ) .
+               $firstLastLinks = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
+                       $this->msg( 'pipe-separator' )->escaped() .
                        "{$pagingLinks['last']}" )->escaped();
 
                $this->mNavigationBar = $firstLastLinks . ' ' .
-                       wfMsgHTML(
-                               'viewprevnext',
-                               $pagingLinks['prev'], $pagingLinks['next'],
-                               $limits
-                       );
+                       $this->msg( 'viewprevnext' )->rawParams(
+                               $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
 
                return $this->mNavigationBar;
        }
@@ -917,13 +907,13 @@ abstract class TablePager extends IndexPager {
                                                $image = 'Arr_d.png';
                                                $query['asc'] = '1';
                                                $query['desc'] = '';
-                                               $alt = htmlspecialchars( wfMsg( 'descending_abbrev' ) );
+                                               $alt = $this->msg( 'descending_abbrev' )->escaped();
                                        } else {
                                                # Ascending
                                                $image = 'Arr_u.png';
                                                $query['asc'] = '';
                                                $query['desc'] = '1';
-                                               $alt = htmlspecialchars( wfMsg( 'ascending_abbrev' ) );
+                                               $alt = $this->msg( 'ascending_abbrev' )->escaped();
                                        }
                                        $image = htmlspecialchars( "$wgStylePath/common/images/$image" );
                                        $link = $this->makeLink(
@@ -955,7 +945,7 @@ abstract class TablePager extends IndexPager {
         */
        function getEmptyBody() {
                $colspan = count( $this->getFieldNames() );
-               $msgEmpty = wfMsgHtml( 'table_pager_empty' );
+               $msgEmpty = $this->msg( 'table_pager_empty' )->escaped();
                return "<tr><td colspan=\"$colspan\">$msgEmpty</td></tr>\n";
        }
 
@@ -1101,7 +1091,7 @@ abstract class TablePager extends IndexPager {
                $linkTexts = array();
                $disabledTexts = array();
                foreach ( $labels as $type => $label ) {
-                       $msgLabel = wfMsgHtml( $label );
+                       $msgLabel = $this->msg( $label )->escaped();
                        $linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                        $disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                }
@@ -1193,9 +1183,10 @@ abstract class TablePager extends IndexPager {
         */
        function getLimitDropdown() {
                # Make the select with some explanatory text
-               $msgSubmit = wfMsgHtml( 'table_pager_limit_submit' );
+               $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
 
-               return wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) .
+               return $this->msg( 'table_pager_limit' )
+                       ->rawParams( $this->getLimitSelect() )->escaped() .
                        "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
                        $this->getHiddenFields( array( 'limit' ) );
        }
index dbe06d4..31ed87f 100644 (file)
@@ -318,10 +318,12 @@ class ProtectionForm {
                        return false;
                }
 
-               if ( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
-                       WatchAction::doWatch( $this->mTitle, $wgUser );
-               } elseif ( $this->mTitle->userIsWatching() ) {
-                       WatchAction::doUnwatch( $this->mTitle, $wgUser );
+               if ( $wgUser->isLoggedIn() && $wgRequest->getCheck( 'mwProtectWatch' ) != $wgUser->isWatched( $this->mTitle ) ) {
+                       if ( $wgRequest->getCheck( 'mwProtectWatch' ) ) {
+                               WatchAction::doWatch( $this->mTitle, $wgUser );
+                       } else {
+                               WatchAction::doUnwatch( $this->mTitle, $wgUser );
+                       }
                }
                return true;
        }
index cd8a1b5..3327826 100644 (file)
@@ -19,7 +19,7 @@
  *
  * @file
  */
+
 /**
  * Utility class for creating new RC entries
  *
@@ -108,13 +108,7 @@ class RecentChange {
         * @return RecentChange
         */
        public static function newFromId( $rcid ) {
-               $dbr = wfGetDB( DB_SLAVE );
-               $row = $dbr->selectRow( 'recentchanges', '*', array( 'rc_id' => $rcid ), __METHOD__ );
-               if( $row !== false ) {
-                       return self::newFromRow( $row );
-               } else {
-                       return null;
-               }
+               return self::newFromConds( array( 'rc_id' => $rcid ), __METHOD__ );
        }
 
        /**
@@ -126,18 +120,12 @@ class RecentChange {
         */
        public static function newFromConds( $conds, $fname = __METHOD__ ) {
                $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select(
-                       'recentchanges',
-                       '*',
-                       $conds,
-                       $fname
-               );
-               if( $res instanceof ResultWrapper && $res->numRows() > 0 ) {
-                       $row = $res->fetchObject();
-                       $res->free();
+               $row = $dbr->selectRow( 'recentchanges', '*', $conds, $fname );
+               if ( $row !== false ) {
                        return self::newFromRow( $row );
+               } else {
+                       return null;
                }
-               return null;
        }
 
        # Accessors
@@ -781,7 +769,7 @@ class RecentChange {
                        }
                } else {
                        $ip = $wgRequest->getIP();
-                       if( !$ip ) 
+                       if( !$ip )
                                $ip = '';
                }
                return $ip;
index 6b8aabc..13eaae4 100644 (file)
@@ -23,7 +23,7 @@
 /**
  * @todo document
  */
-class Revision {
+class Revision implements IDBAccessObject {
        protected $mId;
        protected $mPage;
        protected $mUserText;
@@ -47,7 +47,7 @@ class Revision {
        const DELETED_RESTRICTED = 8;
        // Convenience field
        const SUPPRESSED_USER = 12;
-       // Audience options for Revision::getText()
+       // Audience options for accessors
        const FOR_PUBLIC = 1;
        const FOR_THIS_USER = 2;
        const RAW = 3;
@@ -56,11 +56,17 @@ class Revision {
         * Load a page revision from a given revision ID number.
         * Returns null if no such revision can be found.
         *
+        * $flags include:
+        *      IDBAccessObject::LATEST_READ  : Select the data from the master
+        *      IDBAccessObject::LOCKING_READ : Select & lock the data from the master
+        *      IDBAccessObject::AVOID_MASTER : Avoid master queries; data may be stale
+        *
         * @param $id Integer
+        * @param $flags Integer (optional)
         * @return Revision or null
         */
-       public static function newFromId( $id ) {
-               return Revision::newFromConds( array( 'rev_id' => intval( $id ) ) );
+       public static function newFromId( $id, $flags = 0 ) {
+               return self::newFromConds( array( 'rev_id' => intval( $id ) ), $flags );
        }
 
        /**
@@ -68,11 +74,17 @@ class Revision {
         * that's attached to a given title. If not attached
         * to that title, will return null.
         *
+        * $flags include:
+        *      IDBAccessObject::LATEST_READ  : Select the data from the master
+        *      IDBAccessObject::LOCKING_READ : Select & lock the data from the master
+        *      IDBAccessObject::AVOID_MASTER : Avoid master queries; data may be stale
+        *
         * @param $title Title
         * @param $id Integer (optional)
+        * @param $flags Integer Bitfield (optional)
         * @return Revision or null
         */
-       public static function newFromTitle( $title, $id = 0 ) {
+       public static function newFromTitle( $title, $id = 0, $flags = 0 ) {
                $conds = array(
                        'page_namespace' => $title->getNamespace(),
                        'page_title'     => $title->getDBkey()
@@ -80,7 +92,7 @@ class Revision {
                if ( $id ) {
                        // Use the specified ID
                        $conds['rev_id'] = $id;
-               } elseif ( wfGetLB()->getServerCount() > 1 ) {
+               } elseif ( !( $flags & self::AVOID_MASTER ) && wfGetLB()->getServerCount() > 1 ) {
                        // Get the latest revision ID from the master
                        $dbw = wfGetDB( DB_MASTER );
                        $latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
@@ -92,7 +104,7 @@ class Revision {
                        // Use a join to get the latest revision
                        $conds[] = 'rev_id=page_latest';
                }
-               return Revision::newFromConds( $conds );
+               return self::newFromConds( $conds, $flags );
        }
 
        /**
@@ -100,15 +112,21 @@ class Revision {
         * that's attached to a given page ID.
         * Returns null if no such revision can be found.
         *
+        * $flags include:
+        *      IDBAccessObject::LATEST_READ  : Select the data from the master
+        *      IDBAccessObject::LOCKING_READ : Select & lock the data from the master
+        *      IDBAccessObject::AVOID_MASTER : Avoid master queries; data may be stale
+        *
         * @param $revId Integer
         * @param $pageId Integer (optional)
+        * @param $flags Integer Bitfield (optional)
         * @return Revision or null
         */
-       public static function newFromPageId( $pageId, $revId = 0 ) {
+       public static function newFromPageId( $pageId, $revId = 0, $flags = 0 ) {
                $conds = array( 'page_id' => $pageId );
                if ( $revId ) {
                        $conds['rev_id'] = $revId;
-               } elseif ( wfGetLB()->getServerCount() > 1 ) {
+               } elseif ( !( $flags & self::AVOID_MASTER ) && wfGetLB()->getServerCount() > 1 ) {
                        // Get the latest revision ID from the master
                        $dbw = wfGetDB( DB_MASTER );
                        $latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
@@ -119,7 +137,7 @@ class Revision {
                } else {
                        $conds[] = 'rev_id = page_latest';
                }
-               return Revision::newFromConds( $conds );
+               return self::newFromConds( $conds, $flags );
        }
 
        /**
@@ -175,7 +193,7 @@ class Revision {
         * @return Revision or null
         */
        public static function loadFromId( $db, $id ) {
-               return Revision::loadFromConds( $db, array( 'rev_id' => intval( $id ) ) );
+               return self::loadFromConds( $db, array( 'rev_id' => intval( $id ) ) );
        }
 
        /**
@@ -195,7 +213,7 @@ class Revision {
                } else {
                        $conds[] = 'rev_id=page_latest';
                }
-               return Revision::loadFromConds( $db, $conds );
+               return self::loadFromConds( $db, $conds );
        }
 
        /**
@@ -214,7 +232,7 @@ class Revision {
                } else {
                        $matchId = 'page_latest';
                }
-               return Revision::loadFromConds( $db,
+               return self::loadFromConds( $db,
                        array( "rev_id=$matchId",
                                   'page_namespace' => $title->getNamespace(),
                                   'page_title'     => $title->getDBkey() )
@@ -232,7 +250,7 @@ class Revision {
         * @return Revision or null
         */
        public static function loadFromTimestamp( $db, $title, $timestamp ) {
-               return Revision::loadFromConds( $db,
+               return self::loadFromConds( $db,
                        array( 'rev_timestamp'  => $db->timestamp( $timestamp ),
                                   'page_namespace' => $title->getNamespace(),
                                   'page_title'     => $title->getDBkey() )
@@ -243,14 +261,17 @@ class Revision {
         * Given a set of conditions, fetch a revision.
         *
         * @param $conditions Array
+        * @param $flags integer (optional)
         * @return Revision or null
         */
-       public static function newFromConds( $conditions ) {
-               $db = wfGetDB( DB_SLAVE );
-               $rev = Revision::loadFromConds( $db, $conditions );
-               if( is_null( $rev ) && wfGetLB()->getServerCount() > 1 ) {
-                       $dbw = wfGetDB( DB_MASTER );
-                       $rev = Revision::loadFromConds( $dbw, $conditions );
+       private static function newFromConds( $conditions, $flags = 0 ) {
+               $db = wfGetDB( ( $flags & self::LATEST_READ ) ? DB_MASTER : DB_SLAVE );
+               $rev = self::loadFromConds( $db, $conditions, $flags );
+               if ( is_null( $rev ) && wfGetLB()->getServerCount() > 1 ) {
+                       if ( !( $flags & self::LATEST_READ ) && !( $flags & self::AVOID_MASTER ) ) {
+                               $dbw = wfGetDB( DB_MASTER );
+                               $rev = self::loadFromConds( $dbw, $conditions, $flags );
+                       }
                }
                return $rev;
        }
@@ -261,10 +282,11 @@ class Revision {
         *
         * @param $db DatabaseBase
         * @param $conditions Array
+        * @param $flags integer (optional)
         * @return Revision or null
         */
-       private static function loadFromConds( $db, $conditions ) {
-               $res = Revision::fetchFromConds( $db, $conditions );
+       private static function loadFromConds( $db, $conditions, $flags = 0 ) {
+               $res = self::fetchFromConds( $db, $conditions, $flags );
                if( $res ) {
                        $row = $res->fetchObject();
                        if( $row ) {
@@ -285,7 +307,7 @@ class Revision {
         * @return ResultWrapper
         */
        public static function fetchRevision( $title ) {
-               return Revision::fetchFromConds(
+               return self::fetchFromConds(
                        wfGetDB( DB_SLAVE ),
                        array( 'rev_id=page_latest',
                                   'page_namespace' => $title->getNamespace(),
@@ -300,20 +322,25 @@ class Revision {
         *
         * @param $db DatabaseBase
         * @param $conditions Array
+        * @param $flags integer (optional)
         * @return ResultWrapper
         */
-       private static function fetchFromConds( $db, $conditions ) {
+       private static function fetchFromConds( $db, $conditions, $flags = 0 ) {
                $fields = array_merge(
                        self::selectFields(),
                        self::selectPageFields(),
                        self::selectUserFields()
                );
+               $options = array( 'LIMIT' => 1 );
+               if ( $flags & self::FOR_UPDATE ) {
+                       $options[] = 'FOR UPDATE';
+               }
                return $db->select(
                        array( 'revision', 'page', 'user' ),
                        $fields,
                        $conditions,
                        __METHOD__,
-                       array( 'LIMIT' => 1 ),
+                       $options,
                        array( 'page' => self::pageJoinCond(), 'user' => self::userJoinCond() )
                );
        }
@@ -395,6 +422,29 @@ class Revision {
                return array( 'user_name' );
        }
 
+       /**
+        * Do a batched query to get the parent revision lengths
+        * @param $db DatabaseBase
+        * @param $revIds Array
+        * @return array
+        */
+       public static function getParentLengths( $db, array $revIds ) {
+               $revLens = array();
+               if ( !$revIds ) {
+                       return $revLens; // empty
+               }
+               wfProfileIn( __METHOD__ );
+               $res = $db->select( 'revision',
+                       array( 'rev_id', 'rev_len' ),
+                       array( 'rev_id' => $revIds ),
+                       __METHOD__ );
+               foreach ( $res as $row ) {
+                       $revLens[$row->rev_id] = $row->rev_len;
+               }
+               wfProfileOut( __METHOD__ );
+               return $revLens;
+       }
+
        /**
         * Constructor
         *
@@ -811,7 +861,7 @@ class Revision {
                if( $this->getTitle() ) {
                        $prev = $this->getTitle()->getPreviousRevisionID( $this->getId() );
                        if( $prev ) {
-                               return Revision::newFromTitle( $this->getTitle(), $prev );
+                               return self::newFromTitle( $this->getTitle(), $prev );
                        }
                }
                return null;
@@ -826,7 +876,7 @@ class Revision {
                if( $this->getTitle() ) {
                        $next = $this->getTitle()->getNextRevisionID( $this->getId() );
                        if ( $next ) {
-                               return Revision::newFromTitle( $this->getTitle(), $next );
+                               return self::newFromTitle( $this->getTitle(), $next );
                        }
                }
                return null;
@@ -956,7 +1006,7 @@ class Revision {
                                $text = gzdeflate( $text );
                                $flags[] = 'gzip';
                        } else {
-                               wfDebug( "Revision::compressRevisionText() -- no zlib support, not compressing\n" );
+                               wfDebug( __METHOD__ . " -- no zlib support, not compressing\n" );
                        }
                }
                return implode( ',', $flags );
@@ -975,7 +1025,7 @@ class Revision {
                wfProfileIn( __METHOD__ );
 
                $data = $this->mText;
-               $flags = Revision::compressRevisionText( $data );
+               $flags = self::compressRevisionText( $data );
 
                # Write to external storage if required
                if( $wgDefaultExternalStore ) {
@@ -1025,7 +1075,7 @@ class Revision {
                                        ? $this->getPreviousRevisionId( $dbw )
                                        : $this->mParentId,
                                'rev_sha1'       => is_null( $this->mSha1 )
-                                       ? Revision::base36Sha1( $this->mText )
+                                       ? self::base36Sha1( $this->mText )
                                        : $this->mSha1
                        ), __METHOD__
                );
@@ -1249,7 +1299,7 @@ class Revision {
        static function countByTitle( $db, $title ) {
                $id = $title->getArticleID();
                if( $id ) {
-                       return Revision::countByPageId( $db, $id );
+                       return self::countByPageId( $db, $id );
                }
                return 0;
        }
index 8cd5a37..fed5762 100644 (file)
@@ -692,6 +692,16 @@ class Sanitizer {
                                }
                        }
 
+                       if ( $attribute === 'align' && !in_array( $element, $cells ) ) {
+                               if ( $value === 'center' ) {
+                                       $style .= ' margin-left: auto;';
+                                       $property = 'margin-right';
+                                       $value = 'auto';
+                               } else {
+                                       $property = 'float';
+                               }
+                       }
+
                        $style .= " $property: $value;";
 
                        unset( $attribs[$attribute] );
index 359b20b..d1493c3 100644 (file)
 
 /**
  * Class to expand PHP execution time for a function call.
+ * Use this when performing changes that should not be interrupted.
+ *
  * On construction, set_time_limit() is called and set to $seconds.
+ * If the client aborts the connection, PHP will continue to run.
  * When the object goes out of scope, the timer is restarted, with
  * the original time limit minus the time the object existed.
  */
 class ScopedPHPTimeout {
        protected $startTime; // float; seconds
        protected $oldTimeout; // integer; seconds
+       protected $oldIgnoreAbort; // boolean
 
        protected static $stackDepth = 0; // integer
        protected static $totalCalls = 0; // integer
@@ -50,6 +54,7 @@ class ScopedPHPTimeout {
                        } elseif ( self::$stackDepth > 0 ) { // recursion guard
                                trigger_error( "Resursive invocation of " . __CLASS__ . " attempted." );
                        } else {
+                               $this->oldIgnoreAbort = ignore_user_abort( true );
                                $this->oldTimeout = ini_set( 'max_execution_time', $seconds );
                                $this->startTime = microtime( true );
                                ++self::$stackDepth;
@@ -73,6 +78,7 @@ class ScopedPHPTimeout {
                        // take some measures to prevent this. Track total time and calls.
                        self::$totalElapsed += $elapsed;
                        --self::$stackDepth;
+                       ignore_user_abort( $this->oldIgnoreAbort );
                }
        }
 }
index 335d37b..18a880e 100644 (file)
@@ -77,9 +77,6 @@ if ( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
 
 if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
 if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
-
-if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-
 if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
 if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
 if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
@@ -400,7 +397,12 @@ if ( !defined( 'MW_COMPILED' ) ) {
        wfProfileOut( $fname . '-includes' );
 }
 
-# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer
+# Now that GlobalFunctions is loaded, set defaults that depend
+# on it.
+if ( $wgTmpDirectory === false ) {
+       $wgTmpDirectory = wfTempDir();
+}
+
 if ( $wgCanonicalServer === false ) {
        $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
 }
index 6410695..6a861d8 100644 (file)
@@ -138,6 +138,7 @@ class SiteConfiguration {
 
        /**
         * Optional callback to load full configuration data.
+        * @var string|array
         */
        public $fullLoadCallback = null;
 
@@ -155,6 +156,8 @@ class SiteConfiguration {
         * argument and the wiki in the second one.
         * if suffix and lang are passed they will be used for the return value of
         * self::siteFromDB() and self::$suffixes will be ignored
+        *
+        * @var string|array
         */
        public $siteParamsCallback = null;
 
@@ -189,7 +192,7 @@ class SiteConfiguration {
                                if( array_key_exists( $wiki, $thisSetting ) ) {
                                        $retval = $thisSetting[$wiki];
                                        break;
-                               } elseif( array_key_exists( "+$wiki", $thisSetting ) && is_array( $thisSetting["+$wiki"] ) ) {
+                               } elseif ( array_key_exists( "+$wiki", $thisSetting ) && is_array( $thisSetting["+$wiki"] ) ) {
                                        $retval = $thisSetting["+$wiki"];
                                }
 
@@ -203,8 +206,9 @@ class SiteConfiguration {
                                                }
                                                break 2;
                                        } elseif( array_key_exists( "+$tag", $thisSetting ) && is_array($thisSetting["+$tag"]) ) {
-                                               if( !isset( $retval ) )
+                                               if( !isset( $retval ) ) {
                                                        $retval = array();
+                                               }
                                                $retval = self::arrayMerge( $retval, $thisSetting["+$tag"] );
                                        }
                                }
@@ -218,9 +222,10 @@ class SiteConfiguration {
                                                        $retval = $thisSetting[$suffix];
                                                }
                                                break;
-                                       } elseif( array_key_exists( "+$suffix", $thisSetting ) && is_array($thisSetting["+$suffix"]) ) {
-                                               if (!isset($retval))
+                                       } elseif ( array_key_exists( "+$suffix", $thisSetting ) && is_array($thisSetting["+$suffix"]) ) {
+                                               if ( !isset( $retval ) ) {
                                                        $retval = array();
+                                               }
                                                $retval = self::arrayMerge( $retval, $thisSetting["+$suffix"] );
                                        }
                                }
@@ -287,8 +292,9 @@ class SiteConfiguration {
                        }
 
                        $value = $this->getSetting( $varname, $wiki, $params );
-                       if ( $append && is_array( $value ) && is_array( $GLOBALS[$var] ) )
+                       if ( $append && is_array( $value ) && is_array( $GLOBALS[$var] ) ) {
                                $value = self::arrayMerge( $value, $GLOBALS[$var] );
+                       }
                        if ( !is_null( $value ) ) {
                                $localSettings[$var] = $value;
                        }
@@ -408,8 +414,9 @@ class SiteConfiguration {
                }
 
                foreach( $default as $name => $def ){
-                       if( !isset( $ret[$name] ) || ( is_array( $default[$name] ) && !is_array( $ret[$name] ) ) )
+                       if( !isset( $ret[$name] ) || ( is_array( $default[$name] ) && !is_array( $ret[$name] ) ) ) {
                                $ret[$name] = $default[$name];
+                       }
                }
 
                return $ret;
@@ -430,18 +437,21 @@ class SiteConfiguration {
        protected function mergeParams( $wiki, $suffix, /*array*/ $params, /*array*/ $wikiTags ){
                $ret = $this->getWikiParams( $wiki );
 
-               if( is_null( $ret['suffix'] ) )
+               if( is_null( $ret['suffix'] ) ) {
                        $ret['suffix'] = $suffix;
+               }
 
                $ret['tags'] = array_unique( array_merge( $ret['tags'], $wikiTags ) );
 
                $ret['params'] += $params;
 
                // Automatically fill that ones if needed
-               if( !isset( $ret['params']['lang'] ) && !is_null( $ret['lang'] ) )
+               if( !isset( $ret['params']['lang'] ) && !is_null( $ret['lang'] ) ){
                        $ret['params']['lang'] = $ret['lang'];
-               if( !isset( $ret['params']['site'] ) && !is_null( $ret['suffix'] ) )
+               }
+               if( !isset( $ret['params']['site'] ) && !is_null( $ret['suffix'] ) ) {
                        $ret['params']['site'] = $ret['suffix'];
+               }
 
                return $ret;
        }
@@ -455,8 +465,9 @@ class SiteConfiguration {
        public function siteFromDB( $db ) {
                // Allow override
                $def = $this->getWikiParams( $db );
-               if( !is_null( $def['suffix'] ) && !is_null( $def['lang'] ) )
+               if( !is_null( $def['suffix'] ) && !is_null( $def['lang'] ) ) {
                        return array( $def['suffix'], $def['lang'] );
+               }
 
                $site = null;
                $lang = null;
@@ -513,7 +524,7 @@ class SiteConfiguration {
        }
 
        public function loadFullData() {
-               if ($this->fullLoadCallback && !$this->fullLoadDone) {
+               if ( $this->fullLoadCallback && !$this->fullLoadDone ) {
                        call_user_func( $this->fullLoadCallback, $this );
                        $this->fullLoadDone = true;
                }
index 10aed9c..7f3f655 100644 (file)
@@ -391,7 +391,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        /**
         * @param $type string
         * @param $sign string ('+' or '-')
-        * @return void
+        * @return string
         */
        private function getTypeCacheKey( $type, $sign ) {
                return wfMemcKey( 'sitestatsupdate', 'pendingdelta', $type, $sign );
@@ -443,7 +443,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
 
        /**
         * Reduce pending delta counters after updates have been applied
-        * @param Array Result of getPendingDeltas(), used for DB update
+        * @param Array $pd Result of getPendingDeltas(), used for DB update
         * @return void
         */
        protected function removePendingDeltas( array $pd ) {
index e1ec897..18bc29f 100644 (file)
@@ -638,7 +638,7 @@ class LegacyTemplate extends BaseTemplate {
                $title = $this->getSkin()->getTitle();
 
                if ( $wgOut->isArticleRelated() ) {
-                       if ( $title->userIsWatching() ) {
+                       if ( $wgUser->isWatched( $title ) ) {
                                $text = wfMsg( 'unwatchthispage' );
                                $query = array(
                                        'action' => 'unwatch',
index b74f7c5..4028e78 100644 (file)
@@ -258,7 +258,7 @@ class SkinTemplate extends Skin {
                /* XXX currently unused, might get useful later
                $tpl->set( 'editable', ( !$title->isSpecialPage() ) );
                $tpl->set( 'exists', $title->getArticleID() != 0 );
-               $tpl->set( 'watch', $title->userIsWatching() ? 'unwatch' : 'watch' );
+               $tpl->set( 'watch', $user->isWatched( $title ) ? 'unwatch' : 'watch' );
                $tpl->set( 'protect', count( $title->isProtected() ) ? 'unprotect' : 'protect' );
                $tpl->set( 'helppage', $this->msg( 'helppage' )->text() );
                */
@@ -272,20 +272,20 @@ class SkinTemplate extends Skin {
                $tpl->setRef( 'logopath', $wgLogo );
                $tpl->setRef( 'sitename', $wgSitename );
 
-               $lang = $this->getLanguage();
-               $userlang = $lang->getHtmlCode();
-               $userdir  = $lang->getDir();
+               $userLang = $this->getLanguage();
+               $userLangCode = $userLang->getHtmlCode();
+               $userLangDir  = $userLang->getDir();
 
-               $tpl->set( 'lang', $userlang );
-               $tpl->set( 'dir', $userdir );
-               $tpl->set( 'rtl', $lang->isRTL() );
+               $tpl->set( 'lang', $userLangCode );
+               $tpl->set( 'dir', $userLangDir );
+               $tpl->set( 'rtl', $userLang->isRTL() );
 
-               $tpl->set( 'capitalizeallnouns', $lang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
+               $tpl->set( 'capitalizeallnouns', $userLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
                $tpl->set( 'showjumplinks', $user->getOption( 'showjumplinks' ) );
                $tpl->set( 'username', $this->loggedin ? $this->username : null );
                $tpl->setRef( 'userpage', $this->userpage );
                $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
-               $tpl->set( 'userlang', $userlang );
+               $tpl->set( 'userlang', $userLangCode );
 
                // Users can have their language set differently than the
                // content of the wiki. For these users, tell the web browser
@@ -293,8 +293,12 @@ class SkinTemplate extends Skin {
                $tpl->set( 'userlangattributes', '' );
                $tpl->set( 'specialpageattributes', '' ); # obsolete
 
-               if ( $userlang !== $wgContLang->getHtmlCode() || $userdir !== $wgContLang->getDir() ) {
-                       $attrs = " lang='$userlang' dir='$userdir'";
+               if ( $userLangCode !== $wgContLang->getHtmlCode() || $userLangDir !== $wgContLang->getDir() ) {
+                       $escUserlang = htmlspecialchars( $userLangCode );
+                       $escUserdir = htmlspecialchars( $userLangDir );
+                       // Attributes must be in double quotes because htmlspecialchars() doesn't
+                       // escape single quotes
+                       $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
                        $tpl->set( 'userlangattributes', $attrs );
                }
 
@@ -318,13 +322,13 @@ class SkinTemplate extends Skin {
                                        }
                                }
 
-                               if( $wgPageShowWatchingUsers ) {
+                               if ( $wgPageShowWatchingUsers ) {
                                        $dbr = wfGetDB( DB_SLAVE );
                                        $num = $dbr->selectField( 'watchlist', 'COUNT(*)',
                                                array( 'wl_title' => $title->getDBkey(), 'wl_namespace' => $title->getNamespace() ),
                                                __METHOD__
                                        );
-                                       if( $num > 0 ) {
+                                       if ( $num > 0 ) {
                                                $tpl->set( 'numberofwatchingusers',
                                                        $this->msg( 'number_of_watching_users_pageview' )->numParams( $num )->parse()
                                                );
@@ -400,7 +404,7 @@ class SkinTemplate extends Skin {
                # when the content is different from the UI language, i.e.:
                # not for special pages or file pages AND only when viewing AND if the page exists
                # (or is in MW namespace, because that has default content)
-               if( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
+               if ( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
                        in_array( $request->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) &&
                        ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) {
                        $pageLang = $title->getPageLanguage();
@@ -422,10 +426,15 @@ class SkinTemplate extends Skin {
                                unset( $tmp );
                                $nt = Title::newFromText( $l );
                                if ( $nt ) {
+                                       $ilLangName = Language::fetchLanguageName( $nt->getInterwiki() );
+                                       if ( strval( $ilLangName ) === '' ) {
+                                               $ilLangName = $l;
+                                       } else {
+                                               $ilLangName = $this->getLanguage()->ucfirst( $ilLangName );
+                                       }
                                        $language_urls[] = array(
                                                'href' => $nt->getFullURL(),
-                                               'text' => ( Language::fetchLanguageName( $nt->getInterwiki() ) != '' ?
-                                                                       Language::fetchLanguageName( $nt->getInterwiki() ) : $l ),
+                                               'text' => $ilLangName,
                                                'title' => $nt->getText(),
                                                'class' => $class,
                                                'lang' => $nt->getInterwiki(),
@@ -434,7 +443,7 @@ class SkinTemplate extends Skin {
                                }
                        }
                }
-               if( count( $language_urls ) ) {
+               if ( count( $language_urls ) ) {
                        $tpl->setRef( 'language_urls', $language_urls );
                } else {
                        $tpl->set( 'language_urls', false );
@@ -613,13 +622,13 @@ class SkinTemplate extends Skin {
                        $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
                                ? 'nav-login-createaccount'
                                : 'login';
-                       $is_signup = $request->getText('type') == "signup";
+                       $is_signup = $request->getText( 'type' ) == 'signup';
 
                        # anonlogin & login are the same
                        $login_url = array(
                                'text' => $this->msg( $loginlink )->text(),
                                'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
-                               'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == "nav-login-createaccount" || !$is_signup )
+                               'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == 'nav-login-createaccount' || !$is_signup )
                        );
                        if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
                                $createaccount_url = array(
@@ -635,9 +644,9 @@ class SkinTemplate extends Skin {
                                $login_url['href']  = $https_url;
                                # @todo FIXME: Class depends on skin
                                $login_url['class'] = 'link-https';
-                               if ( isset($createaccount_url) ) {
+                               if ( isset( $createaccount_url ) ) {
                                        $https_url = preg_replace( '/^http:/', 'https:',
-                                               $title->getFullURL("type=signup") );
+                                               $title->getFullURL( 'type=signup' ) );
                                        $createaccount_url['href']  = $https_url;
                                        # @todo FIXME: Class depends on skin
                                        $createaccount_url['class'] = 'link-https';
@@ -697,9 +706,9 @@ class SkinTemplate extends Skin {
                // wfMessageFallback will nicely accept $message as an array of fallbacks
                // or just a single key
                $msg = wfMessageFallback( $message )->setContext( $this->getContext() );
-               if ( is_array($message) ) {
+               if ( is_array( $message ) ) {
                        // for hook compatibility just keep the last message name
-                       $message = end($message);
+                       $message = end( $message );
                }
                if ( $msg->exists() ) {
                        $text = $msg->text();
@@ -784,8 +793,9 @@ class SkinTemplate extends Skin {
 
                wfProfileIn( __METHOD__ );
 
-               $title = $this->getRelevantTitle(); // Display tabs for the relevant title rather than always the title itself
-               $onPage = $title->equals($this->getTitle());
+               // Display tabs for the relevant title rather than always the title itself
+               $title = $this->getRelevantTitle();
+               $onPage = $title->equals( $this->getTitle() );
 
                $out = $this->getOutput();
                $request = $this->getRequest();
@@ -829,7 +839,7 @@ class SkinTemplate extends Skin {
                        // Adds namespace links
                        $subjectMsg = array( "nstab-$subjectId" );
                        if ( $subjectPage->isMainPage() ) {
-                               array_unshift($subjectMsg, 'mainpage-nstab');
+                               array_unshift( $subjectMsg, 'mainpage-nstab' );
                        }
                        $content_navigation['namespaces'][$subjectId] = $this->tabAction(
                                $subjectPage, $subjectMsg, !$isTalk && !$preventActiveTabs, '', $userCanRead
@@ -846,9 +856,10 @@ class SkinTemplate extends Skin {
                                        $content_navigation['views']['view'] = $this->tabAction(
                                                $isTalk ? $talkPage : $subjectPage,
                                                array( "$skname-view-view", 'view' ),
-                                               ( $onPage && ($action == 'view' || $action == 'purge' ) ), '', true
+                                               ( $onPage && ( $action == 'view' || $action == 'purge' ) ), '', true
                                        );
-                                       $content_navigation['views']['view']['redundant'] = true; // signal to hide this from simple content_actions
+                                       // signal to hide this from simple content_actions
+                                       $content_navigation['views']['view']['redundant'] = true;
                                }
 
                                wfProfileIn( __METHOD__ . '-edit' );
@@ -866,14 +877,14 @@ class SkinTemplate extends Skin {
                                        $section = $request->getVal( 'section' );
 
                                        $msgKey = $title->exists() || ( $title->getNamespace() == NS_MEDIAWIKI && $title->getDefaultMessageText() !== false ) ?
-                                               "edit" : "create";
+                                               'edit' : 'create';
                                        $content_navigation['views']['edit'] = array(
                                                'class' => ( $isEditing && ( $section !== 'new' || !$showNewSection ) ? 'selected' : '' ) . $isTalkClass,
                                                'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )->setContext( $this->getContext() )->text(),
                                                'href' => $title->getLocalURL( $this->editUrlOptions() ),
                                                'primary' => true, // don't collapse this in vector
                                        );
-                                       
+
                                        // section link
                                        if ( $showNewSection ) {
                                                // Adds new section link
@@ -927,7 +938,7 @@ class SkinTemplate extends Skin {
                                        // article doesn't exist or is deleted
                                        if ( $user->isAllowed( 'deletedhistory' ) ) {
                                                $n = $title->isDeleted();
-                                               if( $n ) {
+                                               if ( $n ) {
                                                        $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
                                                        // If the user can't undelete but can view deleted history show them a "View .. deleted" tab instead
                                                        $msgKey = $user->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
@@ -963,11 +974,12 @@ class SkinTemplate extends Skin {
                                         * a change to that procedure these messages will have to remain as
                                         * the global versions.
                                         */
-                                       $mode = $title->userIsWatching() ? 'unwatch' : 'watch';
+                                       $mode = $user->isWatched( $title ) ? 'unwatch' : 'watch';
                                        $token = WatchAction::getWatchToken( $title, $user, $mode );
                                        $content_navigation['actions'][$mode] = array(
                                                'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
-                                               'text' => $this->msg( $mode )->text(), // uses 'watch' or 'unwatch' message
+                                               // uses 'watch' or 'unwatch' message
+                                               'text' => $this->msg( $mode )->text(),
                                                'href' => $title->getLocalURL( array( 'action' => $mode, 'token' => $token ) )
                                        );
                                }
@@ -981,8 +993,8 @@ class SkinTemplate extends Skin {
                                $variants = $pageLang->getVariants();
                                // Checks that language conversion is enabled and variants exist
                                // And if it is not in the special namespace
-                               if( count( $variants ) > 1 ) {
-                                       // Gets preferred variant (note that user preference is 
+                               if ( count( $variants ) > 1 ) {
+                                       // Gets preferred variant (note that user preference is
                                        // only possible for wiki content language variant)
                                        $preferred = $pageLang->getPreferredVariant();
                                        // Loops over each variant
@@ -1010,7 +1022,7 @@ class SkinTemplate extends Skin {
                        $content_navigation['namespaces']['special'] = array(
                                'class' => 'selected',
                                'text' => $this->msg( 'nstab-special' )->text(),
-                               'href' => $request->getRequestURL(), // @bug 2457, 2510
+                               'href' => $request->getRequestURL(), // @see: bug 2457, bug 2510
                                'context' => 'subject'
                        );
 
@@ -1029,7 +1041,7 @@ class SkinTemplate extends Skin {
                                        $xmlID = 'ca-nstab-' . $xmlID;
                                } elseif ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
                                        $xmlID = 'ca-talk';
-                               } elseif ( $section == "variants" ) {
+                               } elseif ( $section == 'variants' ) {
                                        $xmlID = 'ca-varlang-' . $xmlID;
                                } else {
                                        $xmlID = 'ca-' . $xmlID;
@@ -1044,14 +1056,14 @@ class SkinTemplate extends Skin {
                # give the edit tab an accesskey, because that's fairly su-
                # perfluous and conflicts with an accesskey (Ctrl-E) often
                # used for editing in Safari.
-               if( in_array( $action, array( 'edit', 'submit' ) ) ) {
-                       if ( isset($content_navigation['views']['edit']) ) {
+               if ( in_array( $action, array( 'edit', 'submit' ) ) ) {
+                       if ( isset( $content_navigation['views']['edit'] ) ) {
                                $content_navigation['views']['edit']['tooltiponly'] = true;
                        }
-                       if ( isset($content_navigation['actions']['watch']) ) {
+                       if ( isset( $content_navigation['actions']['watch'] ) ) {
                                $content_navigation['actions']['watch']['tooltiponly'] = true;
                        }
-                       if ( isset($content_navigation['actions']['unwatch']) ) {
+                       if ( isset( $content_navigation['actions']['unwatch'] ) ) {
                                $content_navigation['actions']['unwatch']['tooltiponly'] = true;
                        }
                }
@@ -1080,7 +1092,7 @@ class SkinTemplate extends Skin {
 
                        foreach ( $links as $key => $value ) {
 
-                               if ( isset($value["redundant"]) && $value["redundant"] ) {
+                               if ( isset( $value['redundant'] ) && $value['redundant'] ) {
                                        // Redundant tabs are dropped from content_actions
                                        continue;
                                }
@@ -1089,11 +1101,11 @@ class SkinTemplate extends Skin {
                                // so the xmlID based id is much closer to the actual $key that we want
                                // for that reason we'll just strip out the ca- if present and use
                                // the latter potion of the "id" as the $key
-                               if ( isset($value["id"]) && substr($value["id"], 0, 3) == "ca-" ) {
-                                       $key = substr($value["id"], 3);
+                               if ( isset( $value['id'] ) && substr( $value['id'], 0, 3 ) == 'ca-' ) {
+                                       $key = substr( $value['id'], 3 );
                                }
 
-                               if ( isset($content_actions[$key]) ) {
+                               if ( isset( $content_actions[$key] ) ) {
                                        wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening content_navigation into content_actions." );
                                        continue;
                                }
@@ -1144,7 +1156,7 @@ class SkinTemplate extends Skin {
 
                // A print stylesheet is attached to all pages, but nobody ever
                // figures that out. :)  Add a link...
-               if( $out->isArticle() ) {
+               if ( $out->isArticle() ) {
                        if ( !$out->isPrintable() ) {
                                $nav_urls['print'] = array(
                                        'text' => $this->msg( 'printableversion' )->text(),
@@ -1413,7 +1425,7 @@ abstract class BaseTemplate extends QuickTemplate {
                }
                if ( isset( $this->data['nav_urls']['permalink'] ) && $this->data['nav_urls']['permalink'] ) {
                        $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
-                       if( $toolbox['permalink']['href'] === '' ) {
+                       if ( $toolbox['permalink']['href'] === '' ) {
                                unset( $toolbox['permalink']['href'] );
                                $toolbox['ispermalink']['tooltiponly'] = true;
                                $toolbox['ispermalink']['id'] = 't-ispermalink';
@@ -1439,20 +1451,24 @@ abstract class BaseTemplate extends QuickTemplate {
         */
        function getPersonalTools() {
                $personal_tools = array();
-               foreach( $this->data['personal_urls'] as $key => $ptool ) {
+               foreach ( $this->data['personal_urls'] as $key => $plink ) {
                        # The class on a personal_urls item is meant to go on the <a> instead
                        # of the <li> so we have to use a single item "links" array instead
-                       # of using most of the personal_url's keys directly
-                       $personal_tools[$key] = array();
-                       $personal_tools[$key]["links"][] = array();
-                       $personal_tools[$key]["links"][0]["single-id"] = $personal_tools[$key]["id"] = "pt-$key";
-                       if ( isset($ptool["active"]) ) {
-                               $personal_tools[$key]["active"] = $ptool["active"];
+                       # of using most of the personal_url's keys directly.
+                       $ptool = array(
+                               'links' => array(
+                                       array( 'single-id' => "pt-$key" ),
+                               ),
+                               'id' => "pt-$key",
+                       );
+                       if ( isset( $plink['active'] ) ) {
+                               $ptool['active'] = $plink['active'];
                        }
-                       foreach ( array("href", "class", "text") as $k ) {
-                               if ( isset($ptool[$k]) )
-                                       $personal_tools[$key]["links"][0][$k] = $ptool[$k];
+                       foreach ( array( 'href', 'class', 'text' ) as $k ) {
+                               if ( isset( $plink[$k] ) )
+                                       $ptool['links'][0][$k] = $plink[$k];
                        }
+                       $personal_tools[$key] = $ptool;
                }
                return $personal_tools;
        }
@@ -1469,7 +1485,7 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( !isset( $sidebar['LANGUAGES'] ) ) {
                        $sidebar['LANGUAGES'] = true;
                }
-               
+
                if ( !isset( $options['search'] ) || $options['search'] !== true ) {
                        unset( $sidebar['SEARCH'] );
                }
@@ -1479,7 +1495,7 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( isset( $options['languages'] ) && $options['languages'] === false ) {
                        unset( $sidebar['LANGUAGES'] );
                }
-               
+
                $boxes = array();
                foreach ( $sidebar as $boxName => $content ) {
                        if ( $content === false ) {
@@ -1489,7 +1505,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        case 'SEARCH':
                                // Search is a special case, skins should custom implement this
                                $boxes[$boxName] = array(
-                                       'id'        => "p-search",
+                                       'id'        => 'p-search',
                                        'header'    => $this->getMsg( 'search' )->text(),
                                        'generated' => false,
                                        'content'   => true,
@@ -1498,7 +1514,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        case 'TOOLBOX':
                                $msgObj = $this->getMsg( 'toolbox' );
                                $boxes[$boxName] = array(
-                                       'id'        => "p-tb",
+                                       'id'        => 'p-tb',
                                        'header'    => $msgObj->exists() ? $msgObj->text() : 'toolbox',
                                        'generated' => false,
                                        'content'   => $this->getToolbox(),
@@ -1508,12 +1524,12 @@ abstract class BaseTemplate extends QuickTemplate {
                                if ( $this->data['language_urls'] ) {
                                        $msgObj = $this->getMsg( 'otherlanguages' );
                                        $boxes[$boxName] = array(
-                                               'id'        => "p-lang",
+                                               'id'        => 'p-lang',
                                                'header'    => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
                                                'generated' => false,
                                                'content'   => $this->data['language_urls'],
                                        );
-                               } 
+                               }
                                break;
                        default:
                                $msgObj = $this->getMsg( $boxName );
@@ -1526,7 +1542,7 @@ abstract class BaseTemplate extends QuickTemplate {
                                break;
                        }
                }
-               
+
                // HACK: Compatibility with extensions still using SkinTemplateToolboxEnd
                $hookContents = null;
                if ( isset( $boxes['TOOLBOX'] ) ) {
@@ -1541,17 +1557,17 @@ abstract class BaseTemplate extends QuickTemplate {
                        }
                }
                // END hack
-               
+
                if ( isset( $options['htmlOnly'] ) && $options['htmlOnly'] === true ) {
                        foreach ( $boxes as $boxName => $box ) {
                                if ( is_array( $box['content'] ) ) {
-                                       $content = "<ul>";
+                                       $content = '<ul>';
                                        foreach ( $box['content'] as $key => $val ) {
                                                $content .= "\n " . $this->makeListItem( $key, $val );
                                        }
                                        // HACK, shove the toolbox end onto the toolbox if we're rendering itself
                                        if ( $hookContents ) {
-                                               $content .= "\n $hookContents"; 
+                                               $content .= "\n $hookContents";
                                        }
                                        // END hack
                                        $content .= "\n</ul>\n";
@@ -1561,7 +1577,7 @@ abstract class BaseTemplate extends QuickTemplate {
                } else {
                        if ( $hookContents ) {
                                $boxes['TOOLBOXEND'] = array(
-                                       'id'        => "p-toolboxend",
+                                       'id'        => 'p-toolboxend',
                                        'header'    => $boxes['TOOLBOX']['header'],
                                        'generated' => false,
                                        'content'   => "<ul>{$hookContents}</ul>",
@@ -1581,7 +1597,7 @@ abstract class BaseTemplate extends QuickTemplate {
                                // END hack
                        }
                }
-               
+
                return $boxes;
        }
 
@@ -1859,8 +1875,8 @@ abstract class BaseTemplate extends QuickTemplate {
         * body and html tags.
         */
        function printTrail() { ?>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
+<?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html( 'reporttime' ) ?>
 <?php if ( $this->data['debug'] ): ?>
 <!-- Debug output:
 <?php $this->text( 'debug' ); ?>
index 9e6717f..cbd7134 100644 (file)
@@ -589,15 +589,50 @@ class SpecialPage {
                $out->setPageTitle( $this->getDescription() );
        }
 
+       /**
+        * Entry point.
+        *
+        * @since 1.20
+        *
+        * @param $subPage string|null
+        */
+       public final function run( $subPage ) {
+               $this->beforeExecute( $subPage );
+               $this->execute( $subPage );
+               $this->afterExecute( $subPage );
+       }
+
+       /**
+        * Gets called before @see SpecialPage::execute.
+        *
+        * @since 1.20
+        *
+        * @param $subPage string|null
+        */
+       protected function beforeExecute( $subPage ) {
+               // No-op
+       }
+
+       /**
+        * Gets called after @see SpecialPage::execute.
+        *
+        * @since 1.20
+        *
+        * @param $subPage string|null
+        */
+       protected function afterExecute( $subPage ) {
+               // No-op
+       }
+
        /**
         * Default execute method
         * Checks user permissions, calls the function given in mFunction
         *
         * This must be overridden by subclasses; it will be made abstract in a future version
         *
-        * @param $par String subpage string, if one was specified
+        * @param $subPage string|null
         */
-       function execute( $par ) {
+       public function execute( $subPage ) {
                $this->setHeaders();
                $this->checkPermissions();
 
@@ -607,7 +642,7 @@ class SpecialPage {
                        require_once( $this->mFile );
                }
                $this->outputHeader();
-               call_user_func( $func, $par, $this );
+               call_user_func( $func, $subPage, $this );
        }
 
        /**
index 02b8d54..1d62e8b 100644 (file)
@@ -490,7 +490,7 @@ class SpecialPageFactory {
                // Execute special page
                $profName = 'Special:' . $page->getName();
                wfProfileIn( $profName );
-               $page->execute( $par );
+               $page->run( $par );
                wfProfileOut( $profName );
                wfProfileOut( __METHOD__ );
                return true;
index 7cd2b03..8eb0f6b 100644 (file)
@@ -44,7 +44,15 @@ class SquidPurgeClient {
         * The socket resource, or null for unconnected, or false for disabled due to error
         */
        var $socket;
-       
+
+       var $readBuffer;
+
+       var $bodyRemaining;
+
+       /**
+        * @param $server string
+        * @param $options array
+        */
        public function __construct( $server, $options = array() ) {
                $parts = explode( ':', $server, 2 );
                $this->host = $parts[0];
@@ -340,6 +348,9 @@ class SquidPurgeClient {
                $this->bodyRemaining = null;
        }
 
+       /**
+        * @param $msg string
+        */
        protected function log( $msg ) {
                wfDebugLog( 'squid', __CLASS__." ($this->host): $msg\n" );
        }
@@ -353,6 +364,9 @@ class SquidPurgeClientPool {
        var $clients = array();
        var $timeout = 5;
 
+       /**
+        * @param $options array
+        */
        function __construct( $options = array() ) {
                if ( isset( $options['timeout'] ) ) {
                        $this->timeout = $options['timeout'];
@@ -372,6 +386,9 @@ class SquidPurgeClientPool {
                $startTime = microtime( true );
                while ( !$done ) {
                        $readSockets = $writeSockets = array();
+                       /**
+                        * @var $client SquidPurgeClient
+                        */
                        foreach ( $this->clients as $clientIndex => $client ) {
                                $sockets = $client->getReadSocketsForSelect();
                                foreach ( $sockets as $i => $socket ) {
index 481f480..2b1a513 100644 (file)
@@ -936,7 +936,7 @@ class Title {
         */
        public function isConversionTable() {
                return $this->getNamespace() == NS_MEDIAWIKI &&
-                       strpos( $this->getText(), 'Conversiontable' ) !== false;
+                       strpos( $this->getText(), 'Conversiontable/' ) === 0;
        }
 
        /**
@@ -1516,6 +1516,7 @@ class Title {
        /**
         * Is $wgUser watching this page?
         *
+        * @deprecated in 1.20; use User::isWatched() instead.
         * @return Bool
         */
        public function userIsWatching() {
@@ -2877,7 +2878,7 @@ class Title {
         *
         * - This is called from WikiPage::doEdit() and WikiPage::insertOn() to allow
         * loading of the new page_id. It's also called from
-        * WikiPage::doDeleteArticle()
+        * WikiPage::doDeleteArticleReal()
         *
         * @param $newid Int the new Article ID
         */
@@ -3284,16 +3285,14 @@ class Title {
         * @return Array of String the URLs
         */
        public function getSquidURLs() {
-               global $wgContLang;
-
                $urls = array(
                        $this->getInternalURL(),
                        $this->getInternalURL( 'action=history' )
                );
 
-               // purge variant urls as well
-               if ( $wgContLang->hasVariants() ) {
-                       $variants = $wgContLang->getVariants();
+               $pageLang = $this->getPageLanguage();
+               if ( $pageLang->hasVariants() ) {
+                       $variants = $pageLang->getVariants();
                        foreach ( $variants as $vCode ) {
                                $urls[] = $this->getInternalURL( '', $vCode );
                        }
index 01407b1..5fc0773 100644 (file)
@@ -65,6 +65,11 @@ class User {
        const MW_USER_VERSION = MW_USER_VERSION;
        const EDIT_TOKEN_SUFFIX = EDIT_TOKEN_SUFFIX;
 
+       /**
+        * Maximum items in $mWatchedItems
+        */
+       const MAX_WATCHED_ITEMS_CACHE = 100;
+
        /**
         * Array of Strings List of member variables which are saved to the
         * shared cache (memcached). Any operation which changes the
@@ -219,6 +224,11 @@ class User {
         */
        private $mBlockedFromCreateAccount = false;
 
+       /**
+        * @var Array
+        */
+       private $mWatchedItems = array();
+
        static $idCacheByName = array();
 
        /**
@@ -2613,14 +2623,34 @@ class User {
                return RequestContext::getMain()->getSkin();
        }
 
+       /**
+        * Get a WatchedItem for this user and $title.
+        *
+        * @param $title Title
+        * @return WatchedItem
+        */
+       public function getWatchedItem( $title ) {
+               $key = $title->getNamespace() . ':' . $title->getDBkey();
+
+               if ( isset( $this->mWatchedItems[$key] ) ) {
+                       return $this->mWatchedItems[$key];
+               }
+
+               if ( count( $this->mWatchedItems ) >= self::MAX_WATCHED_ITEMS_CACHE ) {
+                       $this->mWatchedItems = array();
+               }
+
+               $this->mWatchedItems[$key] = WatchedItem::fromUserTitle( $this, $title );
+               return $this->mWatchedItems[$key];
+       }
+
        /**
         * Check the watched status of an article.
         * @param $title Title of the article to look at
         * @return Bool
         */
        public function isWatched( $title ) {
-               $wl = WatchedItem::fromUserTitle( $this, $title );
-               return $wl->isWatched();
+               return $this->getWatchedItem( $title )->isWatched();
        }
 
        /**
@@ -2628,8 +2658,7 @@ class User {
         * @param $title Title of the article to look at
         */
        public function addWatch( $title ) {
-               $wl = WatchedItem::fromUserTitle( $this, $title );
-               $wl->addWatch();
+               $this->getWatchedItem( $title )->addWatch();
                $this->invalidateCache();
        }
 
@@ -2638,8 +2667,7 @@ class User {
         * @param $title Title of the article to look at
         */
        public function removeWatch( $title ) {
-               $wl = WatchedItem::fromUserTitle( $this, $title );
-               $wl->removeWatch();
+               $this->getWatchedItem( $title )->removeWatch();
                $this->invalidateCache();
        }
 
index 08e06ea..7efb082 100644 (file)
@@ -482,9 +482,7 @@ class MediaWiki {
 
                $action = Action::factory( $act, $page );
                if ( $action instanceof Action ) {
-                       # When it's a known action, let Squid cache things if we can purge them.
-                       # If the action is unknown, we don't know what may happen in an extension,
-                       # but not caching can be always safe.
+                       # Let Squid cache things if we can purge them.
                        if ( $wgUseSquid &&
                                in_array( $request->getFullRequestURL(), $title->getSquidURLs() )
                        ) {
index b5f4c1d..43932a7 100644 (file)
@@ -34,30 +34,6 @@ abstract class Page {}
  * @internal documentation reviewed 15 Mar 2010
  */
 class WikiPage extends Page {
-       // doDeleteArticleReal() return values. Values less than zero indicate fatal errors,
-       // values greater than zero indicate that there were problems not resulting in page
-       // not being deleted
-
-       /**
-        * Delete operation aborted by hook
-        */
-       const DELETE_HOOK_ABORTED = -1;
-
-       /**
-        * Deletion successful
-        */
-       const DELETE_SUCCESS = 0;
-
-       /**
-        * Page not found
-        */
-       const DELETE_NO_PAGE = 1;
-
-       /**
-        * No revisions found to delete
-        */
-       const DELETE_NO_REVISIONS = 2;
-
        // Constants for $mDataLoadedFrom and related
 
        /**
@@ -243,11 +219,20 @@ class WikiPage extends Page {
 
        /**
         * Clear the object
+        * @return void
         */
        public function clear() {
                $this->mDataLoaded = false;
                $this->mDataLoadedFrom = self::DATA_NOT_LOADED;
 
+               $this->clearCacheFields();
+       }
+
+       /**
+        * Clear the object cache fields
+        * @return void
+        */
+       protected function clearCacheFields() {
                $this->mCounter = null;
                $this->mRedirectTarget = null; # Title object if set
                $this->mLastRevision = null; # Latest revision
@@ -396,10 +381,18 @@ class WikiPage extends Page {
                        $this->mTouched     = wfTimestamp( TS_MW, $data->page_touched );
                        $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.
+                       // Double-check the ID of any cached latest Revision object for consistency.
+                       if ( $this->mLastRevision && $this->mLastRevision->getId() != $this->mLatest ) {
+                               $this->mLastRevision = null;
+                               $this->mTimestamp = '';
+                       }
                } else {
                        $lc->addBadLinkObj( $this->mTitle );
 
                        $this->mTitle->loadFromRow( false );
+
+                       $this->clearCacheFields();
                }
 
                $this->mDataLoaded = true;
@@ -611,7 +604,7 @@ class WikiPage extends Page {
                if ( !$this->mTimestamp ) {
                        $this->loadLastEdit();
                }
-               
+
                return wfTimestamp( TS_MW, $this->mTimestamp );
        }
 
@@ -1188,7 +1181,7 @@ class WikiPage extends Page {
                        $conditions,
                        __METHOD__ );
 
-               $result = $dbw->affectedRows() != 0;
+               $result = $dbw->affectedRows() > 0;
                if ( $result ) {
                        $this->updateRedirectOn( $dbw, $rt, $lastRevIsRedirect );
                        $this->setLastEdit( $revision );
@@ -1428,7 +1421,7 @@ class WikiPage extends Page {
         *  Compatibility note: this function previously returned a boolean value indicating success/failure
         */
        public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
-               global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries;
+               global $wgUser, $wgUseAutomaticEditSummaries;
 
                # Low-level sanity check
                if ( $this->mTitle->getText() === '' ) {
@@ -1496,11 +1489,6 @@ class WikiPage extends Page {
                                return $status;
                        }
 
-                       # Make sure the revision is either completely inserted or not inserted at all
-                       if ( !$wgDBtransactions ) {
-                               $userAbort = ignore_user_abort( true );
-                       }
-
                        $revision = new Revision( array(
                                'page'       => $this->getId(),
                                'comment'    => $summary,
@@ -1511,6 +1499,9 @@ class WikiPage extends Page {
                                'user_text'  => $user->getName(),
                                'timestamp'  => $now
                        ) );
+                       # Bug 37225: use accessor to get the text as Revision may trim it.
+                       # After trimming, the text may be a duplicate of the current text.
+                       $text = $revision->getText(); // sanity; EditPage should trim already
 
                        $changed = ( strcmp( $text, $oldtext ) != 0 );
 
@@ -1531,11 +1522,6 @@ class WikiPage extends Page {
                                        /* Belated edit conflict! Run away!! */
                                        $status->fatal( 'edit-conflict' );
 
-                                       # Delete the invalid revision if the DB is not transactional
-                                       if ( !$wgDBtransactions ) {
-                                               $dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ );
-                                       }
-
                                        $revisionId = 0;
                                        $dbw->rollback( __METHOD__ );
                                } else {
@@ -1566,10 +1552,6 @@ class WikiPage extends Page {
                                $revision->setId( $this->getLatest() );
                        }
 
-                       if ( !$wgDBtransactions ) {
-                               ignore_user_abort( $userAbort );
-                       }
-
                        // Now that ignore_user_abort is restored, we can respond to fatal errors
                        if ( !$status->isOK() ) {
                                wfProfileOut( __METHOD__ );
@@ -1617,6 +1599,9 @@ class WikiPage extends Page {
                        ) );
                        $revisionId = $revision->insertOn( $dbw );
 
+                       # Bug 37225: use accessor to get the text as Revision may trim it
+                       $text = $revision->getText(); // sanity; EditPage should trim already
+
                        # Update the page record with revision data
                        $this->updateRevisionOn( $dbw, $revision, 0 );
 
@@ -2102,7 +2087,10 @@ class WikiPage extends Page {
        }
 
        /**
-        * Same as doDeleteArticleReal(), but returns more detailed success/failure status
+        * Same as doDeleteArticleReal(), but returns a simple boolean. This is kept around for
+        * backwards compatibility, if you care about error reporting you should use
+        * doDeleteArticleReal() instead.
+        *
         * Deletes the article with database consistency, writes logs, purges caches
         *
         * @param $reason string delete reason for deletion log
@@ -2120,8 +2108,8 @@ class WikiPage extends Page {
        public function doDeleteArticle(
                $reason, $suppress = false, $id = 0, $commit = true, &$error = '', User $user = null
        ) {
-               return $this->doDeleteArticleReal( $reason, $suppress, $id, $commit, $error, $user )
-                       == WikiPage::DELETE_SUCCESS;
+               $status = $this->doDeleteArticleReal( $reason, $suppress, $id, $commit, $error, $user );
+               return $status->isGood();
        }
 
        /**
@@ -2138,7 +2126,9 @@ class WikiPage extends Page {
         * @param $commit boolean defaults to true, triggers transaction end
         * @param &$error Array of errors to append to
         * @param $user User The deleting user
-        * @return int: One of WikiPage::DELETE_* constants
+        * @return Status: Status object; if successful, $status->value is the log_id of the
+        *                 deletion log entry. If the page couldn't be deleted because it wasn't
+        *                 found, $status is a non-fatal 'cannotdelete' error
         */
        public function doDeleteArticleReal(
                $reason, $suppress = false, $id = 0, $commit = true, &$error = '', User $user = null
@@ -2147,20 +2137,28 @@ class WikiPage extends Page {
 
                wfDebug( __METHOD__ . "\n" );
 
+               $status = Status::newGood();
+
                if ( $this->mTitle->getDBkey() === '' ) {
-                       return WikiPage::DELETE_NO_PAGE;
+                       $status->error( 'cannotdelete', wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) );
+                       return $status;
                }
 
                $user = is_null( $user ) ? $wgUser : $user;
-               if ( ! wfRunHooks( 'ArticleDelete', array( &$this, &$user, &$reason, &$error ) ) ) {
-                       return WikiPage::DELETE_HOOK_ABORTED;
+               if ( ! wfRunHooks( 'ArticleDelete', array( &$this, &$user, &$reason, &$error, &$status ) ) ) {
+                       if ( $status->isOK() ) {
+                               // Hook aborted but didn't set a fatal status
+                               $status->fatal( 'delete-hook-aborted' );
+                       }
+                       return $status;
                }
 
                if ( $id == 0 ) {
                        $this->loadPageData( 'forupdate' );
                        $id = $this->getID();
                        if ( $id == 0 ) {
-                               return WikiPage::DELETE_NO_PAGE;
+                               $status->error( 'cannotdelete', wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) );
+                               return $status;
                        }
                }
 
@@ -2218,7 +2216,8 @@ class WikiPage extends Page {
 
                if ( !$ok ) {
                        $dbw->rollback( __METHOD__ );
-                       return WikiPage::DELETE_NO_REVISIONS;
+                       $status->error( 'cannotdelete', wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) );
+                       return $status;
                }
 
                $this->doDeleteUpdates( $id );
@@ -2238,7 +2237,8 @@ class WikiPage extends Page {
                }
 
                wfRunHooks( 'ArticleDeleteComplete', array( &$this, &$user, $reason, $id ) );
-               return WikiPage::DELETE_SUCCESS;
+               $status->value = $logid;
+               return $status;
        }
 
        /**
@@ -2280,7 +2280,7 @@ class WikiPage extends Page {
         * roll back to, e.g. user is the sole contributor. This function
         * performs permissions checks on $user, then calls commitRollback()
         * to do the dirty work
-        * 
+        *
         * @todo: seperate the business/permission stuff out from backend code
         *
         * @param $fromP String: Name of the user whose edits to rollback.
@@ -2950,7 +2950,7 @@ class WikiPage extends Page {
        public function quickEdit( $text, $comment = '', $minor = 0 ) {
                wfDeprecated( __METHOD__, '1.18' );
                global $wgUser;
-               return $this->doQuickEdit( $text, $wgUser, $comment, $minor );
+               $this->doQuickEdit( $text, $wgUser, $comment, $minor );
        }
 
        /**
index 94bf50c..6f48cd0 100644 (file)
@@ -204,6 +204,11 @@ class HistoryAction extends FormlessAction {
         * @return ResultWrapper
         */
        function fetchRevisions( $limit, $offset, $direction ) {
+               // Fail if article doesn't exist.
+               if( !$this->getTitle()->exists() ) {
+                       return new FakeResultWrapper( array() );
+               }
+
                $dbr = wfGetDB( DB_SLAVE );
 
                if ( $direction == HistoryPage::DIR_PREV ) {
@@ -630,6 +635,7 @@ class HistoryPager extends ReverseChronologicalPager {
 
                if ( $notificationtimestamp && ( $row->rev_timestamp >= $notificationtimestamp ) ) {
                        $s2 .= ' <span class="updatedmarker">' .  $this->msg( 'updatedmarker' )->escaped() . '</span>';
+                       $classes[] = 'mw-history-line-updated';
                }
 
                $tools = array();
@@ -641,7 +647,7 @@ class HistoryPager extends ReverseChronologicalPager {
                        if ( $latest && !count( $this->getTitle()->getUserPermissionsErrors( 'rollback', $this->getUser() ) ) ) {
                                $this->preventClickjacking();
                                $tools[] = '<span class="mw-rollback-link">' .
-                                       Linker::buildRollbackLink( $rev ) . '</span>';
+                                       Linker::buildRollbackLink( $rev, $this->getContext() ) . '</span>';
                        }
 
                        if ( !$rev->isDeleted( Revision::DELETED_TEXT )
index f07e493..14da2fc 100644 (file)
@@ -44,6 +44,6 @@ class RevisiondeleteAction extends FormlessAction {
        public function show() {
                $special = SpecialPageFactory::getPage( 'Revisiondelete' );
                $special->setContext( $this->getContext() );
-               $special->execute( '' );
+               $special->run( '' );
        }
 }
index f0386a1..a6e3363 100644 (file)
@@ -56,6 +56,11 @@ abstract class ApiBase extends ContextSource {
        /// @since 1.17
        const PARAM_RANGE_ENFORCE = 9; // Boolean, if MIN/MAX are set, enforce (die) these? Only applies if TYPE='integer' Use with extreme caution
 
+       const PROP_ROOT = 'ROOT'; // Name of property group that is on the root element of the result, i.e. not part of a list
+       const PROP_LIST = 'LIST'; // Boolean, is the result multiple items? Defaults to true for query modules, to false for other modules
+       const PROP_TYPE = 0; // Type of the property, uses same format as PARAM_TYPE
+       const PROP_NULLABLE = 1; // Boolean, can the property be not included in the result? Defaults to false
+
        const LIMIT_BIG1 = 500; // Fast query, std user limit
        const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
        const LIMIT_SML1 = 50; // Slow query, std user limit
@@ -572,6 +577,51 @@ abstract class ApiBase extends ContextSource {
                return $desc;
        }
 
+       /**
+        * Returns possible properties in the result, grouped by the value of the prop parameter
+        * that shows them.
+        *
+        * Properties that are shown always are in a group with empty string as a key.
+        * Properties that can be shown by several values of prop are included multiple times.
+        * If some properties are part of a list and some are on the root object (see ApiQueryQueryPage),
+        * those on the root object are under the key PROP_ROOT.
+        * The array can also contain a boolean under the key PROP_LIST,
+        * indicating whether the result is a list.
+        *
+        * Don't call this functon directly: use getFinalResultProperties() to
+        * allow hooks to modify descriptions as needed.
+        *
+        * @return array|bool False on no properties
+        */
+       protected function getResultProperties() {
+               return false;
+       }
+
+       /**
+        * Get final possible result properties, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @return array
+        */
+       public function getFinalResultProperties() {
+               $properties = $this->getResultProperties();
+               wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) );
+               return $properties;
+       }
+
+       /**
+        * Add token properties to the array used by getResultProperties,
+        * based on a token functions mapping.
+        */
+       protected static function addTokenProperties( &$props, $tokenFunctions ) {
+               foreach ( array_keys( $tokenFunctions ) as $token ) {
+                       $props[''][$token . 'token'] = array(
+                               ApiBase::PROP_TYPE => 'string',
+                               ApiBase::PROP_NULLABLE => true
+                       );
+               }
+       }
+
        /**
         * Get final module description, after hooks have had a chance to tweak it as
         * needed.
@@ -775,7 +825,7 @@ abstract class ApiBase extends ContextSource {
         */
        protected function getWatchlistValue ( $watchlist, $titleObj, $userOption = null ) {
 
-               $userWatching = $titleObj->userIsWatching();
+               $userWatching = $this->getUser()->isWatched( $titleObj );
 
                switch ( $watchlist ) {
                        case 'watch':
@@ -1257,6 +1307,8 @@ abstract class ApiBase extends ContextSource {
                'specialpage-cantexecute' => array( 'code' => 'specialpage-cantexecute', 'info' => "You don't have permission to view the results of this special page" ),
                'invalidoldimage' => array( 'code' => 'invalidoldimage', 'info' => 'The oldimage parameter has invalid format' ),
                'nodeleteablefile' => array( 'code' => 'nodeleteablefile', 'info' => 'No such old version of the file' ),
+               'fileexists-forbidden' => array( 'code' => 'fileexists-forbidden', 'info' => 'A file with name "$1" already exists, and cannot be overwritten.' ),
+               'fileexists-shared-forbidden' => array( 'code' => 'fileexists-shared-forbidden', 'info' => 'A file with name "$1" already exists in the shared file repository, and cannot be overwritten.' ),
 
                // ApiEditPage messages
                'noimageredirect-anon' => array( 'code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects" ),
index e229ef0..6cd31ae 100644 (file)
@@ -186,6 +186,44 @@ class ApiBlock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userID' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'expiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidename' => 'boolean',
+                               'allowusertalk' => 'boolean',
+                               'watchuser' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Block a user';
        }
index 87f0967..ed72b29 100644 (file)
@@ -124,6 +124,25 @@ class ApiComparePages extends ApiBase {
                        'torev' => 'Second revision to compare',
                );
        }
+
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'fromtitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'fromrevid' => 'integer',
+                               'totitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'torevid' => 'integer',
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get the difference between 2 pages',
index cefdaac..91406af 100644 (file)
@@ -56,13 +56,14 @@ class ApiDelete extends ApiBase {
                $user = $this->getUser();
 
                if ( $titleObj->getNamespace() == NS_FILE ) {
-                       $retval = self::deleteFile( $pageObj, $user, $params['token'], $params['oldimage'], $reason, false );
+                       $status = self::deleteFile( $pageObj, $user, $params['token'], $params['oldimage'], $reason, false );
                } else {
-                       $retval = self::delete( $pageObj, $user, $params['token'], $reason );
+                       $status = self::delete( $pageObj, $user, $params['token'], $reason );
                }
 
-               if ( count( $retval ) ) {
-                       $this->dieUsageMsg( reset( $retval ) ); // We don't care about multiple errors, just report one of them
+               if ( !$status->isGood() ) {
+                       $errors = $this->getErrorsArray();
+                       $this->dieUsageMsg( $errors[0] ); // We don't care about multiple errors, just report one of them
                }
 
                // Deprecated parameters
@@ -75,7 +76,11 @@ class ApiDelete extends ApiBase {
                }
                $this->setWatch( $watch, $titleObj, 'watchdeletion' );
 
-               $r = array( 'title' => $titleObj->getPrefixedText(), 'reason' => $reason );
+               $r = array(
+                       'title' => $titleObj->getPrefixedText(),
+                       'reason' => $reason,
+                       'logid' => $status->value
+               );
                $this->getResult()->addValue( null, $this->getModuleName(), $r );
        }
 
@@ -97,7 +102,7 @@ class ApiDelete extends ApiBase {
         * @param $user User doing the action
         * @param $token String: delete token (same as edit token)
         * @param $reason String: reason for the deletion. Autogenerated if NULL
-        * @return Title::getUserPermissionsErrors()-like array
+        * @return Status
         */
        public static function delete( Page $page, User $user, $token, &$reason = null ) {
                $title = $page->getTitle();
@@ -119,11 +124,7 @@ class ApiDelete extends ApiBase {
 
                $error = '';
                // Luckily, Article.php provides a reusable delete function that does the hard work for us
-               if ( $page->doDeleteArticle( $reason, false, 0, true, $error ) ) {
-                       return array();
-               } else {
-                       return array( array( 'cannotdelete', $title->getPrefixedText() ) );
-               }
+               return $page->doDeleteArticleReal( $reason, false, 0, true, $error );
        }
 
        /**
@@ -133,7 +134,7 @@ class ApiDelete extends ApiBase {
         * @param $oldimage
         * @param $reason
         * @param $suppress bool
-        * @return array|Title
+        * @return Status
         */
        public static function deleteFile( Page $page, User $user, $token, $oldimage, &$reason = null, $suppress = false ) {
                $title = $page->getTitle();
@@ -162,12 +163,7 @@ class ApiDelete extends ApiBase {
                if ( is_null( $reason ) ) { // Log and RC don't like null reasons
                        $reason = '';
                }
-               $status = FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, $suppress );
-               if ( !$status->isGood() ) {
-                       return array( array( 'cannotdelete', $title->getPrefixedText() ) );
-               }
-
-               return array();
+               return FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, $suppress );
        }
 
        public function mustBePosted() {
@@ -221,6 +217,15 @@ class ApiDelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Delete a page';
        }
index 0b7ac41..9a16007 100644 (file)
@@ -494,6 +494,41 @@ class ApiEditPage extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'new' => 'boolean',
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'nochange' => 'boolean',
+                               'oldrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function needsToken() {
                return true;
        }
index 0032bd8..4b6ba00 100644 (file)
@@ -113,6 +113,23 @@ class ApiEmailUser extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'message' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Email a user.';
        }
index d570534..2ed118f 100644 (file)
@@ -103,6 +103,14 @@ class ApiExpandTemplates extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Expands all templates in wikitext';
        }
index 5ea2571..7cac0eb 100644 (file)
@@ -132,15 +132,29 @@ class ApiFileRevert extends ApiBase {
        }
 
        public function getParamDescription() {
-               $params = array(
+               return array(
                        'filename' => 'Target filename without the File: prefix',
                        'token' => 'Edit token. You can get one of these through prop=info',
                        'comment' => 'Upload comment',
                        'archivename' => 'Archive name of the revision to revert to',
                );
+       }
 
-               return $params;
-
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       )
+                               ),
+                               'errors' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
        }
 
        public function getDescription() {
index 5093b6b..6663d97 100644 (file)
@@ -126,6 +126,17 @@ class ApiImport extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'revisions' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Import a page from another wiki, or an XML file.' ,
@@ -187,11 +198,11 @@ class ApiImportReporter extends ImportReporter {
                // Add a result entry
                $r = array();
 
-               if ( $title === null ) {\r
+               if ( $title === null ) {
                        # Invalid or non-importable title
                        $r['title'] = $pageInfo['title'];
-                       $r['invalid'] = '';\r
-               } else {\r
+                       $r['invalid'] = '';
+               } else {
                        ApiQueryBase::addTitleInfo( $r, $title );
                        $r['revisions'] = intval( $successCount );
                }
index aa570cb..2ad2653 100644 (file)
@@ -79,6 +79,8 @@ class ApiLogin extends ApiBase {
                                $user->setOption( 'rememberpassword', 1 );
                                $user->setCookies( $this->getRequest() );
 
+                               ApiQueryInfo::resetTokenCache();
+
                                // Run hooks.
                                // @todo FIXME: Split back and frontend from this hook.
                                // @todo FIXME: This hook should be placed in the backend
@@ -181,6 +183,66 @@ class ApiLogin extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'NeedToken',
+                                               'WrongToken',
+                                               'NoName',
+                                               'Illegal',
+                                               'WrongPluginPass',
+                                               'NotExists',
+                                               'WrongPass',
+                                               'EmptyPass',
+                                               'CreateBlocked',
+                                               'Throttled',
+                                               'Blocked',
+                                               'Aborted'
+                                       )
+                               ),
+                               'lguserid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgusername' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'cookieprefix' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionid' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'token' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'details' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'wait' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Log in and get the authentication tokens. ',
index 81a054a..cab2430 100644 (file)
@@ -54,6 +54,10 @@ class ApiLogout extends ApiBase {
                return array();
        }
 
+       public function getResultProperties() {
+               return array();
+       }
+
        public function getParamDescription() {
                return array();
        }
index 7414a97..172a77b 100644 (file)
@@ -354,6 +354,12 @@ class ApiMain extends ApiBase {
         * have been accumulated, and replace it with an error message and a help screen.
         */
        protected function executeActionWithErrorHandling() {
+               // Verify the CORS header before executing the action
+               if ( !$this->handleCORS() ) {
+                       // handleCORS() has sent a 403, abort
+                       return;
+               }
+
                // In case an error occurs during data output,
                // clear the output buffer and print just the error information
                ob_start();
@@ -402,9 +408,94 @@ class ApiMain extends ApiBase {
                ob_end_flush();
        }
 
+       /**
+        * Check the &origin= query parameter against the Origin: HTTP header and respond appropriately.
+        *
+        * If no origin parameter is present, nothing happens.
+        * If an origin parameter is present but doesn't match the Origin header, a 403 status code
+        * is set and false is returned.
+        * If the parameter and the header do match, the header is checked against $wgCrossSiteAJAXdomains
+        * and $wgCrossSiteAJAXdomainExceptions, and if the origin qualifies, the appropriate CORS
+        * headers are set.
+        *
+        * @return bool False if the caller should abort (403 case), true otherwise (all other cases)
+        */
+       protected function handleCORS() {
+               global $wgCrossSiteAJAXdomains, $wgCrossSiteAJAXdomainExceptions;
+               $response = $this->getRequest()->response();
+               $originParam = $this->getParameter( 'origin' ); // defaults to null
+               if ( $originParam === null ) {
+                       // No origin parameter, nothing to do
+                       return true;
+               }
+               // Origin: header is a space-separated list of origins, check all of them
+               $originHeader = isset( $_SERVER['HTTP_ORIGIN'] ) ? $_SERVER['HTTP_ORIGIN'] : '';
+               $origins = explode( ' ', $originHeader );
+               if ( !in_array( $originParam, $origins ) ) {
+                       // origin parameter set but incorrect
+                       // Send a 403 response
+                       $message = HttpStatus::getMessage( 403 );
+                       $response->header( "HTTP/1.1 403 $message", true, 403 );
+                       $response->header( 'Cache-Control: no-cache' );
+                       echo "'origin' parameter does not match Origin header\n";
+                       return false;
+               }
+               if ( self::matchOrigin( $originParam, $wgCrossSiteAJAXdomains, $wgCrossSiteAJAXdomainExceptions ) ) {
+                       $response->header( "Access-Control-Allow-Origin: $originParam" );
+                       $response->header( 'Access-Control-Allow-Credentials: true' );
+                       $this->getOutput()->addVaryHeader( 'Origin' );
+               }
+               return true;
+       }
+
+       /**
+        * Attempt to match an Origin header against a set of rules and a set of exceptions
+        * @param $value string Origin header
+        * @param $rules array Set of wildcard rules
+        * @param $exceptions array Set of wildcard rules
+        * @return bool True if $value matches a rule in $rules and doesn't match any rules in $exceptions, false otherwise
+        */
+       protected static function matchOrigin( $value, $rules, $exceptions ) {
+               foreach ( $rules as $rule ) {
+                       if ( preg_match( self::wildcardToRegex( $rule ), $value ) ) {
+                               // Rule matches, check exceptions
+                               foreach ( $exceptions as $exc ) {
+                                       if ( preg_match( self::wildcardToRegex( $exc ), $value ) ) {
+                                               return false;
+                                       }
+                               }
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Helper function to convert wildcard string into a regex
+        * '*' => '.*?'
+        * '?' => '.'
+        *
+        * @param $wildcard string String with wildcards
+        * @return string Regular expression
+        */
+       protected static function wildcardToRegex( $wildcard ) {
+               $wildcard = preg_quote( $wildcard, '/' );
+               $wildcard = str_replace(
+                       array( '\*', '\?' ),
+                       array( '.*?', '.' ),
+                       $wildcard
+               );
+               return "/https?:\/\/$wildcard/";
+       }
+
        protected function sendCacheHeaders() {
                global $wgUseXVO, $wgVaryOnXFP;
                $response = $this->getRequest()->response();
+               $out = $this->getOutput();
+
+               if ( $wgVaryOnXFP ) {
+                       $out->addVaryHeader( 'X-Forwarded-Proto' );
+               }
 
                if ( $this->mCacheMode == 'private' ) {
                        $response->header( 'Cache-Control: private' );
@@ -412,13 +503,9 @@ class ApiMain extends ApiBase {
                }
 
                if ( $this->mCacheMode == 'anon-public-user-private' ) {
-                       $xfp = $wgVaryOnXFP ? ', X-Forwarded-Proto' : '';
-                       $response->header( 'Vary: Accept-Encoding, Cookie' . $xfp );
+                       $out->addVaryHeader( 'Cookie' );
+                       $response->header( $out->getVaryHeader() );
                        if ( $wgUseXVO ) {
-                               $out = $this->getOutput();
-                               if ( $wgVaryOnXFP ) {
-                                       $out->addVaryHeader( 'X-Forwarded-Proto' );
-                               }
                                $response->header( $out->getXVO() );
                                if ( $out->haveCacheVaryCookies() ) {
                                        // Logged in, mark this request private
@@ -435,12 +522,9 @@ class ApiMain extends ApiBase {
                }
 
                // Send public headers
-               if ( $wgVaryOnXFP ) {
-                       $response->header( 'Vary: Accept-Encoding, X-Forwarded-Proto' );
-                       if ( $wgUseXVO ) {
-                               // Bleeeeegh. Our header setting system sucks
-                               $response->header( 'X-Vary-Options: Accept-Encoding;list-contains=gzip, X-Forwarded-Proto' );
-                       }
+               $response->header( $out->getVaryHeader() );
+               if ( $wgUseXVO ) {
+                       $response->header( $out->getXVO() );
                }
 
                // If nobody called setCacheMaxAge(), use the (s)maxage parameters
@@ -607,7 +691,7 @@ class ApiMain extends ApiBase {
                        if ( !isset( $moduleParams['token'] ) ) {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        } else {
-                               if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt ) ) {
+                               if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
                                        $this->dieUsageMsg( 'sessionfailure' );
                                }
                        }
@@ -784,6 +868,7 @@ class ApiMain extends ApiBase {
                        ),
                        'requestid' => null,
                        'servedby'  => false,
+                       'origin' => null,
                );
        }
 
@@ -809,6 +894,12 @@ class ApiMain extends ApiBase {
                        'maxage' => 'Set the max-age header to this many seconds. Errors are never cached',
                        'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
                        'servedby' => 'Include the hostname that served the request in the results. Unconditionally shown on error',
+                       'origin' => array(
+                               'When accessing the API using a cross-domain AJAX request (CORS), set this to the originating domain.',
+                               'This must match one of the origins in the Origin: header exactly, so it has to be set to something like http://en.wikipedia.org or https://meta.wikimedia.org .',
+                               'If this parameter does not match the Origin: header, a 403 response will be returned.',
+                               'If this parameter matches the Origin: header and the origin is whitelisted, an Access-Control-Allow-Origin header will be set.',
+                       ),
                );
        }
 
index f0a25e4..c89f59b 100644 (file)
@@ -224,6 +224,33 @@ class ApiMove extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'from' => 'string',
+                               'to' => 'string',
+                               'reason' => 'string',
+                               'redirectcreated' => 'boolean',
+                               'talkfrom' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkto' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-code' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-info' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Move a page';
        }
index 7bcfe1e..2b3d5e3 100644 (file)
@@ -107,6 +107,18 @@ class ApiOptions extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'success'
+                                       )
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'token' => 'An options token previously obtained through the action=tokens',
index f226347..dffce5b 100644 (file)
@@ -251,6 +251,62 @@ class ApiParamInfo extends ApiBase {
                }
                $result->setIndexedTagName( $retval['parameters'], 'param' );
 
+               $props = $obj->getFinalResultProperties();
+               $listResult = null;
+               if ( $props !== false ) {
+                       $retval['props'] = array();
+
+                       foreach ( $props as $prop => $properties ) {
+                               $propResult = array();
+                               if ( $prop == ApiBase::PROP_LIST ) {
+                                       $listResult = $properties;
+                                       continue;
+                               }
+                               if ( $prop != ApiBase::PROP_ROOT ) {
+                                       $propResult['name'] = $prop;
+                               }
+                               $propResult['properties'] = array();
+
+                               foreach ( $properties as $name => $p ) {
+                                       $propertyResult = array();
+
+                                       $propertyResult['name'] = $name;
+
+                                       if ( !is_array( $p ) ) {
+                                               $p = array( ApiBase::PROP_TYPE => $p );
+                                       }
+
+                                       $propertyResult['type'] = $p[ApiBase::PROP_TYPE];
+
+                                       if ( is_array( $propertyResult['type'] ) ) {
+                                               $propertyResult['type'] = array_values( $propertyResult['type'] );
+                                               $result->setIndexedTagName( $propertyResult['type'], 't' );
+                                       }
+
+                                       $nullable = null;
+                                       if ( isset( $p[ApiBase::PROP_NULLABLE] ) ) {
+                                               $nullable = $p[ApiBase::PROP_NULLABLE];
+                                       }
+
+                                       if ( $nullable === true ) {
+                                               $propertyResult['nullable'] = '';
+                                       }
+
+                                       $propResult['properties'][] = $propertyResult;
+                               }
+
+                               $result->setIndexedTagName( $propResult['properties'], 'property' );
+                               $retval['props'][] = $propResult;
+                       }
+
+                       // default is true for query modules, false for other modules, overriden by ApiBase::PROP_LIST
+                       if ( $listResult === true || ( $listResult !== false && $obj instanceof ApiQueryBase ) ) {
+                               $retval['listresult'] = '';
+                       }
+
+                       $result->setIndexedTagName( $retval['props'], 'prop' );
+               }
+
                // Errors
                $retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
                $result->setIndexedTagName( $retval['errors'], 'error' );
index 1332f26..45d19d0 100644 (file)
@@ -80,6 +80,16 @@ class ApiPatrol extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'rcid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Patrol a page or revision';
        }
index 286f191..0fcaf42 100644 (file)
@@ -184,6 +184,16 @@ class ApiProtect extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string',
+                               'cascade' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Change the protection level of a page';
        }
index 8e9c198..d9acba4 100644 (file)
@@ -88,8 +88,7 @@ class ApiPurge extends ApiBase {
                                if ( !$user->pingLimiter() ) {
                                        global $wgParser, $wgEnableParserCache;
 
-                                       $popts = ParserOptions::newFromContext( $this->getContext() );
-                                       $popts->setTidy( true );
+                                       $popts = $page->makeParserOptions( 'canonical' );
                                        $p_result = $wgParser->parse( $page->getRawText(), $title, $popts,
                                                true, true, $page->getLatest() );
 
@@ -135,6 +134,34 @@ class ApiPurge extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'revid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'invalid' => 'boolean',
+                               'missing' => 'boolean',
+                               'purged' => 'boolean',
+                               'linkupdate' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Purge the cache for the given titles.',
                        'Requires a POST request if the user is not logged in.'
index 233ea75..60b57bf 100644 (file)
@@ -192,6 +192,23 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pages' => 'integer',
+                               'files' => 'integer',
+                               'subcats' => 'integer'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all categories';
        }
index 87e7024..4ab4d72 100644 (file)
@@ -165,7 +165,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                                        break;
                                }
                        } else {
-                               $titles[] = Title::makeTitle( NS_IMAGE, $row->img_name );
+                               $titles[] = Title::makeTitle( NS_FILE, $row->img_name );
                        }
                }
 
@@ -230,6 +230,19 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
 
        private $propertyFilter = array( 'archivename' );
 
+       public function getResultProperties() {
+               return array_merge(
+                       array(
+                               '' => array(
+                                       'name' => 'string',
+                                       'ns' => 'namespace',
+                                       'title' => 'string'
+                               )
+                       ),
+                       ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all images sequentially';
        }
index f04d5b2..70b6656 100644 (file)
@@ -80,12 +80,13 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        if ( count( $continueArr ) != 2 ) {
                                $this->dieUsage( 'Invalid continue parameter', 'badcontinue' );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $continueTitle = $db->addQuotes( $this->titleToKey( $continueArr[0] ) );
                        $continueFrom = intval( $continueArr[1] );
                        $this->addWhere(
-                               "pl_title > $continueTitle OR " .
+                               "pl_title $op $continueTitle OR " .
                                "(pl_title = $continueTitle AND " .
-                               "pl_from > $continueFrom)"
+                               "pl_from $op= $continueFrom)"
                        );
                }
 
@@ -104,12 +105,13 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                $limit = $params['limit'];
                $this->addOption( 'LIMIT', $limit + 1 );
 
+               $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' );
+               $orderBy = array();
+               $orderBy[] = 'pl_title' . $sort;
                if ( !$params['unique'] ) {
-                       $this->addOption( 'ORDER BY', array(
-                               'pl_title',
-                               'pl_from'
-                       ));
+                       $orderBy[] = 'pl_from' . $sort;
                }
+               $this->addOption( 'ORDER BY', $orderBy );
 
                $res = $this->select( __METHOD__ );
 
@@ -183,7 +185,14 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MIN => 1,
                                ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
-                       )
+                       ),
+                       'dir' => array(
+                               ApiBase::PARAM_DFLT => 'ascending',
+                               ApiBase::PARAM_TYPE => array(
+                                       'ascending',
+                                       'descending'
+                               )
+                       ),
                );
        }
 
@@ -202,6 +211,19 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        'namespace' => 'The namespace to enumerate',
                        'limit' => 'How many total links to return',
                        'continue' => 'When more results are available, use this to continue',
+                       'dir' => 'The direction in which to list',
+               );
+       }
+
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'fromid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
                );
        }
 
index dedd3e5..ac000bf 100644 (file)
@@ -256,6 +256,27 @@ class ApiQueryAllMessages extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'customised' => 'boolean',
+                               'missing' => 'boolean',
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'default' => array(
+                               'defaultmissing' => 'boolean',
+                               'default' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Return messages from this site';
        }
index 7e89a95..cfc22ff 100644 (file)
@@ -296,6 +296,16 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all pages sequentially in a given namespace';
        }
index e110e67..dda8c72 100644 (file)
@@ -377,6 +377,48 @@ class ApiQueryAllUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'name' => 'string',
+                               'recenteditcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'hidden' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'registration' => array(
+                               'registration' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all registered users';
        }
index 5505692..7491bbb 100644 (file)
@@ -40,7 +40,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
        private $rootTitle;
 
        private $params, $contID, $redirID, $redirect;
-       private $bl_ns, $bl_from, $bl_table, $bl_code, $bl_title, $bl_sort, $bl_fields, $hasNS;
+       private $bl_ns, $bl_from, $bl_table, $bl_code, $bl_title, $bl_fields, $hasNS;
 
        /**
         * Maps ns and title to pageid
@@ -91,14 +91,12 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                $this->hasNS = $moduleName !== 'imageusage';
                if ( $this->hasNS ) {
                        $this->bl_title = $prefix . '_title';
-                       $this->bl_sort = "{$this->bl_ns}, {$this->bl_title}, {$this->bl_from}";
                        $this->bl_fields = array(
                                $this->bl_ns,
                                $this->bl_title
                        );
                } else {
                        $this->bl_title = $prefix . '_to';
-                       $this->bl_sort = "{$this->bl_title}, {$this->bl_from}";
                        $this->bl_fields = array(
                                $this->bl_title
                        );
@@ -144,7 +142,8 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
 
                if ( !is_null( $this->contID ) ) {
-                       $this->addWhere( "{$this->bl_from}>={$this->contID}" );
+                       $op = $this->params['dir'] == 'descending' ? '<' : '>';
+                       $this->addWhere( "{$this->bl_from}$op={$this->contID}" );
                }
 
                if ( $this->params['filterredir'] == 'redirects' ) {
@@ -155,7 +154,8 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                }
 
                $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
-               $this->addOption( 'ORDER BY', $this->bl_from );
+               $sort = ( $this->params['dir'] == 'descending' ? ' DESC' : '' );
+               $this->addOption( 'ORDER BY', $this->bl_from . $sort );
                $this->addOption( 'STRAIGHT_JOIN' );
        }
 
@@ -186,28 +186,35 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
 
                // We can't use LinkBatch here because $this->hasNS may be false
                $titleWhere = array();
+               $allRedirNs = array();
+               $allRedirDBkey = array();
                foreach ( $this->redirTitles as $t ) {
-                       $titleWhere[] = "{$this->bl_title} = " . $db->addQuotes( $t->getDBkey() ) .
-                                       ( $this->hasNS ? " AND {$this->bl_ns} = {$t->getNamespace()}" : '' );
+                       $redirNs = $t->getNamespace();
+                       $redirDBkey = $t->getDBkey();
+                       $titleWhere[] = "{$this->bl_title} = " . $db->addQuotes( $redirDBkey ) .
+                                       ( $this->hasNS ? " AND {$this->bl_ns} = {$redirNs}" : '' );
+                       $allRedirNs[] = $redirNs;
+                       $allRedirDBkey[] = $redirDBkey;
                }
                $this->addWhere( $db->makeList( $titleWhere, LIST_OR ) );
                $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
 
                if ( !is_null( $this->redirID ) ) {
+                       $op = $this->params['dir'] == 'descending' ? '<' : '>';
                        $first = $this->redirTitles[0];
                        $title = $db->addQuotes( $first->getDBkey() );
                        $ns = $first->getNamespace();
                        $from = $this->redirID;
                        if ( $this->hasNS ) {
-                               $this->addWhere( "{$this->bl_ns} > $ns OR " .
+                               $this->addWhere( "{$this->bl_ns} $op $ns OR " .
                                                "({$this->bl_ns} = $ns AND " .
-                                               "({$this->bl_title} > $title OR " .
+                                               "({$this->bl_title} $op $title OR " .
                                                "({$this->bl_title} = $title AND " .
-                                               "{$this->bl_from} >= $from)))" );
+                                               "{$this->bl_from} $op= $from)))" );
                        } else {
-                               $this->addWhere( "{$this->bl_title} > $title OR " .
+                               $this->addWhere( "{$this->bl_title} $op $title OR " .
                                                "({$this->bl_title} = $title AND " .
-                                               "{$this->bl_from} >= $from)" );
+                                               "{$this->bl_from} $op= $from)" );
                        }
                }
                if ( $this->params['filterredir'] == 'redirects' ) {
@@ -217,7 +224,17 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                }
 
                $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
-               $this->addOption( 'ORDER BY', $this->bl_sort );
+               $orderBy = array();
+               $sort = ( $this->params['dir'] == 'descending' ? ' DESC' : '' );
+               // Don't order by namespace/title if it's constant in the WHERE clause
+               if( $this->hasNS && count( array_unique( $allRedirNs ) ) != 1 ) {
+                       $orderBy[] = $this->bl_ns . $sort;
+               }
+               if( count( array_unique( $allRedirDBkey ) ) != 1 ) {
+                       $orderBy[] = $this->bl_title . $sort;
+               }
+               $orderBy[] = $this->bl_from . $sort;
+               $this->addOption( 'ORDER BY', $orderBy );
                $this->addOption( 'USE INDEX', array( 'page' => 'PRIMARY' ) );
        }
 
@@ -277,7 +294,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                                        if ( $this->hasNS ) {
                                                $parentID = $this->pageMap[$row-> { $this->bl_ns } ][$row-> { $this->bl_title } ];
                                        } else {
-                                               $parentID = $this->pageMap[NS_IMAGE][$row-> { $this->bl_title } ];
+                                               $parentID = $this->pageMap[NS_FILE][$row-> { $this->bl_title } ];
                                        }
                                        $this->continueStr = $this->getContinueRedirStr( $parentID, $row->page_id );
                                        break;
@@ -438,6 +455,13 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => 'namespace'
                        ),
+                       'dir' => array(\r
+                               ApiBase::PARAM_DFLT => 'ascending',\r
+                               ApiBase::PARAM_TYPE => array(\r
+                                       'ascending',\r
+                                       'descending'\r
+                               )\r
+                       ),
                        'filterredir' => array(
                                ApiBase::PARAM_DFLT => 'all',
                                ApiBase::PARAM_TYPE => array(
@@ -467,6 +491,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                        'pageid' => "Pageid to search. Cannot be used together with {$this->bl_code}title",
                        'continue' => 'When more results are available, use this to continue',
                        'namespace' => 'The namespace to enumerate',
+                       'dir' => 'The direction in which to list',
                );
                if ( $this->getModuleName() != 'embeddedin' ) {
                        return array_merge( $retval, array(
@@ -481,6 +506,17 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                ) );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                switch ( $this->getModuleName() ) {
                        case 'backlinks':
index 8c287d6..49cd590 100644 (file)
@@ -324,6 +324,60 @@ class ApiQueryBlocks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       'id' => array(
+                               'id' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'userid' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'by' => array(
+                               'by' => 'string'
+                       ),
+                       'byid' => array(
+                               'byid' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'reason' => array(
+                               'reason' => 'string'
+                       ),
+                       'range' => array(
+                               'rangestart' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'rangeend' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'automatic' => 'boolean',
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidden' => 'boolean',
+                               'allowusertalk' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all blocked users and IP addresses';
        }
index cbda6ab..283eb13 100644 (file)
@@ -240,6 +240,25 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string',
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all categories the page(s) belong to';
        }
index c5070e8..e5eca85 100644 (file)
@@ -106,6 +106,34 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'pages' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'files' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'subcats' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'hidden' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns information about the given categories';
        }
index 35b5645..9f66f22 100644 (file)
@@ -364,6 +364,36 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string'
+                       ),
+                       'sortkeyprefix' => array(
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'page',
+                                               'subcat',
+                                               'file'
+                                       )
+                               )
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all pages in a given category';
        }
index 6912ddc..df5e303 100644 (file)
@@ -180,9 +180,10 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        if ( $params['unique'] ) {
                                $this->addOption( 'GROUP BY', 'ar_title' );
                        } else {
+                               $sort = ( $dir == 'newer' ? '' : ' DESC' );
                                $this->addOption( 'ORDER BY', array(
-                                       'ar_title',
-                                       'ar_timestamp'
+                                       'ar_title' . $sort,
+                                       'ar_timestamp' . $sort
                                ));
                        }
                } else {
@@ -366,6 +367,18 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'token' => array(
+                               'token' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                $p = $this->getModulePrefix();
                return array(
index 6fb3ea3..856d0fd 100644 (file)
@@ -165,6 +165,16 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'user' => 'string',
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all files that are duplicates of the given file(s)';
        }
index 93c71e2..221ffac 100644 (file)
@@ -232,6 +232,21 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'url' => array(
+                               'url' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate pages that contain a given URL';
        }
index a9fbc83..999ddc8 100644 (file)
@@ -133,6 +133,14 @@ class ApiQueryExternalLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all external urls (not interwikies) from the given page(s)';
        }
index 4d99055..07d5b41 100644 (file)
@@ -274,6 +274,67 @@ class ApiQueryFilearchive extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'filehidden' => 'boolean',
+                               'commenthidden' => 'boolean',
+                               'userhidden' => 'boolean',
+                               'suppressed' => 'boolean'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userid' => 'integer',
+                               'user' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'dimensions' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'parseddescription' => array(
+                               'description' => 'string',
+                               'parseddescription' => 'string'
+                       ),
+                       'metadata' => array(
+                               'metadata' => 'string'
+                       ),
+                       'bitdepth' => array(
+                               'bitdepth' => 'integer'
+                       ),
+                       'mime' => array(
+                               'mime' => 'string'
+                       ),
+                       'mediatype' => array(
+                               'mediatype' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all deleted files sequentially';
        }
index 2ffe479..37f347d 100644 (file)
@@ -62,15 +62,16 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                        }
 
                        $db = $this->getDB();
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $prefix = $db->addQuotes( $cont[0] );
                        $title = $db->addQuotes( $this->titleToKey( $cont[1] ) );
                        $from = intval( $cont[2] );
                        $this->addWhere(
-                               "iwl_prefix > $prefix OR " .
+                               "iwl_prefix $op $prefix OR " .
                                "(iwl_prefix = $prefix AND " .
-                               "(iwl_title > $title OR " .
+                               "(iwl_title $op $title OR " .
                                "(iwl_title = $title AND " .
-                               "iwl_from >= $from)))"
+                               "iwl_from $op= $from)))"
                        );
                }
 
@@ -84,22 +85,23 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                $this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect',
                        'iwl_from', 'iwl_prefix', 'iwl_title' ) );
 
+               $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' );
                if ( isset( $params['prefix'] ) ) {
                        $this->addWhereFld( 'iwl_prefix', $params['prefix'] );
                        if ( isset( $params['title'] ) ) {
                                $this->addWhereFld( 'iwl_title', $params['title'] );
-                               $this->addOption( 'ORDER BY', 'iwl_from' );
+                               $this->addOption( 'ORDER BY', 'iwl_from' . $sort );
                        } else {
                                $this->addOption( 'ORDER BY', array(
-                                       'iwl_title',
-                                       'iwl_from'
+                                       'iwl_title' . $sort,
+                                       'iwl_from' . $sort
                                ));
                        }
                } else {
                        $this->addOption( 'ORDER BY', array(
-                               'iwl_prefix',
-                               'iwl_title',
-                               'iwl_from'
+                               'iwl_prefix' . $sort,
+                               'iwl_title' . $sort,
+                               'iwl_from' . $sort
                        ));
                }
 
@@ -178,6 +180,13 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                                        'iwtitle',
                                ),
                        ),
+                       'dir' => array(
+                               ApiBase::PARAM_DFLT => 'ascending',
+                               ApiBase::PARAM_TYPE => array(
+                                       'ascending',
+                                       'descending'
+                               )
+                       ),
                );
        }
 
@@ -192,6 +201,24 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                                ' iwtitle        - Adds the title of the interwiki',
                        ),
                        'limit' => 'How many total pages to return',
+                       'dir' => 'The direction in which to list',
+               );
+       }
+
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'iwprefix' => array(
+                               'iwprefix' => 'string'
+                       ),
+                       'iwtitle' => array(
+                               'iwtitle' => 'string'
+                       )
                );
        }
 
index f39835a..7e69513 100644 (file)
@@ -167,6 +167,19 @@ class ApiQueryIWLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'prefix' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interwiki links from the given page(s)';
        }
index 135979a..4d2d04b 100644 (file)
@@ -81,14 +81,14 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                }
 
                                $start = $skip ? $fromTimestamp : $params['start'];
-                               $pageId = $pageIds[NS_IMAGE][ $img->getOriginalTitle()->getDBkey() ];
+                               $pageId = $pageIds[NS_FILE][ $img->getOriginalTitle()->getDBkey() ];
 
                                $fit = $result->addValue(
                                        array( 'query', 'pages', intval( $pageId ) ),
                                        'imagerepository', $img->getRepoName()
                                );
                                if ( !$fit ) {
-                                       if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                       if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                // The user is screwed. imageinfo can't be solely
                                                // responsible for exceeding the limit in this case,
                                                // so set a query-continue that just returns the same
@@ -119,7 +119,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                                self::getInfo( $img, $prop, $result,
                                                        $finalThumbParams, $params['metadataversion'] ) );
                                        if ( !$fit ) {
-                                               if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                               if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                        // See the 'the user is screwed' comment above
                                                        $this->setContinueEnumParameter( 'start',
                                                                wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
@@ -149,7 +149,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                                self::getInfo( $oldie, $prop, $result,
                                                        $finalThumbParams, $params['metadataversion'] ) );
                                        if ( !$fit ) {
-                                               if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                               if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                        $this->setContinueEnumParameter( 'start',
                                                                wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
                                                } else {
@@ -547,6 +547,114 @@ class ApiQueryImageInfo extends ApiQueryBase {
                );
        }
 
+       public static function getResultPropertiesFiltered( $filter = array() ) {
+               $props = array(
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'width' => 'integer',
+                               'height' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'filehidden' => 'boolean',
+                               'thumburl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbwidth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbheight' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumberror' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'descriptionurl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sha1' => array(
+                               'filehidden' => 'boolean',
+                               'sha1' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mime' => array(
+                               'filehidden' => 'boolean',
+                               'mime' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mediatype' => array(
+                               'filehidden' => 'boolean',
+                               'mediatype' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'archivename' => array(
+                               'filehidden' => 'boolean',
+                               'archivename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'bitdepth' => array(
+                               'filehidden' => 'boolean',
+                               'bitdepth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+               );
+               return array_diff_key( $props, array_flip( $filter ) );
+       }
+
+       public function getResultProperties() {
+               return self::getResultPropertiesFiltered();
+       }
+
        public function getDescription() {
                return 'Returns image information and upload history';
        }
index 6f488cd..147ab67 100644 (file)
@@ -174,6 +174,15 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all images contained on the given page(s)';
        }
index e5db4d8..87fd58b 100644 (file)
@@ -99,6 +99,12 @@ class ApiQueryInfo extends ApiQueryBase {
                return $this->tokenFunctions;
        }
 
+       static $cachedTokens = array();
+
+       public static function resetTokenCache() {
+               ApiQueryInfo::$cachedTokens = array();
+       }
+
        public static function getEditToken( $pageid, $title ) {
                // We could check for $title->userCan('edit') here,
                // but that's too expensive for this purpose
@@ -108,14 +114,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               // The edit token is always the same, let's exploit that
-               static $cachedEditToken = null;
-               if ( !is_null( $cachedEditToken ) ) {
-                       return $cachedEditToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'edit' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'edit' ] = $wgUser->getEditToken();
                }
 
-               $cachedEditToken = $wgUser->getEditToken();
-               return $cachedEditToken;
+               return ApiQueryInfo::$cachedTokens[ 'edit' ];
        }
 
        public static function getDeleteToken( $pageid, $title ) {
@@ -124,13 +128,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedDeleteToken = null;
-               if ( !is_null( $cachedDeleteToken ) ) {
-                       return $cachedDeleteToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'delete' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'delete' ] = $wgUser->getEditToken();
                }
 
-               $cachedDeleteToken = $wgUser->getEditToken();
-               return $cachedDeleteToken;
+               return ApiQueryInfo::$cachedTokens[ 'delete' ];
        }
 
        public static function getProtectToken( $pageid, $title ) {
@@ -139,13 +142,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedProtectToken = null;
-               if ( !is_null( $cachedProtectToken ) ) {
-                       return $cachedProtectToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'protect' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'protect' ] = $wgUser->getEditToken();
                }
 
-               $cachedProtectToken = $wgUser->getEditToken();
-               return $cachedProtectToken;
+               return ApiQueryInfo::$cachedTokens[ 'protect' ];
        }
 
        public static function getMoveToken( $pageid, $title ) {
@@ -154,13 +156,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedMoveToken = null;
-               if ( !is_null( $cachedMoveToken ) ) {
-                       return $cachedMoveToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'move' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'move' ] = $wgUser->getEditToken();
                }
 
-               $cachedMoveToken = $wgUser->getEditToken();
-               return $cachedMoveToken;
+               return ApiQueryInfo::$cachedTokens[ 'move' ];
        }
 
        public static function getBlockToken( $pageid, $title ) {
@@ -169,13 +170,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedBlockToken = null;
-               if ( !is_null( $cachedBlockToken ) ) {
-                       return $cachedBlockToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'block' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'block' ] = $wgUser->getEditToken();
                }
 
-               $cachedBlockToken = $wgUser->getEditToken();
-               return $cachedBlockToken;
+               return ApiQueryInfo::$cachedTokens[ 'block' ];
        }
 
        public static function getUnblockToken( $pageid, $title ) {
@@ -189,13 +189,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedEmailToken = null;
-               if ( !is_null( $cachedEmailToken ) ) {
-                       return $cachedEmailToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'email' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'email' ] = $wgUser->getEditToken();
                }
 
-               $cachedEmailToken = $wgUser->getEditToken();
-               return $cachedEmailToken;
+               return ApiQueryInfo::$cachedTokens[ 'email' ];
        }
 
        public static function getImportToken( $pageid, $title ) {
@@ -204,13 +203,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedImportToken = null;
-               if ( !is_null( $cachedImportToken ) ) {
-                       return $cachedImportToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'import' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'import' ] = $wgUser->getEditToken();
                }
 
-               $cachedImportToken = $wgUser->getEditToken();
-               return $cachedImportToken;
+               return ApiQueryInfo::$cachedTokens[ 'import' ];
        }
 
        public static function getWatchToken( $pageid, $title ) {
@@ -219,13 +217,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedWatchToken = null;
-               if ( !is_null( $cachedWatchToken ) ) {
-                       return $cachedWatchToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'watch' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'watch' ] = $wgUser->getEditToken( 'watch' );
                }
 
-               $cachedWatchToken = $wgUser->getEditToken( 'watch' );
-               return $cachedWatchToken;
+               return ApiQueryInfo::$cachedTokens[ 'watch' ];
        }
 
        public static function getOptionsToken( $pageid, $title ) {
@@ -234,13 +231,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedOptionsToken = null;
-               if ( !is_null( $cachedOptionsToken ) ) {
-                       return $cachedOptionsToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'options' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'options' ] = $wgUser->getEditToken();
                }
 
-               $cachedOptionsToken = $wgUser->getEditToken();
-               return $cachedOptionsToken;
+               return ApiQueryInfo::$cachedTokens[ 'options' ];
        }
 
        public function execute() {
@@ -337,7 +333,10 @@ class ApiQueryInfo extends ApiQueryBase {
         */
        private function extractPageInfo( $pageid, $title ) {
                $pageInfo = array();
-               if ( $title->exists() ) {
+               $titleExists = $pageid > 0; //$title->exists() needs pageid, which is not set for all title objects
+               $ns = $title->getNamespace();
+               $dbkey = $title->getDBkey();
+               if ( $titleExists ) {
                        global $wgDisableCounters;
 
                        $pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
@@ -370,23 +369,23 @@ class ApiQueryInfo extends ApiQueryBase {
 
                if ( $this->fld_protection ) {
                        $pageInfo['protection'] = array();
-                       if ( isset( $this->protections[$title->getNamespace()][$title->getDBkey()] ) ) {
+                       if ( isset( $this->protections[$ns][$dbkey] ) ) {
                                $pageInfo['protection'] =
-                                       $this->protections[$title->getNamespace()][$title->getDBkey()];
+                                       $this->protections[$ns][$dbkey];
                        }
                        $this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
                }
 
-               if ( $this->fld_watched && isset( $this->watched[$title->getNamespace()][$title->getDBkey()] ) ) {
+               if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
                        $pageInfo['watched'] = '';
                }
 
-               if ( $this->fld_talkid && isset( $this->talkids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_talkid && isset( $this->talkids[$ns][$dbkey] ) )        {
+                       $pageInfo['talkid'] = $this->talkids[$ns][$dbkey];
                }
 
-               if ( $this->fld_subjectid && isset( $this->subjectids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_subjectid && isset( $this->subjectids[$ns][$dbkey] ) ) {
+                       $pageInfo['subjectid'] = $this->subjectids[$ns][$dbkey];
                }
 
                if ( $this->fld_url ) {
@@ -398,7 +397,7 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_preload ) {
-                       if ( $title->exists() ) {
+                       if ( $titleExists ) {
                                $pageInfo['preload'] = '';
                        } else {
                                $text = null;
@@ -409,8 +408,8 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_displaytitle ) {
-                       if ( isset( $this->displaytitles[$title->getArticleID()] ) ) {
-                               $pageInfo['displaytitle'] = $this->displaytitles[$title->getArticleID()];
+                       if ( isset( $this->displaytitles[$pageid] ) ) {
+                               $pageInfo['displaytitle'] = $this->displaytitles[$pageid];
                        } else {
                                $pageInfo['displaytitle'] = $title->getPrefixedText();
                        }
@@ -721,6 +720,59 @@ class ApiQueryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'touched' => 'timestamp',
+                               'lastrevid' => 'integer',
+                               'counter' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'length' => 'integer',
+                               'redirect' => 'boolean',
+                               'new' => 'boolean',
+                               'starttimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'watched' => array(
+                               'watched' => 'boolean'
+                       ),
+                       'talkid' => array(
+                               'talkid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'subjectid' => array(
+                               'subjectid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'fullurl' => 'string',
+                               'editurl' => 'string'
+                       ),
+                       'readable' => array(
+                               'readable' => 'boolean'
+                       ),
+                       'preload' => array(
+                               'preload' => 'string'
+                       ),
+                       'displaytitle' => array(
+                               'displaytitle' => 'string'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get basic page information such as namespace, title, last touched date, ...';
        }
index efc2e81..c7639ee 100644 (file)
@@ -62,15 +62,16 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                        }
 
                        $db = $this->getDB();
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $prefix = $db->addQuotes( $cont[0] );
                        $title = $db->addQuotes( $this->titleToKey( $cont[1] ) );
                        $from = intval( $cont[2] );
                        $this->addWhere(
-                               "ll_lang > $prefix OR " .
+                               "ll_lang $op $prefix OR " .
                                "(ll_lang = $prefix AND " .
-                               "(ll_title > $title OR " .
+                               "(ll_title $op $title OR " .
                                "(ll_title = $title AND " .
-                               "ll_from >= $from)))"
+                               "ll_from $op= $from)))"
                        );
                }
 
@@ -84,22 +85,23 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                $this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect',
                        'll_from', 'll_lang', 'll_title' ) );
 
+               $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' );
                if ( isset( $params['lang'] ) ) {
                        $this->addWhereFld( 'll_lang', $params['lang'] );
                        if ( isset( $params['title'] ) ) {
                                $this->addWhereFld( 'll_title', $params['title'] );
-                               $this->addOption( 'ORDER BY', 'll_from' );
+                               $this->addOption( 'ORDER BY', 'll_from' . $sort );
                        } else {
                                $this->addOption( 'ORDER BY', array(
-                                       'll_title',
-                                       'll_from'
+                                       'll_title' . $sort,
+                                       'll_from' . $sort
                                ));
                        }
                } else {
                        $this->addOption( 'ORDER BY', array(
-                               'll_lang',
-                               'll_title',
-                               'll_from'
+                               'll_lang' . $sort,
+                               'll_title' . $sort,
+                               'll_from' . $sort
                        ));
                }
 
@@ -178,6 +180,13 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                                        'lltitle',
                                ),
                        ),
+                       'dir' => array(
+                               ApiBase::PARAM_DFLT => 'ascending',
+                               ApiBase::PARAM_TYPE => array(
+                                       'ascending',
+                                       'descending'
+                               )
+                       ),
                );
        }
 
@@ -192,6 +201,24 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                                ' lltitle        - Adds the title of the language ink',
                        ),
                        'limit' => 'How many total pages to return',
+                       'dir' => 'The direction in which to list',
+               );
+       }
+
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'lllang' => array(
+                               'lllang' => 'string'
+                       ),
+                       'lltitle' => array(
+                               'lltitle' => 'string'
+                       )
                );
        }
 
index b6f9a99..7cab739 100644 (file)
@@ -159,6 +159,19 @@ class ApiQueryLangLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'lang' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interlanguage links from the given page(s)';
        }
index 4dea419..5cf9068 100644 (file)
@@ -227,6 +227,15 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Returns all {$this->description}s from the given page(s)";
        }
index e017c4b..bb4b429 100644 (file)
@@ -447,6 +447,62 @@ class ApiQueryLogEvents extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'logid' => 'integer',
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes
+                               ),
+                               'action' => 'string'
+                       ),
+                       'details' => array(
+                               'actionhidden' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get events from logs';
        }
index 44cc1d3..360183c 100644 (file)
@@ -214,6 +214,40 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgRestrictionLevels;
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => 'integer'
+                       ),
+                       'comment' => array(
+                               'comment' => 'string'
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => 'string'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'level' => array(
+                               'level' => array(
+                                       ApiBase::PROP_TYPE => array_diff( $wgRestrictionLevels, array( '' ) )
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all titles protected from creation';
        }
index 8efe65d..2c7ba12 100644 (file)
@@ -173,6 +173,38 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_ROOT => array(
+                               'name' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'disabled' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cached' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cachedtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       '' => array(
+                               'value' => 'string',
+                               'timestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get a list provided by a QueryPage-based special page';
        }
index 2e9e2dd..ddf5841 100644 (file)
@@ -161,6 +161,16 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'id' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get a set of random pages',
index 931af08..62c6678 100644 (file)
@@ -629,6 +629,97 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               $props = array(
+                       '' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'edit',
+                                               'new',
+                                               'move',
+                                               'log',
+                                               'move over redirect'
+                                       )
+                               )
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'new_ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'new_title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'ids' => array(
+                               'rcid' => 'integer',
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'bot' => 'boolean',
+                               'new' => 'boolean',
+                               'minor' => 'boolean'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirect' => array(
+                               'redirect' => 'boolean'
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Enumerate recent changes';
        }
index 44cb46e..1a5ad17 100644 (file)
@@ -648,6 +648,66 @@ class ApiQueryRevisions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(),
+                       'ids' => array(
+                               'revid' => 'integer',
+                               'parentid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'minor' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'content' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'texthidden' => 'boolean'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return array(
                        'Get revision information',
index 40aac05..ed6c3cb 100644 (file)
@@ -280,6 +280,63 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'snippet' => array(
+                               'snippet' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'wordcount' => array(
+                               'wordcount' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'score' => array(
+                               'score' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'titlesnippet' => array(
+                               'titlesnippet' => 'string'
+                       ),
+                       'redirecttitle' => array(
+                               'redirecttitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirectsnippet' => array(
+                               'redirectsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectiontitle' => array(
+                               'sectiontitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectionsnippet' => array(
+                               'sectionsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasrelated' => array(
+                               'hasrelated' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Perform a full text search';
        }
index e7102e0..511cbe4 100644 (file)
@@ -93,6 +93,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                case 'showhooks':
                                        $fit = $this->appendSubscribedHooks( $p );
                                        break;
+                               case 'variables':
+                                       $fit = $this->appendVariables( $p );
+                                       break;
                                default:
                                        ApiBase::dieDebug( __METHOD__, "Unknown prop=$p" );
                        }
@@ -121,9 +124,14 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                $data['dbtype'] = $GLOBALS['wgDBtype'];
                $data['dbversion'] = $this->getDB()->getServerVersion();
 
-               $svn = SpecialVersion::getSvnRevision( $GLOBALS['IP'] );
-               if ( $svn ) {
-                       $data['rev'] = $svn;
+               $git = SpecialVersion::getGitHeadSha1( $GLOBALS['IP'] );
+               if ( $git ) {
+                       $data['git-hash'] = $git;
+               } else {
+                       $svn = SpecialVersion::getSvnRevision( $GLOBALS['IP'] );
+                       if ( $svn ) {
+                               $data['rev'] = $svn;
+                       }
                }
 
                // 'case-insensitive' option is reserved for future
@@ -249,8 +257,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
        protected function appendSpecialPageAliases( $property ) {
                global $wgContLang;
                $data = array();
-               foreach ( $wgContLang->getSpecialPageAliases() as $specialpage => $aliases ) {
-                       $arr = array( 'realname' => $specialpage, 'aliases' => $aliases );
+               $aliases = $wgContLang->getSpecialPageAliases();
+               foreach ( SpecialPageFactory::getList() as $specialpage => $stuff ) {
+                       $arr = array( 'realname' => $specialpage, 'aliases' => $aliases[$specialpage] );
                        $this->getResult()->setIndexedTagName( $arr['aliases'], 'alias' );
                        $data[] = $arr;
                }
@@ -527,6 +536,12 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                return $this->getResult()->addValue( 'query', $property, $hooks );
        }
 
+       public function appendVariables( $property ) {
+               $variables = MagicWord::getVariableIDs();
+               $this->getResult()->setIndexedTagName( $variables, 'v' );
+               return $this->getResult()->addValue( 'query', $property, $variables );
+       }
+
        private function formatParserTags( $item ) {
                return "<{$item}>";
        }
@@ -578,6 +593,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        'extensiontags',
                                        'functionhooks',
                                        'showhooks',
+                                       'variables',
                                )
                        ),
                        'filteriw' => array(
@@ -613,7 +629,8 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                ' skins                 - Returns a list of all enabled skins',
                                ' extensiontags         - Returns a list of parser extension tags',
                                ' functionhooks         - Returns a list of parser function hooks',
-                               ' showhooks             - Returns a list of all subscribed hooks (contents of $wgHooks)'
+                               ' showhooks             - Returns a list of all subscribed hooks (contents of $wgHooks)',
+                               ' variables             - Returns a list of variable IDs',
                        ),
                        'filteriw' =>  'Return only local or only nonlocal entries of the interwiki map',
                        'showalldb' => 'List all database servers, not just the one lagging the most',
index 4501ec5..02484ae 100644 (file)
@@ -123,6 +123,10 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
                );
        }
 
+       public function getResultProperties() {
+               return ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter );
+       }
+
        public function getDescription() {
                return 'Returns image information for stashed images';
        }
index 12cea1d..edd1553 100644 (file)
@@ -169,6 +169,23 @@ class ApiQueryTags extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string'
+                       ),
+                       'displayname' => array(
+                               'displayname' => 'string'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'hitcount' => array(
+                               'hitcount' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List change tags';
        }
index 097d3e1..f531980 100644 (file)
@@ -35,10 +35,10 @@ class ApiQueryContributions extends ApiQueryBase {
                parent::__construct( $query, $moduleName, 'uc' );
        }
 
-       private $params, $prefixMode, $userprefix, $multiUserMode, $usernames;
+       private $params, $prefixMode, $userprefix, $multiUserMode, $usernames, $parentLens;
        private $fld_ids = false, $fld_title = false, $fld_timestamp = false,
                        $fld_comment = false, $fld_parsedcomment = false, $fld_flags = false,
-                       $fld_patrolled = false, $fld_tags = false, $fld_size = false;
+                       $fld_patrolled = false, $fld_tags = false, $fld_size = false, $fld_sizediff = false;
 
        public function execute() {
                // Parse some parameters
@@ -50,6 +50,7 @@ class ApiQueryContributions extends ApiQueryBase {
                $this->fld_comment = isset( $prop['comment'] );
                $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
                $this->fld_size = isset( $prop['size'] );
+               $this->fld_sizediff = isset( $prop['sizediff'] );
                $this->fld_flags = isset( $prop['flags'] );
                $this->fld_timestamp = isset( $prop['timestamp'] );
                $this->fld_patrolled = isset( $prop['patrolled'] );
@@ -82,6 +83,17 @@ class ApiQueryContributions extends ApiQueryBase {
                // Do the actual query.
                $res = $this->select( __METHOD__ );
 
+               if( $this->fld_sizediff ) {
+                       $revIds = array();
+                       foreach ( $res as $row ) {
+                               if( $row->rev_parent_id ) {
+                                       $revIds[] = $row->rev_parent_id;
+                               }
+                       }
+                       $this->parentLens = Revision::getParentLengths( $this->getDB(), $revIds );
+                       $res->rewind(); // reset
+               }
+
                // Initialise some variables
                $count = 0;
                $limit = $this->params['limit'];
@@ -245,7 +257,8 @@ class ApiQueryContributions extends ApiQueryBase {
                // $this->addFieldsIf( 'rev_text_id', $this->fld_ids ); // Should this field be exposed?
                $this->addFieldsIf( 'rev_comment', $this->fld_comment || $this->fld_parsedcomment );
                $this->addFieldsIf( 'rev_len', $this->fld_size );
-               $this->addFieldsIf( array( 'rev_minor_edit', 'rev_parent_id' ), $this->fld_flags );
+               $this->addFieldsIf( 'rev_minor_edit', $this->fld_flags );
+               $this->addFieldsIf( 'rev_parent_id', $this->fld_flags || $this->fld_sizediff );
                $this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
 
                if ( $this->fld_tags ) {
@@ -333,6 +346,11 @@ class ApiQueryContributions extends ApiQueryBase {
                        $vals['size'] = intval( $row->rev_len );
                }
 
+               if ( $this->fld_sizediff && !is_null( $row->rev_len ) && !is_null( $row->rev_parent_id ) ) {
+                       $parentLen = isset( $this->parentLens[$row->rev_parent_id] ) ? $this->parentLens[$row->rev_parent_id] : 0;
+                       $vals['sizediff'] = intval( $row->rev_len - $parentLen );
+               }
+
                if ( $this->fld_tags ) {
                        if ( $row->ts_tags ) {
                                $tags = explode( ',', $row->ts_tags );
@@ -398,6 +416,7 @@ class ApiQueryContributions extends ApiQueryBase {
                                        'comment',
                                        'parsedcomment',
                                        'size',
+                                       'sizediff',
                                        'flags',
                                        'patrolled',
                                        'tags'
@@ -436,7 +455,8 @@ class ApiQueryContributions extends ApiQueryBase {
                                ' timestamp      - Adds the timestamp of the edit',
                                ' comment        - Adds the comment of the edit',
                                ' parsedcomment  - Adds the parsed comment of the edit',
-                               ' size           - Adds the size of the page',
+                               ' size           - Adds the new size of the edit',
+                               ' sizediff       - Adds the size delta of the edit against its parent',
                                ' flags          - Adds flags of the edit',
                                ' patrolled      - Tags patrolled edits',
                                ' tags           - Lists tags for the edit',
@@ -448,6 +468,55 @@ class ApiQueryContributions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'user' => 'string',
+                               'userhidden' => 'boolean'
+                       ),
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'top' => 'boolean'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get all edits by a user';
        }
index e3bc775..e4617d9 100644 (file)
@@ -234,6 +234,63 @@ class ApiQueryUserInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'id' => 'integer',
+                               'name' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasmsg' => array(
+                               'messages' => 'boolean'
+                       ),
+                       'preferencestoken' => array(
+                               'preferencestoken' => 'string'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'realname' => array(
+                               'realname' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'email' => array(
+                               'email' => 'string',
+                               'emailauthenticated' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registrationdate' => array(
+                               'registrationdate' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get information about the current user';
        }
index 83872a5..02fcf01 100644 (file)
@@ -315,6 +315,73 @@ class ApiQueryUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'name' => 'string',
+                               'invalid' => 'boolean',
+                               'hidden' => 'boolean',
+                               'interwiki' => 'boolean',
+                               'missing' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registration' => array(
+                               'registration' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'emailable' => array(
+                               'emailable' => 'boolean'
+                       ),
+                       'gender' => array(
+                               'gender' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'male',
+                                               'female',
+                                               'unknown'
+                                       ),
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get information about a list of users';
        }
index 77f6ce9..a93f94f 100644 (file)
@@ -418,6 +418,76 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'bot' => 'boolean'
+                       ),
+                       'patrol' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'notificationtimestamp' => array(
+                               'notificationtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all recent changes to pages in the logged in user's watchlist";
        }
index 5e96dd5..1b1eee0 100644 (file)
@@ -192,6 +192,21 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'changed' => array(
+                               'changed' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all pages on the logged in user's watchlist";
        }
index 436c392..4de49ea 100644 (file)
@@ -116,6 +116,19 @@ class ApiRollback extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'pageid' => 'integer',
+                               'summary' => 'string',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer',
+                               'last_revid' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Undo the last edit to the page. If the last user who edited the page made multiple edits in a row,',
index c56d646..2c9b482 100644 (file)
@@ -84,6 +84,57 @@ class ApiTokens extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'patroltoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'edittoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'deletetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'protecttoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'movetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'emailtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'importtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'watchtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'optionstoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'type' => 'Type of token(s) to request'
index 49353b6..40a6d44 100644 (file)
@@ -119,6 +119,33 @@ class ApiUnblock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Unblock a user';
        }
index 856e2ac..c89f49a 100644 (file)
@@ -122,6 +122,17 @@ class ApiUndelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'revisions' => 'integer',
+                               'filerevisions' => 'integer',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Restore certain revisions of a deleted page. A list of deleted revisions (including timestamps) can be',
index e58a1ca..aaa4c85 100644 (file)
@@ -623,6 +623,41 @@ class ApiUpload extends ApiBase {
 
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Warning',
+                                               'Continue',
+                                               'Queued'
+                                       ),
+                               ),
+                               'filekey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionkey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'offset' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'statuskey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'filename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Upload a file, or get the status of pending uploads. Several methods are available:',
@@ -652,6 +687,8 @@ class ApiUpload extends ApiBase {
                                array( 'code' => 'stashfailed', 'info' => 'Stashing temporary file failed' ),
                                array( 'code' => 'internal-error', 'info' => 'An internal error occurred' ),
                                array( 'code' => 'asynccopyuploaddisabled', 'info' => 'Asynchronous copy uploads disabled' ),
+                               array( 'fileexists-forbidden' ),
+                               array( 'fileexists-shared-forbidden' ),
                        )
                );
        }
index fa382b3..c923c6d 100644 (file)
@@ -100,6 +100,17 @@ class ApiWatch extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'unwatched' => 'boolean',
+                               'watched' => 'boolean',
+                               'message' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Add or remove a page from/to the current user\'s watchlist';
        }
index f9ea135..6bfeed3 100644 (file)
@@ -142,6 +142,8 @@ class HTMLFileCache extends FileCacheBase {
                                wfDebug( __METHOD__ . " uncompressing cache file and sending it\n" );
                                readgzfile( $filename );
                        }
+               } else {
+                       readfile( $filename );
                }
                $context->getOutput()->disable(); // tell $wgOut that output is taken care of
        }
index e8e57cd..423e388 100644 (file)
 class SquidUpdate {
        var $urlArr, $mMaxTitles;
 
-       function __construct( $urlArr = Array(), $maxTitles = false ) {
+       /**
+        * @param $urlArr array
+        * @param $maxTitles bool|int
+        */
+       function __construct( $urlArr = array(), $maxTitles = false ) {
                global $wgMaxSquidPurgeTitles;
                if ( $maxTitles === false ) {
                        $this->mMaxTitles = $wgMaxSquidPurgeTitles;
@@ -121,11 +125,6 @@ class SquidUpdate {
        static function purge( $urlArr ) {
                global $wgSquidServers, $wgHTCPMulticastRouting;
 
-               /*if ( (@$wgSquidServers[0]) == 'echo' ) {
-                       echo implode("<br />\n", $urlArr) . "<br />\n";
-                       return;
-               }*/
-
                if( !$urlArr ) {
                        return;
                }
diff --git a/includes/dao/IDBAccessObject.php b/includes/dao/IDBAccessObject.php
new file mode 100644 (file)
index 0000000..cd5dda9
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+/**
+ * This file contains database access object related constants.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Database
+ */
+
+/**
+ * Interface for database access objects
+ */
+interface IDBAccessObject {
+       const LATEST_READ  = 1; // read from the master
+       const FOR_UPDATE   = 2; // lock the rows read
+       const LOCKING_READ = 3; // LATEST_READ | FOR_UPDATE
+       const AVOID_MASTER = 4; // avoiding checking the master
+}
index b972f3b..0a1f988 100644 (file)
@@ -530,7 +530,11 @@ abstract class DatabaseBase implements DatabaseType {
         *   - DBO_PERSISTENT: use persistant database connection
         */
        function setFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags |= $flag;
+               if ( ( $flag & DBO_TRX) & $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now  disabled.\n");
+               }
        }
 
        /**
@@ -539,7 +543,11 @@ abstract class DatabaseBase implements DatabaseType {
         * @param $flag: same as setFlag()'s $flag param
         */
        function clearFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags &= ~$flag;
+               if ( ( $flag & DBO_TRX ) && $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now disabled.\n");
+               }
        }
 
        /**
@@ -604,15 +612,21 @@ abstract class DatabaseBase implements DatabaseType {
        function __construct( $server = false, $user = false, $password = false, $dbName = false,
                $flags = 0, $tablePrefix = 'get from global'
        ) {
-               global $wgDBprefix, $wgCommandLineMode;
+               global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
 
                $this->mFlags = $flags;
 
                if ( $this->mFlags & DBO_DEFAULT ) {
                        if ( $wgCommandLineMode ) {
                                $this->mFlags &= ~DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open disabled.\n");
+                               }
                        } else {
                                $this->mFlags |= DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open enabled.\n");
+                               }
                        }
                }
 
@@ -868,8 +882,13 @@ abstract class DatabaseBase implements DatabaseType {
                        # that would delay transaction initializations to once connection
                        # is really used by application
                        $sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
-                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 )
+                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 ) {
+                               global $wgDebugDBTransactions;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction start.\n");
+                               }
                                $this->begin( __METHOD__ . " ($fname)" );
+                       }
                }
 
                if ( $this->debug() ) {
@@ -2885,7 +2904,7 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * Begin a transaction, committing any previously open transaction
+        * Begin a transaction
         *
         * @param $fname string
         */
@@ -3506,4 +3525,11 @@ abstract class DatabaseBase implements DatabaseType {
        public function setBigSelects( $value = true ) {
                // no-op
        }
+
+       /**
+        * @since 1.19
+        */
+       public function __toString() {
+               return (string)$this->mConn;
+       }
 }
index 5df6456..1fdcd5c 100644 (file)
@@ -1433,7 +1433,7 @@ class DatabaseIbm_db2 extends DatabaseBase {
                // db2_ping() doesn't exist
                // Emulate
                $this->close();
-               $this->mConn = $this->openUncataloged( $this->mDBName, $this->mUser,
+               $this->openUncataloged( $this->mDBName, $this->mUser,
                        $this->mPassword, $this->mServer, $this->mPort );
 
                return false;
index d058769..763ca52 100644 (file)
@@ -137,14 +137,14 @@ class PostgresTransactionState {
 
        static $WATCHED = array(
                array(
-                       "desc" => "Connection state changed from %s -> %s\n",
+                       "desc" => "%s: Connection state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_CONNECTION_OK       => "OK",
                                PGSQL_CONNECTION_BAD      => "BAD"
                        )
                ),
                array(
-                       "desc" => "Transaction state changed from %s -> %s\n",
+                       "desc" => "%s: Transaction state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_TRANSACTION_IDLE    => "IDLE",
                                PGSQL_TRANSACTION_ACTIVE  => "ACTIVE",
@@ -198,12 +198,86 @@ class PostgresTransactionState {
 
        protected function log_changed( $old, $new, $watched ) {
                wfDebug(sprintf($watched["desc"],
+                       $this->mConn,
                        $this->describe_changed( $old, $watched["states"] ),
                        $this->describe_changed( $new, $watched["states"] ))
                );
        }
 }
 
+/**
+ * Manage savepoints within a transaction
+ * @ingroup Database
+ * @since 1.19
+ */
+class SavepointPostgres {
+       /**
+        * Establish a savepoint within a transaction
+        */
+       protected $dbw;
+       protected $id;
+       protected $didbegin;
+
+       public function __construct ($dbw, $id) {
+               $this->dbw = $dbw;
+               $this->id = $id;
+               $this->didbegin = false;
+               /* If we are not in a transaction, we need to be for savepoint trickery */
+               if ( !$dbw->trxLevel() ) {
+                               $dbw->begin( "FOR SAVEPOINT" );
+                               $this->didbegin = true;
+               }
+       }
+
+       public function __destruct() {
+               if ( $this->didbegin ) {
+                       $this->dbw->rollback();
+               }
+       }
+
+       public function commit() {
+               if ( $this->didbegin ) {
+                       $this->dbw->commit();
+               }
+       }
+
+       protected function query( $keyword, $msg_ok, $msg_failed ) {
+               global $wgDebugDBTransactions;
+               if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf ($msg_ok, $this->id ) );
+                       }
+               } else {
+                       wfDebug( sprintf ($msg_failed, $this->id ) );
+               }
+       }
+
+       public function savepoint() {
+               $this->query("SAVEPOINT",
+                       "Transaction state: savepoint \"%s\" established.\n",
+                       "Transaction state: establishment of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function release() {
+               $this->query("RELEASE",
+                       "Transaction state: savepoint \"%s\" released.\n",
+                       "Transaction state: release of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function rollback() {
+               $this->query("ROLLBACK TO",
+                       "Transaction state: savepoint \"%s\" rolled back.\n",
+                       "Transaction state: rollback of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function __toString() {
+               return (string)$this->id;
+       }
+}
+
 /**
  * @ingroup Database
  */
@@ -345,7 +419,7 @@ class DatabasePostgres extends DatabaseBase {
                return pg_close( $this->mConn );
        }
 
-       protected function doQuery( $sql ) {
+       public function doQuery( $sql ) {
                if ( function_exists( 'mb_convert_encoding' ) ) {
                        $sql = mb_convert_encoding( $sql, 'UTF-8' );
                }
@@ -667,15 +741,9 @@ __INDEXATTR__;
                }
 
                // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if ( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $options ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
                        $olde = error_reporting( 0 );
                        // For future use, we may want to track the number of actual inserts
                        // Right now, insert (all writes) simply return true/false
@@ -685,7 +753,7 @@ __INDEXATTR__;
                $sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
 
                if ( $multi ) {
-                       if ( $this->numeric_version >= 8.2 && !$ignore ) {
+                       if ( $this->numeric_version >= 8.2 && !$savepoint ) {
                                $first = true;
                                foreach ( $args as $row ) {
                                        if ( $first ) {
@@ -695,7 +763,7 @@ __INDEXATTR__;
                                        }
                                        $sql .= '(' . $this->makeList( $row ) . ')';
                                }
-                               $res = (bool)$this->query( $sql, $fname, $ignore );
+                               $res = (bool)$this->query( $sql, $fname, $savepoint );
                        } else {
                                $res = true;
                                $origsql = $sql;
@@ -703,18 +771,18 @@ __INDEXATTR__;
                                        $tempsql = $origsql;
                                        $tempsql .= '(' . $this->makeList( $row ) . ')';
 
-                                       if ( $ignore ) {
-                                               $this->doQuery( "SAVEPOINT $ignore" );
+                                       if ( $savepoint ) {
+                                               $savepoint->savepoint();
                                        }
 
-                                       $tempres = (bool)$this->query( $tempsql, $fname, $ignore );
+                                       $tempres = (bool)$this->query( $tempsql, $fname, $savepoint );
 
-                                       if ( $ignore ) {
+                                       if ( $savepoint ) {
                                                $bar = pg_last_error();
                                                if ( $bar != false ) {
-                                                       $this->doQuery( $this->mConn, "ROLLBACK TO $ignore" );
+                                                       $savepoint->rollback();
                                                } else {
-                                                       $this->doQuery( $this->mConn, "RELEASE $ignore" );
+                                                       $savepoint->release();
                                                        $numrowsinserted++;
                                                }
                                        }
@@ -728,27 +796,25 @@ __INDEXATTR__;
                        }
                } else {
                        // Not multi, just a lone insert
-                       if ( $ignore ) {
-                               $this->doQuery( "SAVEPOINT $ignore" );
+                       if ( $savepoint ) {
+                               $savepoint->savepoint();
                        }
 
                        $sql .= '(' . $this->makeList( $args ) . ')';
-                       $res = (bool)$this->query( $sql, $fname, $ignore );
-                       if ( $ignore ) {
+                       $res = (bool)$this->query( $sql, $fname, $savepoint );
+                       if ( $savepoint ) {
                                $bar = pg_last_error();
                                if ( $bar != false ) {
-                                       $this->doQuery( "ROLLBACK TO $ignore" );
+                                       $savepoint->rollback();
                                } else {
-                                       $this->doQuery( "RELEASE $ignore" );
+                                       $savepoint->release();
                                        $numrowsinserted++;
                                }
                        }
                }
-               if ( $ignore ) {
+               if ( $savepoint ) {
                        $olde = error_reporting( $olde );
-                       if ( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -774,12 +840,22 @@ __INDEXATTR__;
        {
                $destTable = $this->tableName( $destTable );
 
-               // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $insertOptions ) ? 'mw' : '';
+               if( !is_array( $insertOptions ) ) {
+                       $insertOptions = array( $insertOptions );
+               }
 
-               if( is_array( $insertOptions ) ) {
-                       $insertOptions = implode( ' ', $insertOptions ); // FIXME: This is unused
+               /*
+                * If IGNORE is set, we use savepoints to emulate mysql's behavior
+                * Ignore LOW PRIORITY option, since it is MySQL-specific
+                */
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $insertOptions ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
+                       $olde = error_reporting( 0 );
+                       $numrowsinserted = 0;
+                       $savepoint->savepoint();
                }
+
                if( !is_array( $selectOptions ) ) {
                        $selectOptions = array( $selectOptions );
                }
@@ -790,18 +866,6 @@ __INDEXATTR__;
                        $srcTable = $this->tableName( $srcTable );
                }
 
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
-                       $olde = error_reporting( 0 );
-                       $numrowsinserted = 0;
-                       $this->doQuery( "SAVEPOINT $ignore" );
-               }
-
                $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
                                " SELECT $startOpts " . implode( ',', $varMap ) .
                                " FROM $srcTable $useIndex";
@@ -812,19 +876,17 @@ __INDEXATTR__;
 
                $sql .= " $tailOpts";
 
-               $res = (bool)$this->query( $sql, $fname, $ignore );
-               if( $ignore ) {
+               $res = (bool)$this->query( $sql, $fname, $savepoint );
+               if( $savepoint ) {
                        $bar = pg_last_error();
                        if( $bar != false ) {
-                               $this->doQuery( "ROLLBACK TO $ignore" );
+                               $savepoint->rollback();
                        } else {
-                               $this->doQuery( "RELEASE $ignore" );
+                               $savepoint->release();
                                $numrowsinserted++;
                        }
                        $olde = error_reporting( $olde );
-                       if( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -1056,7 +1118,7 @@ __INDEXATTR__;
         * This will be also called by the installer after the schema is created
         *
         * @since 1.19
-        * @param desired_schema string
+        * @param $desired_schema string
         */
        function determineCoreSchema( $desired_schema ) {
                $this->begin( __METHOD__ );
index eacebcf..c846788 100644 (file)
@@ -242,7 +242,11 @@ class FakeResultWrapper extends ResultWrapper {
                        $this->currentRow = false;
                }
                $this->pos++;
-               return $this->currentRow;
+               if ( is_object( $this->currentRow ) ) {
+                       return get_object_vars( $this->currentRow );
+               } else {
+                       return $this->currentRow;
+               }
        }
 
        function seek( $row ) {
index 853e8cd..684f4b4 100644 (file)
@@ -62,6 +62,9 @@ interface IORMTable {
         * * array
         * * blob
         *
+        * TODO: get rid of the id field. Every row instance needs to have
+        * one so this is just causing hassle at various locations by requiring an extra check for field name.
+        *
         * @since 1.20
         *
         * @return array
@@ -103,7 +106,7 @@ interface IORMTable {
         * @return ORMResult
         */
        public function select( $fields = null, array $conditions = array(),
-                                                       array $options = array(), $functionName  = null );
+                                                       array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -119,7 +122,7 @@ interface IORMTable {
         * @return array of self
         */
        public function selectObjects( $fields = null, array $conditions = array(),
-                                                                  array $options = array(), $functionName  = null );
+                                                                  array $options = array(), $functionName = null );
 
        /**
         * Do the actual select.
@@ -134,7 +137,7 @@ interface IORMTable {
         * @return ResultWrapper
         */
        public function rawSelect( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName  = null );
+                                                          array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -159,7 +162,7 @@ interface IORMTable {
         * @return array of array
         */
        public function selectFields( $fields = null, array $conditions = array(),
-                                                                 array $options = array(), $collapse = true, $functionName  = null );
+                                                                 array $options = array(), $collapse = true, $functionName = null );
 
        /**
         * Selects the the specified fields of the first matching record.
@@ -407,7 +410,7 @@ interface IORMTable {
         *
         * @return IORMRow
         */
-       public function newFromDBResult( stdClass $result );
+       public function newRowFromDBResult( stdClass $result );
 
        /**
         * Get a new instance of the class from an array.
@@ -419,7 +422,7 @@ interface IORMTable {
         *
         * @return IORMRow
         */
-       public function newFromArray( array $data, $loadDefaults = false );
+       public function newRow( array $data, $loadDefaults = false );
 
        /**
         * Return the names of the fields.
@@ -441,4 +444,4 @@ interface IORMTable {
         */
        public function canHaveField( $name );
 
-}
\ No newline at end of file
+}
diff --git a/includes/db/ORMIterator.php b/includes/db/ORMIterator.php
new file mode 100644 (file)
index 0000000..090b893
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Interface for Iterators containing IORMRows.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+interface ORMIterator extends Iterator {
+
+}
\ No newline at end of file
index 1e6b83d..3f2d803 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 /**
- * Result of a ORMTable::select, which returns IORMRow objects.
+ * ORMIterator that takes a ResultWrapper object returned from
+ * a select operation returning IORMRow objects (ie IORMTable::select).
  *
  * 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
@@ -26,7 +27,7 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-class ORMResult implements Iterator {
+class ORMResult implements ORMIterator {
 
        /**
         * @var ResultWrapper
@@ -36,7 +37,7 @@ class ORMResult implements Iterator {
        /**
         * @var integer
         */
-       protected  $key;
+       protected $key;
 
        /**
         * @var IORMRow
@@ -66,7 +67,7 @@ class ORMResult implements Iterator {
                if ( $row === false ) {
                        $this->current = false;
                } else {
-                       $this->current = $this->table->newFromDBResult( $row );
+                       $this->current = $this->table->newRowFromDBResult( $row );
                }
        }
 
index b6e2d52..130fdf9 100644 (file)
@@ -117,7 +117,7 @@ abstract class ORMTable implements IORMTable {
                $objects = array();
 
                foreach ( $result as $record ) {
-                       $objects[] = $this->newFromArray( $record );
+                       $objects[] = $this->newRow( $record );
                }
 
                return $objects;
@@ -618,8 +618,9 @@ abstract class ORMTable implements IORMTable {
        }
 
        /**
-        * Get a new instance of the class from a database result.
+        * @see ORMTable::newRowFromFromDBResult
         *
+        * @deprecated use newRowFromFromDBResult instead
         * @since 1.20
         *
         * @param stdClass $result
@@ -627,12 +628,26 @@ abstract class ORMTable implements IORMTable {
         * @return IORMRow
         */
        public function newFromDBResult( stdClass $result ) {
-               return $this->newFromArray( $this->getFieldsFromDBResult( $result ) );
+               return self::newRowFromDBResult( $result );
        }
 
        /**
-        * Get a new instance of the class from an array.
+        * Get a new instance of the class from a database result.
+        *
+        * @since 1.20
+        *
+        * @param stdClass $result
+        *
+        * @return IORMRow
+        */
+       public function newRowFromDBResult( stdClass $result ) {
+               return $this->newRow( $this->getFieldsFromDBResult( $result ) );
+       }
+
+       /**
+        * @see ORMTable::newRow
         *
+        * @deprecated use newRow instead
         * @since 1.20
         *
         * @param array $data
@@ -641,6 +656,20 @@ abstract class ORMTable implements IORMTable {
         * @return IORMRow
         */
        public function newFromArray( array $data, $loadDefaults = false ) {
+               return static::newRow( $data, $loadDefaults );
+       }
+
+       /**
+        * Get a new instance of the class from an array.
+        *
+        * @since 1.20
+        *
+        * @param array $data
+        * @param boolean $loadDefaults
+        *
+        * @return IORMRow
+        */
+       public function newRow( array $data, $loadDefaults = false ) {
                $class = $this->getRowClass();
                return new $class( $this, $data, $loadDefaults );
        }
index 5772958..08154c7 100644 (file)
@@ -278,7 +278,7 @@ class DifferenceEngine extends ContextSource {
                        if ( $samePage && $this->mNewPage->quickUserCan( 'edit', $user ) ) {
                                if ( $this->mNewRev->isCurrent() && $this->mNewPage->userCan( 'rollback', $user ) ) {
                                        $out->preventClickjacking();
-                                       $rollback = '&#160;&#160;&#160;' . Linker::generateRollback( $this->mNewRev );
+                                       $rollback = '&#160;&#160;&#160;' . Linker::generateRollback( $this->mNewRev, $this->getContext() );
                                }
                                if ( !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
                                        $undoLink = ' ' . $this->msg( 'parentheses' )->rawParams(
@@ -612,7 +612,7 @@ class DifferenceEngine extends ContextSource {
                        return false;
                }
                // Short-circuit
-               // If mOldRev is false, it means that the 
+               // If mOldRev is false, it means that the
                if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev
                        && $this->mOldRev->getID() == $this->mNewRev->getID() ) )
                {
@@ -720,9 +720,9 @@ class DifferenceEngine extends ContextSource {
                }
                if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
                        # Diff via the shell
-                       global $wgTmpDirectory;
-                       $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
-                       $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
+                       $tmpDir = wfTempDir();
+                       $tempName1 = tempnam( $tmpDir, 'diff_' );
+                       $tempName2 = tempnam( $tmpDir, 'diff_' );
 
                        $tempFile1 = fopen( $tempName1, "w" );
                        if ( !$tempFile1 ) {
@@ -1019,7 +1019,7 @@ class DifferenceEngine extends ContextSource {
                // Load the new revision object
                $this->mNewRev = $this->mNewid
                        ? Revision::newFromId( $this->mNewid )
-                       : Revision::newFromTitle( $this->getTitle() );
+                       : Revision::newFromTitle( $this->getTitle(), false, Revision::AVOID_MASTER );
 
                if ( !$this->mNewRev instanceof Revision ) {
                        return false;
index 77b9d04..13de9e6 100644 (file)
@@ -320,11 +320,11 @@ class ForeignAPIRepo extends FileRepo {
                        return false;
                }
 
+
                # @todo FIXME: Delete old thumbs that aren't being used. Maintenance script?
                $backend->prepare( array( 'dir' => dirname( $localFilename ) ) );
-               $op = array( 'op' => 'create', 'dst' => $localFilename, 'content' => $thumb );
-               if( !$backend->doOperation( $op )->isOK() ) {
-                       wfRestoreWarnings();
+               $params = array( 'dst' => $localFilename, 'content' => $thumb );
+               if( !$backend->quickCreate( $params )->isOK() ) {
                        wfDebug( __METHOD__ . " could not write to thumb path '$localFilename'\n" );
                        return $foreignUrl;
                }
index 2beea43..c616e16 100644 (file)
@@ -234,7 +234,8 @@ class LocalRepo extends FileRepo {
                $res = $dbr->select(
                        'image',
                        LocalFile::selectFields(),
-                       array( 'img_sha1' => $hash )
+                       array( 'img_sha1' => $hash ),
+                       __METHOD__
                );
                
                $result = array();
index 2080639..5fe33ba 100644 (file)
@@ -532,14 +532,12 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool
         */
        final public function getFileStat( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return false; // invalid storage path
                }
+               wfProfileIn( __METHOD__ );
+               wfProfileIn( __METHOD__ . '-' . $this->name );
                $latest = !empty( $params['latest'] ); // use latest data?
                if ( !isset( $this->cache[$path]['stat'] ) ) {
                        $this->primeFileCache( array( $path ) ); // check persistent cache
@@ -564,6 +562,11 @@ abstract class FileBackendStore extends FileBackend {
                        $this->trimCache(); // limit memory
                        $this->cache[$path]['stat'] = $stat;
                        $this->setFileCache( $path, $stat ); // update persistent cache
+                       if ( isset( $stat['sha1'] ) ) { // some backends store SHA-1 as metadata
+                               $this->trimCache(); // limit memory
+                               $this->cache[$path]['sha1'] =
+                                       array( 'hash' => $stat['sha1'], 'latest' => $latest );
+                       }
                } else {
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
                }
@@ -603,14 +606,22 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool|string
         */
        final public function getFileSha1Base36( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return false; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->cache[$path]['sha1'] ) ) {
-                       $this->pingCache( $path ); // LRU
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->cache[$path]['sha1'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->cache[$path]['sha1']['latest'] ) {
+                               $this->pingCache( $path ); // LRU
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->cache[$path]['sha1']['hash'];
+                       }
                }
                wfProfileIn( __METHOD__ . '-miss' );
                wfProfileIn( __METHOD__ . '-miss-' . $this->name );
@@ -619,7 +630,7 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileOut( __METHOD__ . '-miss' );
                if ( $hash ) { // don't cache negatives
                        $this->trimCache(); // limit memory
-                       $this->cache[$path]['sha1'] = $hash;
+                       $this->cache[$path]['sha1'] = array( 'hash' => $hash, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -628,7 +639,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getFileSha1Base36()
-        * @return bool
+        * @return bool|string
         */
        protected function doGetFileSha1Base36( array $params ) {
                $fsFile = $this->getLocalReference( $params );
@@ -658,19 +669,28 @@ abstract class FileBackendStore extends FileBackend {
         * @return TempFSFile|null
         */
        public function getLocalReference( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return null; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->expensiveCache[$path]['localRef'] ) ) {
-                       $this->pingExpensiveCache( $path );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->expensiveCache[$path]['localRef'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->expensiveCache[$path]['localRef']['latest'] ) {
+                               $this->pingExpensiveCache( $path );
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->expensiveCache[$path]['localRef']['object'];
+                       }
                }
                $tmpFile = $this->getLocalCopy( $params );
                if ( $tmpFile ) { // don't cache negatives
                        $this->trimExpensiveCache(); // limit memory
-                       $this->expensiveCache[$path]['localRef'] = $tmpFile;
+                       $this->expensiveCache[$path]['localRef'] =
+                               array( 'object' => $tmpFile, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -1494,8 +1514,14 @@ abstract class FileBackendStore extends FileBackend {
                $values = $this->memCache->getMulti( array_keys( $pathNames ) );
                foreach ( $values as $cacheKey => $val ) {
                        if ( is_array( $val ) ) {
+                               $path = $pathNames[$cacheKey];
                                $this->trimCache(); // limit memory
-                               $this->cache[$pathNames[$cacheKey]]['stat'] = $val;
+                               $this->cache[$path]['stat'] = $val;
+                               if ( isset( $val['sha1'] ) ) { // some backends store SHA-1 as metadata
+                                       $this->trimCache(); // limit memory
+                                       $this->cache[$path]['sha1'] =
+                                               array( 'hash' => $val['sha1'], 'latest' => $val['latest'] );
+                               }
                        }
                }
 
@@ -1574,23 +1600,34 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
        }
 
        /**
-        * @see Iterator::current()
-        * @return string|bool String or false
+        * @see Iterator::key()
+        * @return integer
         */
-       public function current() {
-               if ( is_array( $this->iter ) ) {
-                       return current( $this->iter );
-               } else {
-                       return $this->iter->current();
+       public function key() {
+               return $this->pos;
+       }
+
+       /**
+        * @see Iterator::valid()
+        * @return bool
+        */
+       public function valid() {
+               if ( $this->iter instanceof Iterator ) {
+                       return $this->iter->valid();
+               } elseif ( is_array( $this->iter ) ) {
+                       return ( current( $this->iter ) !== false ); // no paths can have this value
                }
+               return false; // some failure?
        }
 
        /**
-        * @see Iterator::key()
-        * @return integer
+        * @see Iterator::current()
+        * @return string|bool String or false
         */
-       public function key() {
-               return $this->pos;
+       public function current() {
+               return ( $this->iter instanceof Iterator )
+                       ? $this->iter->current()
+                       : current( $this->iter );
        }
 
        /**
@@ -1599,15 +1636,16 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
         */
        public function next() {
                ++$this->pos;
-               if ( is_array( $this->iter ) ) {
-                       next( $this->iter );
-               } else {
-                       $this->iter->next();
-               }
-               // Filter out items that we already listed
-               $this->filterViaNext();
-               // Find the next non-empty shard if no elements are left
-               $this->nextShardIteratorIfNotValid();
+               ( $this->iter instanceof Iterator ) ? $this->iter->next() : next( $this->iter );
+               do {
+                       $continue = false; // keep scanning shards?
+                       $this->filterViaNext(); // filter out duplicates
+                       // Find the next non-empty shard if no elements are left
+                       if ( !$this->valid() ) {
+                               $this->nextShardIteratorIfNotValid();
+                               $continue = $this->valid(); // re-filter unless we ran out of shards
+                       }
+               } while ( $continue );
        }
 
        /**
@@ -1618,41 +1656,32 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
                $this->pos = 0;
                $this->curShard = 0;
                $this->setIteratorFromCurrentShard();
-               // Filter out items that we already listed
-               $this->filterViaNext();
-               // Find the next non-empty shard if this one has no elements
-               $this->nextShardIteratorIfNotValid();
-       }
-
-       /**
-        * @see Iterator::valid()
-        * @return bool
-        */
-       public function valid() {
-               if ( $this->iter === null ) {
-                       return false; // some failure?
-               } elseif ( is_array( $this->iter ) ) {
-                       return ( current( $this->iter ) !== false ); // no paths can have this value
-               } else {
-                       return $this->iter->valid();
-               }
+               do {
+                       $continue = false; // keep scanning shards?
+                       $this->filterViaNext(); // filter out duplicates
+                       // Find the next non-empty shard if no elements are left
+                       if ( !$this->valid() ) {
+                               $this->nextShardIteratorIfNotValid();
+                               $continue = $this->valid(); // re-filter unless we ran out of shards
+                       }
+               } while ( $continue );
        }
 
        /**
         * Filter out duplicate items by advancing to the next ones
         */
        protected function filterViaNext() {
-               while ( $this->iter->valid() ) {
+               while ( $this->valid() ) {
                        $rel = $this->iter->current(); // path relative to given directory
                        $path = $this->params['dir'] . "/{$rel}"; // full storage path
-                       if ( !$this->backend->isSingleShardPathInternal( $path ) ) {
+                       if ( $this->backend->isSingleShardPathInternal( $path ) ) {
+                               break; // path is only on one shard; no issue with duplicates
+                       } elseif ( isset( $this->multiShardPaths[$rel] ) ) {
                                // Don't keep listing paths that are on multiple shards
-                               if ( isset( $this->multiShardPaths[$rel] ) ) {
-                                       $this->iter->next(); // we already listed this path
-                               } else {
-                                       $this->multiShardPaths[$rel] = 1;
-                                       break;
-                               }
+                               ( $this->iter instanceof Iterator ) ? $this->iter->next() : next( $this->iter );
+                       } else {
+                               $this->multiShardPaths[$rel] = 1;
+                               break;
                        }
                }
        }
@@ -1663,10 +1692,7 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
         * If there are none, then it advances to the last container.
         */
        protected function nextShardIteratorIfNotValid() {
-               while ( !$this->valid() ) {
-                       if ( ++$this->curShard >= count( $this->shardSuffixes ) ) {
-                               break; // no more container shards
-                       }
+               while ( !$this->valid() && ++$this->curShard < count( $this->shardSuffixes ) ) {
                        $this->setIteratorFromCurrentShard();
                }
        }
@@ -1675,9 +1701,13 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
         * Set the list iterator to that of the current container shard
         */
        protected function setIteratorFromCurrentShard() {
-               $suffix = $this->shardSuffixes[$this->curShard];
                $this->iter = $this->listFromShard(
-                       "{$this->container}{$suffix}", $this->directory, $this->params );
+                       $this->container . $this->shardSuffixes[$this->curShard],
+                       $this->directory, $this->params );
+               // Start loading results so that current() works
+               if ( $this->iter ) {
+                       ( $this->iter instanceof Iterator ) ? $this->iter->rewind() : reset( $this->iter );
+               }
        }
 
        /**
@@ -1696,9 +1726,7 @@ abstract class FileBackendStoreShardListIterator implements Iterator {
  */
 class FileBackendStoreShardDirIterator extends FileBackendStoreShardListIterator {
        /**
-        * @param string $container
-        * @param string $dir
-        * @param array $params
+        * @see FileBackendStoreShardListIterator::listFromShard()
         * @return Array|null|Traversable
         */
        protected function listFromShard( $container, $dir, array $params ) {
@@ -1711,9 +1739,7 @@ class FileBackendStoreShardDirIterator extends FileBackendStoreShardListIterator
  */
 class FileBackendStoreShardFileIterator extends FileBackendStoreShardListIterator {
        /**
-        * @param string $container
-        * @param string $dir
-        * @param array $params
+        * @see FileBackendStoreShardListIterator::listFromShard()
         * @return Array|null|Traversable
         */
        protected function listFromShard( $container, $dir, array $params ) {
index e27744f..2b10917 100644 (file)
@@ -639,7 +639,7 @@ class SwiftFileBackend extends FileBackendStore {
                        $stat = array(
                                // Convert dates like "Tue, 03 Jan 2012 22:01:04 GMT" to TS_MW
                                'mtime' => wfTimestamp( TS_MW, $srcObj->last_modified ),
-                               'size'  => $srcObj->content_length,
+                               'size'  => (int)$srcObj->content_length,
                                'sha1'  => $srcObj->metadata['Sha1base36']
                        );
                } catch ( NoSuchContainerException $e ) {
index ae22a1c..ddc640a 100644 (file)
@@ -23,7 +23,7 @@
 
 /**
  * This class is used to hold the location and do limited manipulation
- * of files stored temporarily (usually this will be $wgTmpDirectory)
+ * of files stored temporarily (this will be whatever wfTempDir() returns)
  *
  * @ingroup FileBackend
  */
index 7910285..024e11b 100644 (file)
@@ -36,7 +36,7 @@
  * @ingroup LockManager
  * @since 1.19
  */
-class LSLockManager extends LockManager {
+class LSLockManager extends QuorumLockManager {
        /** @var Array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
@@ -46,8 +46,6 @@ class LSLockManager extends LockManager {
 
        /** @var Array Map of server names to server config */
        protected $lockServers; // (server name => server config array)
-       /** @var Array Map of bucket indexes to peer server lists */
-       protected $srvsByBucket; // (bucket index => (lsrv1, lsrv2, ...))
 
        /** @var Array Map Server connections (server name => resource) */
        protected $conns = array();
@@ -57,7 +55,7 @@ class LSLockManager extends LockManager {
 
        /**
         * Construct a new instance from configuration.
-        * 
+        *
         * $config paramaters include:
         *     'lockServers'  : Associative array of server names to configuration.
         *                      Configuration is an associative array that includes:
@@ -68,7 +66,7 @@ class LSLockManager extends LockManager {
         *                      each having an odd-numbered list of server names (peers) as values.
         *     'connTimeout'  : Lock server connection attempt timeout. [optional]
         *
-        * @param Array $config 
+        * @param Array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -84,123 +82,74 @@ class LSLockManager extends LockManager {
                        $this->connTimeout = 3; // use some sane amount
                }
 
-               $this->session = '';
-               for ( $i = 0; $i < 5; $i++ ) {
-                       $this->session .= mt_rand( 0, 2147483647 );
-               }
-               $this->session = wfBaseConvert( sha1( $this->session ), 16, 36, 31 );
+               $this->session = wfRandomString( 31 );
        }
 
        /**
-        * @see LockManager::doLock()
-        * @param $paths array
-        * @param $type int
+        * @see QuorumLockManager::getLocksOnServer()
         * @return Status
         */
-       protected function doLock( array $paths, $type ) {
+       protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
                $status = Status::newGood();
 
-               $pathsToLock = array();
-               // Get locks that need to be acquired (buckets => locks)...
-               foreach ( $paths as $path ) {
-                       if ( isset( $this->locksHeld[$path][$type] ) ) {
-                               ++$this->locksHeld[$path][$type];
-                       } elseif ( isset( $this->locksHeld[$path][self::LOCK_EX] ) ) {
-                               $this->locksHeld[$path][$type] = 1;
-                       } else {
-                               $bucket = $this->getBucketFromKey( $path );
-                               $pathsToLock[$bucket][] = $path;
-                       }
-               }
+               // Send out the command and get the response...
+               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
+               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
+               $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
 
-               $lockedPaths = array(); // files locked in this attempt
-               // Attempt to acquire these locks...
-               foreach ( $pathsToLock as $bucket => $paths ) {
-                       // Try to acquire the locks for this bucket
-                       $res = $this->doLockingRequestAll( $bucket, $paths, $type );
-                       if ( $res === 'cantacquire' ) {
-                               // Resources already locked by another process.
-                               // Abort and unlock everything we just locked.
-                               foreach ( $paths as $path ) {
-                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
-                               }
-                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
-                               return $status;
-                       } elseif ( $res !== true ) {
-                               // Couldn't contact any servers for this bucket.
-                               // Abort and unlock everything we just locked.
-                               foreach ( $paths as $path ) {
-                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
-                               }
-                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
-                               return $status;
-                       }
-                       // Record these locks as active
+               if ( $response !== 'ACQUIRED' ) {
                        foreach ( $paths as $path ) {
-                               $this->locksHeld[$path][$type] = 1; // locked
+                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
-                       // Keep track of what locks were made in this attempt
-                       $lockedPaths = array_merge( $lockedPaths, $paths );
                }
 
                return $status;
        }
 
        /**
-        * @see LockManager::doUnlock()
-        * @param $paths array
-        * @param $type int
+        * @see QuorumLockManager::freeLocksOnServer()
         * @return Status
         */
-       protected function doUnlock( array $paths, $type ) {
+       protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
                $status = Status::newGood();
 
-               foreach ( $paths as $path ) {
-                       if ( !isset( $this->locksHeld[$path] ) ) {
-                               $status->warning( 'lockmanager-notlocked', $path );
-                       } elseif ( !isset( $this->locksHeld[$path][$type] ) ) {
-                               $status->warning( 'lockmanager-notlocked', $path );
-                       } else {
-                               --$this->locksHeld[$path][$type];
-                               if ( $this->locksHeld[$path][$type] <= 0 ) {
-                                       unset( $this->locksHeld[$path][$type] );
-                               }
-                               if ( !count( $this->locksHeld[$path] ) ) {
-                                       unset( $this->locksHeld[$path] ); // no SH or EX locks left for key
-                               }
-                       }
-               }
+               // Send out the command and get the response...
+               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
+               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
+               $response = $this->sendCommand( $lockSrv, 'RELEASE', $type, $keys );
 
-               // Reference count the locks held and release locks when zero
-               if ( !count( $this->locksHeld ) ) {
-                       $status->merge( $this->releaseLocks() );
+               if ( $response !== 'RELEASED' ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
                }
 
                return $status;
        }
 
        /**
-        * Get a connection to a lock server and acquire locks on $paths
-        *
-        * @param $lockSrv string
-        * @param $paths Array
-        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
-        * @return bool Resources able to be locked
+        * @see QuorumLockManager::releaseAllLocks()
+        * @return Status
         */
-       protected function doLockingRequest( $lockSrv, array $paths, $type ) {
-               if ( $type == self::LOCK_SH ) { // reader locks
-                       $type = 'SH';
-               } elseif ( $type == self::LOCK_EX ) { // writer locks
-                       $type = 'EX';
-               } else {
-                       return true; // ok...
+       protected function releaseAllLocks() {
+               $status = Status::newGood();
+
+               foreach ( $this->conns as $lockSrv => $conn ) {
+                       $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
+                       if ( $response !== 'RELEASED_ALL' ) {
+                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
+                       }
                }
 
-               // Send out the command and get the response...
-               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
-               $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
+               return $status;
+       }
 
-               return ( $response === 'ACQUIRED' );
+       /**
+        * @see QuorumLockManager::isServerUp()
+        * @return bool
+        */
+       protected function isServerUp( $lockSrv ) {
+               return (bool)$this->getConnection( $lockSrv );
        }
 
        /**
@@ -233,39 +182,6 @@ class LSLockManager extends LockManager {
                return trim( $response );
        }
 
-       /**
-        * Attempt to acquire locks with the peers for a bucket
-        *
-        * @param $bucket integer
-        * @param $paths Array List of resource keys to lock
-        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
-        * @return bool|string One of (true, 'cantacquire', 'srverrors')
-        */
-       protected function doLockingRequestAll( $bucket, array $paths, $type ) {
-               $yesVotes = 0; // locks made on trustable servers
-               $votesLeft = count( $this->srvsByBucket[$bucket] ); // remaining peers
-               $quorum = floor( $votesLeft/2 + 1 ); // simple majority
-               // Get votes for each peer, in order, until we have enough...
-               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
-                       // Attempt to acquire the lock on this peer
-                       if ( !$this->doLockingRequest( $lockSrv, $paths, $type ) ) {
-                               return 'cantacquire'; // vetoed; resource locked
-                       }
-                       ++$yesVotes; // success for this peer
-                       if ( $yesVotes >= $quorum ) {
-                               return true; // lock obtained
-                       }
-                       --$votesLeft;
-                       $votesNeeded = $quorum - $yesVotes;
-                       if ( $votesNeeded > $votesLeft ) {
-                               // In "trust cache" mode we don't have to meet the quorum
-                               break; // short-circuit
-                       }
-               }
-               // At this point, we must not have meet the quorum
-               return 'srverrors'; // not enough votes to ensure correctness
-       }
-
        /**
         * Get (or reuse) a connection to a lock server
         *
@@ -290,39 +206,11 @@ class LSLockManager extends LockManager {
                return $this->conns[$lockSrv];
        }
 
-       /**
-        * Release all locks that this session is holding
-        *
-        * @return Status
-        */
-       protected function releaseLocks() {
-               $status = Status::newGood();
-               foreach ( $this->conns as $lockSrv => $conn ) {
-                       $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
-                       if ( $response !== 'RELEASED_ALL' ) {
-                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
-                       }
-               }
-               return $status;
-       }
-
-       /**
-        * Get the bucket for resource path.
-        * This should avoid throwing any exceptions.
-        *
-        * @param $path string
-        * @return integer
-        */
-       protected function getBucketFromKey( $path ) {
-               $prefix = substr( sha1( $path ), 0, 2 ); // first 2 hex chars (8 bits)
-               return intval( base_convert( $prefix, 16, 10 ) ) % count( $this->srvsByBucket );
-       }
-
        /**
         * Make sure remaining locks get cleared for sanity
         */
        function __destruct() {
-               $this->releaseLocks();
+               $this->releaseAllLocks();
                foreach ( $this->conns as $conn ) {
                        fclose( $conn );
                }
index e41c777..07853f8 100644 (file)
@@ -67,10 +67,10 @@ abstract class LockManager {
 
        /**
         * Lock the resources at the given abstract paths
-        * 
+        *
         * @param $paths Array List of resource names
         * @param $type integer LockManager::LOCK_* constant
-        * @return Status 
+        * @return Status
         */
        final public function lock( array $paths, $type = self::LOCK_EX ) {
                wfProfileIn( __METHOD__ );
@@ -81,10 +81,10 @@ abstract class LockManager {
 
        /**
         * Unlock the resources at the given abstract paths
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
-        * @return Status 
+        * @return Status
         */
        final public function unlock( array $paths, $type = self::LOCK_EX ) {
                wfProfileIn( __METHOD__ );
@@ -95,7 +95,7 @@ abstract class LockManager {
 
        /**
         * Get the base 36 SHA-1 of a string, padded to 31 digits
-        * 
+        *
         * @param $path string
         * @return string
         */
@@ -105,7 +105,7 @@ abstract class LockManager {
 
        /**
         * Lock resources with the given keys and lock type
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
         * @return string
@@ -114,7 +114,7 @@ abstract class LockManager {
 
        /**
         * Unlock resources with the given keys and lock type
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
         * @return string
@@ -123,7 +123,7 @@ abstract class LockManager {
 }
 
 /**
- * Self releasing locks
+ * Self-releasing locks
  *
  * LockManager helper class to handle scoped locks, which
  * release when an object is destroyed or goes out of scope.
@@ -160,7 +160,7 @@ class ScopedLock {
         * Get a ScopedLock object representing a lock on resource paths.
         * Any locks are released once this object goes out of scope.
         * The status object is updated with any errors or warnings.
-        * 
+        *
         * @param $manager LockManager
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
@@ -188,6 +188,216 @@ class ScopedLock {
        }
 }
 
+/**
+ * Version of LockManager that uses a quorum from peer servers for locks.
+ * The resource space can also be sharded into separate peer groups.
+ *
+ * @ingroup LockManager
+ * @since 1.20
+ */
+abstract class QuorumLockManager extends LockManager {
+       /** @var Array Map of bucket indexes to peer server lists */
+       protected $srvsByBucket = array(); // (bucket index => (lsrv1, lsrv2, ...))
+
+       /**
+        * @see LockManager::doLock()
+        * @param $paths array
+        * @param $type int
+        * @return Status
+        */
+       final protected function doLock( array $paths, $type ) {
+               $status = Status::newGood();
+
+               $pathsToLock = array(); // (bucket => paths)
+               // Get locks that need to be acquired (buckets => locks)...
+               foreach ( $paths as $path ) {
+                       if ( isset( $this->locksHeld[$path][$type] ) ) {
+                               ++$this->locksHeld[$path][$type];
+                       } elseif ( isset( $this->locksHeld[$path][self::LOCK_EX] ) ) {
+                               $this->locksHeld[$path][$type] = 1;
+                       } else {
+                               $bucket = $this->getBucketFromKey( $path );
+                               $pathsToLock[$bucket][] = $path;
+                       }
+               }
+
+               $lockedPaths = array(); // files locked in this attempt
+               // Attempt to acquire these locks...
+               foreach ( $pathsToLock as $bucket => $paths ) {
+                       // Try to acquire the locks for this bucket
+                       $status->merge( $this->doLockingRequestBucket( $bucket, $paths, $type ) );
+                       if ( !$status->isOK() ) {
+                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
+                               return $status;
+                       }
+                       // Record these locks as active
+                       foreach ( $paths as $path ) {
+                               $this->locksHeld[$path][$type] = 1; // locked
+                       }
+                       // Keep track of what locks were made in this attempt
+                       $lockedPaths = array_merge( $lockedPaths, $paths );
+               }
+
+               return $status;
+       }
+
+       /**
+        * @see LockManager::doUnlock()
+        * @param $paths array
+        * @param $type int
+        * @return Status
+        */
+       final protected function doUnlock( array $paths, $type ) {
+               $status = Status::newGood();
+
+               $pathsToUnlock = array();
+               foreach ( $paths as $path ) {
+                       if ( !isset( $this->locksHeld[$path][$type] ) ) {
+                               $status->warning( 'lockmanager-notlocked', $path );
+                       } else {
+                               --$this->locksHeld[$path][$type];
+                               // Reference count the locks held and release locks when zero
+                               if ( $this->locksHeld[$path][$type] <= 0 ) {
+                                       unset( $this->locksHeld[$path][$type] );
+                                       $bucket = $this->getBucketFromKey( $path );
+                                       $pathsToUnlock[$bucket][] = $path;
+                               }
+                               if ( !count( $this->locksHeld[$path] ) ) {
+                                       unset( $this->locksHeld[$path] ); // no SH or EX locks left for key
+                               }
+                       }
+               }
+
+               // Remove these specific locks if possible, or at least release
+               // all locks once this process is currently not holding any locks.
+               foreach ( $pathsToUnlock as $bucket => $paths ) {
+                       $status->merge( $this->doUnlockingRequestBucket( $bucket, $paths, $type ) );
+               }
+               if ( !count( $this->locksHeld ) ) {
+                       $status->merge( $this->releaseAllLocks() );
+               }
+
+               return $status;
+       }
+
+       /**
+        * Attempt to acquire locks with the peers for a bucket.
+        * This is all or nothing; if any key is locked then this totally fails.
+        *
+        * @param $bucket integer
+        * @param $paths Array List of resource keys to lock
+        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
+        * @return Status
+        */
+       final protected function doLockingRequestBucket( $bucket, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $yesVotes = 0; // locks made on trustable servers
+               $votesLeft = count( $this->srvsByBucket[$bucket] ); // remaining peers
+               $quorum = floor( $votesLeft/2 + 1 ); // simple majority
+               // Get votes for each peer, in order, until we have enough...
+               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
+                       if ( !$this->isServerUp( $lockSrv ) ) {
+                               --$votesLeft;
+                               $status->warning( 'lockmanager-fail-svr-acquire', $lockSrv );
+                               continue; // server down?
+                       }
+                       // Attempt to acquire the lock on this peer
+                       $status->merge( $this->getLocksOnServer( $lockSrv, $paths, $type ) );
+                       if ( !$status->isOK() ) {
+                               return $status; // vetoed; resource locked
+                       }
+                       ++$yesVotes; // success for this peer
+                       if ( $yesVotes >= $quorum ) {
+                               return $status; // lock obtained
+                       }
+                       --$votesLeft;
+                       $votesNeeded = $quorum - $yesVotes;
+                       if ( $votesNeeded > $votesLeft ) {
+                               break; // short-circuit
+                       }
+               }
+               // At this point, we must not have met the quorum
+               $status->setResult( false );
+
+               return $status;
+       }
+
+       /**
+        * Attempt to release locks with the peers for a bucket
+        *
+        * @param $bucket integer
+        * @param $paths Array List of resource keys to lock
+        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
+        * @return Status
+        */
+       final protected function doUnlockingRequestBucket( $bucket, array $paths, $type ) {
+               $status = Status::newGood();
+
+               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
+                       if ( !$this->isServerUp( $lockSrv ) ) {
+                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
+                       // Attempt to release the lock on this peer
+                       } else {
+                               $status->merge( $this->freeLocksOnServer( $lockSrv, $paths, $type ) );
+                       }
+               }
+
+               return $status;
+       }
+
+       /**
+        * Get the bucket for resource path.
+        * This should avoid throwing any exceptions.
+        *
+        * @param $path string
+        * @return integer
+        */
+       protected function getBucketFromKey( $path ) {
+               $prefix = substr( sha1( $path ), 0, 2 ); // first 2 hex chars (8 bits)
+               return (int)base_convert( $prefix, 16, 10 ) % count( $this->srvsByBucket );
+       }
+
+       /**
+        * Check if a lock server is up
+        *
+        * @param $lockSrv string
+        * @return bool
+        */
+       abstract protected function isServerUp( $lockSrv );
+
+       /**
+        * Get a connection to a lock server and acquire locks on $paths
+        *
+        * @param $lockSrv string
+        * @param $paths array
+        * @param $type integer
+        * @return Status
+        */
+       abstract protected function getLocksOnServer( $lockSrv, array $paths, $type );
+
+       /**
+        * Get a connection to a lock server and release locks on $paths.
+        *
+        * Subclasses must effectively implement this or releaseAllLocks().
+        *
+        * @param $lockSrv string
+        * @param $paths array
+        * @param $type integer
+        * @return Status
+        */
+       abstract protected function freeLocksOnServer( $lockSrv, array $paths, $type );
+
+       /**
+        * Release all locks that this session is holding.
+        *
+        * Subclasses must effectively implement this or freeLocksOnServer().
+        *
+        * @return Status
+        */
+       abstract protected function releaseAllLocks();
+}
+
 /**
  * Simple version of LockManager that does nothing
  * @since 1.19
index b830855..8c8c940 100644 (file)
 
 /**
  * Class to handle file lock manager registration
- * 
+ *
  * @ingroup LockManager
  * @author Aaron Schulz
  * @since 1.19
  */
 class LockManagerGroup {
-
        /**
         * @var LockManagerGroup
         */
@@ -61,7 +60,7 @@ class LockManagerGroup {
 
        /**
         * Register lock managers from the global variables
-        * 
+        *
         * @return void
         */
        protected function initFromGlobals() {
@@ -115,4 +114,30 @@ class LockManagerGroup {
                }
                return $this->managers[$name]['instance'];
        }
+
+       /**
+        * Get the default lock manager configured for the site.
+        * Returns NullLockManager if no lock manager could be found.
+        *
+        * @return LockManager
+        */
+       public function getDefault() {
+               return isset( $this->managers['default'] )
+                       ? $this->get( 'default' )
+                       : new NullLockManager( array() );
+       }
+
+       /**
+        * Get the default lock manager configured for the site
+        * or at least some other effective configured lock manager.
+        * Throws an exception if no lock manager could be found.
+        *
+        * @return LockManager
+        * @throws MWException
+        */
+       public function getAny() {
+               return isset( $this->managers['default'] )
+                       ? $this->get( 'default' )
+                       : $this->get( 'fsLockManager' );
+       }
 }
diff --git a/includes/filerepo/backend/lockmanager/MemcLockManager.php b/includes/filerepo/backend/lockmanager/MemcLockManager.php
new file mode 100644 (file)
index 0000000..add1f2c
--- /dev/null
@@ -0,0 +1,306 @@
+<?php
+/**
+ * Version of LockManager based on using memcached servers.
+ *
+ * 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 LockManager
+ */
+
+/**
+ * Manage locks using memcached servers.
+ *
+ * Version of LockManager based on using memcached servers.
+ * This is meant for multi-wiki systems that may share files.
+ * All locks are non-blocking, which avoids deadlocks.
+ *
+ * All lock requests for a resource, identified by a hash string, will map
+ * to one bucket. Each bucket maps to one or several peer servers, each running memcached.
+ * A majority of peers must agree for a lock to be acquired.
+ *
+ * @ingroup LockManager
+ * @since 1.20
+ */
+class MemcLockManager extends QuorumLockManager {
+       /** @var Array Mapping of lock types to the type actually used */
+       protected $lockTypeMap = array(
+               self::LOCK_SH => self::LOCK_SH,
+               self::LOCK_UW => self::LOCK_SH,
+               self::LOCK_EX => self::LOCK_EX
+       );
+
+       /** @var Array Map server names to MemcachedBagOStuff objects */
+       protected $bagOStuffs = array();
+       /** @var Array */
+       protected $serversUp = array(); // (server name => bool)
+
+       protected $lockExpiry; // integer; maximum time locks can be held
+       protected $session = ''; // string; random SHA-1 UUID
+       protected $wikiId = ''; // string
+
+       /**
+        * Construct a new instance from configuration.
+        *
+        * $config paramaters include:
+        *     'lockServers'  : Associative array of server names to <IP>:<port> strings.
+        *     'srvsByBucket' : Array of 1-16 consecutive integer keys, starting from 0,
+        *                      each having an odd-numbered list of server names (peers) as values.
+        *     'memcConfig'   : Configuration array for ObjectCache::newFromParams. [optional]
+        *                      If set, this must use one of the memcached classes.
+        *     'wikiId'       : Wiki ID string that all resources are relative to. [optional]
+        *
+        * @param Array $config
+        */
+       public function __construct( array $config ) {
+               parent::__construct( $config );
+
+               // Sanitize srvsByBucket config to prevent PHP errors
+               $this->srvsByBucket = array_filter( $config['srvsByBucket'], 'is_array' );
+               $this->srvsByBucket = array_values( $this->srvsByBucket ); // consecutive
+
+               $memcConfig = isset( $config['memcConfig'] )
+                       ? $config['memcConfig']
+                       : array( 'class' => 'MemcachedPhpBagOStuff' );
+
+               foreach ( $config['lockServers'] as $name => $address ) {
+                       $params = array( 'servers' => array( $address ) ) + $memcConfig;
+                       $cache = ObjectCache::newFromParams( $params );
+                       if ( $cache instanceof MemcachedBagOStuff ) {
+                               $this->bagOStuffs[$name] = $cache;
+                       } else {
+                               throw new MWException(
+                                       'Only MemcachedBagOStuff classes are supported by MemcLockManager.' );
+                       }
+               }
+
+               $this->wikiId = isset( $config['wikiId'] ) ? $config['wikiId'] : wfWikiID();
+
+               $met = ini_get( 'max_execution_time' ); // this is 0 in CLI mode
+               $this->lockExpiry = $met ? 2*(int)$met : 2*3600;
+
+               $this->session = wfRandomString( 31 );
+       }
+
+       /**
+        * @see QuorumLockManager::getLocksOnServer()
+        * @return Status
+        */
+       protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $memc = $this->getCache( $lockSrv );
+               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+
+               // Lock all of the active lock record keys...
+               if ( !$this->acquireMutexes( $memc, $keys ) ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                       }
+                       return;
+               }
+
+               // Fetch all the existing lock records...
+               $lockRecords = $memc->getMulti( $keys );
+
+               $now = time();
+               // Check if the requested locks conflict with existing ones...
+               foreach ( $paths as $path ) {
+                       $locksKey = $this->recordKeyForPath( $path );
+                       $locksHeld = isset( $lockRecords[$locksKey] )
+                               ? $lockRecords[$locksKey]
+                               : array( self::LOCK_SH => array(), self::LOCK_EX => array() ); // init
+                       foreach ( $locksHeld[self::LOCK_EX] as $session => $expiry ) {
+                               if ( $expiry < $now ) { // stale?
+                                       unset( $locksHeld[self::LOCK_EX][$session] );
+                               } elseif ( $session !== $this->session ) {
+                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                               }
+                       }
+                       if ( $type === self::LOCK_EX ) {
+                               foreach ( $locksHeld[self::LOCK_SH] as $session => $expiry ) {
+                                       if ( $expiry < $now ) { // stale?
+                                               unset( $locksHeld[self::LOCK_SH][$session] );
+                                       } elseif ( $session !== $this->session ) {
+                                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                                       }
+                               }
+                       }
+                       if ( $status->isOK() ) {
+                               // Register the session in the lock record array
+                               $locksHeld[$type][$this->session] = $now + $this->lockExpiry;
+                               // We will update this record if none of the other locks conflict
+                               $lockRecords[$locksKey] = $locksHeld;
+                       }
+               }
+
+               // If there were no lock conflicts, update all the lock records...
+               if ( $status->isOK() ) {
+                       foreach ( $lockRecords as $locksKey => $locksHeld ) {
+                               $memc->set( $locksKey, $locksHeld );
+                               wfDebug( __METHOD__ . ": acquired lock on key $locksKey.\n" );
+                       }
+               }
+
+               // Unlock all of the active lock record keys...
+               $this->releaseMutexes( $memc, $keys );
+
+               return $status;
+       }
+
+       /**
+        * @see QuorumLockManager::freeLocksOnServer()
+        * @return Status
+        */
+       protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $memc = $this->getCache( $lockSrv );
+               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+
+               // Lock all of the active lock record keys...
+               if ( !$this->acquireMutexes( $memc, $keys ) ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
+                       return;
+               }
+
+               // Fetch all the existing lock records...
+               $lockRecords = $memc->getMulti( $keys );
+
+               // Remove the requested locks from all records...
+               foreach ( $paths as $path ) {
+                       $locksKey = $this->recordKeyForPath( $path ); // lock record
+                       if ( !isset( $lockRecords[$locksKey] ) ) {
+                               continue; // nothing to do
+                       }
+                       $locksHeld = $lockRecords[$locksKey];
+                       if ( is_array( $locksHeld ) && isset( $locksHeld[$type] ) ) {
+                               unset( $locksHeld[$type][$this->session] );
+                               $ok = $memc->set( $locksKey, $locksHeld );
+                       } else {
+                               $ok = true;
+                       }
+                       if ( !$ok ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
+                       wfDebug( __METHOD__ . ": released lock on key $locksKey.\n" );
+               }
+
+               // Unlock all of the active lock record keys...
+               $this->releaseMutexes( $memc, $keys );
+
+               return $status;
+       }
+
+       /**
+        * @see QuorumLockManager::releaseAllLocks()
+        * @return Status
+        */
+       protected function releaseAllLocks() {
+               return Status::newGood(); // not supported
+       }
+
+       /**
+        * @see QuorumLockManager::isServerUp()
+        * @return bool
+        */
+       protected function isServerUp( $lockSrv ) {
+               return (bool)$this->getCache( $lockSrv );
+       }
+
+       /**
+        * Get the MemcachedBagOStuff object for a $lockSrv
+        *
+        * @param $lockSrv string Server name
+        * @return MemcachedBagOStuff|null
+        */
+       protected function getCache( $lockSrv ) {
+               $memc = null;
+               if ( isset( $this->bagOStuffs[$lockSrv] ) ) {
+                       $memc = $this->bagOStuffs[$lockSrv];
+                       if ( !isset( $this->serversUp[$lockSrv] ) ) {
+                               $this->serversUp[$lockSrv] = $memc->set( 'MemcLockManager:ping', 1, 1 );
+                               if ( !$this->serversUp[$lockSrv] ) {
+                                       trigger_error( __METHOD__ . ": Could not contact $lockSrv.", E_USER_WARNING );
+                               }
+                       }
+                       if ( !$this->serversUp[$lockSrv] ) {
+                               return null; // server appears to be down
+                       }
+               }
+               return $memc;
+       }
+
+       /**
+        * @param $path string
+        * @return string
+        */
+       protected function recordKeyForPath( $path ) {
+               $hash = LockManager::sha1Base36( $path );
+               list( $db, $prefix ) = wfSplitWikiID( $this->wikiId );
+               return wfForeignMemcKey( $db, $prefix, __CLASS__, 'locks', $hash );
+       }
+
+       /**
+        * @param $memc MemcachedBagOStuff
+        * @param $keys Array List of keys to acquire
+        * @return bool
+        */
+       protected function acquireMutexes( MemcachedBagOStuff $memc, array $keys ) {
+               $lockedKeys = array();
+
+               $start = microtime( true );
+               do {
+                       foreach ( array_diff( $keys, $lockedKeys ) as $key ) {
+                               if ( $memc->add( "$key:mutex", 1, 180 ) ) { // lock record
+                                       $lockedKeys[] = $key;
+                               }
+                       }
+               } while ( count( $lockedKeys ) < count( $keys ) && ( microtime( true ) - $start ) <= 6 );
+
+               if ( count( $lockedKeys ) != count( $keys ) ) {
+                       $this->releaseMutexes( $lockedKeys ); // failed; release what was locked
+                       return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * @param $memc MemcachedBagOStuff
+        * @param $keys Array List of acquired keys
+        * @return void
+        */
+       protected function releaseMutexes( MemcachedBagOStuff $memc, array $keys ) {
+               foreach ( $keys as $key ) {
+                       $memc->delete( "$key:mutex" );
+               }
+       }
+
+       /**
+        * Make sure remaining locks get cleared for sanity
+        */
+       function __destruct() {
+               while ( count( $this->locksHeld ) ) {
+                       foreach ( $this->locksHeld as $path => $locks ) {
+                               $this->doUnlock( array( $path ), self::LOCK_EX );
+                               $this->doUnlock( array( $path ), self::LOCK_SH );
+                       }
+               }
+       }
+}
index 2f55ec1..67768c4 100644 (file)
@@ -1456,7 +1456,7 @@ class LocalFile extends File {
         */
        function getDescriptionText() {
                global $wgParser;
-               $revision = Revision::newFromTitle( $this->title );
+               $revision = Revision::newFromTitle( $this->title, false, Revision::AVOID_MASTER );
                if ( !$revision ) return false;
                $text = $revision->getText();
                if ( !$text ) return false;
index ac5b271..e722893 100644 (file)
@@ -602,6 +602,7 @@ Do not translate: <code>php5-mysql</code>.
 
 Parameters:
 * $1 is comma separated list of database types supported by MediaWiki.',
+       'config-no-fts3' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
        'config-memory-raised' => 'Parameters:
 * $1 is the configured <code>memory_limit</code>.
 * $2 is the value to which <code>memory_limit</code> was raised.',
@@ -620,6 +621,7 @@ Add dir="ltr" to the <nowiki><code></nowiki> for right-to-left languages.',
        'config-suhosin-max-value-length' => 'Message shown when PHP parameter suhosin.get.max_value_length is between 0 and 1023 (that max value is hard set in MediaWiki software)',
        'config-db-host-oracle' => 'TNS = [[:wikipedia:Transparent Network Substrate|Transparent Network Substrate]] (<== wikipedia link)',
        'config-db-wiki-settings' => 'This is more acurate: "Enter identifying or distinguishing data for this wiki" since a MySQL database can host tables of several wikis.',
+       'config-db-account-oracle-warn' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
        'config-db-account-lock' => "It might be easier to translate ''normal operation'' as \"also after the installation process\"",
        'config-type-mysql' => '{{optional}}',
        'config-type-postgres' => '{{optional}}',
@@ -991,7 +993,7 @@ $messages['am'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Aragonese (Aragonés)
+/** Aragonese (aragonés)
  * @author Juanpabl
  */
 $messages['an'] = array(
@@ -1065,7 +1067,7 @@ $messages['arc'] = array(
        'config-admin-name' => 'ܫܡܐ ܕܝܠܟ:',
        'config-admin-password' => 'ܡܠܬܐ ܕܥܠܠܐ:',
        'config-admin-password-confirm' => 'ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
-       'config-admin-email' => 'ܦܪܫÜ\93Ü¢ܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
+       'config-admin-email' => 'Ü¡Ü\98ܢܥܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ:',
        'config-profile-private' => 'ܘܝܩܝ ܦܪܨܘܦܝܐ',
        'config-email-settings' => 'ܛܘܝܒ̈ܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 );
@@ -1222,7 +1224,7 @@ $messages['be'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ліставанне аб выпусках MediaWiki (англ.)]',
 );
 
-/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ\91еларуская (тарашкевіца)‬)
+/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ±еларуская (тарашкевіца)‬)
  * @author EugeneZelenko
  * @author Jim-by
  * @author Wizardist
@@ -3544,7 +3546,7 @@ Až to dokončíte, můžete '''[$2 vstoupit do své wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]',
 );
 
-/** Kashubian (Kaszëbsczi) */
+/** Kashubian (kaszëbsczi) */
 $messages['csb'] = array(
        'mainpagetext' => "'''MediaWiki òsta zainstalowónô.'''",
 );
@@ -3687,7 +3689,7 @@ Sofern ein gemeinschaftlich genutzter Server für das Hosting verwendet wird, mu
 Sofern PHP selbst kompiliert wurde, muss es mit es neu konfiguriert werden, wobei der Datenbankclient zu aktivierten ist. Hierzu kann beispielsweise <code>./configure --with-mysql</code> ausgeführt werden.
 Sofern PHP über die Paketverwaltung einer Debian- oder Ubuntu-Installation installiert wurde, muss das „php5-mysql“-Paket nachinstalliert werden.',
        'config-outdated-sqlite' => "'''Warnung:''' SQLite $1 ist installiert. Allerdings benötigt MediaWiki SQLite $2 oder höher. SQLite wird daher nicht verfügbar sein.",
-       'config-no-fts3' => "'''Warnung:''' SQLite wurde ohne das [//sqlite.org/fts3.html FTS3-Modul] kompiliert, so dass keine Suchfunktionen zur Verfügung stehen werden.",
+       'config-no-fts3' => "'''Warnung:''' SQLite wurde ohne das [//sqlite.org/fts3.html FTS3-Modul] kompiliert, so dass keine Suchfunktionen für dieses Datenbanksystem zur Verfügung stehen werden.",
        'config-register-globals' => "'''Warnung: Der Parameter <code>[http://php.net/register_globals register_globals]</code> von PHP ist aktiviert.'''
 '''Sie sollte deaktiviert werden, sofern dies möglich ist.'''
 Die MediaWiki-Installation wird zwar laufen, wobei aber der Server für potentielle Sicherheitsprobleme anfällig ist.",
@@ -3887,7 +3889,7 @@ Bitte unten angegebenes Datenverzeichnis sowie den Datenbanknamen überprüfen u
        'config-sqlite-fts3-downgrade' => 'PHP verfügt nicht über FTS3-Unterstützung. Die Tabellen wurden zurückgestuft.',
        'config-can-upgrade' => "Es wurden MediaWiki-Tabellen in dieser Datenbank gefunden.
 Um sie auf MediaWiki $1 zu aktualisieren, bitte auf '''Weiter''' klicken.",
-       'config-upgrade-done' => "Die Aktualisierung ist abgeschlossen.
+       'config-upgrade-done' => "Die Aktualisierung ist nun abgeschlossen.
 
 Das Wiki kann nun [$1 genutzt werden].
 
@@ -4125,7 +4127,7 @@ $3
 Sobald alles erledigt wurde, kann auf das '''[$2 Wiki zugegriffen werden]'''. Wir wünschen viel Spaß und Erfolg mit dem Wiki.",
        'config-download-localsettings' => 'LocalSettings.php herunterladen',
        'config-help' => 'Hilfe',
-       'config-nofile' => 'Datei „$1“ wurde nicht gefunden. Wurde sie gelöscht?',
+       'config-nofile' => 'Die Datei „$1“ konnte nicht gefunden werden. Wurde sie gelöscht?',
        'mainpagetext' => "'''MediaWiki wurde erfolgreich installiert.'''",
        'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
 
@@ -4163,7 +4165,7 @@ $messages['diq'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-dayışê postey]',
 );
 
-/** Lower Sorbian (Dolnoserbski) */
+/** Lower Sorbian (dolnoserbski) */
 $messages['dsb'] = array(
        'mainpagetext' => "'''MediaWiki jo se wuspěšnje instalěrowało.'''",
        'mainpagedocfooter' => "Pomoc pśi wužywanju softwary wiki namakajoš pód [//meta.wikimedia.org/wiki/Help:Contents User's Guide].
@@ -4228,6 +4230,7 @@ $messages['eo'] = array(
  * @author Platonides
  * @author Sanbec
  * @author Translationista
+ * @author Vivaelcelta
  */
 $messages['es'] = array(
        'config-desc' => 'El instalador para MediaWiki',
@@ -4638,7 +4641,7 @@ Wikipedia utilizaba anteriormente la licencia de documentación libre de GNU (GF
 La GFDL es una licencia válida, pero es difícil de entender.
 También es difícil reutilizar el contenido licenciado bajo la GFDL.",
        'config-email-settings' => 'Configuración de correo electrónico',
-       'config-enable-email' => 'Activar el envío de e-mails',
+       'config-enable-email' => 'Activar el envío de correos electrónicos',
        'config-enable-email-help' => 'Si quieres que el correo electrónico funcione, la [http://www.php.net/manual/en/mail.configuration.php configuración PHP de correo electrónico] debe ser la correcta.
 Si no quieres la funcionalidad de correo electrónico, puedes desactivarla aquí.',
        'config-email-user' => 'Habilitar correo electrónico de usuario a usuario',
@@ -4805,7 +4808,12 @@ $messages['eu'] = array(
        'config-sidebar' => '* [//www.mediawiki.org MediaWiki nagusia]
 * [//www.mediawiki.org/wiki/Help:Contents Erabiltzaileentzako Gida]
 * [//www.mediawiki.org/wiki/Manual:Contents Administratzaileentzako Gida]
-* [//www.mediawiki.org/wiki/Manual:FAQ MEG]',
+* [//www.mediawiki.org/wiki/Manual:FAQ MEG]
+----
+* <doclink href=Readme>Irakur nazazu</doclink>
+* <doclink href=ReleaseNotes>Oharren argitalpena</doclink>
+* <doclink href=Copying>Kopiaketa</doclink>
+* <doclink href=UpgradeDoc>Eguneratzea</doclink>',
        'config-env-php' => 'PHP $1 instalatuta dago.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalatuta dago',
        'config-apc' => '[http://www.php.net/apc APC] instalatuta dago',
@@ -5916,7 +5924,7 @@ $messages['gd'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]",
 );
 
-/** Galician (Galego)
+/** Galician (galego)
  * @author Elisardojm
  * @author Toliño
  */
@@ -7213,7 +7221,7 @@ $messages['hr'] = array(
 i [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike] za pomoć pri uporabi i podešavanju.',
 );
 
-/** Upper Sorbian (Hornjoserbsce)
+/** Upper Sorbian (hornjoserbsce)
  * @author Michawiki
  */
 $messages['hsb'] = array(
@@ -7313,6 +7321,9 @@ Instalacija móhła so njeporadźić!",
        'config-diff3-bad' => 'GNU diff3 njenamakany.',
        'config-no-uri' => "'''Zmylk:''' Aktualny URI njeda so postajić.
 Instalacija bu přetorhnjena.",
+       'config-no-cli-uri' => "'''Warnowanje''': Žana skriptowa šćežka (--scriptpath) podata, standard so wužiwa: <code>$1</code>.",
+       'config-using-server' => 'Serwerowe mjeno "<nowiki>$1</nowiki>" so wužiwa.',
+       'config-using-uri' => 'Serwerowy URL "<nowiki>$1$2</nowiki>" so wužiwa.',
        'config-db-type' => 'Typ datoweje banki:',
        'config-db-host' => 'Serwer datoweje banki:',
        'config-db-host-oracle' => 'Datowa banka TNS:',
@@ -7540,6 +7551,7 @@ Standardna lisćina sp přeskakuje.",
        'config-install-mainpage-failed' => 'Powěsć njeda so zasunyć: $1',
        'config-download-localsettings' => 'LocalSettings.php sćahnyć',
        'config-help' => 'pomoc',
+       'config-nofile' => 'Dataja "$1" njeje so namakała. Je so zhašała?',
        'mainpagetext' => "'''MediaWiki bu wuspěšnje instalowany.'''",
        'mainpagedocfooter' => 'Prošu hlej [//meta.wikimedia.org/wiki/Help:Contents dokumentaciju] za informacije wo wužiwanju softwary.
 
@@ -8651,6 +8663,7 @@ Post facer isto, tu pote '''[$2 entrar in tu wiki]'''.",
 /** Indonesian (Bahasa Indonesia)
  * @author Farras
  * @author IvanLanin
+ * @author Kenrick95
  * @author Reedy
  */
 $messages['id'] = array(
@@ -9027,7 +9040,7 @@ Konfigurasi hak pengguna yang lebih kompleks tersedia setelah instalasi. Lihat [
        'config-license-none' => 'Tidak ada lisensi',
        'config-license-cc-by-sa' => 'Creative Commons Atribusi Berbagi Serupa',
        'config-license-cc-by' => 'Creative Commons Atribusi',
-       'config-license-cc-by-nc-sa' => 'Creative Commons Atribusi Non-Komersial Berbagi Serupa',
+       'config-license-cc-by-nc-sa' => 'Creative Commons Atribusi Nonkomersial Berbagi Serupa',
        'config-license-cc-0' => 'Creative Commons Zero (Domain Publik)',
        'config-license-gfdl' => 'Lisensi Dokumentasi Bebas GNU 1.3 atau versi terbaru',
        'config-license-pd' => 'Domain Umum',
@@ -9369,17 +9382,17 @@ LocalSettings.phpを変更してこの変数を設定して、『{{int:Config-co
 セッションの有効期間は$1に設定されています。
 php.iniの<code>session.gc_maxlifetime</code>を設定することで、この問題を改善できます。
 インストール作業を再起動させてください。',
-       'config-no-session' => 'ã\82»ã\83\83ã\82·ã\83§ã\83³ã\81®ã\83\87ã\83¼ã\82¿ã\81\8cæ\90\8d失しました!
-php.iniを確認し、<code>session.save_path</code>が適切なディレクトリに設定されていることを確かめて下さい。',
+       'config-no-session' => 'ã\82»ã\83\83ã\82·ã\83§ã\83³ã\81®ã\83\87ã\83¼ã\82¿ã\81\8cæ\88失しました!
+php.iniを確認し、<code>session.save_path</code>が適切なディレクトリに設定されていることを確認してください。',
        'config-your-language' => 'あなたの言語:',
-       'config-your-language-help' => 'インストール作業中に利用する言語を選んで下さい。',
+       'config-your-language-help' => 'インストール作業に使用する言語を選択してください。',
        'config-wiki-language' => 'ウィキの言語:',
-       'config-wiki-language-help' => 'ã\81\9dã\81®ã\82¦ã\82£ã\82­ã\81§ä¸»ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\82\8bè¨\80èª\9eã\82\92é\81¸ã\82\93ã\81§ä¸\8bさい。',
+       'config-wiki-language-help' => 'ã\82¦ã\82£ã\82­ã\81§ä¸»ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\82\8bè¨\80èª\9eã\82\92é\81¸æ\8a\9eã\81\97ã\81¦ã\81\8fã\81 さい。',
        'config-back' => '←戻る',
        'config-continue' => '続行→',
        'config-page-language' => '言語',
        'config-page-welcome' => 'MediaWikiへようこそ!',
-       'config-page-dbconnect' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¸接続',
+       'config-page-dbconnect' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81«接続',
        'config-page-upgrade' => '既存のインストールを更新',
        'config-page-dbsettings' => 'データベースの設定',
        'config-page-name' => '名前',
@@ -9392,18 +9405,18 @@ php.iniを確認し、<code>session.save_path</code>が適切なディレクト
        'config-page-copying' => 'コピー',
        'config-page-upgradedoc' => 'アップグレード',
        'config-page-existingwiki' => '既存のウィキ',
-       'config-help-restart' => 'å\85¥å\8a\9bã\81\95ã\82\8cã\81\9få\85¨ã\81¦ã\81®ä¿\9då­\98ã\83\87ã\83¼ã\82¿ã\82\92æ¶\88å\8e»ã\81\97、インストール作業を再起動しますか?',
+       'config-help-restart' => 'å\85¥å\8a\9bã\81\97ã\81\9fä¿\9då­\98ã\83\87ã\83¼ã\82¿ã\82\92ã\81\99ã\81¹ã\81¦æ¶\88å\8e»ã\81\97ã\81¦、インストール作業を再起動しますか?',
        'config-restart' => 'はい、再起動します',
        'config-welcome' => '=== 環境の確認 ===
 基本的な確認では、現在の環境がMediaWikiのインストールに適しているかを確認します。
-インストール中に助けが必要になった場合は、この確認結果を提供してさい。',
+インストール中に助けが必要になった場合は、この確認結果を提供してください。',
        'config-copyright' => '=== 著作権および規約 ===
 $1
 
-この作品はフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約にもとづき、このライブラリの再配布や改変をすることができます。
+この作品はフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約に基づき、このライブラリを再配布および改変できます。
 
 この作品は、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。
-詳しくは、GNU一般公衆利用許諾書をご覧さい。
+詳しくは、GNU一般公衆利用許諾書をご覧ください。
 
 あなたはこのプログラムと共に、<doclink href=Copying>GNU一般公衆利用許諾契約書の複製</doclink>を一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(宛先は the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)まで請求してください。',
        'config-sidebar' => '* [//www.mediawiki.org MediaWikiのホーム]
@@ -9425,7 +9438,7 @@ MediaWikiのインストールはできません。',
        'config-unicode-using-utf8' => 'Unicode正規化に、Brion Vibberのutf8_normalize.soを使用。',
        'config-unicode-using-intl' => 'Unicode正規化に[http://pecl.php.net/intl intl PECL 拡張機能]を使用。',
        'config-unicode-pure-php-warning' => "'''警告''':Unicode正規化の処理に [http://pecl.php.net/intl intl PECL 拡張機能]が使用可能ではなく、処理の遅いピュア PHP の実装を代わりに用いています。
-高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode正規化に関するページ]をお読みさい。",
+高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode正規化に関するページ]をお読みください。",
        'config-unicode-update-warning' => "'''警告''':インストールされているバージョンのUnicode正規化ラッパーは、[http://site.icu-project.org/ ICUプロジェクト]のライブラリの古いバージョンを使用しています。
 Unicodeを少しでも利用する可能性があるなら、[//www.mediawiki.org/wiki/Unicode_normalization_considerations アップグレード]する必要があります。",
        'config-no-db' => '適切なデータベースドライバが見つかりませんでした!PHPにデータベースドライバをインストールする必要があります。
@@ -9477,6 +9490,8 @@ MediaWikiにはUTF-8サポートの関数が必要です。",
 画像のサムネイル生成は無効になります。',
        'config-no-uri' => "'''エラー:'''現在のURIを決定できませんでした。
 インストールは中止されました。",
+       'config-using-server' => 'サーバー名「<nowiki>$1</nowiki>」を使用しています。',
+       'config-using-uri' => 'サーバーURL「<nowiki>$1$2</nowiki>」を使用しています。',
        'config-uploads-not-safe' => "'''警告:'''アップロードの既定ディレクトリ<code>$1</code>が、任意のスクリプト実行に関して脆弱性があります。
 MediaWikiはアップロードされたファイルのセキュリティ上の脅威を確認しますが、アップロードを有効化するまえに、[//www.mediawiki.org/wiki/Manual:Security#Upload_security このセキュリティ上の脆弱性を閉じる]ことが強く推奨されます。",
        'config-brokenlibxml' => 'このシステムで使われているPHPとlibxml2のバージョンのこの組み合わせにはバグがあります。具体的には、MediaWikiやその他のウェブアプリケーションでhiddenデータが破損する可能性があります。
@@ -9488,19 +9503,21 @@ PHP5.3.2以降に更新するか、この([//bugs.php.net/bug.php?id=50394 PHP
        'config-suhosin-max-value-length' => 'Suhosin がインストールされており、GETパラメータの長さを $1 バイトに制限しています。MediaWiki の ResourceLoader コンポーネントはこの制限を回避しますが、パフォーマンスは低下します。可能な限り、php.ini で suhosin.get.max_value_length を 1024 以上に設定し、同じ値を LocalSettings.php 中で $wgResourceLoaderMaxQueryLength に設定してください。',
        'config-db-type' => 'データベースの種類:',
        'config-db-host' => 'データベースのホスト:',
-       'config-db-host-help' => 'データベースサーバーが異なったサーバー上にある場合、ホスト名またはIPアドレスをここに入力してください。
+       'config-db-host-help' => '異なるサーバー上にデータベースサーバーがある場合、ホスト名またはIPアドレスをここに入力してください。
+
+もし、共有されたウェブホスティングを使用している場合、ホスティングプロバイダーは正確なホスト名を解説しているはずです。
 
-もし、共有されたウェブホスティングを使用している場合、ホスティング・プロバイダは正確なホストネームを解説しているはずです
+WindowsでMySQLを使用している場合に、「localhost」は、サーバー名としてはうまく働かないでしょう。もしそのような場合は、ローカルIPアドレスとして「127.0.0.1」を試してみてください
 
-WindowsでMySQLを使用している場合に、「localhost」は、サーバー名としてはうまく働かないでしょう。もしそのような場合は、ローカルIPアドレスとして「127.0.0.1」を試してみてください。',
+PostgreSQLを使用している場合、UNIXソケットで接続するにはこの欄を空欄のままにしてください。',
        'config-db-host-oracle' => 'データベースTNS:',
        'config-db-host-oracle-help' => '有効な[http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm ローカル接続名]を入力してください。tnsnames.oraファイルは、このインストールに対して表示されてなければなりません、<br />もしクライアントライブラリ10gもしくはそれ以上を使用している場合、メソッドの名前を[http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 簡易接続]で利用できます。',
        'config-db-wiki-settings' => 'このウィキを識別',
        'config-db-name' => 'データベース名:',
-       'config-db-name-help' => 'このウィキを識別する名前を選んで下さい。
-スペースを含めることはできません。
+       'config-db-name-help' => 'このウィキを識別する名前を入力してください。
+空白を含めることはできません。
 
\85±æ\9c\89ã\82¦ã\82§ã\83\96ã\83\9bã\82¹ã\83\88ã\82\92å\88©ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83\9bã\82¹ã\83\88ã\83»ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\81¯ç\89¹å®\9aã\81®å\88©用可能なデータベース名を提供するか、あるいは管理パネルからデータベースを作成できるようにしているでしょう。',
\85±æ\9c\89ã\82¦ã\82§ã\83\96ã\83\9bã\82¹ã\83\88ã\82\92å\88©ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83\9bã\82¹ã\83\86ã\82£ã\83³ã\82°ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\81\8cç\89¹å®\9aã\81®ä½¿用可能なデータベース名を提供するか、あるいは管理パネルからデータベースを作成できるようにしているでしょう。',
        'config-db-name-oracle' => 'データベースのスキーマ:',
        'config-db-install-account' => 'インストールのための利用者アカウント',
        'config-db-username' => 'データベースの利用者名:',
@@ -9513,10 +9530,10 @@ WindowsでMySQLを使用している場合に、「localhost」は、サーバ
        'config-db-account-lock' => 'インストール作業終了後も同じ利用者名とパスワードを使用する',
        'config-db-wiki-account' => 'インストール作業終了後の利用者アカウント',
        'config-db-wiki-help' => '通常のウィキ操作中にデータベースへの接続する時に利用する利用者名とパスワードを入力してください。
-アカウントがないが、インストールのアカウントに十分な権限があれば、このユーザーアカウントは、ウィキを操作するうえで最小限の権限を持った状態で作成されます。',
+アカウントが存在せず、インストールのアカウントに十分な権限がある場合は、この利用者アカウントは、ウィキを操作する上で最小限の権限を持った状態で作成されます。',
        'config-db-prefix' => 'データベーステーブルの接頭辞:',
-       'config-db-prefix-help' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92è¤\87æ\95°ã\81®ã\82¦ã\82£ã\82­é\96\93ã\80\81ã\82\82ã\81\97ã\81\8fã\81¯MediaWikiã\81¨ä»\96ã\81®ã\82¦ã\82§ã\83\96ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§å\85±æ\9c\89ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bå ´å\90\88ã\80\81è¡\9dçª\81ã\82\92é\81¿ã\81\91ã\82\8bã\81\9fã\82\81ã\81«ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ã\83\86ã\83¼ã\83\96ã\83«å\90\8dã\81«æ\8e¥é ­è¾\9eã\82\92ã\81¤ける必要があります。
-スペースは使用できません。
+       'config-db-prefix-help' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92è¤\87æ\95°ã\81®ã\82¦ã\82£ã\82­é\96\93ã\80\81ã\81\82ã\82\8bã\81\84ã\81¯MediaWikiã\81¨ä»\96ã\81®ã\82¦ã\82§ã\83\96ã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§å\85±æ\9c\89ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bå ´å\90\88ã\80\81è¡\9dçª\81ã\82\92é\81¿ã\81\91ã\82\8bã\81\9fã\82\81ã\81«ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ã\83\86ã\83¼ã\83\96ã\83«å\90\8dã\81«æ\8e¥é ­è¾\9eã\82\92ä»\98ける必要があります。
+空白は使用できません。
 
 このフィールドは、通常は空のままです。',
        'config-db-charset' => 'データベースの文字セット',
@@ -9525,9 +9542,9 @@ WindowsでMySQLを使用している場合に、「localhost」は、サーバ
        'config-charset-mysql4' => 'MySQL 4.0 下位互換UTF-8',
        'config-charset-help' => "'''警告:'''MySQL 4.1+で'''下位互換UTF-8'''を使用し、その後<code>mysqldump</code>でデータベースをバックアップすると、すべての非ASCII文字が破壊され、不可逆的にバップアップが壊れるかもしれません。
 
-'''バイナリー式'''では、MediaWikiは、UTF-8テキストを、データベースのバイナリーフィールドに格納します。
-これは、MySQLのUTF-8形式より効率的で、ユニコード文字の全範囲を利用することが出来るようになります。
-'''UTF-8å½¢å¼\8f'''ã\81§ã\81¯ã\80\81MySQLã\81¯ã\80\81ã\81ªã\82\93ã\81®æ\96\87å­\97é\9b\86å\90\88ã\81\8cã\83\87ã\83¼ã\82¿ã\81®ã\81ªã\81\8bã\81«å\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\8bã\82\92ç\9f¥ã\82\8a、それに対して適切な提示と変換をするでしょうが、
+'''バイナリー式'''では、MediaWikiは、UTF-8テキストを、データベースのバイナリーフィールドに格納します。
+これは、MySQLのUTF-8形式より効率的で、Unicode文字の全範囲を利用できるようになります。
+'''UTF-8å½¢å¼\8f'''ã\81§ã\81¯ã\80\81MySQLã\81¯ã\80\81ã\83\87ã\83¼ã\82¿å\86\85ã\81§ã\81©ã\81®æ\96\87å­\97é\9b\86å\90\88ã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\82\92ç\9f¥ã\81£ã\81¦ã\81\84ã\81¦、それに対して適切な提示と変換をするでしょうが、
 [//ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語面]の外にある文字を格納できるようにはなりません。",
        'config-mysql-old' => 'MySQLの$1以降が要求されています。あなたの所有のものは$2です。',
        'config-db-port' => 'データベースポート:',
@@ -9535,15 +9552,15 @@ WindowsでMySQLを使用している場合に、「localhost」は、サーバ
        'config-db-schema-help' => '上の図式は常に正確です。
 必要である場合のみ、変更してください。',
        'config-sqlite-dir' => 'SQLiteのデータディレクトリ:',
-       'config-sqlite-dir-help' => 'SQLiteは単一のファイル中に全てのデータを保持しています。
+       'config-sqlite-dir-help' => "SQLiteは単一のファイル内にすべてのデータを保持しています。
 
-あなたが供給するディレクトリーはインストール時にウェブサーバーによって書き込み可能でなければならない
+指定したディレクトリは、インストール時にウェブサーバーが書き込める必要があります
 
\82¦ã\82§ã\83\96ã\82\92é\80\9aã\81\97ã\81¦ã\82¢ã\82¯ã\82»ã\82¹å\8f¯è\83½"ä¸\8då\8f¯è\83½"ã\81§ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\80\82ã\81\93ã\82\8cã\81¯ã\81\82ã\81ªã\81\9fã\81®PHPã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\81\82ã\82\8bæ\89\80ã\81«é\85\8dç½®ä¸\8dè\83½ã\81ª理由です。
\81\93ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81¯ã\82¦ã\82§ã\83\96ã\81\8bã\82\89ã\82¢ã\82¯ã\82»ã\82¹'''ä¸\8då\8f¯è\83½'''ã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82ã\81\93ã\82\8cã\81\8cPHPã\83\95ã\82¡ã\82¤ã\83«ã\81\8cã\81\82ã\82\8bå ´æ\89\80ã\81«é\85\8dç½®ã\81§ã\81\8dã\81ªã\81\84理由です。
 
\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83©ã\83¼ã\81¯å\85±ã\81«<code>.htaccess</code>ã\83\95ã\82¡ã\82¤ã\83«ã\82\92æ\9b¸ã\81\8dè¾¼ã\82\80ã\81\93ã\81¨ã\81§ã\81\97ã\82\87ã\81\86ã\80\82ã\81\97ã\81\8bã\81\97ã\80\81ä¾\8bã\81\88失æ\95\97ã\81\97ã\81¦ã\82\82誰ã\81\8bã\81\8cã\81\82ã\81ªã\81\9fã\81®ç\94\9fã\81®ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81«ã\82¢ã\82¯ã\82»ã\82¹ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cå\8f¯è\83½ã\81¨ã\81ªã\82\8bã\81§ã\81\97ã\82\87ã\81\86
\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83©ã\83¼ã\81¯å\90\8cæ\99\82ã\81«<code>.htaccess</code>ã\83\95ã\82¡ã\82¤ã\83«ã\81«æ\9b¸ã\81\8dè¾¼ã\81¿ã\81¾ã\81\99ã\80\82ã\81\97ã\81\8bã\81\97ã\80\81ã\81\93ã\82\8cã\81\8c失æ\95\97ã\81\97ã\81¦ã\82\82誰ã\81\8bã\81\8cã\81\82ã\81ªã\81\9fã\81®ç\94\9fã\81®ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81«ã\82¢ã\82¯ã\82»ã\82¹ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cå\8f¯è\83½ã\81¨ã\81ªã\82\8bã\81§ã\81\97ã\82\87ã\81\86ã\80\82ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ç\94\9fã\81®ã\83\87ã\83¼ã\82¿ï¼\88ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\80\81ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\81®ã\83\8fã\83\83ã\82·ã\83¥å\80¤ï¼\89ã\81®ä»\96ã\80\81å\89\8aé\99¤ã\81\95ã\82\8cã\81\9fç\89\88ã\80\81ã\81\9dã\81®ä»\96ã\80\81ã\82¦ã\82£ã\82­ä¸\8aã\81®å\88¶é\99\90ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\87ã\83¼ã\82¿ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\81¾ã\81\99
 
-ä¾\8bã\81\88ã\81°<code>/var/lib/mediawiki/yourwiki</code>ã\81®ã\82\88ã\81\86ã\81«ã\80\81å\85¨ã\81\8fé\81\95ã\81\86å ´æ\89\80ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92é\85\8dç½®ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92è\80\83ã\81\88ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82',
+ä¾\8bã\81\88ã\81°<code>/var/lib/mediawiki/yourwiki</code>ã\81®ã\82\88ã\81\86ã\81«ã\80\81å\88¥ã\81®å ´æ\89\80ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92é\85\8dç½®ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ¤\9cè¨\8eã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
        'config-oracle-def-ts' => '既定のテーブル領域:',
        'config-oracle-temp-ts' => '一時的なテーブル領域:',
        'config-type-mysql' => 'MySQL',
@@ -9566,28 +9583,28 @@ $1
        'config-header-sqlite' => 'SQLiteの設定',
        'config-header-oracle' => 'Oracleの設定',
        'config-header-ibm_db2' => 'IBM DB2の設定',
-       'config-invalid-db-type' => '不正なデータベースの種類',
+       'config-invalid-db-type' => '無効なデータベースの種類',
        'config-missing-db-name' => '「データベース名」を入力する必要があります',
        'config-missing-db-host' => '「データベースのホスト」を入力する必要があります',
        'config-missing-db-server-oracle' => '「データベースTNS」に値を入力する必要があります',
-       'config-invalid-db-server-oracle' => '不正なデータベースTNS「$1」です。
-アスキー文字(a-z, A-Z)、数字(0-9)およびアンダーバー(_)とドット(.)のみを使用してください。',
-       'config-invalid-db-name' => '無効なデータベース名 "$1"
-アスキー文字(a-z, A-Z)、数字(0-9)、アンダーバー(_)、ハイフン(-)のみを使用してください。',
-       'config-invalid-db-prefix' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®æ\8e¥é ­èª\9e "$1" ã\81\8cç\84¡å\8a¹です。
-アスキー字(a-z, A-Z)、数字(0-9)、下線(_)、ハイフン(-)のみを使用してください。',
+       'config-invalid-db-server-oracle' => '「$1」は無効なデータベース TNS です。
+アスキー英字(a-z、A-Z)、数字(0-9)、アンダーバー(_)、ドット(.)のみを使用してください。',
+       'config-invalid-db-name' => '「$1」は無効なデータベース名です
+アスキー英字(a-z、A-Z)、数字(0-9)、アンダーバー(_)、ハイフン(-)のみを使用してください。',
+       'config-invalid-db-prefix' => 'ã\80\8c$1ã\80\8dã\81¯ç\84¡å\8a¹ã\81ªã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹æ\8e¥é ­èª\9eです。
+アスキー字(a-z, A-Z)、数字(0-9)、下線(_)、ハイフン(-)のみを使用してください。',
        'config-connection-error' => '$1。
 
 以下のホスト名、ユーザ名、パスワードをチェックして、再度試してみてください。',
-       'config-invalid-schema' => 'メディアウィキ"$1"における無効な図式です。
-アスキー文字(a-z, A-Z)、数字(0-9)、下線(_)のみを使用してください。',
+       'config-invalid-schema' => 'メディアウィキ「$1」における無効な図式です。
+アスキー英字(a-z、A-Z)、数字(0-9)、下線(_)のみを使用してください。',
        'config-postgres-old' => 'PostgreSQLの$1あるいはそれ以降が必要で、いまのバージョンは$2です。',
        'config-sqlite-name-help' => 'あなたのウェキと同一性のある名前を選んでください。
 空白およびハイフンは使用しないでください。
 SQLiteのデータファイル名として使用されます。',
-       'config-sqlite-parent-unwritable-group' => 'データディレクトリ<code><nowiki>$1</nowiki></code>を作成できません。親ディレクトリ<code><nowiki>$2</nowiki></code>は、ウェブサーバから書き込みできませんでした。
+       'config-sqlite-parent-unwritable-group' => 'ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª<code><nowiki>$1</nowiki></code>ã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82親ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª<code><nowiki>$2</nowiki></code>ã\81¯ã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\83¼ã\81\8bã\82\89æ\9b¸ã\81\8dè¾¼ã\81¿ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82
 
-インストール機能は、実行しているウェブサーバのユーザーを特定しました。
\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«æ©\9fè\83½ã\81¯ã\80\81å®\9fè¡\8cã\81\97ã\81¦ã\81\84ã\82\8bã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\83¼ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\82\92ç\89¹å®\9aã\81\97ã\81¾ã\81\97ã\81\9fã\80\82
 続行するには、<code><nowiki>$3</nowiki></code>ディレクトリを書き込み可能にしてください。
 UnixあるいはLinux上では、以下を実行してください:
 
@@ -9598,19 +9615,19 @@ chmod g+w $3</pre>',
        'config-sqlite-parent-unwritable-nogroup' => 'データディレクトリ<code><nowiki>$1</nowiki></code>を作成できません。親ディレクトリ<code><nowiki>$2</nowiki></code>は、ウェブサーバから書き込みできませんでした。
 
 インストール機能は、実行しているウェブサーバのユーザーを特定できませんでした。
-ç¶\9aè¡\8cã\81\99ã\82\8bã\81«ã\81¯ã\80\81<code><nowiki>$3</nowiki></code>ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\82\92ã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ï¼\88ã\81¨ä»\96ã\81®ã\83¦ã\83¼ã\82¶ï¼\81ï¼\89ã\81\8bã\82\89ã\82°ã\83­ã\83¼ã\83\90ã\83«ã\81«æ\9b¸ã\81\8dè¾¼ã\81¿å\87ºæ\9d¥るようにしてください。
+ç¶\9aè¡\8cã\81\99ã\82\8bã\81«ã\81¯ã\80\81<code><nowiki>$3</nowiki></code>ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\82\92ã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ï¼\88ã\81¨ä»\96ã\81®ã\83¦ã\83¼ã\82¶ï¼\81ï¼\89ã\81\8bã\82\89ã\82°ã\83­ã\83¼ã\83\90ã\83«ã\81«æ\9b¸ã\81\8dè¾¼ã\82\81るようにしてください。
 UnixあるいはLinux上では、以下を実行してください:
 
 <pre>cd $2
 mkdir $3
 chmod a+w $3</pre>',
-       'config-sqlite-mkdir-error' => 'ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼"$1"ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9fã\81\93ã\81¨ã\81«ã\82\88ã\82\8bã\82¨ã\83©ã\83¼
-場所をチェックして、再度試してください。',
-       'config-sqlite-dir-unwritable' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼"$1"ã\82\92æ\9b¸ã\81\8dè¾¼ã\82\80ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dません。
\83\91ã\83¼ã\83\9fã\83\83ã\82·ã\83§ã\83³ã\82\92å¤\89æ\9b´ã\81\99ã\82\8cã\81°ã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\83¼ã\81\8cæ\9b¸ã\81\8dè¾¼ã\81¿å\8f¯è\83½ã\81¨ã\81ªã\82\8aã\81¾ã\81\99ã\80\82å\86\8d度試してください。',
+       'config-sqlite-mkdir-error' => 'ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\80\8c$1ã\80\8dã\81®ä½\9cæ\88\90中ã\81«ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9f
+場所を確認してから、再度試してください。',
+       'config-sqlite-dir-unwritable' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\80\8c$1ã\80\8dã\81«æ\9b¸ã\81\8dè¾¼ã\82\81ません。
\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\83¼ã\81\8cæ\9b¸ã\81\8dè¾¼ã\82\81ã\82\8bã\82\88ã\81\86ã\81«ã\83\91ã\83¼ã\83\9fã\83\83ã\82·ã\83§ã\83³ã\82\92å¤\89æ\9b´ã\81\97ã\81¦ã\81\8bã\82\89ã\80\81度試してください。',
        'config-sqlite-connection-error' => '$1。
 
»¥ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\81¨ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83\81ã\82§ã\83\83ã\82¯ã\81\97、再度試してみてください。',
¸\8bè¨\98ã\81®ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81¨ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\90\8dã\82\92確èª\8dã\81\97ã\81¦ã\81\8bã\82\89、再度試してみてください。',
        'config-sqlite-readonly' => 'ファイル<code>$1</code>は書き込み不能です。',
        'config-sqlite-cant-create-db' => 'データベースファイル<code>$1</code>を作成できませんでした。',
        'config-sqlite-fts3-downgrade' => 'PHPはFTS3のサポート、テーブルのダウングレードが無効です。',
@@ -9633,7 +9650,7 @@ chmod a+w $3</pre>',
        'config-db-web-account-same' => 'インストールのために同じアカウントを使用してください',
        'config-db-web-create' => '既に存在していないのであれば、アカウントを作成してください',
        'config-db-web-no-create-privs' => 'あなたがインストールのために定義したアカウントは、アカウント作成のための特権としては不充分です。
-あなたがここで特定したアカウントはすでに存在していなければなりません。',
+あなたがここで指定したアカウントは既に存在している必要があります。',
        'config-mysql-engine' => 'ストレージエンジン:',
        'config-mysql-innodb' => 'InnoDB',
        'config-mysql-myisam' => 'MyISAM',
@@ -9641,16 +9658,16 @@ chmod a+w $3</pre>',
 
 '''MyISAM'''は、利用者が1人の場合、あるいは読み込み専用でインストールする場合に、より処理が早くなるでしょう。
 ただし、MyISAMのデータベースは、InnoDBより高頻度で破損する傾向があります。",
-       'config-mysql-charset' => 'データベースの文字セット:',
+       'config-mysql-charset' => 'データベースの文字セット',
        'config-mysql-binary' => 'バイナリ',
        'config-mysql-utf8' => 'UTF-8',
-       'config-mysql-charset-help' => "'''バイナリー式'''では、MediaWikiは、UTF-8テキストを、データベースのバイナリーフィールドに格納します。
-これは、MySQLのUTF-8形式より効率的で、ユニコード文字の全範囲を利用することが出来るようになります。
+       'config-mysql-charset-help' => "'''バイナリー式'''では、MediaWikiは、UTF-8テキストを、データベースのバイナリーフィールドに格納します。
+これは、MySQLのUTF-8形式より効率的で、Unicode文字の全範囲を利用できるようになります。
 
-'''UTF-8å½¢å¼\8f'''ã\81§ã\81¯ã\80\81MySQLã\81¯ã\80\81ã\81ªã\82\93ã\81®æ\96\87å­\97é\9b\86å\90\88ã\81\8cã\83\87ã\83¼ã\82¿ã\81®ã\81ªã\81\8bã\81«å\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\8bã\82\92ç\9f¥ã\82\8a、それに対して適切な提示と変換をするでしょうが、
+'''UTF-8å½¢å¼\8f'''ã\81§ã\81¯ã\80\81MySQLã\81¯ã\80\81ã\83\87ã\83¼ã\82¿å\86\85ã\81§ã\81©ã\81®æ\96\87å­\97é\9b\86å\90\88ã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\82\92ç\9f¥ã\81£ã\81¦ã\81\84ã\81¦、それに対して適切な提示と変換をするでしょうが、
 [//ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語面]の外にある文字を格納できるようにはなりません。",
        'config-site-name' => 'ウィキの名前:',
-       'config-site-name-help' => 'ã\81\93ã\81®äº\8b象ã\81¯ã\83\96ã\83©ã\82¦ã\82¶ã\81®ã\82¿ã\82¤ã\83\88ã\83«ã\83\90ã\83¼ã\81¨ä»\96ã\81®æ§\98ã\80\85ã\81ªå ´æ\89\80ã\81«ã\81\8aã\81\84ã\81¦å\87ºç\8f¾ã\81\99る。',
+       'config-site-name-help' => 'ã\81\93ã\81®äº\8b象ã\81¯ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®ã\82¿ã\82¤ã\83\88ã\83«ã\83\90ã\83¼ã\81¨ä»\96ã\81®ã\81\95ã\81¾ã\81\96ã\81¾ã\81ªå ´æ\89\80ã\81«ç\8f¾ã\82\8cる。',
        'config-site-name-blank' => 'サイト名を入力してください。',
        'config-project-namespace' => 'プロジェクト名前空間:',
        'config-ns-generic' => 'プロジェクト',
@@ -9673,15 +9690,15 @@ chmod a+w $3</pre>',
 別のユーザ名を指定してください。',
        'config-admin-password-blank' => '管理者アカウントのパスワードを入力してください。',
        'config-admin-password-same' => 'ユーザ名と同じパスワードは使えません。',
-       'config-admin-password-mismatch' => '入力されたつのパスワードが一致しません。',
+       'config-admin-password-mismatch' => '入力された2つのパスワードが一致しません。',
        'config-admin-email' => 'メールアドレス:',
-       'config-admin-email-help' => '電子メールアドレスを入力してください。他のユーザーからの電子メールの受け取りと、パスワードのリセット、ウォッチリストに登録したページの更新通知に用いられます。',
+       'config-admin-email-help' => 'メールアドレスを入力してください。他の利用者からのメールの受け取り、パスワードのリセット、ウォッチリストに登録したページの更新通知に使用します。空欄のままにすることもできます。',
        'config-admin-error-user' => '"<nowiki>$1</nowiki>"という名前の管理者を作成する際に内部エラーが発生しました。',
        'config-admin-error-password' => '管理者"<nowiki>$1</nowiki>"のパスワードを設定する際に内部エラーが発生しました: <pre>$2</pre>',
        'config-subscribe' => '[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce リリース告知のメーリングリスト]を購読する。',
        'config-subscribe-help' => 'これは、リリースの告知(重要なセキュリティに関する案内を含む)に使われる、低容量のメーリングリストです。
 このメーリングリストを購読して、新しいバージョンが出た場合にMediaWikiを更新してください。',
-       'config-almost-done' => 'ã\81\93ã\82\8cã\81§ã\81»ã\81¨ã\82\93ã\81©ã\81\8açµ\82ã\81\84ã\81§ã\81\99
+       'config-almost-done' => 'ã\81\93ã\82\8cã\81§ã\81»ã\81¼çµ\82ã\82\8fã\82\8aã\81¾ã\81\97ã\81\9f
 残りの設定を飛ばして、今すぐにウィキをインストールできます。',
        'config-optional-continue' => '私にもっと質問してください。',
        'config-optional-skip' => 'もう飽きてしまったので、とにかくウィキをインストールしてください。',
@@ -9693,20 +9710,22 @@ chmod a+w $3</pre>',
        'config-profile-help' => "ウィキは、たくさんの人が可能な限りそのウィキを編集できるとき、最も優れた働きをします。
 MediaWikiでは、最近の更新を確認し、神経質な、もしくは悪意を持った利用者からの損害を差し戻すことが、簡単にできます。
 
-しかし一方で、MediaWikiは、さらに様々な形態でもの利用も優れていると言われています。また、時には、すべての人にウィキ手法の利点を説得させるのは容易ではないかもしれません。
+しかし一方で、MediaWikiは、さらにさまざまな形態での利用も優れていると言われています。また、時には、すべての人にウィキ手法の利点を説得させるのは容易ではないかもしれません。
 そこで、選択肢があります。
 
-'''{{int:config-profile-wiki}}'''ã\81¯ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\82\92ã\81\9bã\81\9aã\81¨ã\82\82ã\80\81誰ã\81§ã\82\82ç·¨é\9b\86ã\81\8cå\8f¯è\83½ã\81ªものです。
+'''{{int:config-profile-wiki}}'''ã\81¯ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81ªã\81\8fã\81¦ã\82\82ã\80\81誰ã\81§ã\82\82ç·¨é\9b\86ã\81§ã\81\8dã\82\8bものです。
 '''{{int:config-profile-no-anon}}'''なウィキは、各編集に対してより強い説明責任を付与しますが、気軽な投稿を阻害するかもしれません。
 
-'''{{int:config-profile-fishbowl}}'''ã\81®ã\82¦ã\82£ã\82­ã\81¯ã\80\81æ\89¿èª\8dã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81¯ç·¨é\9b\86ã\81§ã\81\8dã\80\81ä¸\80æ\96¹ã\80\81ä¸\80è\88¬ã\81®äººã\81¯ã\83\9aã\83¼ã\82¸ï¼\88ã\81¨ã\81\9dã\81®å±¥æ­´ï¼\89ã\81®é\96²è¦§ã\81\8cå\8f¯è\83½ã\81§す。
-'''{{int:config-profile-private}}'''ã\81¯ã\80\81æ\89¿èª\8dã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81\8cã\83\9aã\83¼ã\82¸ã\82\92é\96²è¦§å\8f¯è\83½ã\81§ã\80\81ã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81\8cç·¨é\9b\86å\8f¯è\83½ã\81§す。
+'''{{int:config-profile-fishbowl}}'''ã\81®ã\82¦ã\82£ã\82­ã\81¯ã\80\81æ\89¿èª\8dã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81\8cç·¨é\9b\86ã\81§ã\81\8dã\80\81ä¸\80æ\96¹ã\80\81ä¸\80è\88¬ã\81®äººã\81¯ã\83\9aã\83¼ã\82¸ï¼\88ã\81¨ã\81\9dã\81®å±¥æ­´ï¼\89ã\82\92é\96²è¦§ã\81§ã\81\8dã\81¾す。
+'''{{int:config-profile-private}}'''ã\81¯ã\80\81æ\89¿èª\8dã\81\95ã\82\8cã\81\9få\88©ç\94¨è\80\85ã\81®ã\81¿ã\81\8cã\83\9aã\83¼ã\82¸ã\82\92é\96²è¦§ã\81§ã\81\8dã\80\81ã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81\8cç·¨é\9b\86ã\81§ã\81\8dã\81¾す。
 
-より複雑な利用者権限の設定は、インストール後に設定可能です。詳細は[//www.mediawiki.org/wiki/Manual:User_rights 関連するマニュアル]をご覧ください。",
+より複雑な利用者権限の設定は、インストール後に設定できます。詳細は[//www.mediawiki.org/wiki/Manual:User_rights 関連するマニュアル]をご覧ください。",
        'config-license' => '著作権とライセンス:',
        'config-license-none' => 'ライセンスのフッターを付けない',
        'config-license-cc-by-sa' => 'クリエイティブ・コモンズ 表示-継承',
+       'config-license-cc-by' => 'クリエイティブ・コモンズ 表示',
        'config-license-cc-by-nc-sa' => 'クリエイティブ・コモンズ 表示-非営利-継承',
+       'config-license-gfdl' => 'GNUフリー文書利用許諾契約書1.3以降',
        'config-license-pd' => 'パブリック・ドメイン',
        'config-license-cc-choose' => 'その他のクリエイティブ・コモンズ・ライセンスを選択する',
        'config-license-help' => "多くの公開ウィキでは、すべての寄稿物が[http://freedomdefined.org/Definition フリーライセンス]の元に置かれています。
@@ -9715,41 +9734,42 @@ MediaWikiでは、最近の更新を確認し、神経質な、もしくは悪
 
 ウィキペディアにあるテキストをあなたのウィキで利用し、逆にあなたのウィキにあるテキストをウィキペディアに複製することを許可したい場合には、'''クリエイティブ・コモンズ 表示-継承'''を選択するべきです。
 
-GNUフリー文書利用許諾契約書はウィキペディアが採用していた古いライセンスです。
-今も有効なライセンスではありますが、再利用や解釈を難しくする条項が含まれています。",
-       'config-email-settings' => '電子メールの設定',
-       'config-enable-email' => '電子メール送信の有効',
-       'config-enable-email-help' => "もし、電子メールの作動を欲するならば、[http://www.php.net/manual/en/mail.configuration.php PHP's mail settings]のページが正確に設定されている必要がある。
-もし、電子メールに関するいかなる機能を欲しないのであれば、ここで無効にできます。",
-       'config-email-user' => 'ユーザ間同士の電子メールの許可',
-       'config-email-user-help' => '設定において有効になっている場合、全てのユーザがお互いに電子メールのやりとりを行うことを許可する。',
+ウィキペディアは以前、GNUフリー文書利用許諾契約書(GFDL)を使用していました。
+GFDL は有効なライセンスですが、内容を理解するのは困難です。
+また、GFDL の元に置かれているコンテンツの再利用も困難です。",
+       'config-email-settings' => 'メールの設定',
+       'config-enable-email' => 'メール送信を有効にする',
+       'config-enable-email-help' => 'メールを使用したい場合は、[http://www.php.net/manual/en/mail.configuration.php PHP のメール設定]が正しく設定されている必要があります。
+メールの機能を使用しない場合は、ここで無効にすることができます。',
+       'config-email-user' => '利用者間のメールを有効にする',
+       'config-email-user-help' => '設定において有効になっている場合、すべてのユーザがお互いにメールのやりとりを行うことを許可する。',
        'config-email-usertalk' => 'ユーザのトークページにおける通知を有効にする',
        'config-email-usertalk-help' => '設定で有効にしているならば、ユーザのトークページの変更の通知を受けることをユーザに許可する。',
        'config-email-watchlist' => 'ウォッチリストの通知を有効にする',
-       'config-email-watchlist-help' => '設定で有効にしているならば、閲覧されたページに関する通知を受け取ることをユーザに許可する。',
-       'config-email-auth' => '電子メールの認証を有効にする',
-       'config-email-auth-help' => "ã\81\93ã\81®é\81¸æ\8a\9eè\82¢ã\81\8cæ\9c\89å\8a¹å\8c\96ã\81\95ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81\8cé\9b»å­\90ã\83¡ã\83¼ã\83«ã\81®アドレスを設定あるいは変更したときに送信されるリンクにより、そのアドレスを確認しなければならなくなります。
+       'config-email-watchlist-help' => '利用者が設定で有効にしている場合、閲覧されたページに関する通知を受け取ることを許可する。',
+       'config-email-auth' => 'メールの認証を有効にする',
+       'config-email-auth-help' => "ã\81\93ã\81®é\81¸æ\8a\9eè\82¢ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81\8cã\83¡ã\83¼ã\83«アドレスを設定あるいは変更したときに送信されるリンクにより、そのアドレスを確認しなければならなくなります。
 認証済みのアドレスだけが、他の利用者からのメールや、変更通知のメールを受け取ることができます。
 公開ウィキでは、メール機能による潜在的な不正利用の防止のため、この選択肢を設定することが'''推奨'''されます。",
-       'config-email-sender' => '電子メールのアドレスを返す:',
-       'config-email-sender-help' => 'é\80\81ä¿¡ã\83¡ã\83¼ã\83«ã\81®è¿\94ä¿¡ã\82¢ã\83\89ã\83¬ã\82¹ã\81¨ã\81\97ã\81¦å\88©用するメールアドレスを入力してください。
-宛先不明の場合、このアドレスにその通知が送信されます。
-多くのメールサーバーでは、少なくともドメイン名の一部が有効であることが必要になっています。',
+       'config-email-sender' => '返信メールアドレス:',
+       'config-email-sender-help' => 'é\80\81ä¿¡ã\83¡ã\83¼ã\83«ã\81§è¿\94ä¿¡å\85\88ã\81¨ã\81\97ã\81¦ä½¿用するメールアドレスを入力してください。
+このアドレスは、宛先不明の場合の通知の宛先になります。
+多くのメールサーバーでは、少なくともドメイン名部分は有効である必要があります。',
        'config-upload-settings' => '画像およびファイルのアップロード',
        'config-upload-enable' => 'ファイルのアップロードを有効にする',
-       'config-upload-help' => 'ファイルのアップロードは潜在的にあなたのサーバにセキュリティ上の危険をさらします。
+       'config-upload-help' => 'ファイルのアップロードは潜在的にあなたのサーバにセキュリティ上の危険をさらします。
 更なる情報のために、マニュアルの[//www.mediawiki.org/wiki/Manual:Security security section] を読むことをすすめます。
 
\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\82\92å\8f¯è\83½ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\80\81ã\83¡ã\83\87ã\82£ã\82¢ã\82¦ã\82£ã\82­ã\81®ã\83«ã\83¼ã\83\88ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªä¸\8bã\81®<code>images</code>ã\82µã\83\96ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®ã\83¢ã\83¼ã\83\89ã\82\92å¤\89æ\9b´ã\81\97ã\81¾ã\81\99ã\80\82ã\81\9dã\81\86ã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\82\8aã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\81¯ã\81\9dã\81\93ã\81«æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cå\8f¯è\83½になります。
\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\80\81ã\83¡ã\83\87ã\82£ã\82¢ã\82¦ã\82£ã\82­ã\81®ã\83«ã\83¼ã\83\88ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªä¸\8bã\81®<code>images</code>ã\82µã\83\96ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81®ã\83¢ã\83¼ã\83\89ã\82\92å¤\89æ\9b´ã\81\97ã\81¾ã\81\99ã\80\82ã\81\9dã\81\86ã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81ã\82¦ã\82§ã\83\96ã\82µã\83¼ã\83\90ã\83¼ã\81¯ã\81\9dã\81\93ã\81«æ\9b¸ã\81\8dè¾¼ã\82\81ã\82\8bã\82\88ã\81\86になります。
 そして、このオプションを有効にしてください。',
        'config-upload-deleted' => '削除されたファイルのためのディレクトリ:',
        'config-upload-deleted-help' => '削除されるファイルを保存するためのディレクトリを選択してください。
 これがウェブからアクセスできないことが理想です。',
        'config-logo' => 'ロゴのURL:',
-       'config-logo-help' => 'MediaWikiã\81®æ\9cªè¨­å®\9aç\8a¶æ\85\8bã\81®ã\82¹ã\82­ã\83³では、サイドバー上部に135x160ピクセルのロゴ用の余白があります。
-適切なサイズの画像をアップロードし、そのURLをここに入力してください。
+       'config-logo-help' => 'MediaWikiã\81®æ\97¢å®\9aã\81®å¤\96è£\85では、サイドバー上部に135x160ピクセルのロゴ用の余白があります。
\81©å\88\87ã\81ªã\82µã\82¤ã\82ºã\81®ç\94»å\83\8fã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\97ã\81¦ã\80\81ã\81\9dã\81®URLã\82\92ã\81\93ã\81\93ã\81«å\85¥å\8a\9bã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82
 
\82\82ã\81\97ã\83­ã\82´ã\81\8cè¦\81ã\82\89ã\81ªã\81\84ã\81ªã\82\89ã\81°、このボックスを空白のままにしてください。',
\83­ã\82´ã\81\8cä¸\8dè¦\81ã\81®å ´å\90\88ã\81¯、このボックスを空白のままにしてください。',
        'config-instantcommons' => 'InstantCommons機能を有効にする',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons]は、[//commons.wikimedia.org/ ウィキメディア・コモンズ]のサイトで見つかった画像や音声、その他のメディアをウィキ上で利用することができるようになる機能です。
 これを有効化するには、MediaWikiはインターネットに接続できなければなりません。
@@ -9783,18 +9803,20 @@ GNUフリー文書利用許諾契約書はウィキペディアが採用して
        'config-install-step-failed' => '失敗した',
        'config-install-extensions' => '拡張機能を含む',
        'config-install-database' => 'データベースの構築',
+       'config-install-schema' => 'スキーマの作成',
+       'config-install-pg-schema-not-exist' => 'PostgreSQL スキーマがありません。',
        'config-install-pg-schema-failed' => 'テーブルの作成に失敗した。
 ユーザ"$1"が図式"$2"に書き込みができるようにしてください。',
        'config-install-pg-commit' => '変更を送信',
        'config-install-user' => 'データベースユーザを作成する',
        'config-install-user-grant-failed' => 'ユーザー「$1」に許可を与えることに失敗しました。:$2',
        'config-install-tables' => 'テーブルの作成',
-       'config-install-tables-exist' => "'''è­¦å\91\8a'''ï¼\9aMediaWikiã\83\86ã\83¼ã\83\96ã\83«ã\81\8cã\80\81ã\81\99ã\81§ã\81«å­\98å\9c¨ã\81\97ã\81¦ã\81\84るようです。
+       'config-install-tables-exist' => "'''è­¦å\91\8a'''ï¼\9aMediaWikiã\83\86ã\83¼ã\83\96ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\99るようです。
 作成を飛ばします。",
        'config-install-tables-failed' => "'''エラー''':テーブルの作成が、次のエラーにより失敗しました:$1",
        'config-install-interwiki' => '既定のウィキ間テーブルを導入しています',
        'config-install-interwiki-list' => 'ファイル<code>interwiki.list</code>を見つけることができませんでした。',
-       'config-install-interwiki-exists' => "'''警告''':ウィキ間テーブルはすでに登録されているようです。
+       'config-install-interwiki-exists' => "'''警告''':ウィキ間テーブルはに登録されているようです。
 既定のテーブルを無視します。",
        'config-install-keys' => '秘密鍵を生成する',
        'config-install-sysop' => '管理者のユーザーアカウントを作成する',
@@ -9806,9 +9828,9 @@ MediaWikiのインストールに成功しました。
 <code>LocalSettings.php</code>ファイルが生成されました。
 すべての設定がそのファイルに含まれています。
 
-それをダウンロードし、ウィキをインストールした基準ディレクトリー(index.phpと同じディレクトリー)に置く必要があります。ダウンロードは自動的に開始しているはずです。
+それをダウンロードし、ウィキをインストールした基準ディレクトリ(index.phpと同じディレクトリ)に設置する必要があります。ダウンロードは自動的に開始しているはずです。
 
\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89ã\81\8cé\96\8bå§\8bã\81\97ã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89ã\82\92ã\82­ã\83£ã\83³ã\82»ã\83«ã\81\97ã\81\9få ´å\90\88ã\81¯ã\80\81以ä¸\8bのリンクからダウンロードを再開することができます:
\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89ã\81\8cé\96\8bå§\8bã\81\97ã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89ã\82\92ã\82­ã\83£ã\83³ã\82»ã\83«ã\81\97ã\81\9få ´å\90\88ã\81¯ã\80\81ä¸\8bè¨\98のリンクからダウンロードを再開することができます:
 
 $3
 
@@ -9817,7 +9839,7 @@ $3
 それを完了すれば、'''[$2 ウィキに入る]'''ことができます。",
        'config-download-localsettings' => 'LocalSettings.phpをダウンロード',
        'config-help' => 'ヘルプ',
-       'mainpagetext' => "'''MediaWikiが正常にインストールされました。'''",
+       'mainpagetext' => "'''MediaWiki のインストールに成功しました。'''",
        'mainpagedocfooter' => 'ウィキソフトウェアの使い方に関する情報は[//meta.wikimedia.org/wiki/Help:Contents 利用者案内]を参照してください。
 
 == はじめましょう ==
@@ -9994,33 +10016,60 @@ $messages['kn'] = array(
  * @author 아라
  */
 $messages['ko'] = array(
-       'config-desc' => 'MediaWiki 설치 마법사',
+       'config-desc' => '미디어위키 설치 마법사',
        'config-title' => 'MediaWiki $1 설치',
        'config-information' => '정보',
        'config-localsettings-upgrade' => '<code>LocalSettings.php</code> 파일이 감지되었습니다.
 이 설치를 업그레이드하려면 아래 상자에 <code>$wgUpgradeKey</code>의 값을 입력해주세요.
 LocalSettings.php에 찾으세요.',
-       'config-localsettings-cli-upgrade' => 'LocalSettings.php 파일이 감지되었습니다. 이 설치를 업그레이드하려면 update.php를 대신 실행하세요',
+       'config-localsettings-cli-upgrade' => 'LocalSettings.php 파일이 감지되었습니다.
+이 설치를 업그레이드하려면 update.php를 대신 실행하세요',
        'config-localsettings-key' => '업그레이드 키:',
        'config-localsettings-badkey' => '제공한 키가 잘못되었습니다.',
-       'config-upgrade-key-missing' => 'MediaWiki의 기존 설치가 감지되었습니다.
+       'config-upgrade-key-missing' => '미디어위키의 기존 설치가 감지되었습니다.
 이 설치를 업그레이드하려면 LocalSettings.php의 아래에 다음 줄을 넣으세요:
 
 $1',
+       'config-localsettings-incomplete' => '기존 LocalSettings.php가 완전하지 않은 것 같습니다.
+$1 변수가 설정되어 있지 않습니다.
+이 변수가 설정되도록 LocalSettings.php를 변경하고 "계속"을 클릭하세요.',
+       'config-localsettings-connection-error' => 'LocalSettings.php 또는 AdminSettings.php에 지정한 설정을 사용하여 데이터베이스에 연결할 때 오류가 발생했습니다. 이러한 설정을 수정하고 다시 시도하세요.
+
+$1',
+       'config-session-error' => '세션 시작 오류: $1',
+       'config-session-expired' => '세션 데이터가 만료된 것 같습니다.
+세션은 $1의 작동 시간 동안 구성됩니다.
+php.ini에 있는 <code>session.gc_maxlifetime</code>에서 설정해 이를 증가시킬 수 있습니다.
+설치 과정을 다시 시작합니다.',
+       'config-no-session' => '세션 데이터가 손실되었습니다!
+php.ini를 확인하고 <code>session.save_path</code>가 적절한 디렉토리로 설정되어 있는지 확인하세요.',
+       'config-your-language' => '설치 언어:',
+       'config-your-language-help' => '설치 과정에서 사용할 언어를 선택하세요.',
        'config-wiki-language' => '위키 언어:',
+       'config-wiki-language-help' => '주로 작성될 위키에 대한 언어를 선택하세요.',
        'config-back' => '← 뒤로',
        'config-continue' => '계속 →',
        'config-page-language' => '언어',
+       'config-page-welcome' => '미디어위키에 온 것을 환영합니다!',
        'config-page-dbconnect' => '데이터베이스에 연결',
+       'config-page-upgrade' => '기존 설치 업그레이드',
+       'config-page-dbsettings' => '데이터베이스 설정',
        'config-page-name' => '이름',
+       'config-page-options' => '옵션',
        'config-page-install' => '설치',
        'config-page-complete' => '완료!',
+       'config-page-restart' => '설치 다시 시작',
+       'config-page-readme' => '읽어보기',
+       'config-page-releasenotes' => '배포 노트',
+       'config-page-copying' => '전문',
+       'config-page-upgradedoc' => '업그레이드하기',
+       'config-page-existingwiki' => '기존 위키',
        'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
        'config-restart' => '예, 다시 시작합니다.',
        'config-welcome' => '=== 사용 환경 검사 ===
 이 환경이 미디어위키 설치에 적합할 지 기본 검사를 실행합니다.
\84¤ì¹\98 ì¤\91 ë\8f\84ì\9b\80ì\9d´ í\95\84ì\9a\94í\95\98ë\8b¤ë©´ ì\9d´ ê²\80ì\82¬ ê²°ê³¼ë¥¼ í\95¨ê»\98 ì \9cê³µí\95´ì£¼ì\85\94야 합니다.',
-       'config-copyright' => "=== ì \80ì\9e\91ê¶\8c ë°\8f ì\82¬용 약관 ===
\84¤ì¹\98 ì¤\91 ë\8f\84ì\9b\80ì\9d´ í\95\84ì\9a\94í\95\98ë\8b¤ë©´ ì\9d´ ê²\80ì\82¬ ê²°ê³¼ë¥¼ í\95¨ê»\98 ì \9cê³µí\95´ì£¼ì\96´야 합니다.',
+       'config-copyright' => "=== ì \80ì\9e\91ê¶\8c ë°\8f ì\9d´용 약관 ===
 
 $1
 
 이 프로그램이 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''.
 자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.
 
-당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+       'config-sidebar' => '* [//www.mediawiki.org 미디어위키 홈]
+* [//www.mediawiki.org/wiki/Help:Contents 사용자 가이드]
+* [//www.mediawiki.org/wiki/Manual:Contents 관리자 가이드]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
+----
+* <doclink href=Readme>읽어보기</doclink>
+* <doclink href=ReleaseNotes>배포 노트</doclink>
+* <doclink href=Copying>전문</doclink>
+* <doclink href=UpgradeDoc>업그레이드하기</doclink>',
        'config-env-good' => '환경이 확인되었습니다.
-MediaWiki를 설치할 수 있습니다.',
+미디어위키를 설치할 수 있습니다.',
        'config-env-bad' => '환경이 확인되었습니다.
-MediaWiki를 설치할 수 없습니다.',
+미디어위키를 설치할 수 없습니다.',
        'config-env-php' => 'PHP $1(이)가 설치되었습니다.',
        'config-env-php-toolow' => 'PHP $1(이)가 설치되었습니다.
 하지만 미디어위키는 PHP $2 이상이 필요합니다.',
-       'config-ctype' => "'''심각''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]에 대해 지원하여 컴파일해야 합니다.",
+       'config-unicode-using-utf8' => '유니코드 정규화에 대해 Brion Vibber의 utf8_normalize.so를 사용합니다.',
+       'config-unicode-using-intl' => '유니코드 정규화에 대해 [http://pecl.php.net/intl intl PECL 확장]을 사용합니다.',
+       'config-unicode-pure-php-warning' => "'''경고''': [http://pecl.php.net/intl intl PECL 확장]은 PHP만으로 구현하는 데에는 느려질 정도로 성능이 떨어지는 유니코드 정규화를 처리할 수 없습니다.
+높은 트래픽의 사이트에서 실행하려면 [//www.mediawiki.org/wiki/Unicode_normalization_considerations 유니코드 정규화]에 대해 약간 참고해야 합니다.",
+       'config-unicode-update-warning' => "'''경고''': 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.
+만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Unicode_normalization_considerations 업그레이드]해야합니다.",
+       'config-no-db' => '적절한 데이터베이스 드라이버를 찾을 수 없습니다! PHP에 데이터베이스 드라이버를 설치해야 합니다.
+다음 데이터베이스 유형을 지원합니다 : $1.
+
+호스팅을 공유하고 있다면 적절한 데이터베이스 드라이버를 설치하도록 호스팅 제공 업체에 문의하세요.
+PHP를 직접 컴파일할 경우 데이터베이스 클라이언트를 사용하여 활성화하도록 다시 설정하세요. 예들 들어 <code>./configure --with-mysql</code>을 사용합니다.
+데비안이나 우분트 패키지에서 PHP를 설치했다면 php-mysql 모듈도 설치해야 합니다.',
+       'config-outdated-sqlite' => "'''경고''': SQLite 필요한 최소 $2 버전보다 낮은 $1(이)가 있습니다. SQLite는 사용할 수 없습니다.",
+       'config-no-fts3' => "'''경고''': SQLite는 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일되어, 검색 기능은 백엔드에 사용할 수 없습니다.",
+       'config-register-globals' => "'''경고: PHP의 <code>[http://php.net/register_globals register_globals]</code> 옵션이 활성화되어 있습니다.'''
+'''가능하면 이를 비활성화하십시오.'''
+미디어위키는 작동하지만 서버에 잠재적인 보안 취약점에 노출됩니다.",
+       'config-magic-quotes-runtime' => "'''치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]이 활성합니다!'''
+이 옵션은 데이터를 입력하는 데 예기치 않는 손상이 일어납니다.
+설치할 수 없습니다. 또는 미디어위키가 사용하지 않는 이 옵션을 비활성화하십시오.",
+       'config-magic-quotes-sybase' => "'''치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]이 활성합니다!'''
+이 옵션은 데이터를 입력하는 데 예기치 않는 손상이 일어납니다.
+설치할 수 없습니다. 또는 미디어위키가 사용하지 않는 이 옵션을 비활성화하십시오.",
+       'config-mbstring' => "'''치명: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]이 활성합니다!'''
+이 옵션은 오류가 발생하고 데이터를 입력하는 데 예기치 않는 손상이 일어날 수 있습니다.
+설치할 수 없습니다. 또는 미디어위키가 사용하지 않는 이 옵션을 비활성화하십시오.",
+       'config-ze1' => "'''치명: [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mode]이 활성합니다!'''
+이 옵션은 미디어위키에 끔찍한 버그를 일으킵니다.
+설치할 수 없습니다. 또는 미디어위키가 사용하지 않는 이 옵션을 비활성화하십시오.",
+       'config-safe-mode' => "'''경고:''' [http://www.php.net/features.safe-mode 안전 모드]이 활성합니다!
+이는 특히 파일을 올리거나 <code>math</code>를 지원하는 데 문제가 발생할 수 있습니다.",
+       'config-xml-bad' => 'PHP의 XML 모듈이 없습니다.
+미디어위키는 이 모듈의 기능이 필요하며 이 설정에서는 작동하지 않습니다.
+Mandrake를 실행하고 있다면 php-xml 패키지를 설치하세요.',
+       'config-pcre' => 'PCRE 지원 모듈이 없는 것 같습니다.
+미디어위키는 Perl 호환 정규 표현식을 작동시켜야 합니다.',
+       'config-pcre-no-utf8' => "'''치명''': PHP의 PCRE 모듈은 RCRE_UTF8 지원 없이 컴파일된 것 같습니다.
+미디어위키가 제대로 작동하려면 UTF-8 지원이 필요합니다.",
+       'config-memory-raised' => 'PHP의 <code>memory_limit</code>는 $1이며 $2(으)로 늘리세요.',
+       'config-memory-bad' => "'''경고:''' PHP의 <code>memory_limit</code>는 $1입니다.
+이는 아마도 너무 낮은 것 같습니다.
+설치가 실패할 수 있습니다!",
+       'config-ctype' => "'''치명''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]에 대해 지원하여 컴파일해야 합니다.",
+       'config-xcache' => '[http://xcache.lighttpd.net/ XCache]가 설치되었습니다',
        'config-apc' => '[http://www.php.net/apc APC]가 설치되었습니다',
+       'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache]가 설치되었습니다',
+       'config-no-cache' => "'''경고:''' [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] 또는 [http://www.iis.net/download/WinCacheForPhp WinCache]를 찾을 수 없습니다.
+개체 캐싱이 활성화되지 않습니다.",
+       'config-mod-security' => "'''경고''': 웹 서버에 [http://modsecurity.org/ mod_security]가 허용되었습니다. 잘못 설정된 경우 미디어위키나 사용자가 임의의 콘텐츠를 게시할 수 있는 다른 소프트웨어에 대한 문제를 일으킬 수 있습니다.
+[http://modsecurity.org/documentation/ mod_security] 문서를 참고하거나 임의의 오류가 발생할 경우 호스트의 지원 요청에 문의하십시오.",
        'config-diff3-bad' => 'GNU diff3를 찾을 수 없습니다.',
        'config-imagemagick' => 'ImageMagick를 찾았습니다: <code>$1</code>.
 올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
        'config-gd' => '내장된 GD 그래픽 라이브러리를 찾았습니다.
 올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
-       'config-brokenlibxml' => '시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 MediaWiki나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.
+       'config-no-scaling' => 'GD 라이브러리나 ImageMagick를 찾을 수 없습니다.
+그림 섬네일이 비활성화될 것입니다.',
+       'config-no-uri' => "'''오류:''' 현재 URI를 확인할 수 없습니다.
+설치가 중단되었습니다.",
+       'config-no-cli-uri' => "'''경고''': 기본값을 사용하여 --scriptpath를 지정하지 않았습니다: <code>$1</code>.",
+       'config-using-server' => '"<nowiki>$1</nowiki>"(을)를 서버 이름으로 사용합니다.',
+       'config-using-uri' => '"<nowiki>$1$2</nowiki>"(을)를 서버 URL로 사용합니다.',
+       'config-uploads-not-safe' => "'''경고:''' 올리기에 대한 기본 디렉토리(<code>$1</code>)는 임의의 스크립트 실행에 취약합니다.
+미디어위키는 보안 위협에 대한 모든 올린 파일을 검사하지만, 이는 올리기를 활성화하기 전에 [//www.mediawiki.org/wiki/Manual:Security#Upload_security 이 보안 취약점을 해결할 것]을 매우 권장합니다.",
+       'config-no-cli-uploads-check' => "'''경고:''' 올리기에 대한 기본 디렉토리(<code>$1</code>)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.",
+       'config-brokenlibxml' => '시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 미디어위키나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.
 PHP 5.2.9 이후와 libxml2 2.7.3 이후로 업그레이드하세요 ([//bugs.php.net/bug.php?id=45996 PHP에 제기한 버그]).
 설치가 중단되었습니다.',
+       'config-using531' => '미디어위키는 <code>__call()</code>을 참고로 매개 변수를 포함하는 버그로 인해 PHP $1(와)과 함께 사용할 수 없습니다.
+문제를 해결하려면 PHP 5.3.2 이상로 업그레이드하거나 PHP 5.3.0으로 다운그레이드를 하세요.
+설치가 중단되었습니다.',
+       'config-suhosin-max-value-length' => 'Suhosin(수호신)이 설치되었고 $1 바이트로 GET 매개 변수 길이를 제한하고 있습니다. 미디어위키의 ResourceLoader 구성 요소는 이 제한을 해결하지만 성능이 저하됩니다. 가능하면 php.ini의 suhosin.get.max_value_length에 1024 이상으로 설정하고 LocalSettings.php의 $wgResourceLoaderMaxQueryLength에 같은 값을 설정해야 합니다.',
        'config-db-type' => '데이터베이스 종류:',
        'config-db-host' => '데이터베이스 호스트:',
        'config-db-host-help' => '데이터베이스 서버가 다른 서버에 있을 경우 여기에 호스트 이름이나 IP 주소를 입력하세요.
@@ -10064,10 +10184,10 @@ PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력
 이는 공백이 없어야 합니다.
 
 웹 호스팅을 공유해 사용하는 경우 호스팅 제공 업체도 당신에게 제어판을 통해 데이터베이스를 사용하거나 만들 수 있도록 특정 데이터베이스 이름을 제공합니다.',
-       'config-db-name-oracle' => '데이터베이스 스마:',
+       'config-db-name-oracle' => '데이터베이스 스마:',
        'config-db-account-oracle-warn' => '데이터베이스 백엔드로 오라클을 설치하기 위해 지원하는 세 가지 시나리오가 있습니다:
 
\84¤ì¹\98 ê³¼ì \95ì\9d\98 ì\9d¼ë¶\80ë¡\9c ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ê³\84ì \95ì\9d\84 ë§\8cë\93¤ë ¤ë©´ ì\84¤ì¹\98를 ì\9c\84í\95´ ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ê³\84ì \95ì\9c¼ë¡\9c SYSDBA ì\97­í\95 ì\9d\84 ê°\80ì§\84 ê³\84ì \95ì\9d\84 ì \9cê³µí\95\98ê³  ì\9b¹ ì\95¡ì\84¸ì\8a¤ ê³\84ì \95ì\97\90 ë\8c\80í\95´ ì\9b\90í\95\98ë\8a\94 ì\9e\90격 ì¦\9dëª\85ì\9d\84 ì§\80ì \95í\95\98ì\84¸ì\9a\94, ê·¸ë \87ì§\80 ì\95\8aì\9c¼ë©´ ì\88\98ë\8f\99ì\9c¼ë¡\9c ì\9b¹ ì\95¡ì\84¸ì\8a¤ ê³\84ì \95ì\9d\84 ë§\8cë\93¤ ì\88\98 ì\9e\88ì\9c¼ë©° (í\95\84ì\9a\94í\95\9c ê²½ì\9a° ê¶\8cí\95\9c ì\8a¤í\82¤ë§\88 ê°\9c체를 ë§\8cë\93¤ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤) ë\98\90ë\8a\94 ë\8b¤ë¥¸ ê³\84ì \95 ë\91\90 ê°\9c를 ë§\8cë\93¤ê³  ê¶\8cí\95\9cì\9d\84 ê°\80ì§\84 í\95\98ë\82\98ì\9d\98 ì\9b¹ ì\95¡ì\84¸ì\8a¤ë¥¼ 위한 제한된 하나를 제공할 수 있습니다.
\84¤ì¹\98 ê³¼ì \95ì\9d\98 ì\9d¼ë¶\80ë¡\9c ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ê³\84ì \95ì\9d\84 ë§\8cë\93¤ë ¤ë©´ ì\84¤ì¹\98를 ì\9c\84í\95´ ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ ê³\84ì \95ì\9c¼ë¡\9c SYSDBA ì\97­í\95 ì\9d\84 ê°\80ì§\84 ê³\84ì \95ì\9d\84 ì \9cê³µí\95\98ê³  ì\9b¹ ì \91ê·¼ ê³\84ì \95ì\97\90 ë\8c\80í\95´ ì\9b\90í\95\98ë\8a\94 ì\9e\90격 ì¦\9dëª\85ì\9d\84 ì§\80ì \95í\95\98ì\84¸ì\9a\94, ê·¸ë \87ì§\80 ì\95\8aì\9c¼ë©´ ì\88\98ë\8f\99ì\9c¼ë¡\9c ì\9b¹ ì \91ê·¼ ê³\84ì \95ì\9d\84 ë§\8cë\93¤ ì\88\98 ì\9e\88ì\9c¼ë©° (í\95\84ì\9a\94í\95\9c ê²½ì\9a° ê¶\8cí\95\9c ì\8a¤í\82¤ë§\88 ê°\9c체를 ë§\8cë\93¤ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤) ë\98\90ë\8a\94 ë\8b¤ë¥¸ ê³\84ì \95 ë\91\90 ê°\9c를 ë§\8cë\93¤ê³  ê¶\8cí\95\9cì\9d\84 ê°\80ì§\84 í\95\98ë\82\98ì\9d\98 ì\9b¹ ì \91ê·¼ì\9d\84 위한 제한된 하나를 제공할 수 있습니다.
 
 필요한 권한을 가진 계정을 만드는 스크립트는 이 설치의 "maintenance/oracle/" 디렉토리에서 찾을 수 있습니다. 제한된 계정을 사용하면 기본 계정으로 모든 관리 기능을 비활성화할 것을 염두해 두십시오.',
        'config-db-install-account' => '설치를 위한 사용자 계정',
@@ -10076,15 +10196,15 @@ PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력
        'config-db-password-empty' => '새 데이터베이스 사용자의 비밀번호를 입력하세요: $1.
 비밀번호 없이 사용자를 만들 수도 있지만 이는 안전하지 않습니다.',
        'config-db-install-username' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름을 입력하세요.
-이는 MediaWiki 계정의 사용자 이름이 아닌 데이터베이스에 대한 사용자 이름입니다.',
-       'config-db-install-password' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 비밀번호을 입력하세요. 이는 MediaWiki 계정의 비밀번호가 아닌 데이터베이스에 대한 비밀번호입니다.',
+이는 미디어위키 계정의 사용자 이름이 아닌 데이터베이스에 대한 사용자 이름입니다.',
+       'config-db-install-password' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 비밀번호을 입력하세요. 이는 미디어위키 계정의 비밀번호가 아닌 데이터베이스에 대한 비밀번호입니다.',
        'config-db-install-help' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름과 비밀번호를 입력하세요.',
        'config-db-account-lock' => '정상적으로 작동하는 동안 같은 사용자 이름과 비밀번호를 사용함',
        'config-db-wiki-account' => '정상적인 작동을 위한 사용자 계정',
        'config-db-wiki-help' => '정상적인 위키 작업 동안 데이터베이스에 연결하는 데 사용할 사용자 이름과 비밀 번호를 입력하세요.
 계정이 존재하지 않고 설치 계정에 충분한 권한이 있는 경우 이 사용자 계정은 위키를 작동하는 데 필요한 최소 권한으로 만들어집니다.',
        'config-db-prefix' => '데이터베이스 테이블 접두어:',
-       'config-db-prefix-help' => '여러 위키 사이 또는 MediaWiki와 다른 웹 응용 프로그램 사이에서 하나의 데이터베이스를 공유해야 하는 경우, 충돌을 피하기 위해 모든 테이블 이름에 접두어를 추가하도록 선택할 수 있습니다.
+       'config-db-prefix-help' => '여러 위키 사이 또는 미디어위키와 다른 웹 응용 프로그램 사이에서 하나의 데이터베이스를 공유해야 하는 경우, 충돌을 피하기 위해 모든 테이블 이름에 접두어를 추가하도록 선택할 수 있습니다.
 공백을 사용하지 마세요.
 
 이 필드는 일반적으로 비어있습니다.',
@@ -10094,45 +10214,158 @@ PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력
        'config-charset-mysql4' => 'MySQL 4.0 UTF-8 하위 호환성',
        'config-charset-help' => "'''경고:''' MySQL 4.1에서 '''UTF-8 하위 호환성'''을 사용하고 나서 <code>mysqldump</code>로 데이터베이스에 백업한다면 이는 모든 ASCII가 아닌 문자를 파괴하고 손상한 백업을 되돌릴 수 없습니다!
 
-'''바이너리 모드'''에서는 MediaWiki는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.
+'''바이너리 모드'''에서는 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.
 이는 MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.
 '''UTF-8 모드'''에서는 MySQL은 데이터를 설정하는 어떤 문자열인지를 알 것이며, 표현하고 적절하게 그것을 변환할 수 있지만
-[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 기본 다국어 공간] 상의 문자를 저장하지 못하게 될 수 있습니다.",
+[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 기본 다국어 범위] 상의 문자를 저장하지 못하게 될 수 있습니다.",
+       'config-mysql-old' => 'MySQL $1 이상이 필요하나 $2(이)가 있습니다.',
        'config-db-port' => '데이터베이스 포트:',
-       'config-db-schema' => 'MediaWiki에 대한 스케마:',
-       'config-db-schema-help' => '이 스케마는 보통 괜찮습니다.
-필요로 알고 있을 경우에만 이를 바꿉니다.',
+       'config-db-schema' => '미디어위키에 대한 스키마:',
+       'config-db-schema-help' => '이 스키마는 보통 괜찮습니다.
+필요로 알고 있을 경우에만 이를 바꾸세요.',
+       'config-pg-test-error' => "'''$1''' 데이터베이스에 연결할 수 없습니다: $2",
+       'config-sqlite-dir' => 'SQLite 데이터 디렉토리:',
+       'config-sqlite-dir-help' => 'SQLite는 하나의 파일에 모든 데이터를 저장합니다.
+
+제공하는 디렉토리는 설치하는 동안 웹 서버에 의해 쓸 수 있어야 합니다.
+
+PHP 파일이 있는 곳을 우리가 이를 맡길 수 없는 이유는 웹을 통해 접근할 수 없다는 것입니다.
+
+설치 마법사가 이과 함께 .htaccess 파일을 만들지만 거기서 실패하면 누군가는 원시 데이터베이스에 접근하는 데 실패합니다.
+이는 원시 사용자 데이터(이메일 주소, 암호 해시) 뿐만 아니라 삭제된 개정판과 위키의 다른 제한된 데이터를 포함합니다.
+
+<code>/var/lib/mediawiki/yourwiki</code>와 같이 모두 다른 곳에서 데이터베이스를 넣어보도록 하세요.',
+       'config-oracle-def-ts' => '기본 테이블공간:',
+       'config-oracle-temp-ts' => '임시 테이블공간:',
+       'config-type-oracle' => '오라클',
+       'config-type-ibm_db2' => 'IBM DB2',
+       'config-support-info' => '미디어위키는 다음의 데이터베이스 시스템을 지원합니다:
+
+$1
+
+데이터베이스 시스템이 표시되지 않을 때 아래에 나열된 다음 지원을 활성화하려면 당신은 위의 링크된 지시에 따라 사용해볼 수도 있습니다.',
+       'config-support-mysql' => '* $1은 미디어위키의 기본 대상으로 가장 잘 지원합니다. ([http://www.php.net/manual/en/mysql.installation.php MySQL을 지원하여 PHP를 컴파일하는 방법])',
+       'config-support-postgres' => '* $1은 MySQL의 대안으로 인기있는 오픈 소스 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pgsql.installation.php PostgreSQL을 지원하여 PHP를 컴파일하는 방법]) 몇가지 사소한 해결하지 못한 버그가 있을 수 있으며, 이를 제작 환경에서 사용하지 않는 것이 좋습니다.',
+       'config-support-sqlite' => '* $1는 매우 잘 지원하는 가벼운 데이터베이스 시스템입니다. ([http://www.php.net/manual/en/pdo.installation.php SQLite를 지원하여 PHP를 컴파일하는 방법], PDO 사용)',
+       'config-support-oracle' => '* $1은 상용 엔터프라이스 데이터베이스입니다. ([http://www.php.net/manual/en/oci8.installation.php OCI8을 지원하여 PHP를 컴파일하는 방법])',
+       'config-support-ibm_db2' => '* $1는 상용 엔터프라이즈 데이터베이스입니다.',
        'config-header-mysql' => 'MySQL 설정',
        'config-header-postgres' => 'PostgreSQL 설정',
        'config-header-sqlite' => 'SQLite 설정',
        'config-header-oracle' => '오라클 설정',
        'config-header-ibm_db2' => 'IBM DB2 설정',
+       'config-invalid-db-type' => '잘못된 데이터베이스 종류',
+       'config-missing-db-name' => '"데이터베이스 이름"에 대한 값을 입력해야 합니다',
+       'config-missing-db-host' => '"데이터베이스 호스트"에 대한 값을 입력해야 합니다',
+       'config-missing-db-server-oracle' => '"데이터베이스 TNS"에 대한 값을 입력해야 합니다',
+       'config-invalid-db-server-oracle' => '"$1" 데이터베이스 TNS가 잘못됐습니다.
+ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
+       'config-invalid-db-name' => '"$1" 데이터베이스 이름이 잘못되었습니다.
+ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
+       'config-invalid-db-prefix' => '"$1" 데이터베이스 접두어가 잘못됐습니다.
+ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
        'config-connection-error' => '$1.
 
 호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.',
+       'config-invalid-schema' => '미디어위키 "$1"에 대한 스키마가 잘못됐습니다.
+ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
        'config-db-sys-create-oracle' => '설치 마법사는 새 계정을 만들기 위한 SYSDBA 계정만을 지원합니다.',
        'config-db-sys-user-exists-oracle' => '"$1" 사용자 계정이 이미 존재합니다. SYSDBA는 새 계정을 만드는 데에만 사용할 수 있습니다!',
+       'config-postgres-old' => 'PostgreSQL $1 이상이 필요하나 $2(이)가 있습니다.',
+       'config-sqlite-name-help' => '위키를 식별하기 위한 이름을 선택하세요.
+공백이나 하이픈을 사용하지 마십시오.
+이는 SQLite 데이터 파일 이름에 사용됩니다.',
+       'config-sqlite-parent-unwritable-group' => '<code><nowiki>$1</nowiki></code> 데이터 디렉토리를 만들 수 없으며 <code><nowiki>$2</nowiki></code> 상위 디렉토리에 웹 서버에 의해 쓸 수 없기 때문입니다.
+
+설치 마법사는 웹 서버로 실행중인 사용자를 결정할 수 없습니다.
+계속하려면 이를 쓸 수 있는 <code><nowiki>$3</nowiki></code> 디렉토리를 만드세요.
+유닉스/리눅스 시스템에서의 수행:
+
+<pre>cd $2
+mkdir $3
+chgrp $4 $3
+chmod g+w $3</pre>',
+       'config-sqlite-parent-unwritable-nogroup' => '<code><nowiki>$1</nowiki></code> 데이터 디렉토리를 만들 수 없으며 <code><nowiki>$2</nowiki></code> 상위 디렉토리에 웹 서버에 의해 쓸 수 없기 때문입니다.
+
+설치 마법사는 웹 서버로 실행중인 사용자를 결정할 수 없습니다.
+계속하려면 이(와 기타!)를 전역으로 쓸 수 있는 <code><nowiki>$3</nowiki></code> 디렉토리를 만드세요.
+유닉스/리눅스 시스템에서의 수행:
+
+<pre>cd $2
+mkdir $3
+chmod a+w $3</pre>',
+       'config-sqlite-mkdir-error' => '"$1" 데이터 디렉토리를 만드는 중 오류났습니다.
+경로를 확인하고 다시 시도하세요.',
+       'config-sqlite-dir-unwritable' => '"$1" 디렉토리에 쓸 수 없습니다.
+웹 서버를 쓸 수 있도록 권한을 바꾸고 다시 시도하세요.',
+       'config-sqlite-connection-error' => '$1.
+
+호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.',
        'config-sqlite-readonly' => '파일 <code>$1</code>은 쓰기가 불가능합니다.',
-       'config-can-upgrade' => "이 데이터베이스에 MediaWiki 테이블이 있습니다.
-MediaWiki $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
-       'config-db-web-account' => '웹 액세스를 위한 데이터베이스 계정',
-       'config-db-web-help' => '위키의 일반적인 작업 중에 데이터베이스 서버에 연결하는 데 사용할 웹 서버에 대한 계정 이름과 비밀번호를 선택합니다.',
-       'config-db-web-account-same' => '설치를 위해 같은 계정을 사용',
-       'config-db-web-create' => '이 계정이 아직 존재하지 않을 경우 계정을 만들기',
+       'config-sqlite-cant-create-db' => '<code>$1</code> 데이터베이스 파일을 만들 수 없습니다.',
+       'config-sqlite-fts3-downgrade' => 'PHP가 FTS3 지원이 없어졌습니다. 테이블을 다운그레이드하세요.',
+       'config-can-upgrade' => "이 데이터베이스에 미디어위키 테이블이 있습니다.
+미디어위키 $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
+       'config-upgrade-done' => "업그레이드가 완료되었습니다.
+
+이제 [$1 위키를 시작]할 수 있습니다.
+
+만약 <code>LocalSettings.php</code> 파일을 다시 만들기를 원하면 아래의 버튼을 클릭하세요.
+이것은 위키에 문제가 있지 않는 한 '''권장하지 않습니다'''.",
+       'config-upgrade-done-no-regenerate' => '업그레이드가 완료되었습니다.
+
+이제 [$1 위키를 시작]할 수 있습니다.',
+       'config-regenerate' => 'LocalSettings.php 다시 만들기 →',
+       'config-show-table-status' => 'SHOW TABLE STATUS 쿼리 실패!',
+       'config-unknown-collation' => "'''경고:''' 데이터베이스가 인식하지 않는 정렬을 사용하고 있습니다.",
+       'config-db-web-account' => '웹 접근을 위한 데이터베이스 계정',
+       'config-db-web-help' => '위키의 일반적인 작업 중에 데이터베이스 서버에 연결하는 데 사용할 웹 서버에 대한 계정 이름과 비밀번호를 선택하세요.',
+       'config-db-web-account-same' => '설치를 위해 같은 계정 사용',
+       'config-db-web-create' => '이 계정이 아직 존재하지 않을 경우 계정 만들기',
        'config-db-web-no-create-privs' => '설치를 위해 지정한 계정은 계정을 만들 수 있는 충분한 권한이 없습니다.
 여기서 지정한 계정은 이미 존재해야 합니다.',
+       'config-mysql-engine' => '스토리지 엔진:',
+       'config-mysql-innodb' => 'InnoDB',
+       'config-mysql-myisam' => 'MyISAM',
+       'config-mysql-myisam-dep' => "'''경고''': 미디어위키와 함께 사용하도록 권장하지 않는 MySQL에 대한 스토리지 엔진으로 MyISAM을 선택하였습니다. 이유는:
+* 이는 테이블이 잠겨있어 동시성을 거의 지원하지 않습니다
+* 이는 다른 엔진보다 손상이 더 자주 발생합니다.
+* 미디어위키 바탕 코드가 항상 정상적으로 MyISAM을 처리하지 않습니다.
+
+MySQL 설치가 InnoDB를 지원한다면 그 선택 대신에 InnoDB를 선택할 것을 매우 권장합니다.
+MySQL 설치가 InnoDB를 지원하지 않는다면 아마도 업그레이드를 해야 할 수도 있습니다.",
+       'config-mysql-engine-help' => "'''InnoDB'''는 동시적인 지원에 좋기 때문에 거의 항상 최고의 옵션입니다.
+
+'''MyISAM'''은 단일 사용자 또는 읽기 전용 설치에 빠를 수 있습니다.
+MyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실될 수 있습니다.",
+       'config-mysql-charset' => '데이터베이스 문자 집합:',
+       'config-mysql-binary' => '바이너리',
        'config-mysql-utf8' => 'UTF-8',
-       'config-ibm_db2-low-db-pagesize' => "당신의 DB2 데이터베이스가 부족한 페이지 크기가 기본 테이블 공간에 있습니다. 페이지 크기는 '''32K''' 이상이어야 합니다.",
-       'config-site-name' => '위키의 이름:',
-       'config-site-name-help' => '이것이 브라우저 제목 표시줄과 다른 여러 곳에 나타날 것입니다.',
+       'config-mysql-charset-help' => "'''바이너리 모드'''에서는 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.
+이는 MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.
+'''UTF-8 모드'''에서는 MySQL은 데이터를 설정하는 어떤 문자열인지를 알 것이며, 표현하고 적절하게 그것을 변환할 수 있지만
+[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 기본 다국어 범위] 상의 문자를 저장하지 못하게 될 수 있습니다.",
+       'config-ibm_db2-low-db-pagesize' => "당신의 DB2 데이터베이스에 부족한 페이지 크기가 기본 테이블 공간에 있습니다. 페이지 크기는 '''32K''' 이상이어야 합니다.",
+       'config-site-name' => '위키 이름:',
+       'config-site-name-help' => '이는 브라우저 제목 표시줄과 다른 여러 곳에 나타날 것입니다.',
        'config-site-name-blank' => '사이트 이름을 입력하세요.',
        'config-project-namespace' => '프로젝트 이름공간:',
        'config-ns-generic' => '프로젝트',
+       'config-ns-site-name' => '위키 이름과 같은 이름: $1',
+       'config-ns-other' => '기타 (지정)',
+       'config-ns-other-default' => '내위키',
+       'config-project-namespace-help' => '위키백과의 예를 따라서, 많은 위키는 "프로젝트 이름공간"에 그들의 콘텐츠 페이지에서 그들의 정책 페이지는 별도로 보관합니다.
+이 이름공간에 있는 모든 페이지의 제목은 여기서 지정할 수 있는 특정 접두어로 시작합니다.
+보통 이 접두어는 위키의 이름에서 파생되지만, 이는 "#" 또는 ":"와 같은 특수 문자를 포함할 수 없습니다.',
+       'config-ns-invalid' => '특정 "<nowiki>$1</nowiki>" 이름공간이 잘못되었습니다.
+다른 프로젝트 이름공간을 지정하세요.',
+       'config-ns-conflict' => '특정 "<nowiki>$1</nowiki>" 이름공간이 기본 미디어위키 이름공간과 충돌합니다.
+다른 프로젝트 이름공간을 지정하세요.',
        'config-admin-box' => '관리자 계정',
        'config-admin-name' => '사용자 이름:',
        'config-admin-password' => '비밀번호:',
        'config-admin-password-confirm' => '비밀번호 확인:',
-       'config-admin-help' => '"í\99\8d길ë\8f\99"ê³¼ ê°\99ì\9d´ ì\97¬ê¸°ì\97\90 ì\9b\90í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84ì\9d\84 ì\9e\85ë ¥í\95©ë\8b\88ë\8b¤.
+       'config-admin-help' => '"í\99\8d길ë\8f\99"ê³¼ ê°\99ì\9d´ ì\97¬ê¸°ì\97\90 ì\9b\90í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84ì\9d\84 ì\9e\85ë ¥í\95\98ì\84¸ì\9a\94.
 이는 위키에 로그인하는 데 사용되는 이름입니다.',
        'config-admin-name-blank' => '관리자의 사용자 이름을 입력하세요.',
        'config-admin-name-invalid' => '특정 "<nowiki>$1</nowiki>" 사용자 이름이 잘못되었습니다.
@@ -10145,85 +10378,161 @@ MediaWiki $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
        'config-admin-error-user' => '"<nowiki>$1</nowiki>" 이름의 관리자를 만드는 중 내부 오류가 발생했습니다.',
        'config-admin-error-password' => '"<nowiki>$1</nowiki>" 관리자의 비밀번호를 설정하는 중 내부 오류가 발생했습니다: <pre>$2</pre>',
        'config-admin-error-bademail' => '이메일 주소를 잘못 입력하였습니다.',
-       'config-almost-done' => '거의 다 됐습니다! 이제 남은 설정을 생략하고 지금 위키를 설치할 수 있습니다.',
+       'config-subscribe' => '[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 배포 발표 메일링 리스트]에 가입합니다.',
+       'config-subscribe-help' => '이는 중요한 보안 알림을 포함한 배포 알림에 대해 사용되는 로우 볼륨 메일링 리스트입니다.
+당신이 이를 구독하고 나서 새 버전이 나올 때 미디어위키 설치를 업데이트해야합니다.',
+       'config-subscribe-noemail' => '이메일 주소를 제공하지 않고 배포 발표 메일링 리스트에 가입하려 합니다.
+메일링 리스트에 가입하고자 할 경우 이메일 주소를 제공하세요.',
+       'config-almost-done' => '거의 다 완료했습니다! 이제 남은 설정을 생략하고 지금 바로 위키를 설치할 수 있습니다.',
+       'config-optional-continue' => '더 많은 질문을 물어보세요.',
        'config-optional-skip' => '지겨워요, 그냥 위키를 설치할래요.',
+       'config-profile' => '사용자 권한 프로필:',
        'config-profile-wiki' => '평범한 위키',
        'config-profile-no-anon' => '계정 생성 필요',
        'config-profile-fishbowl' => '승인된 편집자만 이용 가능',
        'config-profile-private' => '비공개 위키',
+       'config-profile-help' => "위키는 당신이 가능한 한 많은 사람들이 편집하도록 할 때 최고로 적합합니다.
+미디어위키에서는 최근 바뀜을 검토하고, 선하거나 악의적인 사용자에 의해 수행되는 모든 손실을 되돌리는 것이 쉽습니다.
+
+그러나 많은 사람들이 미디어위키가 다양한 역할의 유용하지만, 때로는 그것이 위키 방식의 장점을 모두 설득하기 쉽지 않음을 발견했습니다.
+그래서 선택할 수 있습니다.
+
+'''{{int:config-profile-wiki}}'''는 로그인하지 않고도 누구나 편집할 수 있습니다.
+'''{{int:config-profile-no-anon}}'''는 추가적으로 필요한 책임을 제공하지만, 기존의 기여자를 망칠 수도 있습니다.
+
+'''{{int:config-profile-fishbowl}}''' 같은 경우는 승인된 사용자만 편집할 수 있지만, 대중은 역사를 포함하여 페이지를 볼 수 있습니다. '''{{int:config-profile-private}}'''는 승인된 사용자만 같은 그룹에서 편집할 수 있고 볼 수 있습니다.
+
+더 복잡한 사용자 권한을 설정하여 설치한 후 사용할 수 있도록 하려면 [//www.mediawiki.org/wiki/Manual:User_rights 관련 매뉴얼 항목]을 참고하세요.",
        'config-license' => '저작권 및 라이선스:',
+       'config-license-none' => '라이선스 바닥글 없음',
        'config-license-cc-by-sa' => '크리에이티브 커먼즈 저작자표시-동일조건변경허락',
        'config-license-cc-by' => '크리에이티브 커먼즈 저작자표시',
        'config-license-cc-by-nc-sa' => '크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락',
-       'config-license-cc-0' => '크리에이티브 커먼즈 CC0 (퍼블릭 도메인)',
+       'config-license-cc-0' => '크리에이티브 커먼즈 제로 (퍼블릭 도메인)',
        'config-license-gfdl' => 'GNU 자유 문서 사용 허가서 1.3 이상',
        'config-license-pd' => '퍼블릭 도메인',
        'config-license-cc-choose' => '다른 크리에이티브 커먼즈 라이선스 선택',
+       'config-license-help' => '많은 공개 위키는 모든 기여를 [http://freedomdefined.org/Definition 자유 라이선스] 하에 넣습니다.
+이럴 경우 커뮤니티 소유권의 이해를 할 수 있도록 하고 장기적인 기여를 장려합니다.
+이는 일반적으로 개인 또는 회사 위키에 대해서는 필요하지 않습니다.
+
+위키백과의 텍스트를 사용할 수 있도록 하고 위키백과가 위키에서 복사한 텍스트를 사용할 수 있도록 원한다면 크리에이티브 커먼즈 저작자표시-동일조건변경허락으로 선택해야 합니다.
+
+위키백과는 이전에 GNU 자유 문서 사용 허가서를 사용했습니다.
+GFDL은 유효한 라이선스이지만 이는 이해하기 어렵습니다.
+이는 GFDL 하에 라이선스 내용을 재사용하는 것도 어렵습니다.',
        'config-email-settings' => '이메일 설정',
-       'config-enable-email' => 'ë°\9cì\8b  ì\9d´ë©\94ì\9d¼ í\97\88ì\9a©',
-       'config-enable-email-help' => '이메일을 작동하려면 [http://www.php.net/manual/en/mail.configuration.php PHP의 메일 설정]을 올바르게 구성해야 합니다.
+       'config-enable-email' => 'ë°\9cì\8b  ì\9d´ë©\94ì\9d¼ í\99\9cì\84±í\99\94',
+       'config-enable-email-help' => '이메일을 작동하려면 [http://www.php.net/manual/en/mail.configuration.php PHP의 메일 설정]을 올바르게 설정해야 합니다.
 이메일 기능을 사용하지 않으려면 이를 비활성화할 수 있습니다.',
-       'config-email-user' => 'ì\82¬ì\9a©ì\9e\90ì\99\80 ì\82¬ì\9a©ì\9e\90 ê°\84 ì\9d´ë©\94ì\9d¼ í\97\88ì\9a©',
-       'config-email-user-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ëª¨ë\93  ì\82¬ì\9a©ì\9e\90ê°\80 ì\9d´ë©\94ì\9d¼ì\9d\84 ì\84\9cë¡\9c ë³´ë\82´ë\8f\84ë¡\9d í\97\88ì\9a©합니다.',
-       'config-email-usertalk' => 'ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9c ì\95\8c림 í\97\88ì\9a©',
-       'config-email-usertalk-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9cì\9d\98 ë³\80ê²½ ì\95\8c림ì\9d\84 ë°\9bë\8f\84ë¡\9d í\97\88ì\9a©합니다.',
-       'config-email-watchlist' => '주ì\8b\9c문ì\84\9c ëª©ë¡\9d ì\95\8c림 í\97\88ì\9a©',
-       'config-email-watchlist-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ê°\80 ì£¼ì\8b\9cí\95\9c ë¬¸ì\84\9cì\97\90 ë\8c\80í\95\9c ì\95\8c림ì\9d\84 ë°\9bë\8f\84ë¡\9d í\97\88ì\9a©합니다.',
-       'config-email-auth' => 'ì\9d´ë©\94ì\9d¼ ì\9d¸ì¦\9d í\97\88ì\9a©',
-       'config-email-auth-help' => "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 변경할 때마다 그들에게 보낸 링크를 사용하여 확인해야 합니다.
+       'config-email-user' => 'ì\82¬ì\9a©ì\9e\90ì\99\80 ì\82¬ì\9a©ì\9e\90 ê°\84 ì\9d´ë©\94ì\9d¼ í\99\9cì\84±í\99\94',
+       'config-email-user-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ëª¨ë\93  ì\82¬ì\9a©ì\9e\90ê°\80 ì\9d´ë©\94ì\9d¼ì\9d\84 ì\84\9cë¡\9c ë³´ë\82´ë\8f\84ë¡\9d í\99\9cì\84±í\99\94합니다.',
+       'config-email-usertalk' => 'ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9c ì\95\8c림 í\99\9cì\84±í\99\94',
+       'config-email-usertalk-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9cì\9d\98 ë³\80ê²½ ì\95\8c림ì\9d\84 ë°\9bë\8f\84ë¡\9d í\99\9cì\84±í\99\94합니다.',
+       'config-email-watchlist' => '주ì\8b\9c문ì\84\9c ëª©ë¡\9d ì\95\8c림 í\99\9cì\84±í\99\94',
+       'config-email-watchlist-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ê°\80 ì£¼ì\8b\9cí\95\9c ë¬¸ì\84\9cì\97\90 ë\8c\80í\95\9c ì\95\8c림ì\9d\84 ë°\9bë\8f\84ë¡\9d í\99\9cì\84±í\99\94합니다.',
+       'config-email-auth' => 'ì\9d´ë©\94ì\9d¼ ì\9d¸ì¦\9d í\99\9cì\84±í\99\94',
+       'config-email-auth-help' => "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 변경할 때마다 그들에게 보낸 링크를 사용하여 이메일 주소를 확인해야 합니다.
 인증된 이메일 주소만 다른 사용자로부터의 이메일이나 변경 알림 이메일을 받을 수 있습니다.
-이메일 기능의 남용 가능성이 있기 때문에 이 옵션을 설정하는 것은 공 위키에서 '''권장'''합니다.",
+이메일 기능의 남용 가능성이 있기 때문에 이 옵션을 설정하는 것은 공 위키에서 '''권장'''합니다.",
        'config-email-sender' => '반송 이메일 주소',
-       'config-email-sender-help' => 'ë°\9cì\8b í\95\9c ì\9d´ë©\94ì\9d¼ì\97\90 ë\8c\80í\95\9c ë°\98ì\86¡ ì£¼ì\86\8cë¡\9c ì\82¬ì\9a©í\95  ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\9e\85ë ¥í\95©ë\8b\88ë\8b¤.
+       'config-email-sender-help' => 'ë°\9cì\8b í\95\9c ì\9d´ë©\94ì\9d¼ì\97\90 ë\8c\80í\95\9c ë°\98ì\86¡ ì£¼ì\86\8cë¡\9c ì\82¬ì\9a©í\95  ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\9e\85ë ¥í\95\98ì\84¸ì\9a\94.
 이는 반송할 때 보내는 주소입니다.
 대부분의 메일 서버는 적어도 도메인 이름 부분은 유효합니다.',
+       'config-upload-settings' => '그림과 파일 올리기',
+       'config-upload-enable' => '파일 올리기 활성화',
+       'config-upload-help' => '파일 올리기는 서버에 잠재적인 보안 위험에 쉽게 노출될 수 있습니다.
+자세한 내용은 매뉴얼의 [//www.mediawiki.org/wiki/Manual:Security 보안 문단]을 읽어보세요.
+
+파일 올리기를 활성화하려면 미디어위키의 루트 디렉토리에 있는 <code>images</code> 하위 디렉토리에서 웹 서버가 기록할 수 있도록 모드를 변경합니다.
+그 다음 이 옵션을 활성화합니다.',
+       'config-upload-deleted' => '삭제된 파일에 대한 디렉토리:',
+       'config-upload-deleted-help' => '삭제된 파일을 보관할 디렉토리를 선택하세요.
+이상적으로 웹에서 접근할 수 없게 해야 합니다.',
        'config-logo' => '로고 URL:',
        'config-logo-help' => '미디어위키 기본 스킨은 사이드바 메뉴 위에 135×160픽셀의 로고를 포함하고 있습니다.
-적당한 크기로 이미지를 올리고 URL을 여기 적어주세요.
+적당한 크기로 이미지를 올리고 URL을 여기에 입력하세요.
+
+로고 사용을 원하지 않으면 이 상자를 비워 두십시오.',
+       'config-instantcommons' => '인스턴트 공용 활성화',
+       'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons 인스턴트 공용]은 [//commons.wikimedia.org/ 위키미디어 공용] 사이트에서 찾을 수 있는 그림, 소리 및 다른 미디어를 위키에서 사용할 수 있도록 하는 기능입니다.
+이렇게 하려면 미디어위키가 인터넷에 접근해야합니다.
 
-로고 사용을 원치 않으면 이 상자를 비워 두십시오.',
+위키미디어 공용 외에 기타 위키를 설정하는 방법에 대한 지침을 포함한 기능에 대한 자세한 내용은 [//mediawiki.org/wiki/Manual:$wgForeignFileRepos 매뉴얼]을 참고하세요.',
        'config-cc-error' => '크리에이티브 커먼즈 라이선스 선택기에 결과가 없습니다.
 수동으로 라이선스 이름을 입력하세요.',
        'config-cc-again' => '다시 선택...',
        'config-cc-not-chosen' => '원하는 크리에이티브 커먼즈 라이선스를 선택하고 "진행"을 클릭하세요.',
        'config-advanced-settings' => '고급 설정',
        'config-cache-options' => '개체 캐싱을 위한 설정:',
-       'config-cache-help' => '개체 캐싱은 자주 사용하는 데이터를 캐싱하여 MediaWiki의 속도를 개선하는 데 사용합니다.
+       'config-cache-help' => '개체 캐싱은 자주 사용하는 데이터를 캐싱하여 미디어위키의 속도를 개선하는 데 사용합니다.
 큰 사이트의 규모에는 이를 많이 사용하도록 권장하고 있으며, 소규모 사이트들도 물론 이익을 볼 수 있습니다.',
        'config-cache-none' => '캐시하지 않음 (기능적으로는 삭제되지 않지만 큰 위키 사이트에 속도에 영향을 받을 수 있습니다)',
        'config-cache-accel' => 'PHP 개체 캐싱 (APC, XCache 또는 WinCache)',
-       'config-cache-memcached' => 'Memcached 사용 (추가적인 설정 및 구성이 필요합니다)',
+       'config-cache-memcached' => 'Memcached 사용 (추가적인 설치와 설정이 필요합니다)',
+       'config-memcached-servers' => 'Memcached 서버:',
+       'config-memcached-help' => 'Memcached의 사용하기 위한 IP 주소 목록입니다.
+한 줄에 하나씩 사용할 포트를 지정해야 합니다. 예를 들어 :
+ 127.0.0.1:11211
+ 192.168.1.25:1234',
+       'config-memcache-needservers' => '캐시 종류로 Memcached를 선택했지만 어떠한 서버도 지정하지 않았습니다.',
+       'config-memcache-badip' => 'Memcached에 대해 잘못된 IP 주소를 입력했습니다: $1.',
+       'config-memcache-noport' => 'Memcached 서버에 사용할 포트를 지정하지 않았습니다: $1.
+포트를 모를 경우 기본값은 11211입니다.',
+       'config-memcache-badport' => 'Memcached 포트 번호는 $1(와)과 $2 사이여야 합니다.',
        'config-extensions' => '확장 기능',
        'config-extensions-help' => '위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.
 
 이들은 추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.',
-       'config-install-alreadydone' => "'''경고:''' 당신은 이미 MediaWiki를 설치하였고 다시 설치하려고 합니다.
+       'config-install-alreadydone' => "'''경고:''' 당신은 이미 미디어위키를 설치하였고 다시 설치하려고 합니다.
 다음 페이지에서 진행하세요.",
-       'config-install-begin' => '"{{int:config-continue}}"을 누르면 MediaWiki의 설치를 시작합니다.
+       'config-install-begin' => '"{{int:config-continue}}"을 누르면 미디어위키의 설치를 시작합니다.
 그래도 변경하는 것을 원한다면 뒤로를 누릅니다.',
+       'config-install-step-done' => '완료',
+       'config-install-step-failed' => '실패',
        'config-install-extensions' => '확장 기능을 포함하는 중',
-       'config-install-database' => '데이터베이스 설정 중',
-       'config-install-pg-commit' => '커밋 바꾸기',
-       'config-install-pg-plpgsql' => 'PL/pgSQL 언어에 대해 확인 중',
-       'config-install-user' => '데이터베이스 사용자 생성 중',
-       'config-install-tables' => '테이블을 생성하는 중',
+       'config-install-database' => '데이터베이스를 설정하는 중',
+       'config-install-schema' => '스키마를 만드는 중',
+       'config-install-pg-schema-not-exist' => 'PostgreSQL 스키마가 존재하지 않습니다.',
+       'config-install-pg-schema-failed' => '테이블을 만드는 데 실패했습니다.
+"$2" 스키마에 쓸 수 있는 "$1" 사용자가 있는지 확인하세요.',
+       'config-install-pg-commit' => '바뀐 사항을 적용하는 중',
+       'config-install-pg-plpgsql' => 'PL/pgSQL 언어에 대해 확인하는 중',
+       'config-pg-no-plpgsql' => '$1 데이터베이스에 PL/pgSQL 언어를 설치해야 합니다',
+       'config-pg-no-create-privs' => '설치를 위한 지정한 계정에 계정을 만드는 데 충분한 권한이 없습니다,',
+       'config-pg-not-in-role' => '웹 사용자에 대해 지정한 계정이 이미 존재합니다.
+설치에 대한 지정한 사용자는 슈퍼 사용자가 아니고, 그것은 웹 사용자의 역할의 구성원이 아니며, 그래서 웹 사용자가 소유한 개체를 만들 수 없습니다.
+
+현재 미디어위키는 테이블을 웹 사용자가 소유해야 합니다. 다른 웹 계정 이름을 지정하거나 "뒤로"를 클릭하고 적절한 권한의 설치할 사용자를 지정하세요.',
+       'config-install-user' => '데이터베이스 사용자를 만드는 중',
+       'config-install-user-alreadyexists' => '"$1" 사용자가 이미 있음',
+       'config-install-user-create-failed' => '"$1" 사용자 만드는 중 실패: $2',
+       'config-install-user-grant-failed' => '"$1" 사용자에 대한 권한 부여 실패: $2',
+       'config-install-user-missing' => '지정한 "$1" 사용자가 존재하지 않습니다.',
+       'config-install-user-missing-create' => '지정된 "$1" 사용자가 존재하지 않습니다.
+이를 만드는 것을 원하면 아래의 "계정 만들기" 확인 상자를 클릭하세요.',
+       'config-install-tables' => '테이블을 만드는 중',
        'config-install-tables-exist' => "'''경고''': 미디어위키 테이블이 이미 있는 것 같습니다.
 테이블 생성을 생략합니다.",
        'config-install-tables-failed' => "'''오류''': 다음 오류와 함께 테이블 생성에 실패했습니다: $1",
-       'config-install-interwiki' => '기본 ì\9d¸í\84°ì\9c\84í\82¤ í\91\9c를 채우는 중',
-       'config-install-interwiki-list' => '<code>interwiki.list</code> 파일을 읽을 수 없습니다.',
-       'config-install-interwiki-exists' => "'''경고''': ì\9d¸í\84°ì\9c\84í\82¤ í\91\9cê°\80 이미 항목을 갖고 있는 것 같습니다.
+       'config-install-interwiki' => '기본 ì\9d¸í\84°ì\9c\84í\82¤ í\85\8cì\9d´ë¸\94ì\9d\84 채우는 중',
+       'config-install-interwiki-list' => '<code>interwiki.list</code> 파일을 불러올 수 없습니다.',
+       'config-install-interwiki-exists' => "'''경고''': ì\9d¸í\84°ì\9c\84í\82¤ í\85\8cì\9d´ë¸\94ì\9d´ 이미 항목을 갖고 있는 것 같습니다.
 기본 목록으로 넘어갑니다.",
+       'config-install-stats' => '통계를 초기화하는 중',
        'config-install-keys' => '보안 키를 만드는 중',
        'config-insecure-keys' => "'''경고:''' 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)를 설치하는 동안 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 변경을 고려하세요.",
-       'config-install-mainpage' => '기본 콘텐트로 대문을 만드는 중',
-       'config-install-extension-tables' => '활성화된 확장 기능을 위한 표를 만드는 중',
+       'config-install-sysop' => '관리자 사용자 계정을 만드는 중',
+       'config-install-subscribe-fail' => '미디어위키 발표를 구독할 수 없습니다: $1',
+       'config-install-subscribe-notpossible' => 'cURL이 설치되지 않았고 allow_url_fopen를 사용할 수 없습니다.',
+       'config-install-mainpage' => '기본 콘텐츠로 대문을 만드는 중',
+       'config-install-extension-tables' => '활성화된 확장 기능을 위한 테이블을 만드는 중',
        'config-install-mainpage-failed' => '대문을 삽입할 수 없습니다: $1',
        'config-install-done' => "'''축하합니다!'''
-ì\84±ê³µì \81ì\9c¼ë¡\9c MediaWIki를 ì\84¤ì¹\98í\96\88ì\8aµë\8b\88ë\8b¤.
+미ë\94\94ì\96´ì\9c\84í\82¤ê°\80 ì\84±ê³µì \81ì\9c¼ë¡\9c ì\84¤ì¹\98ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.
 
 설치 마법사가 <code>LocalSettings.php</code> 파일을 만들었습니다.
-이는 모든 구성이 포함되어 있습니다.
+이는 모든 설정이 포함되어 있습니다.
 
 이를 다운로드하여 위키 설치의 거점에 넣어야 합니다 (index.php와 같은 디렉토리). 다운로드가 자동으로 시작됩니다.
 
@@ -10231,12 +10540,12 @@ MediaWiki $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
 
 $3
 
-'''참고''': 지금 이렇게 하지 않으면 이 구성 파일을 다운로드하지 않고 설치를 종료할 경우 만들어진 구성 파일은 나중에 사용할 수 없습니다.
+'''참고''': 지금 이렇게 하지 않으면, 이 설정 파일을 다운로드하지 않고 설치를 종료할 경우 만들어진 설정 파일은 나중에 사용할 수 없습니다.
 
-완료되었으면 '''[$2 당신은 위키에 들어갈 수 있습니다]'''.",
+완료되었으면 '''[$2 위키에 들어갈 수 있습니다]'''.",
        'config-download-localsettings' => 'LocalSettings.php 다운로드',
        'config-help' => '도움말',
-       'config-nofile' => '파일 "$1" 찾을 수 없습니다. 이미 삭제되었나요?',
+       'config-nofile' => '파일 "$1"(을)를 찾을 수 없습니다. 이미 삭제되었나요?',
        'mainpagetext' => "'''미디어위키가 성공적으로 설치되었습니다.'''",
        'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 프로그램에 대한 정보를 얻을 수 있습니다.
 
@@ -10361,6 +10670,7 @@ Mer künne met heh dä Daatebangke ömjonn: $1.
 Wann De nit om eijene Rääshner bes, moß De Dinge <i lang="en">provider</i> bedde, dat hä Der ene zopaß Driiver enresht.
 Wann de PHP sellver övversaz häs, donn e Zohjangsprjramm för en Daatebangk enbenge, för e Beishpell met: <code  lang="en">./configure --with-mysql</code> op ene <i lang="en">command shell</i>.
 Wann De PHP uss enem <i lang="en">Debian</i> udder <i lang="en">Ubuntu</i> Pakätt enjeresht häs, moß De dann och noch et <code lang="en">php5-mysql</code> op Dinge Räschner bränge.',
+       'config-outdated-sqlite' => '\'\'\'Opjepaß:\'\'\' <i lang="en">SQLite</i> $1 es enschtaleert. Avver MediaWiki bruch <i lang="en">SQLite</i> $2 udder hühter. <i lang="en">SQLite</i> kann dröm nit enjesaz wääde.',
        'config-no-fts3' => "'''Opjepaß:''' De Projramme vum <i lang=\"en\">SQLite</i> sin der ohne et [//sqlite.org/fts3.html FTS3-Modul] övversaz, dröm wääde de Funxjohne för et Söhke fähle.",
        'config-register-globals' => "'''Opjepaß:''' dem PHP singe Schallder <code lang=\"en\">[http://php.net/register_globals register_globals]</code> es enjeschalldt.
 '''Donn dä ußmaache, wann De kann.'''
@@ -10809,6 +11119,7 @@ Wann domet jet nit jeflupp hät, udder De di Dattei norr_ens han wells, donn op
 Wann De mem Ronger- un widder Huhlaade fäädesh bes, kanns De '''[\$2 en Ding Wiki jonn]'''.",
        'config-download-localsettings' => 'Donn di Dattei <code lang="en">LocalSettings.php</code> eronger laade',
        'config-help' => 'Hölp',
+       'config-nofile' => 'De Dattei „$1“ ham_mer nit jefonge. Es di fottjeschmeße?',
        'mainpagetext' => "'''MediaWiki es jetz enstalleet.'''",
        'mainpagedocfooter' => 'Luur en et (änglesche) [//meta.wikimedia.org/wiki/Help:Contents Handboch] wann De wesse wells wie de Wiki-Soffwär jebruch un bedeent wääde muss.
 
@@ -10823,8 +11134,13 @@ Dat es och all op Änglesch:
  * @author George Animal
  */
 $messages['ku-latn'] = array(
+       'config-information' => 'Agahî',
+       'config-your-language' => 'Zimanê te:',
        'config-page-language' => 'Ziman',
        'config-page-name' => 'Nav',
+       'config-page-options' => 'Vebijêrk',
+       'config-ns-generic' => 'Proje',
+       'config-install-step-done' => 'çêbû',
        'mainpagetext' => "'''MediaWiki serketî hate çêkirin.'''",
        'mainpagedocfooter' => 'Alîkarî ji bo bikaranîn û guherandin yê datayê Wîkî tu di bin [//meta.wikimedia.org/wiki/Help:Contents pirtûka alîkarîyê ji bikarhêneran] da dikarê bibînê.
 
@@ -11049,6 +11365,7 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        'config-install-mainpage-failed' => "D'Haaptsäit konnt net dragesat ginn: $1",
        'config-download-localsettings' => 'LocalSettings.php eroflueden',
        'config-help' => 'Hëllef',
+       'config-nofile' => 'De Fichier "$1" gouf net fonnt. Gouf e geläscht?',
        'mainpagetext' => "'''MediaWiki gouf installéiert.'''",
        'mainpagedocfooter' => "Kuckt w.e.g. [//meta.wikimedia.org/wiki/Help:Contents d'Benotzerhandbuch] fir den Interface ze personnaliséieren.
 
@@ -14900,18 +15217,19 @@ Depois de terminar o passo anterior, pode '''[$2 entrar na wiki]'''.",
  * @author Giro720
  * @author Gustavo
  * @author Marcionunes
+ * @author 555
  */
 $messages['pt-br'] = array(
        'config-desc' => 'O instalador do MediaWiki',
-       'config-title' => 'Instalação MediaWiki $1',
+       'config-title' => 'Instalação do MediaWiki $1',
        'config-information' => 'Informações',
-       'config-localsettings-upgrade' => "'''Aviso''': Foi detetada a existência de um arquivo <code>LocalSettings.php</code>.
-É possível atualizar o seu software.
-Mova o <code>LocalSettings.php</code> para um lugar seguro e execute o instalador novamente, por favor.",
-       'config-localsettings-cli-upgrade' => 'Foi detectado um arquivo LocalSettings.php.
-Para atualizar esta instalação, por favor, use: --upgrade=yes.',
+       'config-localsettings-upgrade' => 'Foi detectada a existência do arquivo <code>LocalSettings.php</code>.
+Para atualizar esta instalação, insira no box abaixo o valor de <code>$wgUpgradeKey</code>.
+Essa informação pode ser encontrada no arquivo LocalSettings.php',
+       'config-localsettings-cli-upgrade' => 'Foi detectada a existência do arquivo <code>LocalSettings.php</code>.
+Esta instalação deverá ser atualizada através do <code>update.php</code>',
        'config-localsettings-key' => 'Chave de atualização:',
-       'config-localsettings-badkey' => 'A senha inserida está incorreta.',
+       'config-localsettings-badkey' => 'A chave fornecida está incorreta.',
        'config-upgrade-key-missing' => 'Foi detectada uma instalação existente do MediaWiki.
 Para atualizar esta instalação, por favor, coloque a seguinte linha na parte inferior do seu LocalSettings.php:
 
@@ -15627,7 +15945,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].',
 );
 
-/** Rusyn (Русиньскый)
+/** Rusyn (русиньскый)
  * @author Gazeb
  */
 $messages['rue'] = array(
@@ -16191,7 +16509,7 @@ $messages['sw'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Orodha ya utoaji wa habari za MediaWiki]',
 );
 
-/** Silesian (Å\9alůnski)
+/** Silesian (Å\9blůnski)
  * @author Djpalar
  */
 $messages['szl'] = array(
@@ -16610,6 +16928,7 @@ Tiyakin na ang tagagamit na "$1" ay maaaring makasulat sa balangkas na "$2".',
        'config-install-user-alreadyexists' => 'Umiiral na ang tagagamit na "$1"',
        'config-install-user-create-failed' => 'Nabigo ang paglikha ng tagagamit na "$1": $2',
        'config-install-user-grant-failed' => 'Nabigo ang pagbibigay ng pahintulot sa tagagamit na "$1": $2',
+       'config-install-user-missing' => 'Hindi umiiral ang tinukoy na tagagamit na si "$1".',
        'config-install-tables' => 'Nililikha ang mga talahanayan',
        'config-install-tables-exist' => "'''Babala''': Tila umiiral na ang mga talahanayan ng MediaWiki.
 Nilalaktawan ang paglikha.",
@@ -16619,9 +16938,10 @@ Nilalaktawan ang paglikha.",
        'config-install-interwiki-exists' => "'''Babala''': Tila may mga laman na ang talahanayan ng interwiki.
 Nilalaktawan ang likas na nakatakdang talaan.",
        'config-install-stats' => 'Sinisimulan ang estadistika',
-       'config-install-keys' => 'Ginagawa ang lihim na susi',
+       'config-install-keys' => 'Ginagawa ang lihim na mga susi',
        'config-install-sysop' => 'Nililikha ang akawnt ng tagagamit na tagapangasiwa',
-       'config-install-subscribe-fail' => 'Hindi nagawang sumipi mula sa mediawiki-announce',
+       'config-install-subscribe-fail' => 'Hindi nagawang magpasipi mula sa mediawiki-announce: $1',
+       'config-install-subscribe-notpossible' => 'Hindi nakalagak ang cURL at hindi makukuha ang allow_url_fopen',
        'config-install-mainpage' => 'Nililikha ang pangunahing pahina na may likas na nakatakdang nilalaman',
        'config-install-extension-tables' => 'Nililikha ang mga talahanayan para sa pinagaganang mga dugtong',
        'config-install-mainpage-failed' => 'Hindi maisingit ang pangunahing pahina: $1',
@@ -16817,7 +17137,7 @@ $messages['ur'] = array(
        'mainpagetext' => "'''میڈیاوکی کو کامیابی سے چالو کردیا گیا ہے۔.'''",
 );
 
-/** Uzbek (Oʻzbek) */
+/** Uzbek (Oʻzbekcha) */
 $messages['uz'] = array(
        'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
        'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun  [//meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
@@ -16892,9 +17212,11 @@ $messages['vro'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
 );
 
-/** Walloon (walon) */
+/** Walloon (walon)
+ * @author Srtxg
+ */
 $messages['wa'] = array(
-       'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
+       'mainpagetext' => "'''Li programe MediaWiki a stî astalé a l' idêye.'''",
 );
 
 /** Waray (Winaray)
@@ -17004,6 +17326,7 @@ $messages['zea'] = array(
 /** Simplified Chinese (‪中文(简体)‬)
  * @author Hydra
  * @author Hzy980512
+ * @author Liangent
  * @author PhiLiP
  * @author Xiaomingyan
  * @author 阿pp
        'mainpagedocfooter' => '请查阅[//meta.wikimedia.org/wiki/Help:Contents 用户指南]以获取使用本wiki软件的信息!
 
 == 入门 ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki 配置设置列表]
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki配置设置列表]
 * [//www.mediawiki.org/wiki/Manual:FAQ/zh-hans MediaWiki常见问题]
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]',
 );
 
 /** Traditional Chinese (‪中文(繁體)‬)
  * @author Hzy980512
+ * @author Liangent
  * @author Mark85296341
  */
 $messages['zh-hant'] = array(
 當本步驟完成後,您可以 '''[$2 進入您的wiki]'''。",
        'config-download-localsettings' => '下載LocalSettings.php',
        'config-help' => '說明',
-       'mainpagetext' => "'''已成功安裝 MediaWiki。'''",
-       'mainpagedocfooter' => '請參閱[//meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以獲得使用此 wiki 軟體的訊息!
+       'mainpagetext' => "'''已成功安裝MediaWiki。'''",
+       'mainpagedocfooter' => '請參閱[//meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以獲得使用此wiki軟體的訊息!
 
 == 入門 ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki 配置設定清單]
-* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見問題解答]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki配置設定清單]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki常見問題解答]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki發佈郵件清單]',
 );
 
 /** Chinese (Hong Kong) (‪中文(香港)‬)
index 43005a8..9aa1a13 100644 (file)
@@ -698,7 +698,7 @@ END;
                }
        }
 
-       protected function dropIndex( $table, $index ) {
+       protected function dropIndex( $table, $index, $patch = '', $fullpath = false ) {
                if ( $this->db->indexExists( $table, $index ) ) {
                        $this->output( "Dropping obsolete index '$index'\n" );
                        $this->db->query( "DROP INDEX \"". $index ."\"" );
diff --git a/includes/job/Job.php b/includes/job/Job.php
new file mode 100644 (file)
index 0000000..7b7ec0c
--- /dev/null
@@ -0,0 +1,447 @@
+<?php
+/**
+ * Job queue base 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
+ * @defgroup JobQueue JobQueue
+ */
+
+/**
+ * Class to both describe a background job and handle jobs.
+ *
+ * @ingroup JobQueue
+ */
+abstract class Job {
+
+       /**
+        * @var Title
+        */
+       var $title;
+
+       var $command,
+               $params,
+               $id,
+               $removeDuplicates,
+               $error;
+
+       /*-------------------------------------------------------------------------
+        * Abstract functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * Run the job
+        * @return boolean success
+        */
+       abstract function run();
+
+       /*-------------------------------------------------------------------------
+        * Static functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * Pop a job of a certain type.  This tries less hard than pop() to
+        * actually find a job; it may be adversely affected by concurrent job
+        * runners.
+        *
+        * @param $type string
+        *
+        * @return Job
+        */
+       static function pop_type( $type ) {
+               wfProfilein( __METHOD__ );
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               $dbw->begin( __METHOD__ );
+
+               $row = $dbw->selectRow(
+                       'job',
+                       '*',
+                       array( 'job_cmd' => $type ),
+                       __METHOD__,
+                       array( 'LIMIT' => 1, 'FOR UPDATE' )
+               );
+
+               if ( $row === false ) {
+                       $dbw->commit( __METHOD__ );
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               /* Ensure we "own" this row */
+               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+
+               if ( $affected == 0 ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               wfIncrStats( 'job-pop' );
+               $namespace = $row->job_namespace;
+               $dbkey = $row->job_title;
+               $title = Title::makeTitleSafe( $namespace, $dbkey );
+               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ),
+                       $row->job_id );
+
+               $job->removeDuplicates();
+
+               wfProfileOut( __METHOD__ );
+               return $job;
+       }
+
+       /**
+        * Pop a job off the front of the queue
+        *
+        * @param $offset Integer: Number of jobs to skip
+        * @return Job or false if there's no jobs
+        */
+       static function pop( $offset = 0 ) {
+               wfProfileIn( __METHOD__ );
+
+               $dbr = wfGetDB( DB_SLAVE );
+
+               /* Get a job from the slave, start with an offset,
+                       scan full set afterwards, avoid hitting purged rows
+
+                       NB: If random fetch previously was used, offset
+                               will always be ahead of few entries
+               */
+
+               $conditions = self::defaultQueueConditions();
+
+               $offset = intval( $offset );
+               $options = array( 'ORDER BY' => 'job_id', 'USE INDEX' => 'PRIMARY' );
+
+               $row = $dbr->selectRow( 'job', '*',
+                       array_merge( $conditions, array( "job_id >= $offset" ) ),
+                       __METHOD__,
+                       $options
+               );
+
+               // Refetching without offset is needed as some of job IDs could have had delayed commits
+               // and have lower IDs than jobs already executed, blame concurrency :)
+               //
+               if ( $row === false ) {
+                       if ( $offset != 0 ) {
+                               $row = $dbr->selectRow( 'job', '*', $conditions, __METHOD__, $options );
+                       }
+
+                       if ( $row === false ) {
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+               }
+
+               // Try to delete it from the master
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+
+               if ( !$affected ) {
+                       // Failed, someone else beat us to it
+                       // Try getting a random row
+                       $row = $dbw->selectRow( 'job', array( 'MIN(job_id) as minjob',
+                               'MAX(job_id) as maxjob' ), '1=1', __METHOD__ );
+                       if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
+                               // No jobs to get
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+                       // Get the random row
+                       $row = $dbw->selectRow( 'job', '*',
+                               'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
+                       if ( $row === false ) {
+                               // Random job gone before we got the chance to select it
+                               // Give up
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+                       // Delete the random row
+                       $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+                       $affected = $dbw->affectedRows();
+                       $dbw->commit( __METHOD__ );
+
+                       if ( !$affected ) {
+                               // Random job gone before we exclusively deleted it
+                               // Give up
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+               }
+
+               // If execution got to here, there's a row in $row that has been deleted from the database
+               // by this thread. Hence the concurrent pop was successful.
+               wfIncrStats( 'job-pop' );
+               $namespace = $row->job_namespace;
+               $dbkey = $row->job_title;
+               $title = Title::makeTitleSafe( $namespace, $dbkey );
+
+               if ( is_null( $title ) ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
+
+               // Remove any duplicates it may have later in the queue
+               $job->removeDuplicates();
+
+               wfProfileOut( __METHOD__ );
+               return $job;
+       }
+
+       /**
+        * Create the appropriate object to handle a specific job
+        *
+        * @param $command String: Job command
+        * @param $title Title: Associated title
+        * @param $params Array: Job parameters
+        * @param $id Int: Job identifier
+        * @return Job
+        */
+       static function factory( $command, Title $title, $params = false, $id = 0 ) {
+               global $wgJobClasses;
+               if( isset( $wgJobClasses[$command] ) ) {
+                       $class = $wgJobClasses[$command];
+                       return new $class( $title, $params, $id );
+               }
+               throw new MWException( "Invalid job command `{$command}`" );
+       }
+
+       /**
+        * @param $params
+        * @return string
+        */
+       static function makeBlob( $params ) {
+               if ( $params !== false ) {
+                       return serialize( $params );
+               } else {
+                       return '';
+               }
+       }
+
+       /**
+        * @param $blob
+        * @return bool|mixed
+        */
+       static function extractBlob( $blob ) {
+               if ( (string)$blob !== '' ) {
+                       return unserialize( $blob );
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * Batch-insert a group of jobs into the queue.
+        * This will be wrapped in a transaction with a forced commit.
+        *
+        * This may add duplicate at insert time, but they will be
+        * removed later on, when the first one is popped.
+        *
+        * @param $jobs array of Job objects
+        */
+       static function batchInsert( $jobs ) {
+               if ( !count( $jobs ) ) {
+                       return;
+               }
+               $dbw = wfGetDB( DB_MASTER );
+               $rows = array();
+
+               /**
+                * @var $job Job
+                */
+               foreach ( $jobs as $job ) {
+                       $rows[] = $job->insertFields();
+                       if ( count( $rows ) >= 50 ) {
+                               # Do a small transaction to avoid slave lag
+                               $dbw->begin( __METHOD__ );
+                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                               $dbw->commit( __METHOD__ );
+                               $rows = array();
+                       }
+               }
+               if ( $rows ) { // last chunk
+                       $dbw->begin( __METHOD__ );
+                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                       $dbw->commit( __METHOD__ );
+               }
+               wfIncrStats( 'job-insert', count( $jobs ) );
+       }
+
+       /**
+        * Insert a group of jobs into the queue.
+        *
+        * Same as batchInsert() but does not commit and can thus
+        * be rolled-back as part of a larger transaction. However,
+        * large batches of jobs can cause slave lag.
+        *
+        * @param $jobs array of Job objects
+        */
+       static function safeBatchInsert( $jobs ) {
+               if ( !count( $jobs ) ) {
+                       return;
+               }
+               $dbw = wfGetDB( DB_MASTER );
+               $rows = array();
+               foreach ( $jobs as $job ) {
+                       $rows[] = $job->insertFields();
+                       if ( count( $rows ) >= 500 ) {
+                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                               $rows = array();
+                       }
+               }
+               if ( $rows ) { // last chunk
+                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+               }
+               wfIncrStats( 'job-insert', count( $jobs ) );
+       }
+
+
+       /**
+        * SQL conditions to apply on most JobQueue queries
+        *
+        * Whenever we exclude jobs types from the default queue, we want to make
+        * sure that queries to the job queue actually ignore them.
+        *
+        * @return array SQL conditions suitable for Database:: methods
+        */
+       static function defaultQueueConditions( ) {
+               global $wgJobTypesExcludedFromDefaultQueue;
+               $conditions = array();
+               if ( count( $wgJobTypesExcludedFromDefaultQueue ) > 0 ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
+                               $conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
+                       }
+               }
+               return $conditions;
+       }
+
+       /*-------------------------------------------------------------------------
+        * Non-static functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * @param $command
+        * @param $title
+        * @param $params array
+        * @param int $id
+        */
+       function __construct( $command, $title, $params = false, $id = 0 ) {
+               $this->command = $command;
+               $this->title = $title;
+               $this->params = $params;
+               $this->id = $id;
+
+               // A bit of premature generalisation
+               // Oh well, the whole class is premature generalisation really
+               $this->removeDuplicates = true;
+       }
+
+       /**
+        * Insert a single job into the queue.
+        * @return bool true on success
+        */
+       function insert() {
+               $fields = $this->insertFields();
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               if ( $this->removeDuplicates ) {
+                       $res = $dbw->select( 'job', array( '1' ), $fields, __METHOD__ );
+                       if ( $dbw->numRows( $res ) ) {
+                               return true;
+                       }
+               }
+               wfIncrStats( 'job-insert' );
+               return $dbw->insert( 'job', $fields, __METHOD__ );
+       }
+
+       /**
+        * @return array
+        */
+       protected function insertFields() {
+               $dbw = wfGetDB( DB_MASTER );
+               return array(
+                       'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
+                       'job_cmd' => $this->command,
+                       'job_namespace' => $this->title->getNamespace(),
+                       'job_title' => $this->title->getDBkey(),
+                       'job_timestamp' => $dbw->timestamp(),
+                       'job_params' => Job::makeBlob( $this->params )
+               );
+       }
+
+       /**
+        * Remove jobs in the job queue which are duplicates of this job.
+        * This is deadlock-prone and so starts its own transaction.
+        */
+       function removeDuplicates() {
+               if ( !$this->removeDuplicates ) {
+                       return;
+               }
+
+               $fields = $this->insertFields();
+               unset( $fields['job_id'] );
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->begin( __METHOD__ );
+               $dbw->delete( 'job', $fields, __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+               if ( $affected ) {
+                       wfIncrStats( 'job-dup-delete', $affected );
+               }
+       }
+
+       /**
+        * @return string
+        */
+       function toString() {
+               $paramString = '';
+               if ( $this->params ) {
+                       foreach ( $this->params as $key => $value ) {
+                               if ( $paramString != '' ) {
+                                       $paramString .= ' ';
+                               }
+                               $paramString .= "$key=$value";
+                       }
+               }
+
+               if ( is_object( $this->title ) ) {
+                       $s = "{$this->command} " . $this->title->getPrefixedDBkey();
+                       if ( $paramString !== '' ) {
+                               $s .= ' ' . $paramString;
+                       }
+                       return $s;
+               } else {
+                       return "{$this->command} $paramString";
+               }
+       }
+
+       protected function setLastError( $error ) {
+               $this->error = $error;
+       }
+
+       function getLastError() {
+               return $this->error;
+       }
+}
diff --git a/includes/job/JobQueue.php b/includes/job/JobQueue.php
deleted file mode 100644 (file)
index 7b7ec0c..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-<?php
-/**
- * Job queue base 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
- * @defgroup JobQueue JobQueue
- */
-
-/**
- * Class to both describe a background job and handle jobs.
- *
- * @ingroup JobQueue
- */
-abstract class Job {
-
-       /**
-        * @var Title
-        */
-       var $title;
-
-       var $command,
-               $params,
-               $id,
-               $removeDuplicates,
-               $error;
-
-       /*-------------------------------------------------------------------------
-        * Abstract functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * Run the job
-        * @return boolean success
-        */
-       abstract function run();
-
-       /*-------------------------------------------------------------------------
-        * Static functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * Pop a job of a certain type.  This tries less hard than pop() to
-        * actually find a job; it may be adversely affected by concurrent job
-        * runners.
-        *
-        * @param $type string
-        *
-        * @return Job
-        */
-       static function pop_type( $type ) {
-               wfProfilein( __METHOD__ );
-
-               $dbw = wfGetDB( DB_MASTER );
-
-               $dbw->begin( __METHOD__ );
-
-               $row = $dbw->selectRow(
-                       'job',
-                       '*',
-                       array( 'job_cmd' => $type ),
-                       __METHOD__,
-                       array( 'LIMIT' => 1, 'FOR UPDATE' )
-               );
-
-               if ( $row === false ) {
-                       $dbw->commit( __METHOD__ );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               /* Ensure we "own" this row */
-               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-
-               if ( $affected == 0 ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               wfIncrStats( 'job-pop' );
-               $namespace = $row->job_namespace;
-               $dbkey = $row->job_title;
-               $title = Title::makeTitleSafe( $namespace, $dbkey );
-               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ),
-                       $row->job_id );
-
-               $job->removeDuplicates();
-
-               wfProfileOut( __METHOD__ );
-               return $job;
-       }
-
-       /**
-        * Pop a job off the front of the queue
-        *
-        * @param $offset Integer: Number of jobs to skip
-        * @return Job or false if there's no jobs
-        */
-       static function pop( $offset = 0 ) {
-               wfProfileIn( __METHOD__ );
-
-               $dbr = wfGetDB( DB_SLAVE );
-
-               /* Get a job from the slave, start with an offset,
-                       scan full set afterwards, avoid hitting purged rows
-
-                       NB: If random fetch previously was used, offset
-                               will always be ahead of few entries
-               */
-
-               $conditions = self::defaultQueueConditions();
-
-               $offset = intval( $offset );
-               $options = array( 'ORDER BY' => 'job_id', 'USE INDEX' => 'PRIMARY' );
-
-               $row = $dbr->selectRow( 'job', '*',
-                       array_merge( $conditions, array( "job_id >= $offset" ) ),
-                       __METHOD__,
-                       $options
-               );
-
-               // Refetching without offset is needed as some of job IDs could have had delayed commits
-               // and have lower IDs than jobs already executed, blame concurrency :)
-               //
-               if ( $row === false ) {
-                       if ( $offset != 0 ) {
-                               $row = $dbr->selectRow( 'job', '*', $conditions, __METHOD__, $options );
-                       }
-
-                       if ( $row === false ) {
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-               }
-
-               // Try to delete it from the master
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-
-               if ( !$affected ) {
-                       // Failed, someone else beat us to it
-                       // Try getting a random row
-                       $row = $dbw->selectRow( 'job', array( 'MIN(job_id) as minjob',
-                               'MAX(job_id) as maxjob' ), '1=1', __METHOD__ );
-                       if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
-                               // No jobs to get
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       // Get the random row
-                       $row = $dbw->selectRow( 'job', '*',
-                               'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
-                       if ( $row === false ) {
-                               // Random job gone before we got the chance to select it
-                               // Give up
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       // Delete the random row
-                       $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-                       $affected = $dbw->affectedRows();
-                       $dbw->commit( __METHOD__ );
-
-                       if ( !$affected ) {
-                               // Random job gone before we exclusively deleted it
-                               // Give up
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-               }
-
-               // If execution got to here, there's a row in $row that has been deleted from the database
-               // by this thread. Hence the concurrent pop was successful.
-               wfIncrStats( 'job-pop' );
-               $namespace = $row->job_namespace;
-               $dbkey = $row->job_title;
-               $title = Title::makeTitleSafe( $namespace, $dbkey );
-
-               if ( is_null( $title ) ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
-
-               // Remove any duplicates it may have later in the queue
-               $job->removeDuplicates();
-
-               wfProfileOut( __METHOD__ );
-               return $job;
-       }
-
-       /**
-        * Create the appropriate object to handle a specific job
-        *
-        * @param $command String: Job command
-        * @param $title Title: Associated title
-        * @param $params Array: Job parameters
-        * @param $id Int: Job identifier
-        * @return Job
-        */
-       static function factory( $command, Title $title, $params = false, $id = 0 ) {
-               global $wgJobClasses;
-               if( isset( $wgJobClasses[$command] ) ) {
-                       $class = $wgJobClasses[$command];
-                       return new $class( $title, $params, $id );
-               }
-               throw new MWException( "Invalid job command `{$command}`" );
-       }
-
-       /**
-        * @param $params
-        * @return string
-        */
-       static function makeBlob( $params ) {
-               if ( $params !== false ) {
-                       return serialize( $params );
-               } else {
-                       return '';
-               }
-       }
-
-       /**
-        * @param $blob
-        * @return bool|mixed
-        */
-       static function extractBlob( $blob ) {
-               if ( (string)$blob !== '' ) {
-                       return unserialize( $blob );
-               } else {
-                       return false;
-               }
-       }
-
-       /**
-        * Batch-insert a group of jobs into the queue.
-        * This will be wrapped in a transaction with a forced commit.
-        *
-        * This may add duplicate at insert time, but they will be
-        * removed later on, when the first one is popped.
-        *
-        * @param $jobs array of Job objects
-        */
-       static function batchInsert( $jobs ) {
-               if ( !count( $jobs ) ) {
-                       return;
-               }
-               $dbw = wfGetDB( DB_MASTER );
-               $rows = array();
-
-               /**
-                * @var $job Job
-                */
-               foreach ( $jobs as $job ) {
-                       $rows[] = $job->insertFields();
-                       if ( count( $rows ) >= 50 ) {
-                               # Do a small transaction to avoid slave lag
-                               $dbw->begin( __METHOD__ );
-                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                               $dbw->commit( __METHOD__ );
-                               $rows = array();
-                       }
-               }
-               if ( $rows ) { // last chunk
-                       $dbw->begin( __METHOD__ );
-                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                       $dbw->commit( __METHOD__ );
-               }
-               wfIncrStats( 'job-insert', count( $jobs ) );
-       }
-
-       /**
-        * Insert a group of jobs into the queue.
-        *
-        * Same as batchInsert() but does not commit and can thus
-        * be rolled-back as part of a larger transaction. However,
-        * large batches of jobs can cause slave lag.
-        *
-        * @param $jobs array of Job objects
-        */
-       static function safeBatchInsert( $jobs ) {
-               if ( !count( $jobs ) ) {
-                       return;
-               }
-               $dbw = wfGetDB( DB_MASTER );
-               $rows = array();
-               foreach ( $jobs as $job ) {
-                       $rows[] = $job->insertFields();
-                       if ( count( $rows ) >= 500 ) {
-                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                               $rows = array();
-                       }
-               }
-               if ( $rows ) { // last chunk
-                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-               }
-               wfIncrStats( 'job-insert', count( $jobs ) );
-       }
-
-
-       /**
-        * SQL conditions to apply on most JobQueue queries
-        *
-        * Whenever we exclude jobs types from the default queue, we want to make
-        * sure that queries to the job queue actually ignore them.
-        *
-        * @return array SQL conditions suitable for Database:: methods
-        */
-       static function defaultQueueConditions( ) {
-               global $wgJobTypesExcludedFromDefaultQueue;
-               $conditions = array();
-               if ( count( $wgJobTypesExcludedFromDefaultQueue ) > 0 ) {
-                       $dbr = wfGetDB( DB_SLAVE );
-                       foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
-                               $conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
-                       }
-               }
-               return $conditions;
-       }
-
-       /*-------------------------------------------------------------------------
-        * Non-static functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * @param $command
-        * @param $title
-        * @param $params array
-        * @param int $id
-        */
-       function __construct( $command, $title, $params = false, $id = 0 ) {
-               $this->command = $command;
-               $this->title = $title;
-               $this->params = $params;
-               $this->id = $id;
-
-               // A bit of premature generalisation
-               // Oh well, the whole class is premature generalisation really
-               $this->removeDuplicates = true;
-       }
-
-       /**
-        * Insert a single job into the queue.
-        * @return bool true on success
-        */
-       function insert() {
-               $fields = $this->insertFields();
-
-               $dbw = wfGetDB( DB_MASTER );
-
-               if ( $this->removeDuplicates ) {
-                       $res = $dbw->select( 'job', array( '1' ), $fields, __METHOD__ );
-                       if ( $dbw->numRows( $res ) ) {
-                               return true;
-                       }
-               }
-               wfIncrStats( 'job-insert' );
-               return $dbw->insert( 'job', $fields, __METHOD__ );
-       }
-
-       /**
-        * @return array
-        */
-       protected function insertFields() {
-               $dbw = wfGetDB( DB_MASTER );
-               return array(
-                       'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
-                       'job_cmd' => $this->command,
-                       'job_namespace' => $this->title->getNamespace(),
-                       'job_title' => $this->title->getDBkey(),
-                       'job_timestamp' => $dbw->timestamp(),
-                       'job_params' => Job::makeBlob( $this->params )
-               );
-       }
-
-       /**
-        * Remove jobs in the job queue which are duplicates of this job.
-        * This is deadlock-prone and so starts its own transaction.
-        */
-       function removeDuplicates() {
-               if ( !$this->removeDuplicates ) {
-                       return;
-               }
-
-               $fields = $this->insertFields();
-               unset( $fields['job_id'] );
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
-               $dbw->delete( 'job', $fields, __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-               if ( $affected ) {
-                       wfIncrStats( 'job-dup-delete', $affected );
-               }
-       }
-
-       /**
-        * @return string
-        */
-       function toString() {
-               $paramString = '';
-               if ( $this->params ) {
-                       foreach ( $this->params as $key => $value ) {
-                               if ( $paramString != '' ) {
-                                       $paramString .= ' ';
-                               }
-                               $paramString .= "$key=$value";
-                       }
-               }
-
-               if ( is_object( $this->title ) ) {
-                       $s = "{$this->command} " . $this->title->getPrefixedDBkey();
-                       if ( $paramString !== '' ) {
-                               $s .= ' ' . $paramString;
-                       }
-                       return $s;
-               } else {
-                       return "{$this->command} $paramString";
-               }
-       }
-
-       protected function setLastError( $error ) {
-               $this->error = $error;
-       }
-
-       function getLastError() {
-               return $this->error;
-       }
-}
index e9c2bad..fc75cdc 100644 (file)
@@ -152,6 +152,13 @@ class CSSMin {
                                $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
                                continue;
                        }
+
+                       // Guard against double slashes, because "some/remote/../foo.png"
+                       // resolves to "some/remote/foo.png" on (some?) clients (bug 27052).
+                       if ( substr( $remote, -1 ) == '/' ) {
+                               $remote = substr( $remote, 0, -1 );
+                       }
+
                        // Shortcuts
                        $embed = $match['embed'][0];
                        $pre = $match['pre'][0];
@@ -159,10 +166,9 @@ class CSSMin {
                        $query = $match['query'][0];
                        $url = "{$remote}/{$match['file'][0]}";
                        $file = "{$local}/{$match['file'][0]}";
-                       // bug 27052 - Guard against double slashes, because foo//../bar
-                       // apparently resolves to foo/bar on (some?) clients
-                       $url = preg_replace( '#([^:])//+#', '\1/', $url );
+
                        $replacement = false;
+
                        if ( $local !== false && file_exists( $file ) ) {
                                // Add version parameter as a time-stamp in ISO 8601 format,
                                // using Z for the timezone, meaning GMT
index ee1ac45..ff5fc8a 100644 (file)
  * @file
  */
 
-class LogEventsList {
+class LogEventsList extends ContextSource {
        const NO_ACTION_LINK = 1;
        const NO_EXTRA_USER_LINKS = 2;
        const USE_REVDEL_CHECKBOXES = 4;
 
-       /**
-        * @var Skin
-        */
-       private $skin;
-
-       /**
-        * @var OutputPage
-        */
-       private $out;
        public $flags;
 
        /**
@@ -49,13 +40,38 @@ class LogEventsList {
         */
        protected $mDefaultQuery;
 
-       public function __construct( $skin, $out, $flags = 0 ) {
-               $this->skin = $skin;
-               $this->out = $out;
+       /**
+        * Constructor.
+        * The first two parameters used to be $skin and $out, but now only a context
+        * is needed, that's why there's a second unused parameter.
+        *
+        * @param $context IContextSource Context to use; formerly it was Skin object.
+        * @param $unused void Unused; used to be an OutputPage object.
+        * @param $flags int flags; can be a combinaison of self::NO_ACTION_LINK,
+        *        self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
+        */
+       public function __construct( $context, $unused = null, $flags = 0 ) {
+               if ( $context instanceof IContextSource ) {
+                       $this->setContext( $context );
+               } else {
+                       // Old parameters, $context should be a Skin object
+                       $this->setContext( $context->getContext() );
+               }
+
                $this->flags = $flags;
                $this->preCacheMessages();
        }
 
+       /**
+        * Deprecated alias for getTitle(); do not use.
+        *
+        * @deprecated in 1.20; use getTitle() instead.
+        * @return Title object
+        */
+       public function getDisplayTitle() {
+               return $this->getTitle();
+       }
+
        /**
         * As we use the same small set of messages in various methods and that
         * they are called often, we call them once and save them in $this->message
@@ -67,7 +83,7 @@ class LogEventsList {
                                'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff',
                                'pipe-separator', 'revdel-restore-deleted', 'revdel-restore-visible' );
                        foreach( $messages as $msg ) {
-                               $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
+                               $this->message[$msg] = $this->msg( $msg )->escaped();
                        }
                }
        }
@@ -81,12 +97,13 @@ class LogEventsList {
                wfDeprecated( __METHOD__, '1.19' );
                // If only one log type is used, then show a special message...
                $headerType = (count($type) == 1) ? $type[0] : '';
+               $out = $this->getOutput();
                if( LogPage::isLogType( $headerType ) ) {
                        $page = new LogPage( $headerType );
-                       $this->out->setPageTitle( $page->getName()->text() );
-                       $this->out->addHTML( $page->getDescription()->parseAsBlock() );
+                       $out->setPageTitle( $page->getName()->text() );
+                       $out->addHTML( $page->getDescription()->parseAsBlock() );
                } else {
-                       $this->out->addHTML( wfMsgExt('alllogstext',array('parseinline')) );
+                       $out->addHTML( $this->msg( 'alllogstext' )->parse() );
                }
        }
 
@@ -106,16 +123,14 @@ class LogEventsList {
                $month = '', $filter = null, $tagFilter='' ) {
                global $wgScript, $wgMiserMode;
 
-               $action = $wgScript;
                $title = SpecialPage::getTitleFor( 'Log' );
-               $special = $title->getPrefixedDBkey();
 
                // For B/C, we take strings, but make sure they are converted...
                $types = ($types === '') ? array() : (array)$types;
 
                $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
 
-               $html = Html::hidden( 'title', $special );
+               $html = Html::hidden( 'title', $title->getPrefixedDBkey() );
 
                // Basic selectors
                $html .= $this->getTypeMenu( $types ) . "\n";
@@ -142,15 +157,15 @@ class LogEventsList {
                }
 
                // Submit button
-               $html .= Xml::submitButton( wfMsg( 'allpagessubmit' ) );
+               $html .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() );
 
                // Fieldset
-               $html = Xml::fieldset( wfMsg( 'log' ), $html );
+               $html = Xml::fieldset( $this->msg( 'log' )->text(), $html );
 
                // Form wrapping
-               $html = Xml::tags( 'form', array( 'action' => $action, 'method' => 'get' ), $html );
+               $html = Xml::tags( 'form', array( 'action' => $wgScript, 'method' => 'get' ), $html );
 
-               $this->out->addHTML( $html );
+               $this->getOutput()->addHTML( $html );
        }
 
        /**
@@ -158,9 +173,8 @@ class LogEventsList {
         * @return String: Formatted HTML
         */
        private function getFilterLinks( $filter ) {
-               global $wgLang;
                // show/hide links
-               $messages = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
+               $messages = array( $this->msg( 'show' )->escaped(), $this->msg( 'hide' )->escaped() );
                // Option value -> message mapping
                $links = array();
                $hiddens = ''; // keep track for "go" button
@@ -173,26 +187,23 @@ class LogEventsList {
                        $hideVal = 1 - intval($val);
                        $query[$queryKey] = $hideVal;
 
-                       $link = Linker::link(
+                       $link = Linker::linkKnown(
                                $this->getDisplayTitle(),
                                $messages[$hideVal],
                                array(),
-                               $query,
-                               array( 'known', 'noclasses' )
+                               $query
                        );
 
-                       $links[$type] = wfMsgHtml( "log-show-hide-{$type}", $link );
+                       $links[$type] = $this->msg( "log-show-hide-{$type}" )->rawParams( $link )->escaped();
                        $hiddens .= Html::hidden( "hide_{$type}_log", $val ) . "\n";
                }
                // Build links
-               return '<small>'.$wgLang->pipeList( $links ) . '</small>' . $hiddens;
+               return '<small>'.$this->getLanguage()->pipeList( $links ) . '</small>' . $hiddens;
        }
 
        private function getDefaultQuery() {
-               global $wgRequest;
-
                if ( !isset( $this->mDefaultQuery ) ) {
-                       $this->mDefaultQuery = $wgRequest->getQueryValues();
+                       $this->mDefaultQuery = $this->getRequest()->getQueryValues();
                        unset( $this->mDefaultQuery['title'] );
                        unset( $this->mDefaultQuery['dir'] );
                        unset( $this->mDefaultQuery['offset'] );
@@ -204,20 +215,6 @@ class LogEventsList {
                return $this->mDefaultQuery;
        }
 
-       /**
-        * Get the Title object of the page the links should point to.
-        * This is NOT the Title of the page the entries should be restricted to.
-        *
-        * @return Title object
-        */
-       public function getDisplayTitle() {
-               return $this->out->getTitle();
-       }
-
-       public function getContext() {
-               return $this->out->getContext();
-       }
-
        /**
         * @param $queryTypes Array
         * @return String: Formatted HTML
@@ -235,14 +232,12 @@ class LogEventsList {
         * @since 1.19
         */
        public function getTypeSelector() {
-               global $wgUser;
-
                $typesByName = array(); // Temporary array
                // First pass to load the log names
                foreach(  LogPage::validTypes() as $type ) {
                        $page = new LogPage( $type );
                        $restriction = $page->getRestriction();
-                       if ( $wgUser->isAllowed( $restriction ) ) {
+                       if ( $this->getUser()->isAllowed( $restriction ) ) {
                                $typesByName[$type] = $page->getName()->text();
                        }
                }
@@ -269,7 +264,7 @@ class LogEventsList {
         */
        private function getUserInput( $user ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( wfMsg( 'specialloguserlabel' ), 'user', 'mw-log-user', 15, $user ) .
+                       Xml::inputLabel( $this->msg( 'specialloguserlabel' )->text(), 'user', 'mw-log-user', 15, $user ) .
                        '</span>';
        }
 
@@ -279,7 +274,7 @@ class LogEventsList {
         */
        private function getTitleInput( $title ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( wfMsg( 'speciallogtitlelabel' ), 'page', 'mw-log-page', 20, $title ) .
+                       Xml::inputLabel( $this->msg( 'speciallogtitlelabel' )->text(), 'page', 'mw-log-page', 20, $title ) .
                        '</span>';
        }
 
@@ -289,7 +284,7 @@ class LogEventsList {
         */
        private function getTitlePattern( $pattern ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::checkLabel( wfMsg( 'log-title-wildcard' ), 'pattern', 'pattern', $pattern ) .
+                       Xml::checkLabel( $this->msg( 'log-title-wildcard' )->text(), 'pattern', 'pattern', $pattern ) .
                        '</span>';
        }
 
@@ -298,14 +293,13 @@ class LogEventsList {
         * @return string
         */
        private function getExtraInputs( $types ) {
-               global $wgRequest;
-               $offender = $wgRequest->getVal('offender');
+               $offender = $this->getRequest()->getVal( 'offender' );
                $user = User::newFromName( $offender, false );
                if( !$user || ($user->getId() == 0 && !IP::isIPAddress($offender) ) ) {
                        $offender = ''; // Blank field if invalid
                }
                if( count($types) == 1 && $types[0] == 'suppress' ) {
-                       return Xml::inputLabel( wfMsg('revdelete-offender'), 'offender',
+                       return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
                                'mw-log-offender', 20, $offender );
                }
                return '';
@@ -332,6 +326,7 @@ class LogEventsList {
        public function logLine( $row ) {
                $entry = DatabaseLogEntry::newFromRow( $row );
                $formatter = LogFormatter::newFromEntry( $entry );
+               $formatter->setContext( $this->getContext() );
                $formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
 
                $action = $formatter->getActionText();
@@ -359,9 +354,8 @@ class LogEventsList {
        }
 
        private function logTimestamp( LogEntry $entry ) {
-               global $wgLang;
-               $time = $wgLang->timeanddate( wfTimestamp( TS_MW, $entry->getTimestamp() ), true );
-               return htmlspecialchars( $time );
+               return htmlspecialchars( $this->getLanguage()->userTimeAndDate(
+                       $entry->getTimestamp(), $this->getUser() ) );
        }
 
        /**
@@ -374,7 +368,6 @@ class LogEventsList {
         * @return String
         */
        private function logActionLinks( $row, $title, $paramArray, &$comment ) {
-               global $wgUser;
                if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the action
                        || self::isDeleted( $row, LogPage::DELETED_ACTION ) ) // action is hidden
                {
@@ -384,53 +377,45 @@ class LogEventsList {
                if( self::typeAction( $row, 'move', 'move', 'move' ) && !empty( $paramArray[0] ) ) {
                        $destTitle = Title::newFromText( $paramArray[0] );
                        if( $destTitle ) {
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Movepage' ),
                                        $this->message['revertmove'],
                                        array(),
                                        array(
                                                'wpOldTitle' => $destTitle->getPrefixedDBkey(),
                                                'wpNewTitle' => $title->getPrefixedDBkey(),
-                                               'wpReason'   => wfMsgForContent( 'revertmove' ),
+                                               'wpReason'   => $this->msg( 'revertmove' )->inContentLanguage()->text(),
                                                'wpMovetalk' => 0
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                        }
                // Show undelete link
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
-                       if( !$wgUser->isAllowed( 'undelete' ) ) {
+                       if( !$this->getUser()->isAllowed( 'undelete' ) ) {
                                $viewdeleted = $this->message['undeleteviewlink'];
                        } else {
                                $viewdeleted = $this->message['undeletelink'];
                        }
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Undelete' ),
                                $viewdeleted,
                                array(),
-                               array( 'target' => $title->getPrefixedDBkey() ),
-                               array( 'known', 'noclasses' )
+                               array( 'target' => $title->getPrefixedDBkey() )
                         );
-                       $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unblock/change block link
                } elseif( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Unblock', $row->log_title ),
-                                       $this->message['unblocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['unblocklink']
                                ) .
                                $this->message['pipe-separator'] .
-                               Linker::link(
+                               Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Block', $row->log_title ),
-                                       $this->message['change-blocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['change-blocklink']
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show change protection link
                } elseif( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
                        $revert .= Linker::link( $title,
@@ -441,7 +426,7 @@ class LogEventsList {
                                                'offset' => $row->log_timestamp
                                        )
                                );
-                       if( $wgUser->isAllowed( 'protect' ) ) {
+                       if( $this->getUser()->isAllowed( 'protect' ) ) {
                                $revert .= $this->message['pipe-separator'] .
                                        Linker::link( $title,
                                                $this->message['protect_change'],
@@ -449,10 +434,10 @@ class LogEventsList {
                                                array( 'action' => 'protect' ),
                                                'known' );
                        }
-                       $revert = ' ' . wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = ' ' . $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unmerge link
                } elseif( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'MergeHistory' ),
                                $this->message['revertmerge'],
                                array(),
@@ -460,10 +445,9 @@ class LogEventsList {
                                        'target' => $paramArray[0],
                                        'dest' => $title->getPrefixedDBkey(),
                                        'mergepoint' => $paramArray[1]
-                               ),
-                               array( 'known', 'noclasses' )
+                               )
                        );
-                       $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // If an edit was hidden from a page give a review link to the history
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
                        $revert = RevisionDeleter::getLogLinks( $title, $paramArray,
@@ -475,7 +459,7 @@ class LogEventsList {
                                // $paramArray[1] is a CSV of the IDs
                                $query = $paramArray[0];
                                // Link to each hidden object ID, $paramArray[1] is the url param
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        $revdel,
                                        $this->message['revdel-restore'],
                                        array(),
@@ -483,10 +467,9 @@ class LogEventsList {
                                                'target' => $title->getPrefixedText(),
                                                'type' => 'logging',
                                                'ids' => $query
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                        }
                // Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
                } else {
@@ -504,24 +487,24 @@ class LogEventsList {
         * @return string
         */
        private function getShowHideLinks( $row ) {
-               global $wgUser;
                if( ( $this->flags == self::NO_ACTION_LINK ) // we don't want to see the links
                        || $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
                        return '';
                }
                $del = '';
+               $user = $this->getUser();
                // Don't show useless checkbox to people who cannot hide revisions
-               if( $wgUser->isAllowed( 'deletedhistory' ) ) {
-                       if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
-                               $canHide = $wgUser->isAllowed( 'deleterevision' );
+               if( $user->isAllowed( 'deletedhistory' ) ) {
+                       if( $row->log_deleted || $user->isAllowed( 'deleterevision' ) ) {
+                               $canHide = $user->isAllowed( 'deleterevision' );
                                if ( $this->flags & self::USE_REVDEL_CHECKBOXES ) { // Show checkboxes instead of links.
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
                                                $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
                                        } else {
                                                $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
                                        }
                                } else {
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
                                                $del = Linker::revDeleteLinkDisabled( $canHide );
                                        } else {
                                                $query = array(
@@ -621,8 +604,8 @@ class LogEventsList {
         *   if set to true (default), "No matching items in log" is displayed if loglist is empty
         * - msgKey Array If you want a nice box with a message, set this to the key of the message.
         *   First element is the message key, additional optional elements are parameters for the key
-        *   that are processed with wfMsgExt and option 'parse'
-        * - offset Set to overwrite offset parameter in $wgRequest
+        *   that are processed with wfMessage
+        * - offset Set to overwrite offset parameter in WebRequest
         *   set to '' to unset offset
         * - wrap String Wrap the message in html (usually something like "<div ...>$1</div>").
         * - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
@@ -660,9 +643,9 @@ class LogEventsList {
                }
 
                # Insert list of top 50 (or top $lim) items
-               $loglist = new LogEventsList( $context->getSkin(), $context->getOutput(), $flags );
+               $loglist = new LogEventsList( $context, null, $flags );
                $pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
-               if ( isset( $param['offset'] ) ) { # Tell pager to ignore $wgRequest offset
+               if ( isset( $param['offset'] ) ) { # Tell pager to ignore WebRequest offset
                        $pager->setOffset( $param['offset'] );
                }
                if( $lim > 0 ) $pager->mLimit = $lim;
@@ -673,11 +656,11 @@ class LogEventsList {
                                $s = '<div class="mw-warning-with-logexcerpt">';
 
                                if ( count( $msgKey ) == 1 ) {
-                                       $s .= wfMsgExt( $msgKey[0], array( 'parse' ) );
+                                       $s .= $context->msg( $msgKey[0] )->parseAsBlock();
                                } else { // Process additional arguments
                                        $args = $msgKey;
                                        array_shift( $args );
-                                       $s .= wfMsgExt( $msgKey[0], array( 'parse' ), $args );
+                                       $s .= $context->msg( $msgKey[0], $args )->parseAsBlock();
                                }
                        }
                        $s .= $loglist->beginLogEventsList() .
@@ -686,7 +669,7 @@ class LogEventsList {
                } else {
                        if ( $showIfEmpty ) {
                                $s = Html::rawElement( 'div', array( 'class' => 'mw-warning-logempty' ),
-                                       wfMsgExt( 'logempty', array( 'parseinline' ) ) );
+                                       $context->msg( 'logempty' )->parse() );
                        }
                }
                if( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
@@ -705,7 +688,7 @@ class LogEventsList {
                                $urlParam['type'] = $types[0];
                        $s .= Linker::link(
                                SpecialPage::getTitleFor( 'Log' ),
-                               wfMsgHtml( 'log-fulllog' ),
+                               $context->msg( 'log-fulllog' )->escaped(),
                                array(),
                                $urlParam
                        );
index 1ba6a3b..93f3f83 100644 (file)
@@ -496,9 +496,7 @@ class LogFormatter {
         * @return Message
         */
        protected function msg( $key ) {
-               return wfMessage( $key )
-                       ->inLanguage( $this->context->getLanguage() )
-                       ->title( $this->context->getTitle() );
+               return $this->context->msg( $key );
        }
 
        protected function makeUserLink( User $user ) {
index 339688d..4fc7637 100644 (file)
@@ -45,24 +45,20 @@ class PatrolLog {
                        }
                }
 
-               $title = Title::makeTitleSafe( $rc->getAttribute( 'rc_namespace' ), $rc->getAttribute( 'rc_title' ) );
-               if( $title ) {
-                       if ( !$user ) {
-                               global $wgUser;
-                               $user = $wgUser;
-                       }
+               if ( !$user ) {
+                       global $wgUser;
+                       $user = $wgUser;
+               }
 
-                       $entry = new ManualLogEntry( 'patrol', 'patrol' );
-                       $entry->setTarget( $title );
-                       $entry->setParameters( self::buildParams( $rc, $auto ) );
-                       $entry->setPerformer( $user );
-                       $logid = $entry->insert();
-                       if ( !$auto ) {
-                               $entry->publish( $logid, 'udp' );
-                       }
-                       return true;
+               $entry = new ManualLogEntry( 'patrol', 'patrol' );
+               $entry->setTarget( $rc->getTitle() );
+               $entry->setParameters( self::buildParams( $rc, $auto ) );
+               $entry->setPerformer( $user );
+               $logid = $entry->insert();
+               if ( !$auto ) {
+                       $entry->publish( $logid, 'udp' );
                }
-               return false;
+               return true;
        }
 
        /**
index bca6985..262665b 100644 (file)
@@ -363,13 +363,15 @@ class DeviceDetection implements IDeviceDetector {
                        $deviceName = 'android';
                        if ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
                                $deviceName = 'operamini';
+                       } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
+                               $deviceName = 'operamobile';
                        }
-               } else if ( preg_match( '/MSIE 9.0/', $userAgent ) ||
+               } elseif ( preg_match( '/MSIE 9.0/', $userAgent ) ||
                                preg_match( '/MSIE 8.0/', $userAgent ) ) {
                        $deviceName = 'ie';
-               } else if( preg_match( '/MSIE/', $userAgent ) ) {
+               } elseif( preg_match( '/MSIE/', $userAgent ) ) {
                        $deviceName = 'html';
-               } else if ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
+               } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
                        $deviceName = 'operamobile';
                } elseif ( preg_match( '/iPad.* Safari/', $userAgent ) ) {
                        $deviceName = 'iphone';
@@ -398,10 +400,8 @@ class DeviceDetection implements IDeviceDetector {
                                $deviceName = 'wii';
                        } elseif ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
                                $deviceName = 'operamini';
-                       } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
-                               $deviceName = 'iphone';
                        } else {
-                               $deviceName = 'webkit';
+                               $deviceName = 'operamobile';
                        }
                } elseif ( preg_match( '/Kindle\/1.0/', $userAgent ) ) {
                        $deviceName = 'kindle';
index d03771e..63ad4de 100644 (file)
@@ -28,7 +28,7 @@
  * for systems that don't have it.
  *
  * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wgTmpDirectory).
+ * to override the default DBA files directory (wfTempDir()).
  *
  * @ingroup Cache
  */
@@ -39,8 +39,7 @@ class DBABagOStuff extends BagOStuff {
                global $wgDBAhandler;
 
                if ( !isset( $params['dir'] ) ) {
-                       global $wgTmpDirectory;
-                       $params['dir'] = $wgTmpDirectory;
+                       $params['dir'] = wfTempDir();
                }
 
                $this->mFile = $params['dir']."/mw-cache-" . wfWikiID();
index 3c26487..65d736a 100644 (file)
  * @file
  * @ingroup Cache
  */
+
 /**
  * A wrapper class for the PECL memcached client
- * 
+ *
  * @ingroup Cache
  */
 class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
@@ -37,7 +37,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
         *   - compress_threshold:  The minimum size an object must be before it is compressed
         *   - timeout:             The read timeout in microseconds
         *   - connect_timeout:     The connect timeout in seconds
-        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact 
+        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact
         *                          values, but serialization is much slower unless the php.ini option
         *                          igbinary.compact_strings is off.
         */
@@ -45,7 +45,14 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $params = $this->applyDefaultParams( $params );
 
                if ( $params['persistent'] ) {
-                       $this->client = new Memcached( __CLASS__ );
+                       // The pool ID must be unique to the server/option combination.
+                       // The Memcached object is essentially shared for each pool ID.
+                       // We can only resuse a pool ID if we keep the config consistent.
+                       $this->client = new Memcached( md5( serialize( $params ) ) );
+                       if ( count( $this->client->getServerList() ) ) {
+                               wfDebug( __METHOD__ . ": persistent Memcached object already loaded.\n" );
+                               return; // already initialized; don't add duplicate servers
+                       }
                } else {
                        $this->client = new Memcached;
                }
@@ -54,8 +61,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        $params['serializer'] = 'php';
                }
 
-               // The compression threshold is an undocumented php.ini option for some 
-               // reason. There's probably not much harm in setting it globally, for 
+               // The compression threshold is an undocumented php.ini option for some
+               // reason. There's probably not much harm in setting it globally, for
                // compatibility with the settings for the PHP client.
                ini_set( 'memcached.compression_threshold', $params['compress_threshold'] );
 
@@ -65,10 +72,10 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $this->client->setOption( Memcached::OPT_RECV_TIMEOUT, $params['timeout'] );
                $this->client->setOption( Memcached::OPT_POLL_TIMEOUT, $params['timeout'] / 1000 );
 
-               // Set libketama mode since it's recommended by the documentation and 
+               // Set libketama mode since it's recommended by the documentation and
                // is as good as any. There's no way to configure libmemcached to use
                // hashes identical to the ones currently in use by the PHP client, and
-               // even implementing one of the libmemcached hashes in pure PHP for 
+               // even implementing one of the libmemcached hashes in pure PHP for
                // forwards compatibility would require MWMemcached::get_sock() to be
                // rewritten.
                $this->client->setOption( Memcached::OPT_LIBKETAMA_COMPATIBLE, true );
@@ -80,7 +87,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                                break;
                        case 'igbinary':
                                if ( !Memcached::HAVE_IGBINARY ) {
-                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' . 
+                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' .
                                                'but igbinary serialization was requested.' );
                                }
                                $this->client->setOption( Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY );
@@ -88,10 +95,11 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        default:
                                throw new MWException( __CLASS__.': invalid value for serializer parameter' );
                }
+               $servers = array();
                foreach ( $params['servers'] as $host ) {
-                       list( $ip, $port ) = IP::splitHostAndPort( $host );
-                       $this->client->addServer( $ip, $port );
+                       $servers[] = IP::splitHostAndPort( $host ); // (ip, port)
                }
+               $this->client->addServers( $servers );
        }
 
        /**
@@ -174,12 +182,12 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
        }
 
        /**
-        * Check the return value from a client method call and take any necessary 
-        * action. Returns the value that the wrapper function should return. At 
+        * Check the return value from a client method call and take any necessary
+        * action. Returns the value that the wrapper function should return. At
         * present, the return value is always the same as the return value from
-        * the client, but some day we might find a case where it should be 
+        * the client, but some day we might find a case where it should be
         * different.
-        * 
+        *
         * @param $key The key used by the caller, or false if there wasn't one.
         * @param $result The return value
         */
@@ -220,8 +228,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                return $this->checkResult( false, $result );
        }
 
-       /* NOTE: there is no cas() method here because it is currently not supported 
-        * by the BagOStuff interface and other BagOStuff subclasses, such as 
+       /* NOTE: there is no cas() method here because it is currently not supported
+        * by the BagOStuff interface and other BagOStuff subclasses, such as
         * SqlBagOStuff.
         */
 }
index e504887..209975b 100644 (file)
@@ -87,25 +87,34 @@ class SqlBagOStuff extends BagOStuff {
         * @return DatabaseBase
         */
        protected function getDB() {
+               global $wgDebugDBTransactions;
                if ( !isset( $this->db ) ) {
                        # If server connection info was given, use that
                        if ( $this->serverInfo ) {
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug( sprintf( "Using provided serverInfo for SqlBagOStuff\n" ) );
+                               }
                                $this->lb = new LoadBalancer( array(
                                        'servers' => array( $this->serverInfo ) ) );
                                $this->db = $this->lb->getConnection( DB_MASTER );
                                $this->db->clearFlag( DBO_TRX );
                        } else {
-                               # We must keep a separate connection to MySQL in order to avoid deadlocks
-                               # However, SQLite has an opposite behaviour.
-                               # @todo Investigate behaviour for other databases
-                               if ( wfGetDB( DB_MASTER )->getType() == 'sqlite' ) {
-                                       $this->db = wfGetDB( DB_MASTER );
-                               } else {
+                               /*
+                                * We must keep a separate connection to MySQL in order to avoid deadlocks
+                                * However, SQLite has an opposite behaviour. And PostgreSQL needs to know
+                                * if we are in transaction or no
+                                */
+                               if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                                        $this->lb = wfGetLBFactory()->newMainLB();
                                        $this->db = $this->lb->getConnection( DB_MASTER );
                                        $this->db->clearFlag( DBO_TRX );
+                               } else {
+                                       $this->db = wfGetDB( DB_MASTER );
                                }
                        }
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $this->db ) );
+                       }
                }
 
                return $this->db;
index f881455..7991ca6 100644 (file)
@@ -364,6 +364,7 @@ class Parser {
                # No more strip!
                wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) );
                $text = $this->internalParse( $text );
+               wfRunHooks( 'ParserAfterParse', array( &$this, &$text, &$this->mStripState ) );
 
                $text = $this->mStripState->unstripGeneral( $text );
 
@@ -1121,6 +1122,7 @@ class Parser {
                        $text = $this->replaceVariables( $text );
                }
 
+               wfRunHooks( 'InternalParseBeforeSanitize', array( &$this, &$text, &$this->mStripState ) );
                $text = Sanitizer::removeHTMLtags( $text, array( &$this, 'attributeStripCallback' ), false, array_keys( $this->mTransparentTagHooks ) );
                wfRunHooks( 'InternalParseBeforeLinks', array( &$this, &$text, &$this->mStripState ) );
 
@@ -2720,6 +2722,18 @@ class Parser {
                                $subjPage = $this->mTitle->getSubjectPage();
                                $value = wfEscapeWikiText( $subjPage->getPrefixedUrl() );
                                break;
+                       case 'pageid': // requested in bug 23427
+                               $pageid = $this->getTitle()->getArticleId();
+                               if( $pageid == 0 ) {
+                                       # 0 means the page doesn't exist in the database,
+                                       # which means the user is previewing a new page.
+                                       # The vary-revision flag must be set, because the magic word
+                                       # will have a different value once the page is saved.
+                                       $this->mOutput->setFlag( 'vary-revision' );
+                                       wfDebug( __METHOD__ . ": {{PAGEID}} used in a new page, setting vary-revision...\n" );
+                               }
+                               $value = $pageid ? $pageid : null;
+                               break;
                        case 'revisionid':
                                # Let the edit saving system know we should parse the page
                                # *after* a revision ID has been assigned.
@@ -4171,7 +4185,7 @@ class Parser {
                        # Don't number the heading if it is the only one (looks silly)
                        if ( count( $matches[3] ) > 1 && $this->mOptions->getNumberHeadings() ) {
                                # the two are different if the line contains a link
-                               $headline = $numbering . ' ' . $headline;
+                               $headline = Html::element( 'span', array( 'class' => 'mw-headline-number' ), $numbering ) . ' ' . $headline;
                        }
 
                        # Create the anchor for linking from the TOC to the section
@@ -4402,7 +4416,7 @@ class Parser {
 
                $p1 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\))\\|]]/";           # [[ns:page (context)|]]
                $p4 = "/\[\[(:?$nc+:|:|)($tc+?)( ?($tc+))\\|]]/";           # [[ns:page(context)|]]
-               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)($tc+|)\\|]]/"; # [[ns:page (context), context|]]
+               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)((?:, |,)$tc+|)\\|]]/"; # [[ns:page (context), context|]]
                $p2 = "/\[\[\\|($tc+)]]/";                                      # [[|page]]
 
                # try $p1 first, to turn "[[A, B (C)|]]" into "[[A, B (C)|A, B]]"
index 9e88494..8b1452e 100644 (file)
@@ -713,12 +713,27 @@ class ResourceLoader {
                                // Styles
                                $styles = array();
                                if ( $context->shouldIncludeStyles() ) {
-                                       // If we are in debug mode, we'll want to return an array of URLs
-                                       // See comment near shouldIncludeScripts() for more details
-                                       if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
-                                               $styles = $module->getStyleURLsForDebug( $context );
-                                       } else {
-                                               $styles = $module->getStyles( $context );
+                                       // Don't create empty stylesheets like array( '' => '' ) for modules
+                                       // that don't *have* any stylesheets (bug 38024).
+                                       $stylePairs = $module->getStyles( $context );
+                                       if ( count ( $stylePairs ) ) {
+                                               // If we are in debug mode without &only= set, we'll want to return an array of URLs
+                                               // See comment near shouldIncludeScripts() for more details
+                                               if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
+                                                       $styles = $module->getStyleURLsForDebug( $context );
+                                               } else {
+                                                       // Minify CSS before embedding in mw.loader.implement call
+                                                       // (unless in debug mode)
+                                                       if ( !$context->getDebug() ) {
+                                                               foreach ( $stylePairs as $media => $style ) {
+                                                                       if ( is_string( $style ) ) {
+                                                                               $stylePairs[$media] = $this->filter( 'minify-css', $style );
+                                                                       }
+                                                               }
+                                                       }
+                                                       // Combine styles into @media groups as one big string
+                                                       $styles = array( '' => self::makeCombinedStyles( $stylePairs ) );
+                                               }
                                        }
                                }
 
@@ -737,23 +752,22 @@ class ResourceLoader {
                                                }
                                                break;
                                        case 'styles':
-                                               $out .= self::makeCombinedStyles( $styles );
+                                               // We no longer seperate into media, they are all concatenated now with
+                                               // custom media type groups into @media .. {} sections.
+                                               // Module returns either an empty array or an array with '' (no media type) as
+                                               // only key.
+                                               $out .= isset( $styles[''] ) ? $styles[''] : '';
                                                break;
                                        case 'messages':
                                                $out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
                                                break;
                                        default:
-                                               // Minify CSS before embedding in mw.loader.implement call
-                                               // (unless in debug mode)
-                                               if ( !$context->getDebug() ) {
-                                                       foreach ( $styles as $media => $style ) {
-                                                               if ( is_string( $style ) ) {
-                                                                       $styles[$media] = $this->filter( 'minify-css', $style );
-                                                               }
-                                                       }
-                                               }
-                                               $out .= self::makeLoaderImplementScript( $name, $scripts, $styles,
-                                                       new XmlJsCode( $messagesBlob ) );
+                                               $out .= self::makeLoaderImplementScript(
+                                                       $name,
+                                                       $scripts,
+                                                       $styles,
+                                                       new XmlJsCode( $messagesBlob )
+                                               );
                                                break;
                                }
                        } catch ( Exception $e ) {
index b823f1d..a36aaec 100644 (file)
  */
 class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
 
+       protected $language;
        /**
         * Get the grammer forms for the site content language.
         *
         * @return array
         */
        protected function getSiteLangGrammarForms() {
-               global $wgContLang;
-               return $wgContLang->getGrammarForms();
+               return $this->language->getGrammarForms();
+       }
+
+       /**
+        * Get the digit transform table for the content language
+        * Seperator transform table also required here to convert
+        * the . and , sign to appropriate forms in content language.
+        *
+        * @return array
+        */
+       protected function getDigitTransformTable() {
+               $digitTransformTable = $this->language->digitTransformTable();
+               $separatorTransformTable = $this->language->separatorTransformTable();
+               if ( $digitTransformTable ) {
+                       array_merge( $digitTransformTable, (array)$separatorTransformTable );
+               } else {
+                       return $separatorTransformTable;
+               }
+               return $digitTransformTable;
+       }
+
+       /**
+        * Get all the dynamic data for the content language to an array
+        *
+        * @return array
+        */
+       protected function getData() {
+               return array( 'grammarForms' => $this->getSiteLangGrammarForms(),
+                               'digitTransformTable' => $this->getDigitTransformTable()
+                       );
        }
 
        /**
@@ -42,13 +71,10 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return string: Javascript code
         */
        public function getScript( ResourceLoaderContext $context ) {
-               global $wgContLang;
-
+               $this->language = Language::factory( $context ->getLanguage() );
                return Xml::encodeJsCall( 'mw.language.setData', array(
-                       $wgContLang->getCode(),
-                       array(
-                               'grammarForms' => $this->getSiteLangGrammarForms()
-                       )
+                       $this->language->getCode(),
+                       $this->getData()
                ) );
        }
 
@@ -57,11 +83,12 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return array|int|Mixed
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
+               $this->language = Language::factory( $context ->getLanguage() );
                $cache = wfGetCache( CACHE_ANYTHING );
                $key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
 
-               $forms = $this->getSiteLangGrammarForms();
-               $hash = md5( serialize( $forms ) );
+               $data = $this->getData();
+               $hash = md5( serialize( $data ) );
 
                $result = $cache->get( $key );
                if ( is_array( $result ) && $result['hash'] === $hash ) {
index 678c530..a8e0437 100644 (file)
@@ -756,7 +756,8 @@ class SearchResult {
        protected function initFromTitle( $title ) {
                $this->mTitle = $title;
                if ( !is_null( $this->mTitle ) ) {
-                       $this->mRevision = Revision::newFromTitle( $this->mTitle );
+                       $this->mRevision = Revision::newFromTitle(
+                               $this->mTitle, false, Revision::AVOID_MASTER );
                        if ( $this->mTitle->getNamespace() === NS_FILE )
                                $this->mImage = wfFindFile( $this->mTitle );
                }
index 06a4694..156b5f2 100644 (file)
@@ -40,7 +40,12 @@ class ActiveUsersPager extends UsersPager {
        /**
         * @var Array
         */
-       protected $groups;
+       protected $hideGroups = array();
+
+       /**
+        * @var Array
+        */
+       protected $hideRights = array();
 
        /**
         * @param $context IContextSource
@@ -73,12 +78,11 @@ class ActiveUsersPager extends UsersPager {
 
                $this->opts->fetchValuesFromRequest( $this->getRequest() );
 
-               $this->groups = array();
                if ( $this->opts->getValue( 'hidebots' ) == 1 ) {
-                       $this->groups['bot'] = true;
+                       $this->hideRights[] = 'bot';
                }
                if ( $this->opts->getValue( 'hidesysops' ) == 1 ) {
-                       $this->groups['sysop'] = true;
+                       $this->hideGroups[] = 'sysop';
                }
        }
 
@@ -127,12 +131,30 @@ class ActiveUsersPager extends UsersPager {
                $lang = $this->getLanguage();
 
                $list = array();
-               foreach( self::getGroups( $row->user_id ) as $group ) {
-                       if ( isset( $this->groups[$group] ) ) {
+               $user = User::newFromId( $row->user_id );
+
+               // User right filter
+               foreach( $this->hideRights as $right ) {
+                       // Calling User::getRights() within the loop so that
+                       // if the hideRights() filter is empty, we don't have to
+                       // trigger the lazy-init of the big userrights array in the
+                       // User object
+                       if ( in_array( $right, $user->getRights() ) ) {
+                               return '';
+                       }
+               }
+
+               // User group filter
+               // Note: This is a different loop than for user rights,
+               // because we're reusing it to build the group links
+               // at the same time
+               foreach( $user->getGroups() as $group ) {
+                       if ( in_array( $group, $this->hideGroups ) ) {
                                return '';
                        }
                        $list[] = self::buildGroupLink( $group, $userName );
                }
+
                $groups = $lang->commaList( $list );
 
                $item = $lang->specialList( $ulinks, $groups );
index 4d74fe1..3c43ed1 100644 (file)
@@ -338,6 +338,8 @@ class SpecialBlock extends FormSpecialPage {
         * @return string
         */
        protected function postText(){
+               $links = array();
+
                # Link to the user's contributions, if applicable
                if( $this->target instanceof User ){
                        $contribsPage = SpecialPage::getTitleFor( 'Contributions', $this->target->getName() );
index bc07d58..87ba0cb 100644 (file)
@@ -143,7 +143,7 @@ class SpecialBookSources extends SpecialPage {
                $page = $this->msg( 'booksources' )->inContentLanguage()->text();
                $title = Title::makeTitleSafe( NS_PROJECT, $page ); # Show list in content language
                if( is_object( $title ) && $title->exists() ) {
-                       $rev = Revision::newFromTitle( $title );
+                       $rev = Revision::newFromTitle( $title, false, Revision::AVOID_MASTER );
                        $this->getOutput()->addWikiText( str_replace( 'MAGICNUMBER', $this->isbn, $rev->getText() ) );
                        return true;
                }
index bd5a443..a1c6fd2 100644 (file)
@@ -201,7 +201,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                if ( !$status->isGood() ) {
                        $this->getOutput()->addHTML(
                                '<p class="error">' .
-                               $this->getOutput()->parseInline( $status->getWikiText( $info ) ) .
+                               $this->getOutput()->parseInline( $status->getWikiText( 'mailerror' ) ) .
                                '</p>' );
                        return false;
                }
index f6482ef..b30605b 100644 (file)
@@ -63,10 +63,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
 
                if( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
                        try {
-                               if ( isset( $_SESSION['wsDomain'] ) ) {
-                                       $this->mDomain = $_SESSION['wsDomain'];
-                               }
-                               $wgAuth->setDomain( $this->mDomain );
+                               $this->mDomain = $wgAuth->getDomain();
                                if( !$wgAuth->allowPasswordChange() ) {
                                        $this->error( $this->msg( 'resetpass_forbidden' )->text() );
                                        return;
@@ -136,6 +133,15 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        $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 );
                $this->getOutput()->addHTML(
                        Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
                        Xml::openElement( 'form',
@@ -149,12 +155,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
                        $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
                        Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
-                       $this->pretty( array(
-                               array( 'wpName', 'username', 'text', $this->mUserName ),
-                               array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
-                               array( 'wpNewPassword', 'newpassword', 'password', null ),
-                               array( 'wpRetype', 'retypenew', 'password', null ),
-                       ) ) . "\n" .
+                       $this->pretty( $prettyFields ) . "\n" .
                        $rememberMe .
                        "<tr>\n" .
                                "<td></td>\n" .
index 62b34ad..e8223e8 100644 (file)
@@ -441,7 +441,7 @@ class SpecialContributions extends SpecialPage {
                                'target',
                                $this->opts['target'],
                                'text',
-                               array( 'size' => '20', 'required' => '', 'class' => 'mw-input' ) +
+                               array( 'size' => '40', 'required' => '', 'class' => 'mw-input' ) +
                                        ( $this->opts['target'] ? array() : array( 'autofocus' )
                                )
                        ) . ' '
@@ -594,6 +594,66 @@ class ContribsPager extends ReverseChronologicalPager {
                return $query;
        }
 
+       /**
+        * This method basically executes the exact same code as the parent class, though with
+        * a hook added, to allow extentions to add additional queries.
+        *
+        * @param $offset String: index offset, inclusive
+        * @param $limit Integer: exact query limit
+        * @param $descending Boolean: query direction, false for ascending, true for descending
+        * @return ResultWrapper
+        */
+       function reallyDoQuery( $offset, $limit, $descending ) {
+               list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo( $offset, $limit, $descending );
+               $pager = $this;
+
+               /*
+                * This hook will allow extensions to add in additional queries, so they can get their data
+                * in My Contributions as well. Extensions should append their results to the $data array.
+                *
+                * Extension queries have to implement the navbar requirement as well. They should
+                * - have a column aliased as $pager->getIndexField()
+                * - have LIMIT set
+                * - have a WHERE-clause that compares the $pager->getIndexField()-equivalent column to the offset
+                * - have the ORDER BY specified based upon the details provided by the navbar
+                *
+                * See includes/Pager.php buildQueryInfo() method on how to build LIMIT, WHERE & ORDER BY
+                *
+                * &$data: an array of results of all contribs queries
+                * $pager: the ContribsPager object hooked into
+                * $offset: see phpdoc above
+                * $limit: see phpdoc above
+                * $descending: see phpdoc above
+                */
+               $data = array( $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds ) );
+               wfRunHooks( 'ContribsPager::reallyDoQuery', array( &$data, $pager, $offset, $limit, $descending ) );
+
+               $result = array();
+
+               // loop all results and collect them in an array
+               foreach ( $data as $j => $query ) {
+                       foreach ( $query as $i => $row ) {
+                               // use index column as key, allowing us to easily sort in PHP
+                               $result[$row->{$this->getIndexField()} . "-$i"] = $row;
+                       }
+               }
+
+               // sort results
+               if ( $descending ) {
+                       ksort( $result );
+               } else {
+                       krsort( $result );
+               }
+
+               // enforce limit
+               $result = array_slice( $result, 0, $limit );
+
+               // get rid of array keys
+               $result = array_values( $result );
+
+               return new FakeResultWrapper( $result );
+       }
+
        function getQueryInfo() {
                list( $tables, $index, $userCond, $join_cond ) = $this->getUserCond();
 
@@ -702,11 +762,11 @@ class ContribsPager extends ReverseChronologicalPager {
                $this->mResult->rewind();
                $revIds = array();
                foreach ( $this->mResult as $row ) {
-                       if( $row->rev_parent_id ) {
+                       if( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
                                $revIds[] = $row->rev_parent_id;
                        }
                }
-               $this->mParentLens = $this->getParentLengths( $revIds );
+               $this->mParentLens = Revision::getParentLengths( $this->getDatabase(), $revIds );
                $this->mResult->rewind(); // reset
 
                # Do a link batch query
@@ -714,38 +774,18 @@ class ContribsPager extends ReverseChronologicalPager {
                $batch = new LinkBatch();
                # Give some pointers to make (last) links
                foreach ( $this->mResult as $row ) {
-                       if ( $this->contribs === 'newbie' ) { // multiple users
-                               $batch->add( NS_USER, $row->user_name );
-                               $batch->add( NS_USER_TALK, $row->user_name );
+                       if ( isset( $row->rev_id ) ) {
+                               if ( $this->contribs === 'newbie' ) { // multiple users
+                                       $batch->add( NS_USER, $row->user_name );
+                                       $batch->add( NS_USER_TALK, $row->user_name );
+                               }
+                               $batch->add( $row->page_namespace, $row->page_title );
                        }
-                       $batch->add( $row->page_namespace, $row->page_title );
                }
                $batch->execute();
                $this->mResult->seek( 0 );
        }
 
-       /**
-        * Do a batched query to get the parent revision lengths
-        * @param $revIds array
-        * @return array
-        */
-       private function getParentLengths( array $revIds ) {
-               $revLens = array();
-               if ( !$revIds ) {
-                       return $revLens; // empty
-               }
-               wfProfileIn( __METHOD__ );
-               $res = $this->getDatabase()->select( 'revision',
-                       array( 'rev_id', 'rev_len' ),
-                       array( 'rev_id' => $revIds ),
-                       __METHOD__ );
-               foreach ( $res as $row ) {
-                       $revLens[$row->rev_id] = $row->rev_len;
-               }
-               wfProfileOut( __METHOD__ );
-               return $revLens;
-       }
-
        /**
         * @return string
         */
@@ -775,123 +815,140 @@ class ContribsPager extends ReverseChronologicalPager {
        function formatRow( $row ) {
                wfProfileIn( __METHOD__ );
 
-               $rev = new Revision( $row );
+               $ret = '';
                $classes = array();
 
-               $page = Title::newFromRow( $row );
-               $link = Linker::link(
-                       $page,
-                       htmlspecialchars( $page->getPrefixedText() ),
-                       array(),
-                       $page->isRedirect() ? array( 'redirect' => 'no' ) : array()
-               );
-               # Mark current revisions
-               $topmarktext = '';
-               if ( $row->rev_id == $row->page_latest ) {
-                       $topmarktext .= '<span class="mw-uctop">' . $this->messages['uctop'] . '</span>';
-                       # Add rollback link
-                       if ( !$row->page_is_new && $page->quickUserCan( 'rollback' )
-                               && $page->quickUserCan( 'edit' ) )
-                       {
-                               $this->preventClickjacking();
-                               $topmarktext .= ' ' . Linker::generateRollback( $rev );
-                       }
-               }
-               $user = $this->getUser();
-               # Is there a visible previous revision?
-               if ( $rev->userCan( Revision::DELETED_TEXT, $user ) && $rev->getParentId() !== 0 ) {
-                       $difftext = Linker::linkKnown(
+               /*
+                * There may be more than just revision rows. To make sure that we'll only be processing
+                * revisions here, let's _try_ to build a revision out of our row (without displaying
+                * notices though) and then trying to grab data from the built object. If we succeed,
+                * we're definitely dealing with revision data and we may proceed, if not, we'll leave it
+                * to extensions to subscribe to the hook to parse the row.
+                */
+               wfSuppressWarnings();
+               $rev = new Revision( $row );
+               $validRevision = $rev->getParentId() !== null;
+               wfRestoreWarnings();
+
+               if ( $validRevision ) {
+                       $classes = array();
+
+                       $page = Title::newFromRow( $row );
+                       $link = Linker::link(
                                $page,
-                               $this->messages['diff'],
+                               htmlspecialchars( $page->getPrefixedText() ),
                                array(),
-                               array(
-                                       'diff' => 'prev',
-                                       'oldid' => $row->rev_id
-                               )
+                               $page->isRedirect() ? array( 'redirect' => 'no' ) : array()
                        );
-               } else {
-                       $difftext = $this->messages['diff'];
-               }
-               $histlink = Linker::linkKnown(
-                       $page,
-                       $this->messages['hist'],
-                       array(),
-                       array( 'action' => 'history' )
-               );
-
-               if ( $row->rev_parent_id === null ) {
-                       // For some reason rev_parent_id isn't populated for this row.
-                       // Its rumoured this is true on wikipedia for some revisions (bug 34922).
-                       // Next best thing is to have the total number of bytes.
-                       $chardiff = ' . . ' . Linker::formatRevisionSize( $row->rev_len ) . ' . . ';
-               } else {
-                       $parentLen = isset( $this->mParentLens[$row->rev_parent_id] ) ? $this->mParentLens[$row->rev_parent_id] : 0;
-                       $chardiff = ' . . ' . ChangesList::showCharacterDifference(
-                                       $parentLen, $row->rev_len ) . ' . . ';
-               }
-
-               $lang = $this->getLanguage();
-               $comment = $lang->getDirMark() . Linker::revComment( $rev, false, true );
-               $date = $lang->userTimeAndDate( $row->rev_timestamp, $user );
-               if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
-                       $d = Linker::linkKnown(
+                       # Mark current revisions
+                       $topmarktext = '';
+                       $user = $this->getUser();
+                       if ( $row->rev_id == $row->page_latest ) {
+                               $topmarktext .= '<span class="mw-uctop">' . $this->messages['uctop'] . '</span>';
+                               # Add rollback link
+                               if ( !$row->page_is_new && $page->quickUserCan( 'rollback', $user )
+                                       && $page->quickUserCan( 'edit', $user ) )
+                               {
+                                       $this->preventClickjacking();
+                                       $topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext() );
+                               }
+                       }
+                       # Is there a visible previous revision?
+                       if ( $rev->userCan( Revision::DELETED_TEXT, $user ) && $rev->getParentId() !== 0 ) {
+                               $difftext = Linker::linkKnown(
+                                       $page,
+                                       $this->messages['diff'],
+                                       array(),
+                                       array(
+                                               'diff' => 'prev',
+                                               'oldid' => $row->rev_id
+                                       )
+                               );
+                       } else {
+                               $difftext = $this->messages['diff'];
+                       }
+                       $histlink = Linker::linkKnown(
                                $page,
-                               htmlspecialchars( $date ),
+                               $this->messages['hist'],
                                array(),
-                               array( 'oldid' => intval( $row->rev_id ) )
+                               array( 'action' => 'history' )
                        );
-               } else {
-                       $d = htmlspecialchars( $date );
-               }
-               if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
-                       $d = '<span class="history-deleted">' . $d . '</span>';
-               }
 
-               # Show user names for /newbies as there may be different users.
-               # Note that we already excluded rows with hidden user names.
-               if ( $this->contribs == 'newbie' ) {
-                       $userlink = ' . . ' . Linker::userLink( $rev->getUser(), $rev->getUserText() );
-                       $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
-                               Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
-               } else {
-                       $userlink = '';
-               }
+                       if ( $row->rev_parent_id === null ) {
+                               // For some reason rev_parent_id isn't populated for this row.
+                               // Its rumoured this is true on wikipedia for some revisions (bug 34922).
+                               // Next best thing is to have the total number of bytes.
+                               $chardiff = ' . . ' . Linker::formatRevisionSize( $row->rev_len ) . ' . . ';
+                       } else {
+                               $parentLen = isset( $this->mParentLens[$row->rev_parent_id] ) ? $this->mParentLens[$row->rev_parent_id] : 0;
+                               $chardiff = ' . . ' . ChangesList::showCharacterDifference(
+                                               $parentLen, $row->rev_len, $this->getContext() ) . ' . . ';
+                       }
 
-               if ( $rev->getParentId() === 0 ) {
-                       $nflag = ChangesList::flag( 'newpage' );
-               } else {
-                       $nflag = '';
-               }
+                       $lang = $this->getLanguage();
+                       $comment = $lang->getDirMark() . Linker::revComment( $rev, false, true );
+                       $date = $lang->userTimeAndDate( $row->rev_timestamp, $user );
+                       if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+                               $d = Linker::linkKnown(
+                                       $page,
+                                       htmlspecialchars( $date ),
+                                       array(),
+                                       array( 'oldid' => intval( $row->rev_id ) )
+                               );
+                       } else {
+                               $d = htmlspecialchars( $date );
+                       }
+                       if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+                               $d = '<span class="history-deleted">' . $d . '</span>';
+                       }
 
-               if ( $rev->isMinor() ) {
-                       $mflag = ChangesList::flag( 'minor' );
-               } else {
-                       $mflag = '';
-               }
+                       # Show user names for /newbies as there may be different users.
+                       # Note that we already excluded rows with hidden user names.
+                       if ( $this->contribs == 'newbie' ) {
+                               $userlink = ' . . ' . Linker::userLink( $rev->getUser(), $rev->getUserText() );
+                               $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
+                                       Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
+                       } else {
+                               $userlink = '';
+                       }
 
-               $del = Linker::getRevDeleteLink( $user, $rev, $page );
-               if ( $del !== '' ) {
-                       $del .= ' ';
-               }
+                       if ( $rev->getParentId() === 0 ) {
+                               $nflag = ChangesList::flag( 'newpage' );
+                       } else {
+                               $nflag = '';
+                       }
 
-               $diffHistLinks = $this->msg( 'parentheses' )->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )->escaped();
-               $ret = "{$del}{$d} {$diffHistLinks}{$chardiff}{$nflag}{$mflag} {$link}{$userlink} {$comment} {$topmarktext}";
+                       if ( $rev->isMinor() ) {
+                               $mflag = ChangesList::flag( 'minor' );
+                       } else {
+                               $mflag = '';
+                       }
 
-               # Denote if username is redacted for this edit
-               if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
-                       $ret .= " <strong>" . $this->msg( 'rev-deleted-user-contribs' )->escaped() . "</strong>";
-               }
+                       $del = Linker::getRevDeleteLink( $user, $rev, $page );
+                       if ( $del !== '' ) {
+                               $del .= ' ';
+                       }
 
-               # Tags, if any.
-               list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'contributions' );
-               $classes = array_merge( $classes, $newClasses );
-               $ret .= " $tagSummary";
+                       $diffHistLinks = $this->msg( 'parentheses' )->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )->escaped();
+                       $ret = "{$del}{$d} {$diffHistLinks}{$chardiff}{$nflag}{$mflag} {$link}{$userlink} {$comment} {$topmarktext}";
+
+                       # Denote if username is redacted for this edit
+                       if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
+                               $ret .= " <strong>" . $this->msg( 'rev-deleted-user-contribs' )->escaped() . "</strong>";
+                       }
+
+                       # Tags, if any.
+                       list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'contributions' );
+                       $classes = array_merge( $classes, $newClasses );
+                       $ret .= " $tagSummary";
+               }
 
                // Let extensions add data
-               wfRunHooks( 'ContributionsLineEnding', array( &$this, &$ret, $row ) );
+               wfRunHooks( 'ContributionsLineEnding', array( $this, &$ret, $row, &$classes ) );
 
                $classes = implode( ' ', $classes );
                $ret = "<li class=\"$classes\">$ret</li>\n";
+
                wfProfileOut( __METHOD__ );
                return $ret;
        }
index 67f6d68..091f5ca 100644 (file)
@@ -129,21 +129,28 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         * @return array
         */
        private function extractTitles( $list ) {
-               $titles = array();
                $list = explode( "\n", trim( $list ) );
                if( !is_array( $list ) ) {
                        return array();
                }
+               $titles = array();
                foreach( $list as $text ) {
                        $text = trim( $text );
                        if( strlen( $text ) > 0 ) {
                                $title = Title::newFromText( $text );
                                if( $title instanceof Title && $title->isWatchable() ) {
-                                       $titles[] = $title->getPrefixedText();
+                                       $titles[] = $title;
                                }
                        }
                }
-               return array_unique( $titles );
+
+               GenderCache::singleton()->doTitlesArray( $titles );
+
+               $list = array();
+               foreach( $titles as $title ) {
+                       $list[] = $title->getPrefixedText();
+               }
+               return array_unique( $list );
        }
 
        public function submitRaw( $data ){
@@ -249,15 +256,22 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                        __METHOD__
                );
                if( $res->numRows() > 0 ) {
+                       $titles = array();
                        foreach ( $res as $row ) {
                                $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
                                if ( $this->checkTitle( $title, $row->wl_namespace, $row->wl_title )
                                        && !$title->isTalkPage()
                                ) {
-                                       $list[] = $title->getPrefixedText();
+                                       $titles[] = $title;
                                }
                        }
                        $res->free();
+
+                       GenderCache::singleton()->doTitlesArray( $titles );
+
+                       foreach( $titles as $title ) {
+                               $list[] = $title->getPrefixedText();
+                       }
                }
                $this->cleanupWatchlist();
                return $list;
index 8eee22d..2c96e83 100644 (file)
@@ -131,7 +131,7 @@ class SpecialLog extends SpecialPage {
 
        private function show( FormOptions $opts, array $extraConds ) {
                # Create a LogPager item to get the results and a LogEventsList item to format them...
-               $loglist = new LogEventsList( $this->getSkin(), $this->getOutput(), LogEventsList::USE_REVDEL_CHECKBOXES );
+               $loglist = new LogEventsList( $this->getContext(), null, LogEventsList::USE_REVDEL_CHECKBOXES );
                $pager = new LogPager( $loglist, $opts->getValue( 'type' ), $opts->getValue( 'user' ),
                        $opts->getValue( 'page' ), $opts->getValue( 'pattern' ), $extraConds, $opts->getValue( 'year' ),
                        $opts->getValue( 'month' ), $opts->getValue( 'tagfilter' ) );
index a512ee6..68b180a 100644 (file)
@@ -358,7 +358,7 @@ class MovePageForm extends UnlistedSpecialPage {
                }
 
                $watchChecked = $user->isLoggedIn() && ($this->watch || $user->getBoolOption( 'watchmoves' )
-                       || $this->oldTitle->userIsWatching());
+                       || $user->isWatched( $this->oldTitle ) );
                # Don't allow watching if user is not logged in
                if( $user->isLoggedIn() ) {
                        $out->addHTML( "
@@ -440,8 +440,9 @@ class MovePageForm extends UnlistedSpecialPage {
 
                        $error = ''; // passed by ref
                        $page = WikiPage::factory( $nt );
-                       if ( !$page->doDeleteArticle( $reason, false, 0, true, $error, $user ) ) {
-                               $this->showForm( array( array( 'cannotdelete', wfEscapeWikiText( $nt->getPrefixedText() ) ) ) );
+                       $deleteStatus = $page->doDeleteArticleReal( $reason, false, 0, true, $error, $user );
+                       if ( !$deleteStatus->isGood() ) {
+                               $this->showForm( $deleteStatus->getErrorsArray() );
                                return;
                        }
                }
index 4c32c30..1798e8f 100644 (file)
@@ -345,7 +345,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        $this->msg( 'parentheses' )->rawParams( $histLink )->escaped() );
 
                $length = Html::element( 'span', array( 'class' => 'mw-newpages-length' ),
-                               '[' . $this->msg( 'nbytes' )->numParams( $result->length )->text() . ']'
+                       $this->msg( 'brackets' )->params( $this->msg( 'nbytes' )->numParams( $result->length )->text() )
                );
 
                $ulink = Linker::revUserTools( $rev );
index 803f03e..9f84804 100644 (file)
@@ -56,7 +56,13 @@ class PopularPagesPage extends QueryPage {
         */
        function formatResult( $skin, $result ) {
                global $wgContLang;
-               $title = Title::makeTitle( $result->namespace, $result->title );
+
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               if( !$title ) {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+               }
+
                $link = Linker::linkKnown(
                        $title,
                        htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
index 730969d..c37bb1d 100644 (file)
@@ -196,7 +196,8 @@ class SpecialPrefixindex extends SpecialAllpages {
                                                $link = ($s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
                                                        Linker::linkKnown(
                                                                $t,
-                                                               htmlspecialchars( $t->getText() )
+                                                               htmlspecialchars( $t->getText() ),
+                                                               $s->page_is_redirect ? array( 'class' => 'mw-redirect' ) : array()
                                                        ) .
                                                        ($s->page_is_redirect ? '</div>' : '' );
                                        } else {
index d089c73..83c7235 100644 (file)
@@ -420,7 +420,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $out .= Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
                        if( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                               $title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
+                               $title = Title::makeTitle( NS_MEDIAWIKI, 'Revdelete-reason-dropdown' );
                                $link = Linker::link(
                                        $title,
                                        $this->msg( 'revdelete-edit-reasonlist' )->escaped(),
index 079130f..3344436 100644 (file)
@@ -899,27 +899,7 @@ class SpecialSearch extends SpecialPage {
                        ) .
                        Xml::element( 'legend', null, $this->msg('powersearch-legend' )->text() ) .
                        Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
-                       Xml::tags(
-                               'div',
-                               array( 'id' => 'mw-search-togglebox' ),
-                               Xml::label( $this->msg( 'powersearch-togglelabel' )->text(), 'mw-search-togglelabel' ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-toggleall',
-                                                       'value' => $this->msg( 'powersearch-toggleall' )->text()
-                                               )
-                                       ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-togglenone',
-                                                       'value' => $this->msg( 'powersearch-togglenone' )->text()
-                                               )
-                                       )
-                       ) .
+                       Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
                        Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
                        implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
                        $hidden .
index 79c051a..6f59135 100644 (file)
@@ -321,11 +321,14 @@ class PageArchive {
         * @param $comment String
         * @param $fileVersions Array
         * @param $unsuppress Boolean
+        * @param $user User doing the action, or null to use $wgUser
         *
         * @return array(number of file revisions restored, number of image revisions restored, log message)
         * on success, false on failure
         */
-       function undelete( $timestamps, $comment = '', $fileVersions = array(), $unsuppress = false ) {
+       function undelete( $timestamps, $comment = '', $fileVersions = array(), $unsuppress = false, User $user = null ) {
+               global $wgContLang, $wgUser;
+
                // If both the set of text revisions and file revisions are empty,
                // restore everything. Otherwise, just restore the requested items.
                $restoreAll = empty( $timestamps ) && empty( $fileVersions );
@@ -354,8 +357,6 @@ class PageArchive {
                }
 
                // Touch the log!
-               global $wgContLang;
-               $log = new LogPage( 'delete' );
 
                if( $textRestored && $filesRestored ) {
                        $reason = wfMsgExt( 'undeletedrevisions-files', array( 'content', 'parsemag' ),
@@ -375,7 +376,17 @@ class PageArchive {
                if( trim( $comment ) != '' ) {
                        $reason .= wfMsgForContent( 'colon-separator' ) . $comment;
                }
-               $log->addEntry( 'restore', $this->title, $reason );
+
+               if ( $user === null ) {
+                       $user = $wgUser;
+               }
+
+               $logEntry = new ManualLogEntry( 'delete', 'restore' );
+               $logEntry->setPerformer( $user );
+               $logEntry->setTarget( $this->title );
+               $logEntry->setComment( $reason );
+               $logid = $logEntry->insert();
+               $logEntry->publish( $logid );
 
                return array( $textRestored, $filesRestored, $reason );
        }
@@ -754,8 +765,8 @@ class SpecialUndelete extends SpecialPage {
                                );
                        } else {
                                // The title is no longer valid, show as text
-                               $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
-                               $item = htmlspecialchars( $title->getPrefixedText() );
+                               $item = Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                                       Linker::getInvalidTitleDescription( $this->getContext(), $row->ar_namespace, $row->ar_title ) );
                        }
                        $revs = $this->msg( 'undeleterevisions' )->numParams( $row->count )->parse();
                        $out->addHTML( "<li>{$item} ({$revs})</li>\n" );
@@ -1387,7 +1398,9 @@ class SpecialUndelete extends SpecialPage {
                        $this->mTargetTimestamp,
                        $this->mComment,
                        $this->mFileVersions,
-                       $this->mUnsuppress );
+                       $this->mUnsuppress,
+                       $this->getUser()
+               );
 
                if( is_array( $ok ) ) {
                        if ( $ok[1] ) { // Undeleted file count
index 91631f8..3072408 100644 (file)
@@ -516,7 +516,7 @@ class SpecialUpload extends SpecialPage {
                if( $local && $local->exists() ) {
                        // We're uploading a new version of an existing file.
                        // No creation, so don't watch it if we're not already.
-                       return $local->getTitle()->userIsWatching();
+                       return $this->getUser()->isWatched( $local->getTitle() );
                } else {
                        // New page should get watched if that's our option.
                        return $this->getUser()->getOption( 'watchcreations' );
index ded2721..7d91096 100644 (file)
@@ -125,11 +125,7 @@ class LoginForm extends SpecialPage {
                }
 
                if( !$wgAuth->validDomain( $this->mDomain ) ) {
-                       if ( isset( $_SESSION['wsDomain'] ) ) {
-                               $this->mDomain = $_SESSION['wsDomain'];
-                       } else {
-                               $this->mDomain = 'invaliddomain';
-                       }
+                       $this->mDomain = $wgAuth->getDomain();
                }
                $wgAuth->setDomain( $this->mDomain );
 
index 5bb7762..b531f2a 100644 (file)
@@ -256,6 +256,7 @@ class Language {
         *
         * @param $code string
         *
+        * @throws MWException
         * @since 1.18
         * @return bool
         */
@@ -3687,6 +3688,9 @@ class Language {
        /**
         * Get the RFC 3066 code for this language object
         *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar
+        *
         * @return string
         */
        public function getCode() {
@@ -3696,6 +3700,10 @@ class Language {
        /**
         * Get the code in Bcp47 format which we can use
         * inside of html lang="" tags.
+        *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar.
+        *
         * @since 1.19
         * @return string
         */
@@ -4108,7 +4116,7 @@ class Language {
         * @param $title Title object to link
         * @param $offset Integer offset parameter
         * @param $limit Integer limit parameter
-        * @param $query String optional URL query parameter string
+        * @param $query array|String optional URL query parameter string
         * @param $atend Bool optional param for specified if this is the last page
         * @return String
         */
index 06ef711..e5a45fe 100644 (file)
@@ -56,8 +56,8 @@
        'bcc' => 'بلوچی مکرانی', # Southern Balochi
        'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
        'be' => 'беларуская', #  Belarusian normative
-       'be-tarask' => "\xE2\x80\xAAÐ\91еларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
-       'be-x-old' => "\xE2\x80\xAAÐ\91еларуская (тарашкевіца)\xE2\x80\xAC",  # Belarusian in Taraskievica orthography; compat link
+       'be-tarask' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
+       'be-x-old' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC",  # Belarusian in Taraskievica orthography; compat link
        'bg' => 'български',   # Bulgarian
        'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho). The name actually says "Bhojpuri".
        'bho' => 'भोजपुरी',       # Bhojpuri
@@ -90,8 +90,8 @@
        'crh-latn' => "\xE2\x80\xAAQırımtatarca (Latin)\xE2\x80\xAC",       # Crimean Tatar (Latin)
        'crh-cyrl' => "\xE2\x80\xAAКъырымтатарджа (Кирилл)\xE2\x80\xAC",       # Crimean Tatar (Cyrillic)
        'cs' => 'česky',       # Czech
-       'csb' => 'Kaszëbsczi', # Cassubian
-       'cu' => 'Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
+       'csb' => 'kaszëbsczi', # Cassubian
+       'cu' => 'словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
        'cv' => 'Чӑвашла',       # Chuvash
        'cy' => 'Cymraeg',              # Welsh
        'da' => 'dansk',                # Danish
        'de-ch' => 'Schweizer Hochdeutsch',             # Swiss Standard German
        'de-formal' => "\xE2\x80\xAADeutsch (Sie-Form)\xE2\x80\xAC",            # German - formal address ("Sie")
        'diq' => 'Zazaki',              # Zazaki
-       'dsb' => 'Dolnoserbski', # Lower Sorbian
+       'dsb' => 'dolnoserbski', # Lower Sorbian
        'dtp' => 'Dusun Bundu-liwan', # Central Dusun
        'dv' => 'ދިވެހިބަސް',         # Dhivehi
        'dz' => 'ཇོང་ཁ',              # Dzongkha (Bhutan)
        'ee' => 'eʋegbe',      # Éwé
+       'egl' => 'Emiliàn',    # Emilian
        'el' => 'Ελληνικά',     # Greek
        'eml' => 'emiliàn e rumagnòl',        # Emiliano-Romagnolo / Sammarinese
        'en' => 'English',              # English
        'hil' => 'Ilonggo',     # Hiligaynon
        'ho' => 'Hiri Motu',    # Hiri Motu
        'hr' => 'hrvatski',             # Croatian
-       'hsb' => 'Hornjoserbsce',       # Upper Sorbian
+       'hsb' => 'hornjoserbsce',       # Upper Sorbian
        'ht'  => 'Kreyòl ayisyen',             # Haitian Creole French
        'hu' => 'magyar',               # Hungarian
        'hy' => 'Հայերեն',       # Armenian
        'roa-rup' => 'Armãneashce', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
        'roa-tara' => 'tarandíne',     # Tarantino
        'ru' => 'русский',       # Russian
-       'rue' => 'Русиньскый',        # Rusyn
+       'rue' => 'русиньскый',        # Rusyn
        'rup' => 'Armãneashce', # Aromanian
        'ruq' => 'Vlăheşte',  # Megleno-Romanian (multiple scripts - defaults to Latin)
        'ruq-cyrl' => 'Влахесте',       # Megleno-Romanian (Cyrillic script)
        'se' => 'sámegiella',  # Northern Sami
        'sei' => 'Cmique Itom', # Seri
        'sg' => 'Sängö',              # Sango/Sangho
-       'sgs' => 'Žemaitėška', # Samogitian
+       'sgs' => 'žemaitėška', # Samogitian
        'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
        'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (multiple scripts - defaults to Latin)
        'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (Tifinagh script)
        'su' => 'Basa Sunda',   # Sundanese
        'sv' => 'svenska',              # Swedish
        'sw' => 'Kiswahili',    # Swahili
-       'szl' => 'Å\9alůnski',   # Silesian
+       'szl' => 'Å\9blůnski',   # Silesian
        'ta' => 'தமிழ்',      # Tamil
        'tcy' => 'ತುಳು', # Tulu
        'te' => 'తెలుగు',   # Telugu
index a9930d0..a9a7a4b 100644 (file)
@@ -594,8 +594,13 @@ Probeer asseblief weer oor 'n paar minute.",
 'ns-specialprotected' => 'Spesiale bladsye kan nie geredigeer word nie.',
 'titleprotected' => "Hierdie titel is beskerm teen skepping deur [[User:$1|$1]].
 Die rede gegee is ''$2''.",
+'filereadonlyerror' => 'Dit was nie moontlik om die lêer "$1" te wysig nie lêerstoor tans lees-alleen is.
+
+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 aanteken alvorens u hierdie bladsy kan sien of handeling kan uitvoer.',
 
 # Virus scanner
 'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
@@ -881,6 +886,7 @@ Onthou dat u eie .css- en .js-bladsye met 'n kleinletter begin, byvoorbeeld {{ns
 'note' => "'''Nota:'''",
 'previewnote' => "'''Onthou dat hierdie slegs 'n voorskou is.'''
 U teks is nog nie gestoor nie!",
+'continue-editing' => 'Wysig verder',
 'previewconflict' => 'Hierdie voorskou vertoon die teks in die boonste teksarea soos dit sou lyk indien u die bladsy stoor.',
 'session_fail_preview' => "'''Jammer! Weens verlies aan sessie-inligting is die wysiging nie verwerk nie.
 Probeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLogout|af te teken]] en dan weer aan te teken.'''",
@@ -974,6 +980,12 @@ Hierdie parameters is uitgelaat.",
 'parser-template-loop-warning' => "Sjablone is in 'n oneindige lus: [[$1]]",
 'parser-template-recursion-depth-warning' => 'Die rekursiediepte vir sjablone is oorskry ($1)',
 'language-converter-depth-warning' => 'Die dieptelimiet vir die taalomskakelaar is oorskrei ($1)',
+'node-count-exceeded-category' => 'Bladsye waar die maksimum aantal nodes oorskry is',
+'node-count-exceeded-warning' => 'Hierdie bladsy oorskry die maksimum aantal nodes',
+'expansion-depth-exceeded-category' => 'Bladsye waar die uitbreidingsdiepte oorskry is',
+'expansion-depth-exceeded-warning' => 'Die bladsy bevat te veel sjablone',
+'parser-unstrip-loop-warning' => '\'n "Unstrip"-lus is bespreur.',
+'parser-unstrip-recursion-limit' => 'Die rekursielimiet ($1) vir "unstrip" is oorskry',
 
 # "Undo" feature
 'undo-success' => 'Die wysiging kan ongedaan gemaak word.
@@ -2789,6 +2801,9 @@ Die lêer is slegs gedeeltelik opgelaai.',
 'import-invalid-interwiki' => 'Kan nie vanaf die gespesifiseerde importeer nie.',
 'import-error-edit' => 'Die bladsy "$1" is nie geïmporteer nie omdat u nie die regte het om dit te wysig nie.',
 'import-error-create' => 'Die bladsy "$1" is nie geïmporteer nie omdat u nie die regte het om dit te skep nie.',
+'import-error-interwiki' => 'Die bladsy "$1" is nie geïmporteer nie omdat sy naam vir eksterne skakeling (interwiki) gereserveer is.',
+'import-error-special' => 'Die bladsy "$1" is nie geïmporteer nie omdat dit aan \'n spesiale naamruimte behoort waarin geen bladsye geplaas kan word nie.',
+'import-error-invalid' => 'Die bladsy "$1" is nie geïmporteer nie omdat die naam ongeldig is.',
 
 # Import log
 'importlogpage' => 'Invoer logboek',
@@ -2802,6 +2817,11 @@ Die lêer is slegs gedeeltelik opgelaai.',
 'javascripttest' => 'JavaScript toetsing',
 'javascripttest-disabled' => 'Die funksie is nie op hierdie wiki geaktiveer nie.',
 'javascripttest-title' => 'Voer toetse uit vir $1',
+'javascripttest-pagetext-noframework' => 'Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.',
+'javascripttest-pagetext-unknownframework' => 'Onbekende toetsraamwerk "$1".',
+'javascripttest-pagetext-frameworks' => 'Kies een van die volgende toetsraamwerke: $1',
+'javascripttest-pagetext-skins' => "Kies 'n omslag waarmee die toets uitgevoer moet word:",
+'javascripttest-qunit-intro' => 'Sien die [$1 toetsdokumentasie] op mediawiki.org.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'U gebruikerbladsy',
@@ -2899,6 +2919,7 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
 'spambot_username' => 'MediaWiki opruiming van spam',
 'spam_reverting' => 'Besig met terugrol na die laaste weergawe wat nie skakels na $1 bevat nie',
 'spam_blanking' => "Alle weergawes met 'n skakel na $1 word verwyder",
+'spam_deleting' => 'Alle weergawes bevat verwysings na $1. Bladsy verwyder',
 
 # Info page
 'pageinfo-title' => 'Inligting oor "$1"',
index 0aeeae0..b359042 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Aragonese (Aragonés)
+/** Aragonese (aragonés)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -43,6 +43,9 @@ $namespaceAliases = array(
        'Espezial' => NS_SPECIAL,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $magicWords = array(
        'redirect'                => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
        'namespace'               => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ),
index 86f78d2..bdce934 100644 (file)
@@ -465,8 +465,8 @@ $messages = array(
 'tog-hidepatrolled' => 'أخف التعديلات المراجعة في أحدث التغييرات',
 'tog-newpageshidepatrolled' => 'أخف الصفحات المراجعة من قائمة الصفحات الجديدة',
 'tog-extendwatchlist' => 'مدد قائمة المراقبة لعرض كل التغييرات، وليس الأحدث فقط',
-'tog-usenewrc' => 'استخدÙ\85 Ø£Ø­Ø¯Ø« Ø§Ù\84تغÙ\8aÙ\8aرات Ø§Ù\84Ù\85حسÙ\86ة (يتطلب جافاسكربت)',
-'tog-numberheadings' => 'رقم العناوين تلقائيا',
+'tog-usenewrc' => 'جÙ\85Ù\91ع Ø§Ù\84تعدÙ\8aÙ\84ات Ø­Ø³Ø¨ Ø§Ù\84صÙ\81حة Ù\81Ù\8a Ø£Ø­Ø¯Ø« Ø§Ù\84تغÙ\8aÙ\8aرات Ù\88Ù\82ائÙ\85Ø© Ø§Ù\84Ù\85راÙ\82بة (يتطلب جافاسكربت)',
+'tog-numberheadings' => 'رقم العناوين تلقائياً',
 'tog-showtoolbar' => 'أظهر شريط التحرير (يتطلب جافاسكربت)',
 'tog-editondblclick' => 'عدل الصفحات عند الضغط المزدوج (جافاسكربت)',
 'tog-editsection' => 'مكن تعديل الأقسام عن طريق وصلات [عدل]',
@@ -488,8 +488,8 @@ $messages = array(
 'tog-shownumberswatching' => 'اعرض عدد المستخدمين المراقبين',
 'tog-oldsig' => 'التوقيع الحالي:',
 'tog-fancysig' => 'عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)',
-'tog-externaleditor' => 'استخدم محررا خارجيا بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors مزيد من المعلومات.])',
-'tog-externaldiff' => 'استخدم فرقا خارجيا بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors للمزيد من المعلومات.])',
+'tog-externaleditor' => 'استخدم محرراً خارجياً بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([[mw:Manual:External_editors|للمزيد من المعلومات]].)',
+'tog-externaldiff' => 'استخدم فرقاً خارجياً بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([[mw:Manual:External_editors|للمزيد من المعلومات]].)',
 'tog-showjumplinks' => 'مكن وصلات "اذهب إلى" المساعدة',
 'tog-uselivepreview' => 'استخدم الاستعراض السريع (جافاسكريبت) (تجريبي)',
 'tog-forceeditsummary' => 'نبهني عند إدخال ملخص تعديل فارغ',
@@ -1840,7 +1840,7 @@ $1",
 'recentchangeslinked-title' => 'التغييرات المرتبطة ب "$1"',
 'recentchangeslinked-noresult' => 'لم تحدث تعديلات في الصفحات التي لها وصلات هنا خلال الفترة المحددة.',
 'recentchangeslinked-summary' => "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).
-الصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''",
+الصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''مغلظة'''",
 'recentchangeslinked-page' => 'اسم الصفحة:',
 'recentchangeslinked-to' => 'أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضا عن ذلك',
 
index 74d24a9..4ba35ea 100644 (file)
@@ -208,7 +208,7 @@ $messages = array(
 'qbbrowse' => 'ܡܦܐܬ',
 'qbedit' => 'ܫܚܠܦ',
 'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
-'qbmyoptions' => 'Ü\95Ì\88ܦܐ ܕܝܠܝ',
+'qbmyoptions' => 'ܦÜ\90ܬܬÌ\88ܐ ܕܝܠܝ',
 'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
@@ -284,9 +284,9 @@ $messages = array(
 'jumpto' => 'ܫܘܪ ܠ:',
 'jumptonavigation' => 'ܐܠܦܪܘܬܐ',
 'jumptosearch' => 'ܒܨܝܐ',
-'view-pool-error' => 'ܬÜ\98Ü\9dÜ\9aܐ، ܬܫܡܫܬ̈ܐ ܐܢܘܢ ܠܐ̈ܝܐ ܗܫܐܝܬ
-Ü£Ü\93Ü\9d Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¢Ü£Ü\9dÜ¢ Ü Ü\9aÜ\99Ü\9dÜ\90 Ü\95Ü\97Ü¢Ü\90 Ü\95ܦܐ
-ܦÜ\9dÜ£Ü\90 Ü¡Ü¢Ü\9f Ü£Ü\9fÜ\9d Ü©Ü Ü\9dÜ  Ü¡Ü¢ Ü©Ü\95Ü¡ Ü\95ܬܢܣÜ\90 Ü Ü¡Ü\9bÜ\9dÜ\90 Ü Ü\97Ü¢Ü\90 Ü\95ܦܐ ܙܒܢܬܐ ܐܚܪܬܐ.
+'view-pool-error' => 'Ü«Ü\98Ü\92Ü©Ü¢ܐ، ܬܫܡܫܬ̈ܐ ܐܢܘܢ ܠܐ̈ܝܐ ܗܫܐܝܬ
+Ü£Ü\93Ü\9d Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¢Ü£Ü\9dÜ¢ Ü Ü\9aÜ\99Ü\9dÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95ܐ
+ܦÜ\9dÜ£Ü\90 Ü¡Ü¢Ü\9f Ü£Ü\9fÜ\9d Ü©Ü Ü\9dÜ  Ü¡Ü¢ Ü©Ü\95Ü¡ Ü\95ܬܢܣÜ\90 Ü Ü¡Ü\9bÜ\9dÜ\90 Ü Ü¦Ü\90ܬÜ\90 Ü\97Ü\95ܐ ܙܒܢܬܐ ܐܚܪܬܐ.
 
 $1',
 'pool-timeout' => 'ܫܠܡ ܥܕܢܐ ܣܒܪܬܐ ܠܚܠܩܐ',
@@ -368,8 +368,8 @@ $1',
 'actionthrottled' => 'ܠܐ ܡܬܡܨܝܢܬܐ ܐܝܬܝܗܝ ܠܡܥܒܕ ܝܬܝܪ ܡܢ ܗܢܐ ܥܒܕܐ',
 'viewsourcetext' => 'ܡܨܐ ܐܢܬ ܕܢܚܙܐ ܘܢܣܚܐ ܠܡܒܘ̈ܥܐ ܕܗܕܐ ܦܐܬܐ:',
 'protectedinterface' => 'ܗܕܐ ܦܐܬܐ ܡܘܬܪܐ ܟܬܝܒܬܐ ܕܦܐܬܐ ܠܚܘܪܙܐ, ܘܐܝܬܝܗܝ ܢܛܪܬܐ ܠܡܘܢܥ ܚܘܒܠܐ.',
-'editinginterface' => "'''Ü\99Ü\98Ü\97ܪÜ\90:''' Ü\90ܢܬ Ü«Ü\9aܠܦܬ Ü\95ܦÜ\90 Ü\95ܡܬܦܠÜ\9a ܒܚܙܝܐ ܟܬܝܒܝܐ ܕܚܘܪܙܐ.
\9fÜ  Ü«Ü\98Ü\9aܠܦÜ\90 Ü\92Ü\97Ü¢Ü\90 Ü\95ܦÜ\90 Ü¢Ü\97Ü\98Ü\90 Ü Ü\97 Ü¡Ü¥Ü\92Ü\95Ü¢Ü\98ܬÜ\90 Ü¥Ü  Ü\90Ü£Ü\9fÜ¡Ü\90 Ü\95Ü\95ܦܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ.
+'editinginterface' => "'''Ü\99Ü\98Ü\97ܪÜ\90:''' Ü\90ܢܬ Ü«Ü\9aܠܦܬ Ü¦Ü\90ܬÜ\90 Ü\95ܡܬܦܠÜ\9aܬ ܒܚܙܝܐ ܟܬܝܒܝܐ ܕܚܘܪܙܐ.
\9fÜ  Ü«Ü\98Ü\9aܠܦÜ\90 Ü\92ܦÜ\90ܬÜ\90 Ü\97Ü\95Ü\90 Ü¢Ü\97Ü\98Ü\90 Ü Ü\97 Ü¡Ü¥Ü\92Ü\95Ü¢Ü\98ܬÜ\90 Ü¥Ü  Ü\90Ü£Ü\9fÜ¡Ü\90 Ü\95ܦÜ\90ܬܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ.
 ܠܬܘܪ̈ܓܡܐ، ܐܦܠܚ ܬܪܡܝܬܐ ܕܬܘܪܓܡܐ ܕܡܝܕܝܐܘܝܩܝ [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
 'sqlhidden' => '(ܒܘܬܬܐ SQL ܛܫܝܐ)',
 'namespaceprotected' => "ܠܝܬ ܠܟ ܦܣܣܐ ܠܫܚܠܦܬܐ ܕܦܐܬܬ̈ܐ ܒܚܩܠܐ ܕ'''$1'''.",
@@ -377,9 +377,9 @@ $1',
 # Login and logout pages
 'logouttext' => "'''ܗܫܐ ܦܠܛܠܟ ܡܢ ܚܘܫܒܢܟ.'''
 
-ܡܨÜ\90 Ü\90ܢܬ Ü\95Ü\90ܬÜ\9aÜ«Ü\9a {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܐ ܐܢܬ ܕ[[Special:UserLogin|ܬܥܘܠ]] ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
+ܡܨÜ\90 Ü\90ܢܬ Ü\90ܦܠÜ\9aܬ {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܐ ܐܢܬ ܕ[[Special:UserLogin|ܬܥܘܠ]] ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
 
\9aÜ\95 Ü\9fÜ¡Ü\90 Ü¡Ü¢ Ü\95Ì\88ܦÜ\90 Ü¡Ü¬Ü\9aÜ\99Ü\9dÜ¢ Ü\90Ü\9dÜ\9f Ü\95Ü\97Ü\98 Ü\90ܢܬ Ü¥Ü Ü\9dÜ Ü\90 Ü¥Ü\95Ü¡Ü\90 Ü\95Ü\90ܣܦܩܬ Ü Ü\95Ì\88ܦÜ\90 Ü Ü\92Ü\9dÜ\9f̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
\9aÜ\95 Ü\9fÜ¡Ü\90 Ü¡Ü¢ Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¡Ü¬Ü\9aÜ\99Ü\9dÜ¢ Ü\90Ü\9dÜ\9f Ü\95Ü\97Ü\98 Ü\90ܢܬ Ü¥Ü Ü\9dÜ Ü\90 Ü¥Ü\95Ü¡Ü\90 Ü\95Ü\90ܣܦܩܬ Ü Ü¦Ü\90ܬܬÌ\88Ü\90 Ü Ü\92Ü\9dÜ\9fܬ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
 'welcomecreation' => '== ܒܫܝܢܐ, $1! ==
 ܐܬܒܪܝ ܚܘܫܒܢܟ.
 ܠܐ ܢܫܐ ܐܢܬ ܠܫܚܠܦܬܐ ܕ[[Special:Preferences|ܨܒܝܢܝܘܬ̈ܐ ܒ {{SITENAME}}]].',
@@ -454,7 +454,7 @@ $1',
 'subject' => 'ܡܠܘܐܐ/ܡܘܢܥܐ ܪܫܝܐ:',
 'minoredit' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'watchthis' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
-'savearticle' => 'Ü Ü\92Ü\98Ü\9f Ü\95ܦܐ',
+'savearticle' => 'Ü Ü\92Ü\98Ü\9f Ü¦Ü\90ܬܐ',
 'preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
 'showpreview' => 'ܚܘܝ ܚܝܪܐ ܩܕܡܝܐ',
 'showlivepreview' => 'ܚܝܪܐ ܩܕܡܝܐ ܚܝܐ',
@@ -469,8 +469,8 @@ $1',
 'loginreqlink' => 'ܥܘܠ',
 'accmailtitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܫܕܪܬ',
 'newarticle' => '(ܚܕܬܐ)',
-'newarticletext' => "Ü\90ܬܬ Ü\92ܬܪ Ü\90ܣܪÜ\90 Ü\95Ü\95ܦÜ\90 Ü\95Ü Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ ܥܕܡܫ.
-ܠܣÜ\98Ü\9dÜ¡Ü\90 Ü\95Ü\95ܦÜ\90 Ü\97Ü¢Ü\90, Ü«ÜªÜ\9d Ü Ü\9fܬÜ\92ܬÜ\90 Ü\92ܣܢÜ\95Ü\98Ü©Ü\90 Ü Ü¬Ü\9aܬ (Ü\9aÜ\99Ü\9d [[{{MediaWiki:Helppage}}|Ü\95ܦܐ ܕܥܘܕܪܢܐ]] ܠܐܚܪܢܐ ܝܕ̈ܥܬܐ).
+'newarticletext' => "Ü\90ܬܬ Ü\92ܬܪ Ü\90ܣܪÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\95Ü Ü\90 Ü\90ܬܬܣÜ\9dܡܬ ܥܕܡܫ.
+ܠܣÜ\98Ü\9dÜ¡Ü\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95Ü\90, Ü«ÜªÜ\9d Ü Ü\9fܬÜ\92ܬÜ\90 Ü\92ܣܢÜ\95Ü\98Ü©Ü\90 Ü Ü¬Ü\9aܬ (Ü\9aÜ\99Ü\9d [[{{MediaWiki:Helppage}}|ܦÜ\90ܬܐ ܕܥܘܕܪܢܐ]] ܠܐܚܪܢܐ ܝܕ̈ܥܬܐ).
 ܐܢ ܐܬܬ ܠܗܪܟܐ ܦܘܕܐܝܬ, ܕܘܫ ܠܦܪܡܝܬܐ ܕ '''ܠܒܣܬܪ back''' ܒܡܦܐܬܢܐ ܕܝܠܟ.",
 'updated' => '(ܐܬܚܕܬ)',
 'note' => "'''ܡܥܝܪܢܘܬܐ:'''",
@@ -483,8 +483,8 @@ $1',
 'editingcomment' => 'ܫܚܠܦܬܐ ܕ $1 (ܡܢܬܐ ܚܕܬܐ)',
 'yourtext' => 'ܟܬܒܬܐ ܕܝܠܟ',
 'storedversion' => 'ܬܢܝܬ̈ܐ ܐܣܝܢ̈ܐ',
-'editingold' => "'''Ü\99Ü\98Ü\97ܪÜ\90: Ü«Ü\9aܠܦ Ü\90ܢܬ Ü¬Ü¢Ü\9dܬÜ\90 Ü¥Ü¬Ü\9dܩܬÜ\90 Ü\95Ü\95ܦÜ\90 Ü\97Ü¢ܐ.'''
\90Ü¢ Ü Ü\92Ü\9f Ü\90ܢܬ Ü\95ܦÜ\90 Ü\97Ü¢ܐ, ܟܠ ܫܘ̈ܚܠܦܐ ܕܐܬܥܒܕܘ ܒܬܪ ܗܕܐ ܬܢܝܬܐ ܢܬܛܠܩܘܢ.",
+'editingold' => "'''Ü\99Ü\98Ü\97ܪÜ\90: Ü«Ü\9aܠܦ Ü\90ܢܬ Ü¬Ü¢Ü\9dܬÜ\90 Ü¥Ü¬Ü\9dܩܬÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95ܐ.'''
\90Ü¢ Ü Ü\92Ü\9f Ü\90ܢܬ Ü¦Ü\90ܬÜ\90 Ü\97Ü\95ܐ, ܟܠ ܫܘ̈ܚܠܦܐ ܕܐܬܥܒܕܘ ܒܬܪ ܗܕܐ ܬܢܝܬܐ ܢܬܛܠܩܘܢ.",
 'yourdiff' => 'ܦܪ̈ܝܫܘܝܬܐ',
 'templatesused' => '{{PLURAL:$1|ܩܠܒܐ|ܩܠܒ̈ܐ}} ܒܦܐܬܐ ܗܕܐ:',
 'template-protected' => '(ܢܛܝܪܐ)',
@@ -574,9 +574,9 @@ $1',
 'history-title' => '"$1": ܬܫܥܝܬܐ ܕܬܢܝܬܐ',
 'difference-title' => '«$1»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
 'difference-title-multipage' => '«$1» ܘ«$2»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
-'difference-multipage' => '(ܦÜ\98ܪܫÜ\90 Ü\92Ü\9dÜ¢Ü\9d Ü\95Ì\88ܦܐ)',
+'difference-multipage' => '(ܦÜ\98ܪܫÜ\90 Ü\92Ü\9dÜ¢Ü\9d Ü¦Ü\90ܬܬÌ\88ܐ)',
 'lineno' => 'ܣܪܛܐ $1:',
-'compareselectedversions' => 'ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
+'compareselectedversions' => 'ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dÜ¢Ü\9d  ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
 'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
 'editundo' => 'ܠܐ ܬܥܒܕ',
 'diff-multi' => '({{PLURAL:$1|ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|$2 ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})',
@@ -624,7 +624,7 @@ $1',
 'searchall' => 'ܟܠ',
 'showingresults' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$1|'''1''' ܦܠܛܐ|'''$1''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
-'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝ ܠܗܢܐ ܒܨܝܐ.',
+'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.',
 'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:',
@@ -752,7 +752,7 @@ $1',
 'right-createaccount' => 'ܒܪܝ ܚܘܫܒܢ̈ܐ ܕܡܦܠܚܢܐ ܚܕܬܐ',
 'right-minoredit' => 'ܫܘܕܥ ܥܠ ܫܘܚܠܦ̈ܐ ܐܝܟ ܙܥܘܪܐ',
 'right-move' => 'ܫܢܝ ܦܐܬܬ̈ܐ',
-'right-move-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¥Ü¡ Ü\95Ì\88ܦܐ ܦܪ̈ܥܝܐ ܕܝܠܗܘܢ',
+'right-move-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¥Ü¡ Ü¦Ü\90ܬܬÌ\88ܐ ܦܪ̈ܥܝܐ ܕܝܠܗܘܢ',
 'right-movefile' => 'ܫܢܝ ܠܦܦ̈ܐ',
 'right-upload' => 'ܐܣܩ ܠܦܦ̈ܐ',
 'right-delete' => 'ܫܘܦ ܦܐܬܬ̈ܐ',
@@ -794,7 +794,7 @@ $1',
 'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
 'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
 'recentchanges-summary' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.',
-'recentchanges-label-newpage' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\97Ü¢Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ Ü\95ܦܐ ܚܕܬܐ',
+'recentchanges-label-newpage' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\97Ü¢Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ Ü¦Ü\90ܬܐ ܚܕܬܐ',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
@@ -802,6 +802,7 @@ $1',
 'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
 'rcshowhideliu' => '$1 ܡܦܠܚܢ̈ܐ ܥܠܝܠ̈ܐ',
 'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
+'rcshowhidepatr' => '$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ',
 'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
 'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3',
 'diff' => 'ܦܘܪܫܐ',
@@ -865,6 +866,7 @@ $1',
 'http-read-error' => 'HTTP ܦܘܕܐ ܒܩܪܝܬܐ.',
 'http-curl-error' => 'ܦܘܕܐ ܒܫܟܚܐ ܕURL: $1',
 
+'license' => 'ܦܣܣܐ:',
 'license-header' => 'ܦܣܣܐ',
 'license-nopreview' => '(ܠܝܬ ܚܝܪܐ ܩܕܡܝܐ)',
 'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
@@ -954,7 +956,7 @@ $1',
 'brokenredirects-delete' => 'ܫܘܦ',
 
 'withoutinterwiki' => 'ܦܐܬܬ̈ܐ ܕܠܐ ܐܣܘܪ̈ܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ',
-'withoutinterwiki-summary' => 'Ü\95Ì\88ܦܐ ܗܠܝܢ ܠܐ ܡܛܝܢ ܠܨ̈ܚܚܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ.',
+'withoutinterwiki-summary' => 'ܦÜ\90ܬܬÌ\88ܐ ܗܠܝܢ ܠܐ ܡܛܝܢ ܠܨ̈ܚܚܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ.',
 'withoutinterwiki-legend' => 'ܫܪܘܝܐ',
 'withoutinterwiki-submit' => 'ܚܘܝ',
 
@@ -987,6 +989,7 @@ $1',
 'protectedpages' => 'ܦܐܬܬ̈ܐ ܢܛܝܪ̈ܬܐ',
 'protectedtitles' => 'ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ',
 'protectedtitlestext' => 'ܟܘܢܝ̈ܐ ܗܠܝܢ ܢܛܝܪ̈ܐ ܐܢܘܢ ܠܘܩܒܠ ܒܪܝܐ',
+'protectedtitlesempty' => 'ܠܝܬ ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ ܗܫܐܝܬ ܥܡ ܗܠܝܢ ܦܪ̈ܘܫܝܐ',
 'listusers' => 'ܡܟܬܒܘܬܐ ܕܗܕ̈ܡܐ',
 'listusers-editsonly' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܥܡ ܫܘܚܠܦ̈ܐ ܒܠܚܘܕ',
 'listusers-creationsort' => 'ܛܟܣ ܐܝܟ ܣܝܩܘܡܐ ܕܒܪܝܐ',
@@ -1044,6 +1047,7 @@ $1',
 
 # Special:LinkSearch
 'linksearch' => 'ܐܣܘܪ̈ܐ ܒܪ̈ܝܐ ܒܨܝܐ',
+'linksearch-pat' => 'ܙܢܐ ܕܒܨܝܐ:',
 'linksearch-ns' => 'ܚܩܠܐ:',
 'linksearch-ok' => 'ܒܨܝ',
 
@@ -1063,6 +1067,7 @@ $1',
 
 # Special:Log/newusers
 'newuserlogpage' => 'ܣܓܠܐ ܕܒܪܝܬܐ ܕܡܦܠܚܢܐ',
+'newuserlogpagetext' => 'ܗܢܘ ܣܓܠܐ ܕܒܪܝܐ ܕܡܦܠܚܢ̈ܐ',
 
 # Special:ListGroupRights
 'listgrouprights' => 'ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ ܕܡܦܠܚܢ̈ܐ',
@@ -1083,6 +1088,8 @@ $1',
 'emailpage' => 'ܫܕܪ ܐܓܪܬܐ ܒܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ',
 'defemailsubject' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ  ܡܢ ܡܦܠܚܢܐ "$1"',
 'noemailtitle' => 'ܠܝܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
+'emailusername' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
+'emailusernamesubmit' => 'ܫܕܪ',
 'email-legend' => 'ܫܕܪ ܐܓܪܬܐ ܠܡܦܠܚܢܐ ܕ {{SITENAME}} ܐܚܪܢܐ',
 'emailfrom' => 'ܡܢ:',
 'emailto' => 'ܠ:',
@@ -1100,14 +1107,20 @@ $1',
 # Watchlist
 'watchlist' => 'ܪ̈ܗܝܬܝ',
 'mywatchlist' => 'ܪ̈ܗܝܬܝ',
-'watchlistfor2' => 'Ü  $1 $2',
+'watchlistfor2' => 'Ü\95 $1 $2',
 'nowatchlist' => 'ܠܝܬ ܠܟ ܡܕܡ ܒܪ̈ܗܝܬܐ ܕܝܠܟ',
 'watchnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
-'removedwatchtext' => 'ܦܐܬܐ "[[:$1]]" ܐܫܬܩܠܬ ܡܢ [[Special:Watchlist|ܪ̈ܗܝܬܟ]].',
+'addedwatchtext' => "ܦܐܬܐ ܕ\"[[:\$1]]\" ܐܬܬܘܣܦܬ ܒ[[Special:Watchlist|ܪ̈ܗܝܬܟ]].
+ܐܝܢܐ ܫܘܚܠܦܐ ܠܦܐܬܐ ܗܕܐ ܒܕܥܬܝܕ ܬܬܓܠܚ ܥܡ ܦܐܬܐ ܕܡܡܠܠܐ ܕܝܠܗ ܬܡܢ, ܘܦܐܬܐ ܬܗܘܐ ܒܣܪܛܐ '''ܚܠܝܡܐ''' ܒܦܐܬܐ ܕ[[Special:RecentChanges|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ]] ܠܦܫܛܬܐ ܕܫܟܚܬܗ.",
+'removedwatchtext' => 'ܦܐܬܐ ܕ "[[:$1]]" ܐܫܬܩܠܬ ܡܢ [[Special:Watchlist|ܪ̈ܗܝܬܟ]].',
 'watch' => 'ܪܗܝ',
 'watchthispage' => 'ܪܗܝ ܗܕܐ ܦܐܬܐ',
 'unwatch' => 'ܠܐ ܪܗܝ',
 'unwatchthispage' => 'ܟܠܝ ܪܗܝܐ',
+'watchnochange' => 'ܐܦܠܐ ܚܕ ܡܢ ܦܐܬܬ̈ܐ ܒܪ̈ܗܝܬܟ ܐܫܬܚܠܦܬ ܒܡܬܚܐ ܕܙܒܢܐ ܓܠܝܚܐ.',
+'watchlist-details' => '{{PLURAL:$1|$1 ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܪ̈ܗܝܬܟ, ܫܒܘܩ ܡܢ ܦܐܬܬ̈ܐ ܕܡܡܠܠܐ.',
+'wlheader-showupdated' => "* ܦܐܬܬ̈ܐ ܕܐܫܬܚܠܦܢ ܡܢ ܒܬܪ ܣܘܥܪܢܟ ܐܚܪܝܐ ܡܬܓܠܚܢ ܒܣܪܛܐ '''ܚܠܝܡܐ'''",
+'wlnote' => "ܠܬܚܬ {{PLURAL:$1|ܫܘܚܠܦܐ ܐܚܪܝܐ| '''$1''' ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ}} {{PLURAL:$2|ܒܫܥܬܐ ܐܚܪܝܬܐ|'''$2''' ܒܫܥܬ̈ܐ ܐܚܪ̈ܝܬܐ}}, ܠܦܘܬ $3, $4.",
 'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3',
 'watchlist-options' => 'ܨܒܝܢܝܘܬ̈ܐ ܕܪ̈ܗܝܬܐ',
 
@@ -1115,6 +1128,7 @@ $1',
 'watching' => 'ܪܗܝܐ...',
 'unwatching' => 'ܠܐ ܪܗܝܐ...',
 
+'enotif_reset' => 'ܫܘܕܥ ܟܠ ܦܐܬܬ̈ܐ ܐܝܟ ܣܥܝܪ̈ܐ',
 'enotif_newpagetext' => 'ܗܕܐ ܗܝ ܦܐܬܐ ܚܕܬܐ',
 'enotif_impersonal_salutation' => 'ܡܦܠܚܢܐ {{SITENAME}}',
 'changed' => 'ܐܫܬܚܠܦܬ',
@@ -1169,6 +1183,7 @@ $1',
 'protect-edit-reasonlist' => 'ܫܚܠܦ ܥܠܬܐ ܕܢܛܪܐ',
 'protect-expiry-options' => '1 ܫܥܬܐ:1 hour,1 ܝܘܡܐ:1 day,1 ܫܒܘܥܐ:1 week,2 ܫܒܘܥ̈ܐ:2 weeks,1 ܝܪܚܐ:1 month,3 ܝܪ̈ܚܐ:3 months,6 ܝܪ̈ܚܐ:6 months,1 ܫܢܬܐ:1 year,ܠܥܠܡ:infinite',
 'restriction-type' => 'ܦܣܣܐ:',
+'restriction-level' => 'ܫܘܝܐ ܕܣܘܝܟܐ:',
 'minimum-size' => 'ܡܬܚܐ ܬܚܬܝܐ  ܕܥܓܪܐ',
 'maximum-size' => 'ܡܬܚܐ ܥܠܝܐ ܕܥܓܪܐ',
 'pagesize' => '(ܒܐܝܛ)',
@@ -1186,7 +1201,7 @@ $1',
 
 # Undelete
 'undelete' => 'ܚܙܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
-'undeletepage' => 'Ü\9aÜ\99Ü\9d Ü\98Ü\90ܦܢÜ\9d Ü\95Ì\88ܦÜ\90 Ü«Ü\9dܦ̈ܐ',
+'undeletepage' => 'Ü\9aÜ\99Ü\9d Ü\98Ü\90ܦܢÜ\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü«Ü\9dܦܬ̈ܐ',
 'viewdeletedpage' => 'ܚܙܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
 'undelete-fieldset-title' => 'ܐܦܢܝ ܬܢܝܬ̈ܐ',
 'undelete-revision' => 'ܫܦ ܬܢܝܬܐ ܕ $1 (ܒܣܝܩܘܡ $4, ܒ $5) ܒܝܕ $3:',
@@ -1310,8 +1325,8 @@ Do you want to change the settings?',
 'movepage-moved' => '\'\'\'"$1" ܐܫܬܢܝܬ ܠ "$2"\'\'\'',
 'movepage-moved-redirect' => 'ܨܘܝܒܐ ܐܬܒܪܝ',
 'movedto' => 'ܐܬܫܢܝ ܠ',
-'move-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¦ÜªÌ\88Ü¥Ü\9dܐ (ܥܕܡܐ ܠ $1)',
-'move-talk-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¦ÜªÌ\88Ü¥Ü\9dÜ\90 Ü\95Ü\95ܦܐ ܕܕܘܪܫܐ (ܥܕܡܐ ܠ $1)',
+'move-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¦ÜªÌ\88Ü¥Ü\9dܬÌ\88ܐ (ܥܕܡܐ ܠ $1)',
+'move-talk-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¦ÜªÌ\88Ü¥Ü\9dܬÌ\88Ü\90 Ü\95ܦÜ\90ܬܐ ܕܕܘܪܫܐ (ܥܕܡܐ ܠ $1)',
 'movelogpage' => 'ܣܓܠܐ ܕܫܘܢܝܐ',
 'movereason' => 'ܥܠܬܐ:',
 'revertmove' => 'ܐܦܢܝ',
@@ -1321,7 +1336,7 @@ Do you want to change the settings?',
 
 # Export
 'export' => 'ܐܦܩ ܦܐܬܬ̈ܐ',
-'exportall' => 'Ü\90ܦܩ Ü\9fÜ  Ü\95Ì\88ܦܐ',
+'exportall' => 'Ü\90ܦܩ Ü\9fÜ  Ü¦Ü\90ܬܬÌ\88ܐ',
 'export-submit' => 'ܐܦܩ',
 'export-addcattext' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܡܢ ܣܕܪܐ:',
 'export-addcat' => 'ܐܘܣܦ',
@@ -1359,15 +1374,28 @@ Do you want to change the settings?',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}} ܡܢ $2',
 
 # Tooltip help for the actions
+'tooltip-pt-userpage' => 'ܦܐܬܐ ܕܡܦܠܚܢܐ ܕܝܠܟ',
+'tooltip-pt-mytalk' => 'ܦܐܬܐ ܕܡܡܠܘܟ',
 'tooltip-pt-preferences' => 'Your preferences',
-'tooltip-pt-login' => 'Ü\9bÜ\92 Ü\90ܢܬ Ü\95Ü£Ü\93Ü  Ü¥Ü Ü Ü\90Ø\8c Ü\90Ü Ü\90 Ü\97Ü¢Ü\90 Ü Ü\98 ܐܠܨܝܐ',
-'tooltip-pt-logout' => 'ܦܠÜ\98Ü\9b',
+'tooltip-pt-login' => 'ܢܠÜ\92Ü\92 Ü Ü\9f Ü\95Ü£Ü\93Ü  Ü\90ܢܬ Ü¥Ü Ü Ü\90 Ü\95Ü\9dÜ Ü\9fØ\8c Ü\90Ü Ü\90 Ü\97Ü¢Ü\90 Ü Ü\90 Ü\90Ü\9dܬÜ\9dÜ\97Ü\9d ܐܠܨܝܐ',
+'tooltip-pt-logout' => 'ܦܠÜ\9bÜ\90',
 'tooltip-ca-talk' => 'ܡܡܠܠܐ ܥܠ ܚܒܝܫܬܐ ܕܦܐܬܐ',
+'tooltip-ca-addsection' => 'ܫܪܝ ܦܣܘܩܐ ܚܕܬܐ',
+'tooltip-ca-viewsource' => 'ܗܢܐ ܦܐܬܐ ܢܛܪܬܐ ܝܠܗ.
+ܐܝܬ ܒܟ ܬܚܙܝ ܡܒܘܥܐ ܕܝܠܗ',
 'tooltip-ca-protect' => 'ܢܛܘܪ ܗܕܐ ܦܐܬܐ',
 'tooltip-ca-delete' => 'ܫܘܦ ܦܐܬܐ ܗܕܐ',
+'tooltip-search' => 'ܒܨܝ ܒܓܘ {{SITENAME}}',
+'tooltip-p-logo' => 'ܦܐܬܐ ܪܝܫܝܬܐ',
+'tooltip-n-portal' => 'ܚܕܪ ܬܪܡܝܬܐ، ܡܢܐ ܡܫܟܚ ܐܢܬ ܠܥܒܕܐ، ܐܝܟܐ ܬܚܙܝ ܟܠ ܡܐ ܕܣܢܝܩ ܐܢܬ ܠܗ',
+'tooltip-n-recentchanges' => 'ܡܟܬܒܢܘܬܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܒܓܘ ܘܝܩܝ.',
 'tooltip-n-randompage' => 'ܦܬܘܟ ܡܓܠܬܐ ܚܘܝܚܬܐ',
+'tooltip-n-help' => 'ܕܘܟܐ ܠܥܘܕܪܢܐ',
+'tooltip-t-contributions' => 'ܡܟܬܒܢܘܬܐ ܒܫܘܬܦ̈ܐ ܕܗܢܐ ܡܦܠܚܢܐ',
 'tooltip-t-emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
-'tooltip-save' => 'ܠܒܘܟ ܫܘܚܠܦܘܟ',
+'tooltip-t-specialpages' => 'ܡܟܬܒܢܘܬܐ ܒܟܠ ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
+'tooltip-ca-nstab-user' => 'ܚܘܝ ܦܐܬܐ ܕܡܦܠܚܢܐ',
+'tooltip-save' => 'ܠܒܘܟ ܫܘܚܠܦܟ',
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ}} ܕ {{SITENAME}}',
@@ -1498,7 +1526,7 @@ $1',
 'table_pager_prev' => 'ܦܐܬܐ ܩܕܝܡܬܐ',
 'table_pager_first' => 'ܦܐܬܐ ܩܕܡܝܬܐ',
 'table_pager_last' => 'ܦܐܬܐ ܐܚܪܝܬܐ',
-'table_pager_limit_label' => 'ܡܕܡ ܠܟܠ ܕܦܐ:',
+'table_pager_limit_label' => 'ܡܕ̈ܡܐ ܠܟܠ ܦܐܬܐ:',
 'table_pager_limit_submit' => 'ܙܠ',
 'table_pager_empty' => 'ܠܝܬ ܦܠܛ̈ܐ',
 
@@ -1510,7 +1538,13 @@ $1',
 # Watchlist editor
 '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 ܟܘܢܝ̈ܐ ܐܬܠܚܘܢ}} ܡܢ ܪ̈ܗܝܬܟ:',
+'watchlistedit-raw-title' => 'ܫܚܠܦ ܪ̈ܗܝܬܐ ܦܛܝܪ̈ܬܐ',
+'watchlistedit-raw-legend' => 'ܫܚܠܦ ܪ̈ܗܝܬܐ ܦܛܝܪ̈ܬܐ',
 'watchlistedit-raw-titles' => 'ܟܘܢܝ̈ܐ:',
 'watchlistedit-raw-submit' => 'ܚܕܬ ܪ̈ܗܝܬܐ',
 
@@ -1540,6 +1574,7 @@ $1',
 
 # Special:SpecialPages
 'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
+'specialpages-group-maintenance' => 'ܬܫܪܪܐ ܕܚܕܬܘܬܐ',
 'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
 'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ',
 'specialpages-group-changes' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܘܣܓܠ̈ܐ',
@@ -1558,8 +1593,8 @@ $1',
 'tags-hitcount' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
 
 # Special:ComparePages
-'compare-page1' => 'Ü\95ܦܐ 1',
-'compare-page2' => 'Ü\95ܦܐ 2',
+'compare-page1' => 'ܦÜ\90ܬܐ 1',
+'compare-page2' => 'ܦÜ\90ܬܐ 2',
 'compare-rev1' => 'ܬܢܝܬܐ 1',
 'compare-rev2' => 'ܬܢܝܬܐ 2',
 'compare-submit' => 'ܦܚܘܡ',
@@ -1570,14 +1605,15 @@ $1',
 'htmlform-selectorother-other' => 'ܐܚܪܢܐ',
 
 # New logging system
-'logentry-delete-delete' => '$1 Ü«Ü¦ Ü\95ܦܐ ܕ $3',
-'logentry-move-move' => '$1 Ü«Ü¢Ü\90 Ü\95ܦܐ ܕ $3 ܠ $4',
-'logentry-move-move-noredirect' => '$1 Ü«Ü¢Ü\90 Ü\95ܦÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü Ü\90 Ü«Ü\92Ü©Ü\90 Ü\95Ü\95ܦܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir' => '$1 Ü«Ü¢Ü\90 Ü\95ܦÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü\90Ü\9dܬÜ\98Ü\97Ü\9d Ü\97Ü\98Ü\90 Ü\95ܦܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir-noredirect' => '$1 Ü«Ü¢Ü\90 Ü\95ܦÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü\90Ü\9dܬÜ\98Ü\97Ü\9d Ü\97Ü\98Ü\90 Ü\95ܦÜ\90 Ü\95ܨÜ\98Ü\9dÜ\92Ü\90 Ü\98Ü\95Ü Ü\90 Ü«Ü\92Ü©Ü\90 Ü\95Ü\95ܦܐ ܕܨܘܝܒܐ',
+'logentry-delete-delete' => '$1 Ü«Ü¦ Ü¦Ü\90ܬܐ ܕ $3',
+'logentry-move-move' => '$1 Ü«Ü¢Ü\90 Ü¦Ü\90ܬܐ ܕ $3 ܠ $4',
+'logentry-move-move-noredirect' => '$1 Ü«Ü¢Ü\90 Ü¦Ü\90ܬÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü Ü\90 Ü«Ü\92Ü©Ü\90 Ü¦Ü\90ܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir' => '$1 Ü«Ü¢Ü\90 Ü¦Ü\90ܬÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü\90Ü\9dܬÜ\98Ü\97Ü\9d Ü¦Ü\90ܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir-noredirect' => '$1 Ü«Ü¢Ü\90 Ü¦Ü\90ܬÜ\90 Ü\95 $3 Ü  $4 Ü\95Ü\90Ü\9dܬÜ\98Ü\97Ü\9d Ü¦Ü\90ܬÜ\90 Ü\95ܨÜ\98Ü\9dÜ\92Ü\90 Ü\98Ü\95Ü Ü\90 Ü«Ü\92Ü©Ü\90 Ü¦Ü\90ܬܐ ܕܨܘܝܒܐ',
 'logentry-newusers-newusers' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create2' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3',
+'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
 'newuserlog-byemail' => 'ܡܠܬܐ ܕܥܠܠܐ ܐܫܬܕܪܬ ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 
 # Feedback
index 5c322b5..2a35406 100644 (file)
@@ -329,7 +329,7 @@ $messages = array(
 'tog-enotifminoredits' => 'ابعتلى ايميل للتعديلات الصغيره للصفحات',
 'tog-enotifrevealaddr' => 'بين الايميل بتاعى فى ايميلات الاعلام',
 'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
-'tog-oldsig' => 'برÙ\88Ù\81Ù\87 Ù\84Ù\84اÙ\85ضا Ø§Ù\84حاÙ\84Ù\8aÙ\87',
+'tog-oldsig' => 'اÙ\84اÙ\85ضا Ø¯Ù\84Ù\88Ù\82تÙ\89:',
 'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
 'tog-externaleditor' => 'استعمل محرر خارجى افتراضيا',
 'tog-externaldiff' => 'استعمل فرق خارجى افتراضيا',
@@ -458,7 +458,7 @@ $messages = array(
 'vector-action-move' => 'نقل',
 'vector-action-protect' => 'حمايه',
 'vector-action-undelete' => 'الغى المسح',
-'vector-action-unprotect' => 'اÙ\84غÙ\89 الحمايه',
+'vector-action-unprotect' => 'غÙ\8aر الحمايه',
 'vector-view-create' => 'اعمل',
 'vector-view-edit' => 'تعديل',
 'vector-view-history' => 'استعراض التاريخ',
@@ -492,8 +492,8 @@ $messages = array(
 'protect' => 'حمايه',
 'protect_change' => 'غيّر',
 'protectthispage' => 'احمى الصفحه دى',
-'unprotect' => 'اÙ\84غÙ\89 Ø§Ù\84Ø­Ù\85اÙ\8aØ©',
-'unprotectthispage' => 'Ø´Ù\8aÙ\84 حماية الصفحه دى',
+'unprotect' => 'غÙ\8aر Ø§Ù\84Ø­Ù\85اÙ\8aÙ\87',
+'unprotectthispage' => 'غÙ\8aر حماية الصفحه دى',
 'newpage' => 'صفحه جديده',
 'talkpage' => 'ناقش الصفحه دى',
 'talkpagelinktext' => 'مناقشه',
@@ -526,6 +526,9 @@ $messages = array(
 لو سمحت تستنا شويه قبل ما تحاول تستعرض الصفحه دى من تانى.
 
 $1',
+'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) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'عن {{SITENAME}}',
@@ -707,8 +710,8 @@ $2',
 'createaccountmail' => 'بـ الايميل',
 'createaccountreason' => 'السبب:',
 'badretype' => 'كلمتين السر اللى  كتبتهم مش  زى بعضهم',
-'userexists' => 'اسم اليوزر اللى دخلته بيستعمله يوزر غيرك.
¯Ø®Ù\84 Ø§Ø³Ù\85 تانى.',
+'userexists' => 'اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.
§Ù\83تت Ø§Ø³Ù\85 Ù\8aÙ\88زر تانى.',
 'loginerror' => 'غلط فى الدخول',
 'createaccounterror' => 'مش قادر يعمل الحساب: $1',
 'nocookiesnew' => 'اليوزر خلاص اتفتح له حساب، بس انت لسة ما سجلتش دخولك.
@@ -969,12 +972,12 @@ $2',
 'permissionserrorstext-withaction' => 'أنت ما عندكش الصلاحيات علشان $2، لل{{PLURAL:$1|سبب|أسباب}} ده:',
 'recreate-moveddeleted-warn' => "'''تحذير: انت بتعيد انشاء صفحه اتمسحت قبل كده.'''
 لازم تتأكد من ان الاستمرار فى تحرير الصفحه دى ملائم.
-سجلات الحذف و النقل بتوع الصفحه دى معروضه هنا:",
+سجلات المسح  و النقل بتوع الصفحه دى معروضه هنا:",
 'moveddeleted-notice' => 'الصفحة دى اتمسحت. سجل المسح و سجل النقل بتوع الصفحة معروضين تحت علشان ترجعلهم.',
 'log-fulllog' => 'استعراض السجل بالكامل',
 'edit-hook-aborted' => 'الخطاف ساب التعديل من غير مايدى تفسير.',
-'edit-gone-missing' => 'Ù\84Ù\85 Ù\8aÙ\85Ù\83Ù\86 ØªØ­Ø¯Ù\8aØ« Ø§Ù\84صÙ\81حة.
\8aبدÙ\88 Ø£Ù\86Ù\87 ØªÙ\85 Ø­Ø°Ù\81Ù\87ا.',
+'edit-gone-missing' => 'Ù\85Ø´ Ù\85Ù\85Ù\83Ù\86 ØªØ¹Ø¯Ù\8aÙ\84 Ø§Ù\84صÙ\81Ø­Ù\87.
\8aظÙ\87ر Ø§Ù\86Ù\87ا Ø¥ØªÙ\85سحت.',
 'edit-conflict' => 'تضارب تحريرى.',
 'edit-no-change' => 'تعديلك تم تجاهله، لأن ما حصلش أى تعديل للنص.',
 'edit-already-exists' => 'لم يمكن إنشاء صفحة جديدة.
@@ -1065,7 +1068,7 @@ $2',
 ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].
 كسيسوب ممكن [$1 تشوف الفرق ده] لو إنت عايز تكمل.",
 'rev-deleted-diff-view' => "واحده من نسخ الفرق ده '''اتمسحت'''.
-كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].",
 'rev-suppressed-diff-view' => "واحده من نسخ الفرق ده '''اتخبت'''.
 كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].",
 'rev-delundel' => 'عرض/تخبيه',
@@ -1171,11 +1174,13 @@ $1",
 
 # Diffs
 'history-title' => 'تاريخ تعديل "$1"',
+'difference-multipage' => '(الفرق بين الصفحتين)',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'showhideselectedversions' => 'عرض/تخبية المراجعات المختاره.',
 'editundo' => 'استرجاع',
 'diff-multi' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}}  مش معروضه)',
+'diff-multi-manyusers' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}}  مش معروضه)',
 
 # Search results
 'searchresults' => 'نتايج التدوير',
@@ -1210,6 +1215,7 @@ $1",
 'searchprofile-everything-tooltip' => 'دور فى  كل المحتوى (شامل صفحات النقاش)',
 'searchprofile-advanced-tooltip' => 'دور فى النطاقات المخصصة',
 'search-result-size' => '$1 ({{PLURAL:$2|1 كلمه|$2 كلام}})',
+'search-result-category-size' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوين|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعى واحد|تصنيفين فرعيين|$2 تصنيفات فرعية|$2 تصنيف فرعى|$2 تصنيف فرعى}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفين|$3 ملفات|$3 ملف|$3 ملف}})',
 'search-result-score' => 'الارتباط: $1%',
 'search-redirect' => '(تحويله $1)',
 'search-section' => '(جزء $1)',
@@ -1364,6 +1370,10 @@ $1",
 'prefs-displaywatchlist' => 'اختيارات العرض',
 'prefs-diffs' => 'التغيير',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'عنوان الإيميل صح',
+'email-address-validity-invalid' => 'عنوان الإيميل غلط',
+
 # User rights
 'userrights' => 'إدارة الحقوق بتاعة اليوزر',
 'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
@@ -1447,6 +1457,7 @@ $1",
 'right-hideuser' => 'منع اسم يوزر، و خبيه عن الناس',
 'right-ipblock-exempt' => 'إتفادى عمليات منع الأيبي، المنع الأوتوماتيكى ومنع النطاق.',
 'right-proxyunbannable' => 'إتفادى عمليات المنع الأوتوماتيكية للبروكسيهات',
+'right-unblockself' => 'رفع المنع عن نفسهم',
 'right-protect' => 'تغيير مستويات الحماية وتعديل الصفحات المحمية',
 'right-editprotected' => 'تعديل الصفحات المحمية (من غير الحماية المتضمنة)',
 'right-editinterface' => 'تعديل الواجهة بتاعة اليوزر',
@@ -1600,6 +1611,8 @@ $1",
 'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
 {{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
 'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
+'file-too-large' => 'الملف كان كبير جدا.',
+'filetype-banned' => 'نوع الملف ده ممنوع.',
 'large-file' => 'ينصح ان الملفات ماتكونش أكبر من $1؛ الملف ده حجمه $2.',
 'largefileserver' => 'حجم الملف ده أكبر من المسموح بيه على السيرڨر ده .',
 'emptyfile' => 'الظاهر ان الملف اللى انت حملته طلع فاضي.
@@ -2144,7 +2157,7 @@ $UNWATCHURL
 'delete-legend' => 'مسح',
 'historywarning' => "'''تحذير:''' الصفحه اللى ها  تمسحها ليها تاريخ فيه تقريبا $1 {{PLURAL:$1|مراجعة|مراجعة}}:",
 'confirmdeletetext' => 'انت على وشك انك تمسح صفحه أو صوره و كل تاريخها.
-من فضلك  اتأكد انك عايز المسح وبأنك فاهم نتايج  العمليه  دى. عمليات الحذف لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].',
+من فضلك  اتأكد انك عايز المسح وبأنك فاهم نتايج  العمليه  دى. عمليات المسح لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].',
 'actioncomplete' => 'العمليه خلصت',
 'actionfailed' => 'الفعل فشل',
 'deletedtext' => '"$1" اتمسحت.
index 81e7261..2e2cdb5 100644 (file)
@@ -119,12 +119,12 @@ $messages = array(
 'tog-hidepatrolled' => 'সাম্প্ৰতিক সাল-সলনিত তহলদাৰী সম্পাদনা নেদেখুৱাব',
 'tog-newpageshidepatrolled' => 'নতুন পৃষ্ঠা তালিকাত তহলদাৰী পৃষ্ঠাসমূহ নেদেখুৱাব',
 'tog-extendwatchlist' => 'কেৱল সাম্প্ৰতিকেই নহয, লক্ষ্য-তালিকাৰ সকলো সাল-সলনি বহলাই দেখুৱাওক',
-'tog-usenewrc' => 'বৰà§\8dদà§\8dধিত à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¸à¦¾à¦²-সলনি à¦¬à§\8dযবহাৰ à¦\95ৰà¦\95 (à¦\9cাভাসà§\8dà¦\95à§\8dৰিপà§\8dà¦\9fৰ à¦¦à§°à¦\95াৰ)',
+'tog-usenewrc' => 'বৰà§\8dদà§\8dধিত à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¸à¦¾à¦²-সলনি à¦¬à§\8dযৱহাৰ à¦\95ৰà¦\95 (à¦\9cাভাসà§\8dà¦\95à§\8dৰিপà§\8dà¦\9fৰ à¦ªà§\8dৰয়à§\8bà¦\9cন)',
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক (জাভাস্ক্ৰিপ্টৰ দৰকাৰ)',
 'tog-editondblclick' => 'একেলগে দুবাৰ টিপা মাৰিলে পৃষ্ঠা সম্পাদনা কৰক (জাভাস্ক্ৰিপ্টৰ দৰকাৰ)',
 'tog-editsection' => '[সম্পাদনা] সংযোগৰ দ্বাৰা অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
-'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত সোঁ-বুটাম টিপা মাৰি সম্পাদনা কৰাটো সক্ৰিয় কৰক (জাভাস্ক্ৰিপ্ট)',
+'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত সোঁ-বুটাম টিপা মাৰি সম্পাদনা কৰাটো সক্ৰিয় কৰক (জাভাস্ক্ৰিপ্টৰ প্ৰয়োজন)',
 'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
 'tog-watchcreations' => 'মই সৃষ্টি সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
@@ -156,7 +156,7 @@ $messages = array(
 'tog-ccmeonemails' => 'মই অন্য সদস্যলৈ পঠোৱা ই-মেইলৰ প্ৰতিলিপি এটা মোলৈও পঠাব',
 'tog-diffonly' => 'পার্থক্যৰ তলত পৃষ্ঠাৰ বিষয়বস্তু নেদেখুৱাব',
 'tog-showhiddencats' => 'নিহিত শ্ৰেণী সমূহ দেখুৱাওক',
-'tog-norollbackdiff' => 'ৰà§\8bলবà§\87à¦\95à§\8d à¦\95ৰা à¦ªà¦¾à¦\9aত পাৰ্থক্য নেদেখুৱাব',
+'tog-norollbackdiff' => 'পà§\82ৰà§\8dবৱত à¦\95ৰা à¦ªà¦¾à¦\9bত পাৰ্থক্য নেদেখুৱাব',
 
 'underline-always' => 'সদায়',
 'underline-never' => 'কেতিয়াও নহয়',
@@ -170,14 +170,14 @@ $messages = array(
 'editfont-serif' => 'চেৰিফ ফন্ট',
 
 # Dates
-'sunday' => 'দেওবাৰ',
+'sunday' => 'দà§\87à¦\93à¦\81বাৰ',
 'monday' => 'সোমবাৰ',
 'tuesday' => 'মঙ্গলবাৰ',
 'wednesday' => 'বুধবাৰ',
 'thursday' => 'বৃহস্পতিবাৰ',
 'friday' => 'শুক্ৰবাৰ',
 'saturday' => 'শণিবাৰ',
-'sun' => 'দেও',
+'sun' => 'দেও',
 'mon' => 'সোম',
 'tue' => 'মংগল',
 'wed' => 'বুধ',
@@ -208,8 +208,8 @@ $messages = array(
 'october-gen' => 'অক্টোবৰ',
 'november-gen' => 'নৱেম্বৰ',
 'december-gen' => 'ডিচেম্বৰ',
-'jan' => 'জানু:',
-'feb' => 'ফেব্ৰু:',
+'jan' => 'জানুৱাৰী:',
+'feb' => 'ফেব্ৰুৱাৰী:',
 'mar' => 'মাৰ্চ',
 'apr' => 'এপ্ৰিল',
 'may' => 'মে',
@@ -217,18 +217,18 @@ $messages = array(
 'jul' => 'জুলাই',
 'aug' => 'আগষ্ট',
 'sep' => 'ছেপ্টেম্বৰ:',
-'oct' => 'অক্টো:',
-'nov' => 'নৱে:',
-'dec' => 'ডিচে:',
+'oct' => 'অক্টোবৰ:',
+'nov' => 'নৱেম্বৰ:',
+'dec' => 'ডিচেম্বৰ:',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|শ্ৰেণী|শ্ৰেণী}}',
+'pagecategories' => '{{PLURAL:$1|শ্ৰেণী|শ্ৰেণীসমূহ}}',
 'category_header' => '"$1" শ্ৰেণীৰ পৃষ্ঠাসমূহ',
 'subcategories' => 'উপশ্ৰেণীসমূহ',
 'category-media-header' => '"$1" শ্ৰেণীৰ মিডিয়া',
 'category-empty' => "''এই শ্ৰেণীত বৰ্তমান কোনো পৃষ্ঠা বা মিডিয়া ফাইল নাই ।''",
 'hidden-categories' => '{{PLURAL:$1|নিহিত শ্ৰেণী|নিহিত শ্ৰেণীসমূহ}}',
-'hidden-category-category' => 'অদৃশ্য শ্ৰেণী সমূহ',
+'hidden-category-category' => 'অদৃশ্য শ্ৰেণীসমূহ',
 'category-subcat-count' => '{{PLURAL:$2|এই শ্ৰেণীত নিম্নলিখিত উপশ্ৰেণীসমূহ আছে। মুঠ $2টা উপশ্ৰেণীৰ ভিতৰত এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|এটা উপশ্ৰেণী|$1 টা উপশ্ৰেণী}} আছে।}}',
 'category-subcat-count-limited' => 'এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|টা উপশ্ৰেণী আছে|$1টা উপশ্ৰেণী আছে}}।',
 'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে । মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এখন পৃষ্ঠা আছে|$1 খন পৃষ্ঠা আছে}}।}}',
@@ -241,9 +241,9 @@ $messages = array(
 'broken-file-category' => 'অবৈধ ফাইল সংযোগযুক্ত পৃষ্ঠাবোৰ',
 
 'about' => 'বিষয়ে',
-'article' => 'বিষয়বসà§\8dতà§\81 পৃষ্ঠা',
+'article' => 'সমল পৃষ্ঠা',
 'newwindow' => "(নতুন ৱিণ্ড'ত খোল খায়)",
-'cancel' => 'ৰদ à¦\95ৰা à¦¹à¦\93ক',
+'cancel' => 'বাতিল à¦\95ৰক',
 'moredotdotdot' => 'অধিক...',
 'mypage' => 'মোৰ পৃষ্ঠা',
 'mytalk' => 'মোৰ কথা-বতৰা',
@@ -264,7 +264,7 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'বিষয় যোগ',
-'vector-action-delete' => 'মà¦\9aি à¦ªà§\87লাà¦\93ক',
+'vector-action-delete' => 'বিলà§\8bপ à¦\95ৰক',
 'vector-action-move' => 'স্থানান্তৰ কৰক',
 'vector-action-protect' => 'সুৰক্ষিত কৰক',
 'vector-action-undelete' => 'পুনৰুদ্ধাৰ কৰক',
@@ -275,13 +275,13 @@ $messages = array(
 'vector-view-history' => 'ইতিহাস চাওক',
 'vector-view-view' => 'পঢ়ক',
 'vector-view-viewsource' => 'উৎস চাওক',
-'actions' => 'à¦\95াৰà§\8dযà§\8dযসমà§\82হ',
+'actions' => 'কাৰ্যসমূহ',
 'namespaces' => 'নামস্থান',
 'variants' => 'বিকল্পসমূহ',
 
 'errorpagetitle' => 'ভুল',
-'returnto' => '$1 লৈ ঘূৰি যাওক ।',
-'tagline' => '{{SITENAME}} -ৰ পৰা',
+'returnto' => '$1লৈ ঘূৰি যাওক ।',
+'tagline' => '{{SITENAME}}ৰ পৰা',
 'help' => 'সহায়',
 'search' => 'সন্ধান',
 'searchbutton' => 'সন্ধান কৰক',
@@ -305,7 +305,7 @@ $messages = array(
 'protect' => 'সুৰক্ষিত কৰক',
 'protect_change' => 'সলাওক',
 'protectthispage' => 'বৰ্তমান পৃষ্ঠাৰ সংৰক্ষণবিধিৰ পৰিবৰ্তন',
-'unprotect' => 'সà¦\82ৰà¦\95à§\8dষণ সলনি কৰক',
+'unprotect' => 'সà§\81ৰà¦\95à§\8dষা সলনি কৰক',
 'unprotectthispage' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
 'newpage' => 'নতুন পৃষ্ঠা',
 'talkpage' => 'এই পৃষ্ঠা সম্পৰ্কে কথা-বতৰা',
@@ -316,20 +316,20 @@ $messages = array(
 'articlepage' => 'সমল পৃষ্ঠা চাওক',
 'talk' => 'আলোচনা',
 'views' => 'দৰ্শন',
-'toolbox' => 'সা-সৰঞ্জাম',
+'toolbox' => 'সা-সৰঞ্জাম',
 'userpage' => 'সদস্য পৃষ্ঠা চাওক',
-'projectpage' => 'প্ৰকল্প পৃষ্ঠা',
-'imagepage' => 'ফাà¦\87ল পৃষ্ঠা চাওক',
+'projectpage' => 'প্ৰকল্প পৃষ্ঠা চাওক',
+'imagepage' => 'নথি পৃষ্ঠা চাওক',
 'mediawikipage' => 'বাৰ্তা পৃষ্ঠা চাওক',
 'templatepage' => 'সাঁচ পৃষ্ঠা চাওক',
 'viewhelppage' => 'সহায় পৃষ্ঠা চাওক',
 'categorypage' => 'শ্ৰেণী পৃষ্ঠা চাওক',
-'viewtalkpage' => 'à¦\95থা-বতৰা চাওক',
-'otherlanguages' => 'আন ভাষাত',
-'redirectedfrom' => '($1 ৰ পৰা পুনঃনিৰ্দেশিত)',
+'viewtalkpage' => 'à¦\86লà§\8bà¦\9aনা চাওক',
+'otherlanguages' => 'à¦\86ন à¦­à¦¾à¦·à¦¾à¦¸à¦®à§\82হত',
+'redirectedfrom' => '($1ৰ পৰা পুনঃনিৰ্দেশিত)',
 'redirectpagesub' => 'পুনঃনিৰ্দেশিত পৃষ্ঠা',
 'lastmodifiedat' => 'এই পৃষ্ঠাখন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
-'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1}} বাৰ চোৱা হৈছে',
+'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
 'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
 'jumpto' => 'গম্যাৰ্থে',
 'jumptonavigation' => 'দিকদৰ্শন',
@@ -339,7 +339,7 @@ $messages = array(
 অনুগ্ৰহ কৰি অলপ পাছত এই পৃষ্ঠা চাবলৈ প্ৰয়াস কৰক ।
 
 $1',
-'pool-timeout' => 'লà¦\95ৰ à¦¬à¦¾à¦¬à§\87 à¦\85পà§\87à¦\95à§\8dষা à¦\95ৰি সময় উকলি গৈছে',
+'pool-timeout' => 'বনà§\8dধ à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\85পà§\87à¦\95à§\8dষা à¦\95ৰাৰ সময় উকলি গৈছে',
 'pool-queuefull' => 'পোল কিউ (pool queue) সমূল',
 'pool-errorunknown' => 'অপৰিচিত ত্ৰুটি',
 
@@ -350,7 +350,7 @@ $1',
 'copyrightpage' => '{{ns:project}}:স্বত্ব',
 'currentevents' => 'সাম্প্ৰতিক ঘটনাৱলী',
 'currentevents-url' => 'Project:শেহতীয়া ঘটনাৱলী',
-'disclaimers' => 'à¦\98à§\8bষণা',
+'disclaimers' => 'দায়লà§\81পà§\8dতি',
 'disclaimerpage' => 'Project:সাধাৰণ দায়লুপ্তি',
 'edithelp' => 'সম্পাদনাৰ বাবে সহায়',
 'edithelppage' => 'Help:সম্পাদনা',
@@ -370,12 +370,12 @@ $1',
 'versionrequired' => 'মিডিয়াৱিকিৰ $1 সংকলন থাকিব লাগিব ।',
 'versionrequiredtext' => 'এই পৃষ্ঠাটো ব্যৱহাৰ কৰিবলৈ মিডিয়াৱিকিৰ $1 সংস্কৰণ থাকিব লাগিব । [[Special:Version|সংস্কৰণ পৃষ্ঠা]] চাওক।',
 
-'ok' => 'à¦\85â\80\99à¦\95ে',
-'retrievedfrom' => '"$1" -ৰ পৰা সংকলিত',
+'ok' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
-'newmessageslink' => 'নতà§\81ন à¦¬à¦¾à§°à§\8dতা',
+'newmessageslink' => 'নতà§\81ন à¦¸à¦\82বাদ',
 'newmessagesdifflink' => 'শেহতীয়া সাল-সলনি',
-'youhavenewmessagesmulti' => '$1ত à¦\86পà§\8bনাৰ à¦\95াৰণà§\87 à¦¨à¦¤à§\81ন à¦¬à¦¾à§°à§\8dতা আছে',
+'youhavenewmessagesmulti' => '$1ত à¦\86পà§\8bনাৰ à¦\95াৰণà§\87 à¦¨à¦¤à§\81ন à¦¸à¦\82বাদ আছে',
 'editsection' => 'সম্পাদনা কৰক',
 'editold' => 'সম্পাদনা',
 'viewsourceold' => 'উৎস চাওক',
@@ -407,26 +407,26 @@ $1',
 'nstab-media' => 'মিডিয়া পৃষ্ঠা',
 'nstab-special' => 'বিশেষ পৃষ্ঠা',
 'nstab-project' => 'প্ৰকল্প পৃষ্ঠা',
-'nstab-image' => 'à¦\9aিতà§\8dৰ',
-'nstab-mediawiki' => 'বাৰà§\8dতা',
+'nstab-image' => 'নথি',
+'nstab-mediawiki' => 'সà¦\82বাদ',
 'nstab-template' => 'সাঁচ',
 'nstab-help' => 'সাহায্য পৃষ্ঠা',
 'nstab-category' => 'শ্ৰেণী',
 
 # Main script and global functions
 'nosuchaction' => 'এনে কাৰ্য নাই',
-'nosuchactiontext' => "এই ইউআৰএল-এ নিৰ্ধাৰিত কৰা কাৰ্য্য অবৈধ।
+'nosuchactiontext' => "এই ইউআৰএলে নিৰ্ধাৰিত কৰা কাৰ্য অবৈধ।
 আপুনি বোধহয়  ইউআৰএল ভুলকৈ লিখিছে বা এটা ভুল লিঙ্ক অনুকৰণ কৰিছে ।
-হ'বও পাৰে যে {{SITENAME}}-ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি আছে ।",
-'nosuchspecialpage' => 'এনেকুৱা কোনো বিশেষ পৃষ্ঠা নাই',
+{{SITENAME}}ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি হ'বও পাৰে ।",
+'nosuchspecialpage' => 'এনে ধৰনৰ কোনো বিশেষ পৃষ্ঠা নাই',
 'nospecialpagetext' => '<strong>আপুনি অবৈধ বিশেষ পৃষ্ঠা এটা অনুৰোধ কৰিছে ।</strong>
 
- বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
+বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
 
 # General errors
 'error' => 'ভুল',
 'databaseerror' => 'তথ্যকোষৰ ভুল',
-'dberrortext' => 'Database query-ত ভুল আছে।
+'dberrortext' => 'Database query’ত ত্ৰুটি আছে।
 ছফ্টৱেৰত থকা কোনো বাগৰ বাবে এনে হব পাৰে।
 অন্তিমবাৰ চেষ্টা কৰা ডাটাবেচ কুৱেৰীটো আছিল এনেধৰণৰ:
 <blockquote><tt>$1</tt></blockquote>
@@ -448,30 +448,32 @@ $1',
 বিলোপ কৰা কোনো পৃষ্ঠাৰ সংযোগৰ বাবে সাধাৰণতে এনে ঘটে ।
 
 যদি এনে হোৱা নাই তেন্তে আপুনি ছফ্টৱেৰত কিবা সমস্যা পাইছে ।
-অনুগ্ৰহ কৰি এই সম্পৰ্কে ইউ.আৰ.এল. সহ কোনো [[Special:ListUsers/sysop|প্ৰশাসক]] ক জনাওক ।',
+অনুগ্ৰহ কৰি এই সম্পৰ্কে ইউ.আৰ.এল. সহ কোনো [[Special:ListUsers/sysop|প্ৰশাসক]]ক জনাওক ।',
 'missingarticle-rev' => '(সংস্কৰণ#: $1)',
 'missingarticle-diff' => '(তফাৎ: $1, $2)',
 'readonly_lag' => 'তথ্যকোষ স্বয়ংক্ৰিয়ভাৱে বন্ধ হৈছে যাতে দ্বিতীয় শ্ৰেণীৰ তথ্যকোষৰ চাৰ্ভাৰ প্ৰধান তথ্যকোষৰ চাৰ্ভাৰৰ অৱস্থালৈ আহিব পাৰে ।',
 'internalerror' => 'আভ্যন্তৰীণ ক্ৰুটি',
-'internalerror_info' => 'ভিতৰà§\81ৱা ত্ৰুটি: $1',
-'fileappenderrorread' => 'à¦\9cোৰা দিয়াৰ সময়ত "$1" পাঠ্য কৰা নহ\'ল ।',
+'internalerror_info' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ ত্ৰুটি: $1',
+'fileappenderrorread' => 'যোৰা দিয়াৰ সময়ত "$1" পাঠ্য কৰা নহ\'ল ।',
 'fileappenderror' => '"$2"ৰ লগত "$1"ৰ সংযোগ কৰা নহ\'ল ।',
-'filecopyerror' => '"$1" ফাইলটো "$2" লৈ প্ৰতিলিপি কৰিব পৰা নগ’ল।',
-'filerenameerror' => '"$1" ফাইলৰ নাম সলনি কৰি "$2" কৰিব পৰা নগল ।',
-'filedeleteerror' => '"$1" ফাইলতো বিলোপ কৰিব পৰা নগল।',
-'directorycreateerror' => '"$1" à¦¡à¦¾à¦\87ৰà§\87à¦\95à§\8dà¦\9fৰি সৃষ্টি কৰিব পৰা নগ’ল।',
-'filenotfound' => '"$1" নামৰ ফাইলটো বিচাৰি পোৱা নগল।',
+'filecopyerror' => '"$1" ফাইলটো "$2"লৈ প্ৰতিলিপি কৰিব পৰা নগ’ল।',
+'filerenameerror' => '"$1" ফাইলৰ নাম সলনি কৰি "$2" কৰিব পৰা নগল ।',
+'filedeleteerror' => '"$1" ফাইলতো বিলোপ কৰিব পৰা নগল।',
+'directorycreateerror' => '"$1" à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া সৃষ্টি কৰিব পৰা নগ’ল।',
+'filenotfound' => '"$1" নামৰ ফাইলটো বিচাৰি পোৱা নগল।',
 'fileexistserror' => '"$1" ফাইলটোত লিখিব নোৱাৰি: ফাইলটো আগৰ পৰাই আছে',
 'unexpected' => 'অনাকাংক্ষিত মূল্য: "$1"="$2".',
 'formerror' => 'ভুল: ফৰ্ম খন জমা দিব পৰা নগ’ল',
 'badarticleerror' => 'এই পৃষ্ঠাটোত এই কামটো কৰিব নোৱাৰি ।',
-'cannotdelete' => '"$1" à¦ªà§\83ষà§\8dঠা à¦¬à¦¾ à¦«à¦¾à¦\87ল à¦®à¦\9aা à¦¸à¦®à§\8dভব à¦¨à¦¹à¦¯à¦¼ ।
-সমà§\8dভৱ à¦\86নà§\87 à¦\86à¦\97à§\87à¦\87 à¦®à¦\9aি à¦¥à§\88ছে ।',
+'cannotdelete' => '"$1" à¦ªà§\83ষà§\8dঠা à¦¬à¦¾ à¦¨à¦¥à¦¿à¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦\85সমà§\8dভৱ ।
+সমà§\8dভৱ à¦\86নà§\87 à¦\86à¦\97à§\87à¦\87 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিছে ।',
 'cannotdelete-title' => '"$1" পৃষ্ঠা বিলোপ কৰিব নোৱাৰি',
+'delete-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
+ইয়াৰ কোনো ব্যাখ্যা নাই ।',
 'badtitle' => 'অগ্ৰহণীয় শিৰোনামা',
 'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
-'perfcached' => "তলত দিয়া তথ্যখিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্ৰতিক নহ'ব পাৰে। এই তথ্যখিনিত সৰ্বোচ্চ {{PLURAL:$1|এটা ফলফল|$1টা ফলাফল}} উপলব্ধ।",
-'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই cacheত পাব।',
+'perfcached' => "তলত à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¤à¦¥à§\8dযà¦\96িনি à¦\86à¦\97তà§\87 à¦\9cমা à¦\95ৰি à¦¥à§\8bৱা (cached) à¦\86ৰà§\81 à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¨à¦¹'ব à¦ªà¦¾à§°à§\87। à¦\8fà¦\87 à¦¤à¦¥à§\8dযà¦\96িনিত à¦¸à§°à§\8dবà§\8bà¦\9aà§\8dà¦\9a {{PLURAL:$1|à¦\8fà¦\9fা à¦«à¦²à¦¾à¦«à¦²|$1à¦\9fা à¦«à¦²à¦¾à¦«à¦²}} à¦\89পলবà§\8dধ।",
+'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই কেশ্বত পাব।',
 'querypage-no-updates' => 'এই পৃষ্ঠাটো নৱীকৰণ কৰা ৰোধ কৰা হৈছে। ইয়াৰ তথ্য এতিয়া সতেজ কৰিব নোৱাৰি।',
 'wrong_wfQuery_params' => 'wfQuery() ৰ কাৰণে ভুল মাপদণ্ড দিয়া হৈছে <br />
 কাৰ্য: $1<br />পৃষ্ঠা: $2',
@@ -489,15 +491,17 @@ $1',
 'cascadeprotected' => 'এই পৃষ্ঠাখন সম্পাদনাৰ পৰা সুৰক্ষিত কাৰণ এই {{PLURAL:$1|পৃষ্ঠা, যিখন|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
-'customcssprotected' => 'এই পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত চেটিংচ আছে ।',
-'customjsprotected' => 'à¦\8fà¦\87 à¦\9cাভালিপিৰ à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰাৰ à¦\85ধিà¦\95াৰ à¦\86পà§\8bনাৰ à¦¨à¦¾à¦\87, à¦\95াৰণ à¦\87য়াত à¦\86ন à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à§\8dযà¦\95à§\8dতিà¦\97ত à¦\9aà§\87à¦\9fিà¦\82à¦\9a আছে ।',
+'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
+'customjsprotected' => 'à¦\8fà¦\87 à¦\9cাভালিপিৰ à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰাৰ à¦\85ধিà¦\95াৰ à¦\86পà§\8bনাৰ à¦¨à¦¾à¦\87, à¦\95াৰণ à¦\87য়াত à¦\86ন à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à§\8dযà¦\95à§\8dতিà¦\97ত à¦ªà¦\9bনà§\8dদসমà§\82হত আছে ।',
 'ns-specialprotected' => 'বিশেষ পৃষ্ঠা সম্পাদিত কৰিব নোৱাৰি।',
-'titleprotected' => "[[User:$1|$1]] à¦¸à¦¦à¦¸à§\8dযà¦\9cনà§\87 à¦\8fà¦\87 à¦¶à¦¿à§°à§\8bণামাৰ লিখনী লিখা ৰোধ কৰিছে ।
+'titleprotected' => "[[User:$1|$1]] à¦¸à¦¦à¦¸à§\8dযà¦\9cনà§\87 à¦\8fà¦\87 à¦¶à¦¿à§°à§\8bনাণমাৰ লিখনী লিখা ৰোধ কৰিছে ।
 ইয়াৰ কাৰণ হৈছে ''$2'' ।",
 'filereadonlyerror' => '"$1" ফাইলটোক পৰিৱৰ্তন কৰিব পৰা নগ\'ল কাৰণ ফাইল ভঁৰাল "$2" কেৱল পঢ়িব পৰা অৱস্থাত আছে।
 যিজন প্ৰশাসকে এইটো বন্ধ কৰিছে তেওঁ দৰ্শোৱা কাৰণ হৈছে: \'\'$3\'\'।',
 'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
 'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
+'exception-nologin' => 'প্ৰৱেশ কৰা নাই',
+'exception-nologin-text' => 'এই পৃষ্ঠা অথবা কামৰ বাবে আপুনি প্ৰৱেশ কৰা বাধ্যতামূলক',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -509,9 +513,9 @@ $2',
 
 আপুনি বেনামী ভাবেও {{SITENAME}} ব্যৱহাৰ কৰিব পাৰে, অথবা আকৌ সেই একে বা বেলেগ নামেৰে [[Special:UserLogin|প্ৰৱেশ]] কৰিব পাৰে।
 মন কৰিব যে যেতিয়ালৈকে আপোনাৰ ব্ৰাউজাৰৰ অস্থায়ী-স্মৃতি (cache memory) খালী নকৰে, তেতিয়ালৈকে কিছুমান পৃষ্ঠাত আপুনি প্ৰৱেশ কৰা বুলি দেখুৱাই থাকিব পাৰে।",
-'welcomecreation' => '== à¦¸à§\8dবাà¦\97তম, $1! ==
+'welcomecreation' => '== à¦\86দৰিà¦\9bà§\8bà¦\81, $1! ==
 আপোনাৰ সদস্যভুক্তি হৈ গ’ল ।
-[[Special:Preferences|{{SITENAME}}  পচন্দসমূহ]]ত আপোনাৰ পচন্দমতে ব্যক্তিগতকৰণ কৰি লবলৈ নাপাহৰে যেন ।',
+[[Special:Preferences|{{SITENAME}}ৰ পছন্দসমূহ]]ত আপোনাৰ পছন্দমতে ব্যক্তিগতকৰণ কৰি ল’বলৈ নাপাহৰে যেন ।',
 'yourname' => 'সদস্যনাম:',
 'yourpassword' => 'আপোনাৰ গুপ্তশব্দ',
 'yourpasswordagain' => 'গুপ্তশব্দ আকৌ এবাৰ লিখক',
@@ -527,8 +531,8 @@ $2',
 'logout' => 'প্ৰস্থান',
 'userlogout' => 'প্ৰস্থান',
 'notloggedin' => 'প্ৰৱেশ কৰা নাই',
-'nologin' => 'আপোনাৰ একাউণ্ট নাই নেকি? $1',
-'nologinlink' => 'নতà§\81ন à¦¸à¦¦à¦¸à§\8dযভà§\81à¦\95à§\8dতি à¦\95ৰক',
+'nologin' => "ৱিকিপিডিয়াত আপোনাৰ একাউণ্ট নাই নেকি? তেনে '''$1'''।",
+'nologinlink' => 'নতà§\81ন à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\96à§\8bলক',
 'createaccount' => 'সভ্যভুক্ত হবলৈ',
 'gotaccount' => "আপুনি সদস্য হয়নে? '''$1'''",
 'gotaccountlink' => 'প্ৰৱেশ',
@@ -541,9 +545,9 @@ $2',
 'loginerror' => 'প্ৰৱেশ সমস্যা',
 'createaccounterror' => "একাউন্ট সৃষ্টি কৰা নহ'ল: $1",
 'nocookiesnew' => 'আপোনাৰ সদস্যভুক্তি হৈ গৈছে, কিন্তু আপুনি প্ৰৱেশ কৰা নাই।
-{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
+{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
 আপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।
-অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্যনামেৰে প্ৰৱেশ কৰক।',
+অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্য নামেৰে প্ৰৱেশ কৰক।',
 'nocookieslogin' => '{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
 আপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।
 অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত চেষ্টা কৰক।',
@@ -551,7 +555,7 @@ $2',
 আপোনাৰ কুকি সক্ৰিয় ৰাখক, এই পৃষ্ঠা ৰি-লোড কৰি পুনৰ চেষ্টা কৰক ।',
 'noname' => 'আপুনি বৈধ সদস্যনাম এটা দিয়া নাই।',
 'loginsuccesstitle' => "প্ৰৱেশ অনুমোদিত হ'ল",
-'loginsuccess' => "''' à¦\86পà§\81নি {{SITENAME}}ত \"\$1\" à¦¨à¦¾à¦®à§\87ৰà§\87 à¦ªà§\8dৰবেশ কৰিলে '''",
+'loginsuccess' => "''' à¦\86পà§\81নি {{SITENAME}}ত \"\$1\" à¦¨à¦¾à¦®à§\87ৰà§\87 à¦ªà§\8dৰৱেশ কৰিলে '''",
 'nosuchuser' => '"$1" নামৰ কোনো সদস্য নাই।
 সদস্য নাম আকাৰ সংবেদনশীল।
 আপোনাৰ বানানতো চাওক, বা  [[Special:UserLogin/signup|নতুন সদস্যভুক্তি কৰক]]।',
@@ -565,18 +569,18 @@ $2',
 'password-name-match' => "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
 'password-login-forbidden' => 'এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।',
 'mailmypassword' => 'ই-মেইলত গুপ্তশব্দ পঠিয়াওক',
-'passwordremindertitle' => '{{SITENAME}} ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
+'passwordremindertitle' => '{{SITENAME}}ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
 'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
-{{SITENAME}} ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দ বিছাৰিছে ($4) ।
+{{SITENAME}}ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছে ($4) ।
 "$2" সদস্যজনৰ কাৰণে এতিয়া নতুন গুপ্তশব্দ হৈছে "$3" ।
 আপুনি এতিয়া প্ৰৱেশ কৰক আৰু গুপ্তশব্দতো সলনি কৰক।
-à¦\86পà§\8bনাৰ à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ {{PLURAL:$5|à¦\8fদিনৰ|$5 à¦¦à¦¿à¦¨à§°}} à¦­à¦¿à¦¤à§°à¦¤ à§°à¦¦ কৰা হ\'ব ।
+à¦\86পà§\8bনাৰ à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ {{PLURAL:$5|à¦\8fদিনৰ|$5 à¦¦à¦¿à¦¨à§°}} à¦­à¦¿à¦¤à§°à¦¤ à¦¬à¦¾à¦¤à¦¿à¦² কৰা হ\'ব ।
 
 যদি আপুনি এই অনুৰোধ কৰা নাছিল অথবা যদি আপোনাৰ গুপ্তশব্দতো মনত আছে আৰু তাক সলাব নিবিছাৰে, তেনেহলে আপুনি এই বাৰ্তাতো অৱজ্ঞা কৰিব পাৰে আৰু আপোনাৰ আগৰ গুপ্তশব্দটোকে ব্যৱহাৰ কৰি থাকিব পাৰে।',
 'noemail' => '"$1" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।',
 'noemailcreate' => 'আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব',
-'passwordsent' => '"$1" à§° à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাত à¦¨à¦¤à§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\8fà¦\9fা à¦ªà¦ à§\8bৱা à¦¹à§\88à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¸à§\87য়া à¦ªà§\8bৱাৰ à¦ªà¦¾à¦\9bত à¦ªà§\81নৰ à¦ªà§\8dৰবেশ কৰক।',
-'blocked-mailpassword' => 'আপোনাৰ IP ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
+'passwordsent' => '"$1" à§° à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাত à¦¨à¦¤à§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\8fà¦\9fা à¦ªà¦ à§\8bৱা à¦¹à§\88à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¸à§\87য়া à¦ªà§\8bৱাৰ à¦ªà¦¾à¦\9bত à¦ªà§\81নৰ à¦ªà§\8dৰৱেশ কৰক।',
+'blocked-mailpassword' => 'আপোনাৰ আইপি ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
 'eauthentsent' => 'সঞ্চিত ই-মেইল ঠিকনাত নিশ্চিতকৰণ ই-মেইল এখন পঠোৱা হৈছে।
 আৰু অন্যান্য ই-মেইল পঠোৱাৰ আগতে, আপোনাৰ সদস্যতাৰ নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।',
 'throttled-mailpassword' => 'যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} গুপ্তশব্দ পুনৰুদ্ধাৰ স্মাৰক পঠিওৱা হৈছে ।
@@ -596,18 +600,18 @@ $2',
 'accountcreated' => "একাউণ্ট সৃষ্টি কৰা হ'ল",
 'accountcreatedtext' => "$1ৰ কাৰণে সদস্য একাউণ্ট সৃষ্টি কৰা হ'ল।",
 'createaccount-title' => '{{SITENAME}}ৰ কাৰণে একাউণ্ট সৃষ্টি কৰক।',
-'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4) ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক।
+'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4)ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক।
 
 যদি এইয়া ভুলতে হৈছে, তেনেহলে আপুনি এই বাৰ্তাটো অবজ্ঞা কৰিব পাৰে ।',
-'usernamehasherror' => 'সদসà§\8dযনামত à¦¹à§\87à¦\9aà§\8dâ\80\8c à¦\86à¦\96ৰ থাকিব নোৱাৰে',
+'usernamehasherror' => 'সদসà§\8dযনামত à¦¹à§\87à¦\9aà§\8dâ\80\8c à¦\9aিহà§\8dন থাকিব নোৱাৰে',
 'login-throttled' => 'আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে ।
 অনুগ্ৰহ কৰি কিছু সময় অপেক্ষা কৰি আকৌ প্ৰয়াস কৰক ।',
 'login-abort-generic' => 'আপোনাৰ প্ৰৱেশ অসফল হৈছে- বাতিল কৰা হ’ল',
 'loginlanguagelabel' => 'ভাষা: $1',
-'suspicious-userlogout' => 'à¦\86পà§\8bনাৰ à¦ªà§\8dৰসà§\8dথানৰ à¦\85নà§\81ৰà§\8bধ à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87 à¦\95াৰণ à¦¹à¦¯à¦¼à¦¤à§\8b à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰ à¦\85সমà§\8dপà§\82ৰà§\8dণ à¦¨à¦¤à§\81বা à¦ªà§\82বৰà§\8dবতী তথ্য পঠাইছে ।',
+'suspicious-userlogout' => 'à¦\86পà§\8bনাৰ à¦ªà§\8dৰসà§\8dথানৰ à¦\85নà§\81ৰà§\8bধ à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87 à¦\95াৰণ à¦¹à¦¯à¦¼à¦¤à§\8b à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰ à¦\85সমà§\8dপà§\82ৰà§\8dণ à¦¨à¦¤à§\81বা à¦ªà§\82ৰà§\8dবৱতী তথ্য পঠাইছে ।',
 
 # E-mail sending
-'php-mail-error-unknown' => 'পি.এইছ.পি মেইল() কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
+'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
 'user-mail-no-addy' => 'ই-মেইল ঠিকনা নোহোৱাকৈয়ে ই-মেইল পঠোৱাৰ চেষ্টা কৰা হৈছে ।',
 
 # Change password dialog
@@ -617,7 +621,7 @@ $2',
 'resetpass_header' => 'গুপ্তশব্দ সলনি কৰক',
 'oldpassword' => 'পুৰণি গুপ্তশব্দ:',
 'newpassword' => 'নতুন গুপ্তশব্দ:',
-'retypenew' => 'নতà§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\86à¦\95à§\8c à¦\9fাà¦\87প à¦\95ৰক',
+'retypenew' => 'নতà§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\86à¦\95à§\8c à¦²à¦¿à¦\96ক',
 'resetpass_submit' => 'গুপ্তশব্দ বহাওক আৰু প্ৰৱেশ কৰক',
 'resetpass_success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে, এতিয়া আপুনি প্ৰৱেশ কৰি আছে...',
 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
@@ -639,7 +643,7 @@ $2',
 'passwordreset-capture' => 'ফলাফল ই-মেইলখন চাওক ?',
 'passwordreset-capture-help' => "আপুনি এই ঘৰটো চিহ্নিত কৰিলে এই ই-মেইল (আৰু অস্থায়ী গুপ্তশব্দ) আপুনি দেখা পোৱাৰ লগতে সদস্যজনলৈও পঠোৱা হ'ব।",
 'passwordreset-email' => 'ই-মেইল ঠিকনা:',
-'passwordreset-emailtitle' => '{{SITENAME}} ত একাউণ্টৰ সবিশেষ তথ্য আছে ।',
+'passwordreset-emailtitle' => '{{SITENAME}}ত একাউণ্টৰ সবিশেষ তথ্য আছে ।',
 'passwordreset-emailtext-ip' => 'কোনোবাই (IP ঠিকনা $1 ৰ পৰা সম্ভৱত: আপুনিয়েই) {{SITENAME}} ($4) ৰ বাবে আপোনাৰ একাউণ্টৰ সবিশেষ তথ্য বিচাৰিছিল । ই-পত্ৰ ঠিকনাটোৰ লগত এই সদস্যৰ {{PLURAL:$3|একাউণ্ট|একাউণ্টবোৰ}} জড়িত হৈ আছে ।
 
 $2
@@ -660,7 +664,7 @@ $2
 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।',
-'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:',
 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:',
 'changeemail-none' => '(নাই)',
@@ -673,9 +677,9 @@ $2
 'italic_sample' => 'হেলনীয়া পাঠ্য',
 'italic_tip' => 'বেঁকা পাঠ্য',
 'link_sample' => 'শিৰোনামা সংযোগ',
-'link_tip' => 'ভিতৰà§\81ৱা সংযোগ',
+'link_tip' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ সংযোগ',
 'extlink_sample' => 'http://www.example.com শীৰ্ষক সংযোগ',
-'extlink_tip' => 'বহিà¦\83সংযোগ (http:// উপসৰ্গ মনত ৰাখিব)',
+'extlink_tip' => 'বাহà§\8dযিà¦\95 সংযোগ (http:// উপসৰ্গ মনত ৰাখিব)',
 'headline_sample' => 'শিৰোনামা পাঠ্য',
 'headline_tip' => 'দ্বিতীয় স্তৰৰ শিৰোনামা',
 'nowiki_sample' => 'নসজোৱা পাঠ্য ইয়াত অন্তৰ্ভুক্ত কৰক',
@@ -719,7 +723,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰিব, আৰু আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।
 আপোনাৰ এতিয়াৰ আই-পি ঠিকনা হল $3, আৰু আপোনাৰ অবৰোধ ক্ৰমিক হৈছে #$5 ।
 এই বিষয়ে হোৱা আলোচনাত ইয়াৰ সবিশেষ সদৰী কৰে যেন।",
-'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1 ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।
+'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।
 ইয়াৰ বাবে দিয়া কাৰণ হৈছে:
 
 :''$2''
@@ -728,11 +732,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 * অৱৰোধ সমাপ্তি: $6
 * অৱৰোধ কৰা হৈছে: $7
 
-à¦\86পà§\81নি à¦\8fà¦\87 à¦\85বৰà§\8bধৰ à¦¬à¦¿à¦·à¦¯à¦¼à§\87 à¦\86লà§\8bà¦\9aনা à¦\95ৰিবলà§\88 $1 à¦¬à¦¾ [[{{MediaWiki:Grouppage-sysop}}|পà§\8dৰবনà§\8dধক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।
+à¦\86পà§\81নি à¦\8fà¦\87 à¦\85বৰà§\8bধৰ à¦¬à¦¿à¦·à¦¯à¦¼à§\87 à¦\86লà§\8bà¦\9aনা à¦\95ৰিবলà§\88 $1 à¦¬à¦¾ [[{{MediaWiki:Grouppage-sysop}}|পà§\8dৰশাসক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।
 
 আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰে। আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।
-à¦\85পà§\8bনাৰ à¦\8fতিয়াৰ IP à¦ à¦¿à¦\95না à¦¹à§\88à¦\9bà§\87 $3, à¦\85ৰà§\81 à¦\86পà§\8bনাৰ à¦\85বৰোধ ক্ৰমিক হৈছে $5 ।
-এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হল।",
+à¦\86পà§\8bনাৰ à¦\8fতিয়াৰ à¦\86à¦\87 à¦ªà¦¿ à¦ à¦¿à¦\95না à¦¹à§\88à¦\9bà§\87 $3, à¦\86ৰà§\81 à¦\86পà§\8bনাৰ à¦\85ৱৰোধ ক্ৰমিক হৈছে $5 ।
+এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হল।",
 'blockednoreason' => 'কাৰণ দিয়া নাই',
 'whitelistedittext' => 'সম্পাদনা কৰিবলৈ $1 কৰক ।',
 'confirmedittext' => 'সম্পাদনা কৰাৰ আগতে আপুনি আপোনাৰ ই-মেইল ঠিকনাটো প্ৰমানিত কৰিব লাগিব।
@@ -743,8 +747,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'loginreqlink' => 'প্ৰৱেশ',
 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
 'accmailtitle' => "গুপ্তশব্দ পঠোৱা হ'ল।",
-'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2-লৈ পঠোৱা হ'ল । 
-এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|change password]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।",
+'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । 
+এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।",
 'newarticle' => '(নতুন)',
 'newarticletext' => "আপুনি বিচৰা প্ৰবন্ধটো বিচাৰি পোৱা নগ'ল।
 
@@ -773,7 +777,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 * '''Google Chrome:''' ''Ctrl-Shift-R'' টিপক (এপল মেকৰ বাবে ''⌘-Shift-R'' )
 * '''Internet Explorer:''' ''Ctrl'' ধৰি ৰাখি ''Refresh'' ক্লিক কৰক, অথবা ''Ctrl-F5'' টিপক
 * '''Konqueror: ''' ''Reload'' ক্লিক কৰক বা ''F5'' টিপক
-* '''Opera:''' ''Tools→Preferences'' ত গৈ Cache মচি পেলাওক",
+* '''Opera:''' ''Tools→Preferences'' ত গৈ কেচ্‌ মচি পেলাওক",
 'usercssyoucanpreview' => "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন CSS পৰীক্ষা কৰক ।",
 'userjsyoucanpreview' => "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন জাভালিপি পৰীক্ষা কৰক ।",
 'usercsspreview' => "'''মনত ৰাখিব আপুনি কেৱল আপোনাৰ ব্যৱহাৰকাৰী CSS  প্ৰাকদৰ্শন কৰিছে ।''' 
@@ -796,7 +800,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।",
 'session_fail_preview_html' => "'''দুঃখিত! চেচন ডাটা হেৰাই যোৱাৰ কাৰণে আপোনাৰ সম্পাদনা কৃতকাৰ্য্য নহ'ল ।'''
 
-''যিহেতু {{SITENAME}}-ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট (Javasccript) আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ খাতিৰত খচৰা আঁৰ কৰা হৈছে ।''
+''যিহেতু {{SITENAME}}ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ স্বাৰ্থত খচৰা আঁৰ কৰা হৈছে ।''
 
 '''এইয়া যদি এটা বৈধ সম্পাদনা আছিল, তেনে আকৌ চেষ্টা কৰক ।'''
 তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।",
@@ -806,8 +810,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'edit_form_incomplete' => "'''এই সম্পাদনাৰ কিছু অংশ চাৰ্ভাৰলৈ নগ’ল; আপোনাৰ সম্পাদনা ঠিকে আছেনে পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক ।'''",
 'editing' => '$1 সম্পাদনা',
 'creating' => '$1 পৃষ্ঠাখন আপুনি সৃষ্টি কৰি আছে',
-'editingsection' => '$1 (বিভাà¦\97) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦¥à¦\95া à¦¹à§\88ছে',
-'editingcomment' => '$1 (নতà§\81ন à¦¬à¦¿à¦­à¦¾à¦\97) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦¥à¦\95া à¦¹à§\88ছে',
+'editingsection' => '$1 (à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦\86ছে',
+'editingcomment' => '$1 (নতà§\81ন à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦\86ছে',
 'editconflict' => 'সম্পাদনা দ্বন্দ: $1',
 'explainconflict' => "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত আন কোনোবাই এই পৃষ্ঠাখন সলনি কৰিলে।
 পাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে।
@@ -851,8 +855,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'template-semiprotected' => '(অৰ্ধ-সুৰক্ষিত)',
 'hiddencategories' => 'এই পৃষ্ঠা {{PLURAL:$1|১-টা নিহিত শ্ৰেণীৰ|$1-টা নিহিত শ্ৰেণীৰ}} সদস্য:',
 'nocreatetitle' => 'পৃষ্ঠা সৃষ্টি সীমিত',
-'nocreatetext' => '{{SITENAME}} ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে।
-আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin| নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।',
+'nocreatetext' => '{{SITENAME}}ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে।
+আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin|নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।',
 'nocreate-loggedin' => 'নতুন পৃষ্ঠা সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
 'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
 'sectioneditnotsupported-text' => 'এই পৃষ্ঠাত অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
@@ -864,7 +868,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 এই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।
 এই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।",
 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে ।
-পà§\83ষà§\8dঠাà¦\9fিৰ à¦¬à¦¾à¦¤à¦¿à¦² à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦²'à¦\97 তলত দিয়া হ'ল ।",
+পà§\83ষà§\8dঠাà¦\9fিৰ à¦¬à¦¾à¦¤à¦¿à¦² à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦\85ভিলà§\87à¦\96 তলত দিয়া হ'ল ।",
 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক',
 'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
 ইয়াৰ কোনো ব্যাখ্যা নাই ।',
@@ -906,30 +910,30 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 
 # Account creation failure
 'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
-'cantcreateaccount-text' => "IP ঠিকনা ('''$1''') ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]] এ বাধা প্ৰদান কৰিছে ।
+'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
 
-$3 à¦\8f à¦\86à¦\97বঢ়à§\8bৱা à¦\87য়াৰ à¦\95াৰণ à¦¹â\80\99ল ''$2''",
+$3 à¦¯à¦¼à§\87 à¦\86à¦\97বঢ়à§\8bৱা à¦\87য়াৰ à¦\95াৰণ à¦¹à§\88à¦\9bà§\87 ''$2''",
 
 # History pages
 'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
 'nohistory' => 'এই পৃষ্ঠাৰ কোনো সম্পাদনাৰ ইতিহাস নাই।',
-'currentrev' => 'শà§\87হতà§\80য়া à¦­à¦¾à¦·à§\8dয',
+'currentrev' => 'শà§\87হতà§\80য়া à¦¸à¦\82সà§\8dà¦\95ৰণ',
 'currentrev-asof' => '$1 অনুযায়ী বৰ্তমান সংস্কৰণ',
-'revisionasof' => '$1 ৰ সংস্কৰণ',
-'revision-info' => '$1-লৈ $2-এ কৰা সংশোধন',
+'revisionasof' => '$1ৰ সংস্কৰণ',
+'revision-info' => '$1-লৈ $2 কৰা সংশোধন',
 'previousrevision' => '← আগৰ সংশোধন',
 'nextrevision' => 'সদ্যসংশোধিত',
 'currentrevisionlink' => 'শেহতীয়া ভাষ্য',
 'cur' => 'বৰ্তমান',
 'next' => 'পৰৱৰ্তী',
-'last' => 'পà§\82ৰà§\8dববৰ্তী',
+'last' => 'পà§\82ৰà§\8dবৱৰ্তী',
 'page_first' => 'প্ৰথম',
 'page_last' => 'অন্তিম',
 'histlegend' => "পাৰ্থক্য বাছনি: পাৰ্থক্য চাবলৈ সংকলনবোৰৰ সম্মুখত থকা ৰেডিঅ' বুটামবোৰ বাচনী কৰি এণ্টাৰ টিপক অথবা একেবাৰে তলত দিয়া বুটামতো ক্লিক কৰক <br />
 লিজেণ্ড: '''({{int:cur}})''' = বৰ্তমানৰ সংকলনৰ লগত পাৰ্থক্য,
 '''({{int:last}})''' = আগৰ সংকলনৰ লগত পাৰ্থক্য, '''{{int:minoreditletter}}'' = অগুৰুত্বপূৰ্ণ সম্পাদনা।",
 'history-fieldset-title' => 'ইতিহাসত অনুসন্ধান কৰক',
-'history-show-deleted' => 'মাথà§\8bà¦\81 à¦®à¦\9aি à¦ªà§\87লà§\8bৱা',
+'history-show-deleted' => 'মাথà§\8bà¦\81 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা',
 'histfirst' => 'আটাইতকৈ পুৰণি',
 'histlast' => 'শেহতীয়া',
 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
@@ -946,42 +950,42 @@ $3 এ আগবঢ়োৱা ইয়াৰ কাৰণ হ’ল ''$2''",
 # Revision deletion
 'rev-deleted-comment' => "(সম্পাদনা সাৰাংশ আঁতৰোৱা হ'ল)",
 'rev-deleted-user' => '(সদস্যনাম আঁতৰোৱা হ’ল)',
-'rev-deleted-event' => "(ল'à¦\97 à¦\95াৰà§\8dয্য আঁতৰোৱা হ'ল)",
+'rev-deleted-event' => "(à¦\85ভিলà§\87à¦\96 à¦\95াৰ্য আঁতৰোৱা হ'ল)",
 'rev-deleted-user-contribs' => "[সদস্যনাম বা আই-পি ঠিকনা আঁতৰোৱা হ'ল - সম্পাদনা বৰঙনিসমূহৰ পৰা আঁৰ কৰা হৈছে]",
 'rev-deleted-text-permission' => "পৃষ্ঠাৰ এই সংশোধনটি '''বিলোপ''' কৰা হ'ল ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦²'à¦\97ত]",
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]",
 'rev-deleted-text-unhide' => "পৃষ্ঠাখনৰ এই সংশোধনটো '''বিলোপ''' কৰা হৈছে | 
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97]ত
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
 'rev-suppressed-text-unhide' => "পৃষ্ঠাখনৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত]।
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত]।
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
 'rev-deleted-text-view' => "পৃষ্ঠাৰ এই সংশোধনটো '''বিলোপ''' কৰা হ'ল ।
-à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦²â\80\99à¦\97ত]।",
+à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]।",
 'rev-suppressed-text-view' => "পৃষ্ঠাৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হ’ল।
-à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত]।",
+à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত]।",
 'rev-deleted-no-diff' => "আপুনি এই পাৰ্থক্য চাব নোৱাৰে কাৰণ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²'à¦\97] à¦¤ ।",
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]।",
 'rev-suppressed-no-diff' => "আপুনি এই পাৰ্থক্য চাব নোৱাৰে কাৰণ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।",
 'rev-deleted-unhide-diff' => "এই পাৰ্থক্যৰ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।
-বিসà§\8dতাৰিত à¦\95াৰণ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97] à¦¤ পাব ।
+বিসà§\8dতাৰিত à¦\95াৰণ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত] পাব ।
 আপুনি মন কৰিলে [$1 এই পাৰ্থক্য চাওক] ।",
 'rev-suppressed-unhide-diff' => "এই পাৰ্থক্যৰ এটা সংশোধন '''নিবাৰণ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত] ।
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত] ।
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে] ।",
 'rev-deleted-diff-view' => "এই পাৰ্থক্যৰ এটা সংশোধন '''বিলোপ''' কৰা হ'ল ।
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97ত]",
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]",
 'rev-suppressed-diff-view' => "এই পাৰ্থক্যৰ এটা সংশোধন '''নিবাৰণ''' কৰা হ’ল ।
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত] ।",
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত] ।",
 'rev-delundel' => 'দেখুৱাওক/নেদেখুৱাব',
 'rev-showdeleted' => 'দেখুৱাওক',
-'revisiondelete' => 'সংকলন বিলোপন কৰক / পুণৰ্স্থাপিত কৰক',
+'revisiondelete' => 'সংকলন বিলোপ কৰক / পুণৰ স্থাপন কৰক',
 'revdelete-nooldid-title' => 'লক্ষ্য সংশোধন যুক্তিসংগত নহয়',
 'revdelete-nooldid-text' => 'কামটো কৰাৰ বাবে আপুনি লক্ষ্য সংশোধন নিৰ্বাচন কৰা নাই, নিৰ্বাচিত সংশোধন নাই, অথবা আপুনি বৰ্তমানৰ সংশোধন লুকুৱাব বিচাৰিছে ।',
-'revdelete-nologtype-title' => 'à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 প্ৰকাৰ দিয়া হোৱা নাই',
-'revdelete-nologtype-text' => 'à¦\8fà¦\87 à¦\95ামà¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86পà§\81নি à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 প্ৰকাৰ নিৰ্বাচন কৰা নাই ।',
-'revdelete-nologid-title' => 'à¦\85যà§\81à¦\95à§\8dতিসà¦\82à¦\97ত à¦²â\80\99à¦\97 ভৰ্তি',
-'revdelete-nologid-text' => 'à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 à¦­à§°à§\8dতি à¦¨à¦¿à§°à§\8dবাà¦\9aন à¦\95ৰা à¦¨à¦¾à¦\87 à¦\85থবা à¦¨à¦¿à§°à§\8dবাà¦\9aিত à¦²â\80\99à¦\97 ভৰ্তিটো নাই ।',
+'revdelete-nologtype-title' => 'à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96 প্ৰকাৰ দিয়া হোৱা নাই',
+'revdelete-nologtype-text' => 'à¦\8fà¦\87 à¦\95ামà¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86পà§\81নি à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96  প্ৰকাৰ নিৰ্বাচন কৰা নাই ।',
+'revdelete-nologid-title' => 'à¦\85যà§\81à¦\95à§\8dতিসà¦\82à¦\97ত à¦\85ভিলà§\87à¦\96 ভৰ্তি',
+'revdelete-nologid-text' => 'à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96 à¦­à§°à§\8dতি à¦¨à¦¿à§°à§\8dবাà¦\9aন à¦\95ৰা à¦¨à¦¾à¦\87 à¦\85থবা à¦¨à¦¿à§°à§\8dবাà¦\9aিত à¦\85ভিলà§\87à¦\96 ভৰ্তিটো নাই ।',
 'revdelete-no-file' => 'নিৰ্ধাৰিত ফাইলটি নাই ।',
 'revdelete-show-file-confirm' => 'আপুনি "<nowiki>$1</nowiki>"  ফাইলৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ পৰা $3 সময়ত চাব বিচাৰিছে নেকি?',
 'revdelete-show-file-submit' => 'হয়',
@@ -1077,7 +1081,7 @@ $1",
 
 # Diffs
 'history-title' => '"$1" ৰ সংশোধনৰ ইতিহাস',
-'difference-title' => '"$1"ৰ à¦¬à¦¿à¦­à¦¿à¦¨à§\8dন à¦¸à¦\82ধà§\8bধনৰ à¦®à¦¾à¦\9cৰ à¦ªà¦¾à§°à§\8dথà¦\95à§\8dযসমà§\82হ',
+'difference-title' => '"$1"ৰ à¦¬à¦¿à¦­à¦¿à¦¨à§\8dন à¦¸à¦\82শà§\8bধনসমà§\82হৰ à¦®à¦¾à¦\9cৰ à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয',
 'difference-title-multipage' => '"$1" আৰু "$2" পৃষ্ঠাৰ মাজৰ পাৰ্থক্যসমূহ',
 'difference-multipage' => '(পৃষ্ঠাসমূহৰ মাজত তফাৎ)',
 'lineno' => '$1 নং শাৰীঃ',
@@ -1176,7 +1180,7 @@ $1",
 'prefs-beta' => 'বিটা বৈশিষ্টসমূহ',
 'prefs-datetime' => 'তাৰিখ আৰু সময়',
 'prefs-labs' => 'পৰীক্ষাগাৰ বৈশিষ্টসমূহ',
-'prefs-user-pages' => 'সদস্য পৃষ্ঠা',
+'prefs-user-pages' => 'সদস্য পৃষ্ঠাসমূহ',
 'prefs-personal' => 'সদস্যৰ বিৱৰণ',
 'prefs-rc' => 'শেহতীয়া সাল-সলনি',
 'prefs-watchlist' => 'লক্ষ্য তালিকা',
@@ -1492,13 +1496,12 @@ $1",
 'upload_directory_missing' => 'আপলোড ডিৰেক্টৰি ($1)  বিচাৰি পোৱা নগ’ল আৰু ৱেবচাৰ্ভাৰৰ দ্বাৰা তৈয়াৰ কৰিব পৰা নগ’ল ।',
 'upload_directory_read_only' => 'আপল’ড ডিৰেক্টৰি ($1) ৱেবচাৰ্ভাৰৰ দ্বাৰা লিখনযোগ্য নহয় ।',
 'uploaderror' => 'আপল’ডত সমস্যা হৈছে',
-'upload-recreate-warning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦¨à¦¾à¦®à§° à¦\8fà¦\9fা à¦«à¦¾à¦\87ল à¦¬à¦¿à¦²à§\8bপ à¦¬à¦¾ à¦¸à§\8dথানানà§\8dতত কৰা হৈছে । '''
+'upload-recreate-warning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦¨à¦¾à¦®à§° à¦\8fà¦\9fা à¦«à¦¾à¦\87ল à¦¬à¦¿à¦²à§\8bপ à¦¬à¦¾ à¦¸à§\8dথানানà§\8dতৰ কৰা হৈছে । '''
 
 এই পৃষ্ঠাৰ অৱলুপ্তি ল’গ আৰু স্থানান্তৰ ল’গ আপোনাৰ সুবিধাৰ্থে তলত দিয়া হ’ল:",
-'uploadtext' => "ফাইল আপল’ড কৰাৰ বাবে তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক ।
-পূৰ্বে আপল’ড কৰা ফাইল চাবলৈ বা অনুসন্ধান কৰিবলৈ [[Special:FileList|আপল’ড কৰা ফাইলৰ তালিকা]] লৈ যাওক । (পুনঃ)আপল’ড কৰা ফাইলৰ নাম [[Special:Log/upload|আপল’ড ল’গ]] ত ভৰ্তি হয়, বিলোপ কৰা ফাইলৰ নাম [[Special:Log/delete|অৱলুপ্তি ল’গ]] ত পাব ।
+'uploadtext' => "ফাইল আপল’ড কৰাৰ বাবে তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক। পূৰ্বে আপল’ড কৰা ফাইল চাবলৈ বা অনুসন্ধান কৰিবলৈ [[Special:FileList|আপল’ড কৰা ফাইলৰ তালিকা]] লৈ যাওক । (পুনঃ) আপল’ড কৰা ফাইলৰ নাম [[Special:Log/upload|আপল’ড অভিলেখত]] ভৰ্তি হয়, বিলোপ কৰা ফাইলৰ নাম [[Special:Log/delete|অৱলুপ্তি অভিলেখত]] পাব ।
 
-à¦\95à§\8bনà§\8b à¦ªà§\83ষà§\8dঠাত à¦\9bবি à¦¯à§\8bà¦\97 à¦¦à¦¿à¦¬à¦²à§\88 তলৰ প্ৰপত্ৰসমূহত থকা সংযোগ ব্যৱহাৰ কৰক: 
+à¦\95à§\8bনà§\8b à¦ªà§\83ষà§\8dঠাত à¦\9aিতà§\8dৰ à¦¬à¦¾ à¦«à¦¾à¦\87ল à¦¸à¦¨à§\8dনিবিষà§\8dà¦\9f à¦\95ৰিবৰ à¦¬à¦¾à¦¬à§\87 তলৰ প্ৰপত্ৰসমূহত থকা সংযোগ ব্যৱহাৰ কৰক: 
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''',
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' অথবা
 * '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''",
@@ -1599,8 +1602,8 @@ $1",
 'upload-description' => 'ফাইলৰ বৰ্ণনা',
 'upload-options' => "আপল'ড বিকল্পসমূহ",
 'watchthisupload' => 'এই ফাইল লক্ষ্য কৰক',
-'filewasdeleted' => 'এই নামৰ এটা ফাইল পূৰ্বতে আপলড কৰি বিলোপ কৰা হৈছে ।
-ইয়াক পুনৰ আপলড কৰাৰ আগেয়ে আপুনি $1 পৰীক্ষা কৰা উচিত ।',
+'filewasdeleted' => 'এই নামৰ এটা ফাইল পূৰ্বতে আপলড কৰি বিলোপ কৰা হৈছে ।
+ইয়াক পুনৰ আপলড কৰাৰ আগেয়ে আপুনি $1 পৰীক্ষা কৰা উচিত ।',
 'filename-bad-prefix' => "আপুনি আপলোড কৰা ফাইলৰ নামটো '''\"\$1\"''' দি আৰম্ভ হৈছে, যিটো ডিজিটেল কেমেৰাই স্বয়ংক্ৰিয়ভাৱে দিয়ে আৰু সি ব্যাখ্যামূলক নহয় ।
 অনুগ্ৰহ কৰি আপোনাৰ ফাইলটোৰ বাবে এটা ব্যাখ্যামূলক নাম বাছি লওক ।",
 'upload-success-subj' => "আপলোড সফল হ'ল",
@@ -1609,7 +1612,7 @@ $1",
 'upload-failure-msg' => '[$2] ৰ পৰা আপুনি কৰা আপল’ডত এটা সমস্যাই দেখা দিছে:
 
 $1',
-'upload-warning-subj' => 'আপলড সতৰ্কীকৰণ',
+'upload-warning-subj' => 'আপলড সতৰ্কীকৰণ',
 'upload-warning-msg' => '[$2] ৰ পৰা আপুনি কৰা আপল’ডত এটা সমস্যাই দেখা দিছে । আপুনি ইয়াক সমাধান কৰিবৰ বাবে [[Special:Upload/stash/$1|আপল’ড প্ৰপত্ৰ]] লৈ ঘূৰি যাব পাৰে ।',
 
 'upload-proto-error' => 'ভুল প্ৰ’ট’ক’ল',
@@ -1650,7 +1653,7 @@ URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ
 'backend-fail-internal' => 'ষ্ট\'ৰেজ বেক্‌এণ্ড "$1"ত এক অজ্ঞাত ত্ৰুটী ঘটিছে।',
 'backend-fail-contenttype' => '"$1"ত সাঁচি থ\'বলৈ ফাইলটোৰ সমল প্ৰকাৰ স্থিৰ কৰিব পৰা নগ\'ল।',
 'backend-fail-batchsize' => "$1টা ফাইল {{PLURAL:$1|কাৰ্যৰ|কাৰ্যৰ}} ষ্ট'ৰেজ বেকএ'ণ্ড দিয়া হৈছে; সীমা হৈছে $2টা {{PLURAL:$2|কাৰ্য|কাৰ্য}}।",
-'backend-fail-usable' => "à¦\85পৰà§\8dযাপà§\8dত à¦\85নà§\81মতি à¦¬à¦¾ à¦¹à§\87ৰà§\8bৱা à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া/à¦\95নà§\8dâ\80\8cà¦\9fà§\87à¦\87নাৰৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
+'backend-fail-usable' => "à¦\85পৰà§\8dযাপà§\8dত à¦\85নà§\81মতি à¦¬à¦¾ à¦¹à§\87ৰà§\8bৱা à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া/সমলৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষৰ লগত সংযোগ স্থাপন নহ\'ল।',
@@ -1853,7 +1856,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'statistics-pages' => 'পৃষ্ঠাসমূহ',
 'statistics-pages-desc' => 'কথা-বতৰা পৃষ্ঠা, পুন:নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
-'statistics-files' => 'আপলড কৰা ফাইলসমূহ',
+'statistics-files' => 'আপলড কৰা ফাইলসমূহ',
 'statistics-edits' => '{{SITENAME}} স্থাপন কৰাৰেপৰা পৃষ্ঠা সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্ৰতি পৃষ্ঠাৰ গড় সম্পাদনা',
 'statistics-views-total' => 'সৰ্বমুঠ প্ৰদৰ্শন',
@@ -1865,7 +1868,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-mostpopular' => 'সৰ্বোচ্চ দৰ্শন কৰা পৃষ্ঠাসমূহ',
 
 'disambiguations' => 'দ্ব্যৰ্থতা-দূৰীকৰণ পৃষ্ঠাসমূহলৈ সংযোগ থকা পৃষ্ঠাসমূহ',
-'disambiguationspage' => 'Template:দ্ব্যৰ্থতা-দূৰীকৰণ',
+'disambiguationspage' => 'সাঁচ:দ্ব্যৰ্থতা-দূৰীকৰণ',
 'disambiguations-text' => "তলৰ পৃষ্ঠাখনসমূহত '''দ্ব্যৰ্থতা দূৰীকৰণ পৃষ্ঠা'''ৰ লগত সংযোগ আছে ।
 ইয়ে উপযুক্ত পৃষ্ঠাৰ লগত সংযোগ কৰিব পাৰে ।
 [[MediaWiki:Disambiguationspage]]ৰ পৰা সংযোগ থকা কোনো সাঁচ ব্যৱহাৰ কৰিলে এখন পৃষ্ঠাক দ্ব্যৰ্থতা দূৰীকৰণ পৃষ্ঠা হিছাপে গণ্য কৰা হ’ব ।",
@@ -1946,7 +1949,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'newpages-username' => 'সদস্যনাম:',
 'ancientpages' => 'আটাইতকৈ পুৰণি পৃষ্ঠাসমূহ',
 'move' => 'স্থানান্তৰ কৰক',
-'movethispage' => 'এই পৃষ্ঠাটো স্থানান্তৰিত কৰক',
+'movethispage' => 'এই পৃষ্ঠাটো স্থানান্তৰ কৰক',
 'unusedimagestext' => 'তলৰ ফাইলসমূহ আছে কিন্তু কোনো পৃষ্ঠাৰ অন্তৰ্গত নহয় ।
 অনুগ্ৰহ কৰি মন কৰিব যে প্ৰত্যক্ষ URL থকা কোনো পৃষ্ঠা আন ৱেবচাইটৰ লগত সংযোগ হৈ থাকিব পাৰে, সেয়ে সক্ৰিয়ভাৱে ব্যৱহাৰ হৈ থকা সত্ত্বেও ইয়াত তালিকাভুক্ত হ’ব পাৰে ।',
 'unusedcategoriestext' => 'তলৰ শ্ৰেণী পৃষ্ঠাসমূহৰ অস্তিত্ব আছে, কিন্তু আন কোনো পৃষ্ঠা বা শ্ৰেণীৰদ্বাৰা ব্যৱহৃত নহয় ।',
@@ -1975,6 +1978,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 আপুনি ল’গৰ প্ৰকাৰ, সদস্যৰ নাম বা পৃষ্ঠাখনৰ নাম নিৰ্বাচন কৰি প্ৰদৰ্শনটোৰ আকাৰ সৰু কৰিব পাৰে ।',
 'logempty' => 'কোনো মিল থকা আইটেম লগত নাই ।',
 'log-title-wildcard' => 'এই পাঠেৰে আৰম্ভ হোৱা শিৰোনামাসমূহ অনুসন্ধান কৰক',
+'showhideselectedlogentries' => "নিৰ্বাচিত ল'গ ভুক্তি দেখুৱাওক/লুকুৱাওক",
 
 # Special:AllPages
 'allpages' => 'সকলোবোৰ পৃষ্ঠা',
@@ -1991,7 +1995,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'allpagessubmit' => 'যাওক',
 'allpagesprefix' => 'এই উপশব্দৰে আৰম্ভ হোৱা পৃষ্ঠা দেখুৱাওক:',
 'allpagesbadtitle' => 'আপুনি দিয়া পৃষ্ঠাটোৰ শিৰোণামা অবৈধ বা তাত এটা আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি উপসৰ্গ আছে । ইয়াত এক বা ততোধিক বৰ্ণ থাকিব পাৰে যাক শিৰোণামাত ব্যৱহাৰ কৰিব নোৱাৰি ।',
-'allpages-bad-ns' => '{{SITENAME}} ত কোনো "$1" নামস্থান নাই ।',
+'allpages-bad-ns' => '{{SITENAME}}ত কোনো "$1" নামস্থান নাই ।',
 'allpages-hide-redirects' => 'পুনঃনিৰ্দেশ লুকুৱাওক',
 
 # SpecialCachedPage
@@ -2014,7 +2018,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'sp-deletedcontributions-contribs' => 'বৰঙণিসমূহ',
 
 # Special:LinkSearch
-'linksearch' => 'বহিà¦\83সংযোগ অনুসন্ধান',
+'linksearch' => 'বাহà§\8dযিà¦\95 সংযোগ অনুসন্ধান',
 'linksearch-pat' => 'অনুসন্ধান আৰ্হি:',
 'linksearch-ns' => 'নামস্থান:',
 'linksearch-ok' => 'অনুসন্ধান',
@@ -2027,7 +2031,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 # Special:ListUsers
 'listusersfrom' => 'ইয়াৰে আৰম্ভ হোৱা ব্যৱহাৰকাৰী সকল দেখুৱাওক:',
 'listusers-submit' => 'দেখুৱাওক',
-'listusers-noresult' => 'ব্যৱহাৰকাৰী বিচাৰি পোৱা নগল',
+'listusers-noresult' => 'ব্যৱহাৰকাৰী বিচাৰি পোৱা নগল',
 'listusers-blocked' => '(বাৰণ কৰা)',
 
 # Special:ActiveUsers
@@ -2101,7 +2105,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'watchlist' => 'মোৰ লক্ষ্য-তালিকা',
 'mywatchlist' => 'মোৰ লক্ষ্য-তালিকা',
 'watchlistfor2' => '$1 ৰ কাৰণে($2)',
-'nowatchlist' => 'à¦\86পà§\8bনাৰ à¦¨à¦¿à§°à§\80à¦\95à§\8dষণ à¦¤à¦¾à¦²à¦¿à¦\95াত à¦\95à§\8bনà§\8b à¦\86à¦\87à¦\9fà§\87ম নাই ।',
+'nowatchlist' => 'à¦\86পà§\8bনাৰ à¦¨à¦¿à§°à§\80à¦\95à§\8dষণ à¦¤à¦¾à¦²à¦¿à¦\95াত à¦\8fà¦\95à§\8b নাই ।',
 'watchlistanontext' => 'আপোনাৰ লক্ষ্য তালিকাত থকা বস্তুবোৰ চাবলৈ বা সম্পাদনা কৰিবলৈ অনুগ্ৰহ কৰি $1 কৰক।',
 'watchnologin' => 'প্ৰৱেশ কৰা নাই',
 'watchnologintext' => 'নিৰীক্ষণ তালিকা পৰিৱৰ্তন কৰিবলৈ আপুনি আগতে [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
@@ -2159,7 +2163,7 @@ $NEWPAGE
 আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব ।
 আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
 
-আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
+আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
 
 --
 আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ এইখন চাওক
@@ -2324,14 +2328,14 @@ $UNWATCHURL
 'undeleteviewlink' => 'দেখুৱাওক',
 'undeletereset' => 'পূৰ্বৰ অৱস্থালৈ লৈ যাওক',
 'undeleteinvert' => 'নিৰ্বাচন ওলোটা কৰক',
-'undeletecomment' => ' কাৰণ:',
+'undeletecomment' => 'কাৰণ:',
 'undeletedrevisions' => '{{PLURAL:$1|১টা সংশোধন|$1টা সংশোধন}} পুনৰুদ্ধাৰ কৰা হৈছে',
-'undeletedrevisions-files' => '{{PLURAL:$1|১টা সংশোধন|$1 টা সংশোধন}} আৰু {{PLURAL:$2|১টা ফাইল|$2 টা ফাইল}} পুনৰুদ্ধাৰ কৰা হ’ল',
-'undeletedfiles' => '{{PLURAL:$1|১à¦\9fা à¦«à¦¾à¦\87ল|$1 à¦\9fা à¦«à¦¾à¦\87ল}} পুনৰুদ্ধাৰ কৰা হ’ল',
+'undeletedrevisions-files' => '{{PLURAL:$1|১টা সংশোধন|$1 টা সংশোধন}} আৰু {{PLURAL:$2|১ খন নথি|$2 খন নথি}} পুনৰুদ্ধাৰ কৰা হ’ল',
+'undeletedfiles' => '{{PLURAL:$1|১à¦\96ন à¦¨à¦¥à¦¿|$1 à¦\96ন à¦¨à¦¥à¦¿}} পুনৰুদ্ধাৰ কৰা হ’ল',
 'cannotundelete' => 'অৱলুপ্তি বিফল হৈছে;
 আন কোনোবাই আগতেই ইয়াক বিলোপ কৰিছে ।',
 'undeletedpage' => "'''$1ক পুনৰুদ্ধাৰ কৰা হৈছে'''
-à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¶à§\87হতà§\80য়া à¦\85ৱলà§\81পà§\8dতি à¦\86ৰà§\81 à¦ªà§\81নৰà§\81দà§\8dধাৰৰ à¦¬à¦¾à¦¬à§\87 [[Special:Log/delete|à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97]] চাওক ।",
+à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¶à§\87হতà§\80য়া à¦\85ৱলà§\81পà§\8dতি à¦\86ৰà§\81 à¦ªà§\81নৰà§\81দà§\8dধাৰৰ à¦¬à¦¾à¦¬à§\87 [[Special:Log/delete|à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96]] চাওক ।",
 'undelete-header' => 'শেহতীয়াকৈ বিলোপ কৰা পৃষ্ঠাসমূহৰ বাবে [[Special:Log/delete|অৱলুপ্তি ল’গ]] চাওক ।',
 'undelete-search-title' => 'বিলোপ কৰা পৃষ্ঠা অনুসন্ধান কৰক',
 'undelete-search-box' => 'বিলোপ কৰা পৃষ্ঠা অনুসন্ধান কৰক',
@@ -2339,8 +2343,8 @@ $UNWATCHURL
 'undelete-search-submit' => 'সন্ধান',
 'undelete-no-results' => 'অৱলুপ্তি আৰ্কাইভত কোনো মিল থকা পৃষ্ঠা পোৱা নগ’ল ।',
 'undelete-filename-mismatch' => '$1 সময়-মোহৰ থকা ফাইল সংশোধনটো বিলোপ কৰিব পৰা নাযাব: ফাইলৰ নাম মিলা নাই',
-'undelete-bad-store-key' => '$1 à¦¸à¦®à¦¯à¦¼à¦\9aিহà§\8dনৰ à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦«à¦¾à¦\87ল à¦¸à¦\82শà§\8bধনà§\80 à¦\98à§\82ৰাà¦\87 à¦\86নিব à¦¨à§\8bৱাৰি: à¦¬à¦¿à¦²à§\8bপ à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87à¦\87 à¦«à¦¾à¦\87লà¦\9fà§\8b নাছিল ।',
-'undelete-cleanup-error' => 'à¦\85বà§\8dযৱহà§\83ত à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦«à¦¾à¦\87ল "$1" বিলোপ কৰাত সমস্যা হৈছে ।',
+'undelete-bad-store-key' => '$1 à¦¸à¦®à¦¯à¦¼à¦\9aিহà§\8dনৰ à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦¨à¦¥à¦¿ à¦¸à¦\82শà§\8bধনà§\80 à¦\98à§\82ৰাà¦\87 à¦\86নিব à¦¨à§\8bৱাৰি: à¦¬à¦¿à¦²à§\8bপ à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87à¦\87 à¦¨à¦¥à¦¿à¦\96ন নাছিল ।',
+'undelete-cleanup-error' => 'à¦\85বà§\8dযৱহà§\83ত à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¨à¦¥à¦¿ "$1" বিলোপ কৰাত সমস্যা হৈছে ।',
 'undelete-missing-filearchive' => 'ফাইল আৰ্কাইভ ID $1 পুনৰুদ্ধাৰ কৰিব পৰা নগ’ল কাৰণ এইটো তথ্যভঁৰালত নাই ।
 এইটো সম্ভৱত: আগতেই পুনৰুদ্ধাৰ কৰা হৈছে ।',
 'undelete-error' => 'পৃষ্ঠা অবিলোপনত ত্ৰুটি হৈছে',
@@ -2348,7 +2352,7 @@ $UNWATCHURL
 'undelete-error-long' => 'ফাইলটোৰ অৱলুপ্তি বাতিল কৰাত কিছু ত্ৰুটি হৈছে:
 
 $1',
-'undelete-show-file-confirm' => 'à¦\86পà§\81নি "<nowiki>$1</nowiki>"  à¦«à¦¾à¦\87লৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ $3 সময়ত চাব বিচাৰিছে নেকি ?',
+'undelete-show-file-confirm' => 'à¦\86পà§\81নি "<nowiki>$1</nowiki>"  à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ $3 সময়ত চাব বিচাৰিছে নেকি ?',
 'undelete-show-file-submit' => 'হয়',
 
 # Namespace form on various pages
@@ -2361,9 +2365,9 @@ $1',
 
 # Contributions
 'contributions' => 'সদস্যৰ বৰঙণিসমূহ',
-'contributions-title' => '$1-ৰ বৰঙণিসমূহ',
+'contributions-title' => '$1ৰ বৰঙণিসমূহ',
 'mycontris' => 'মোৰ বৰঙণিসমূহ',
-'contribsub2' => '$1 ৰ কাৰণে($2)',
+'contribsub2' => '$1 ৰ কাৰণে ($2)',
 'nocontribs' => 'এই গুণসমূহৰ লগত মিল থকা কোনো সালসলনি পোৱা নগ’ল ।',
 'uctop' => '(ওপৰত)',
 'month' => 'এই মাহৰ পৰা (আৰু আগৰ):',
@@ -2379,9 +2383,9 @@ $1',
 'sp-contributions-talk' => 'আলোচনা',
 'sp-contributions-userrights' => 'সদস্যৰ অধিকাৰ ব্যৱস্থাপনা',
 'sp-contributions-blocked-notice' => 'এই সদস্যজনক সদ্যহতে বাৰণ কৰা হৈছে ।
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦²â\80\99à¦\97 ভৰ্তি তলত দিয়া হ’ল:',
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦\85ভিলà§\87à¦\96 ভৰ্তি তলত দিয়া হ’ল:',
 'sp-contributions-blocked-notice-anon' => 'এই আই.পি. ঠিকনা সদ্যহতে বাৰণ কৰা হৈছে ।
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦²â\80\99à¦\97 ভৰ্তি তলত দিয়া হ’ল:',
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦\85ভিলà§\87à¦\96 ভৰ্তি তলত দিয়া হ’ল:',
 'sp-contributions-search' => 'বৰঙণিসমূহৰ কাৰণে অনুসন্ধান কৰক',
 'sp-contributions-username' => 'আই.পি. ঠিকনা অথবা ব্যৱহাৰকৰ্তাৰ নাম:',
 'sp-contributions-toponly' => 'কেৱল সাম্প্ৰতিক সংস্কৰণৰ অন্তৰ্গত সম্পাদনাসমূহ দেখুৱাওক',
@@ -2389,19 +2393,19 @@ $1',
 
 # What links here
 'whatlinkshere' => 'এই পৃষ্ঠা ব্যৱহাৰ কৰিছে...',
-'whatlinkshere-title' => '"$1"-লৈ সংযোগ কৰা পৃষ্ঠাসমূহ',
+'whatlinkshere-title' => '"$1"লৈ সংযোজিত পৃষ্ঠাসমূহ',
 'whatlinkshere-page' => 'পৃষ্ঠা:',
 'linkshere' => "এই পৃষ্ঠাটো '''[[:$1]]''' ৰ লগত সংযোজিত:",
 'nolinkshere' => "'''[[:$1]]''' ৰ লগত কোনো পৃষ্ঠা সংযোজিত নহয়।",
-'nolinkshere-ns' => 'নিৰ্বাচিত নামস্থানৰ কোনো পৃষ্ঠাৰ পৰা [[:$1]]-লৈ সংযোগ নাই ।',
+'nolinkshere-ns' => 'নিৰ্বাচিত নামস্থানৰ কোনো পৃষ্ঠাৰ পৰা [[:$1]]লৈ সংযোগ নাই ।',
 'isredirect' => 'পুনঃনিৰ্দেশনা পৃষ্ঠা',
 'istemplate' => 'অন্তৰ্ভুক্ত কৰক',
-'isimage' => 'ফাà¦\87ল সংযোগ',
+'isimage' => 'নথিৰ সংযোগ',
 'whatlinkshere-prev' => '{{PLURAL:$1|পিছৰ|পিছৰ $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' => 'ছেকনী',
@@ -2429,12 +2433,12 @@ $1',
 ** একাধিক একাউণ্টৰ অপব্যৱহাৰ
 ** অগ্ৰহণযোগ্য সদস্যনাম',
 'ipb-hardblock' => 'এই আই.পি. ঠিকনাৰ পৰা প্ৰৱেশ কৰা সদস্যসকলক সম্পাদনা কৰাৰ পৰা ৰোধ কৰক',
-'ipbcreateaccount' => 'একাউণ্ট সৃষ্টি ৰোধ কৰক',
+'ipbcreateaccount' => 'à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦¸à§\83ষà§\8dà¦\9fি à¦\85বৰà§\8bধ à¦\95ৰà¦\95',
 'ipbemailban' => 'ই-মেইল পঠোৱাৰ পৰা সদস্যক বাৰণ কৰক',
 'ipbenableautoblock' => 'এই সদস্যজনে শেহতীয়াকৈ ব্যৱহাৰ কৰা আৰু ভৱিষ্যতে সম্পাদনাৰ বাবে ব্যৱহাৰ কৰা আই.পি. ঠিকনা স্বয়ংক্ৰিয়ভাৱে বাৰণ কৰক',
 'ipbsubmit' => 'এই সদস্যক বাৰণ কৰক',
 'ipbother' => 'অন্য সময়:',
-'ipboptions' => '২ à¦\98ণà§\8dà¦\9fা:2 hours,১ à¦¦à¦¿à¦¨:1 day,৩ à¦¦à¦¿à¦¨:3 days,১ à¦¸à¦ªà§\8dতাহ:1 week,২ à¦¸à¦ªà§\8dতাহ:2 weeks,১ à¦®à¦¾à¦¹:1 month,৩ à¦®à¦¾à¦¹:3 months,৬ à¦®à¦¾à¦¹:6 months,১ à¦¬à¦\9bৰ:1 year,à¦\85নিৰà§\8dদিস্ট কাল:infinite',
+'ipboptions' => '২ à¦\98ণà§\8dà¦\9fা:2 hours,১ à¦¦à¦¿à¦¨:1 day,৩ à¦¦à¦¿à¦¨:3 days,১ à¦¸à¦ªà§\8dতাহ:1 week,২ à¦¸à¦ªà§\8dতাহ:2 weeks,১ à¦®à¦¾à¦¹:1 month,৩ à¦®à¦¾à¦¹:3 months,৬ à¦®à¦¾à¦¹:6 months,১ à¦¬à¦\9bৰ:1 year,à¦\85নিৰà§\8dদিষ্ট কাল:infinite',
 'ipbotheroption' => 'অন্যান্য',
 'ipbotherreason' => 'অন্য/অতিৰিক্ত কাৰণ:',
 'ipbhidename' => 'সম্পাদনা আৰু তালিকা সমূহৰ পৰা সদস্যনাম আঁৰ দিয়ক',
@@ -2449,14 +2453,14 @@ $1',
 'ipb-blockingself' => 'আপুনি নিজকে বাধাপ্ৰদান কৰিব বিচাৰিছে ! আপুনি নিশ্চিতনে আপুনি এনে কৰিব ?',
 'ipb-confirmhideuser' => 'আপুনি "সদস্য গোপন কৰক" বৈশিষ্ট সক্ৰিয় থকা এজন সদস্যক বাৰণ কৰিবলৈ ওলাইছে । এই কাৰ্যই সকলো তালিকা আৰু ল\'গ ভৰ্তিৰ পৰা তেওঁৰ নাম আঁতৰাই পেলাব । এই কাম কৰিব বুলি আপুনি নিশ্চিতনে ?',
 'ipb-edit-dropdown' => 'প্ৰতিবন্ধকৰ কাৰণসমূহ সম্পাদনা কৰক',
-'ipb-unblock-addr' => '$1-পৰা বাৰণ উঠাই লওক',
+'ipb-unblock-addr' => '$1ৰ পৰা বাৰণ উঠাই লওক',
 'ipb-unblock' => 'সদস্যনাম বা আই.পি. ঠিকনাৰ ওপৰত থকা প্ৰতিবন্ধক আঁতৰ কৰক',
 'ipb-blocklist' => 'বৰ্তমানৰ প্ৰতিবন্ধক চাওক',
-'ipb-blocklist-contribs' => '$1-ৰ বৰঙণিসমূহ',
+'ipb-blocklist-contribs' => '$1ৰ বৰঙণিসমূহ',
 'unblockip' => 'সদস্যৰ প্ৰতিবন্ধক উঠাই লওক',
 'unblockiptext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি পূৰ্বে প্ৰতিবন্ধক থকা কোনো আই.পি. ঠিকনা বা সদস্যৰ লিখাৰ অধিকাৰ পুনঃপ্ৰতিষ্ঠা কৰক ।',
 'ipusubmit' => 'এই বাৰণ উঠাই লওক',
-'unblocked' => '[[User:$1|$1]] ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
+'unblocked' => '[[User:$1|$1]]ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
 'unblocked-range' => '$1ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
 'unblocked-id' => '$1 প্ৰতিবন্ধকটো আঁতৰ কৰা হৈছে',
 'blocklist' => 'বাৰণ কৰা সদস্য',
@@ -2493,12 +2497,12 @@ $1',
 $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'blocklogpage' => 'বাৰণ সূচী',
 'blocklog-showlog' => 'এই সদস্যজনক পূৰ্বতে অৱৰোধ কৰা হৈছিল ।
-তথà§\8dযসà§\82তà§\8dৰ à¦¹à¦¿à¦\9bাপà§\87 à¦¤à¦²à¦¤ à¦\85ৱৰà§\8bধ à¦²â\80\99à¦\97 দিয়া হ’ল:',
+পà§\8dৰমাণ à¦¸à§\8dবৰà§\82পà§\87 à¦¤à¦²à¦¤ à¦\85ৱৰà§\8bধৰ à¦\85ভিলà§\87à¦\96 দিয়া হ’ল:',
 'blocklog-showsuppresslog' => 'এই সদস্যজনক পূৰ্বতে অৱৰোধ আৰু গোপন কৰা হৈছিল ।
-তথà§\8dযসà§\82তà§\8dৰ à¦¹à¦¿à¦\9bাপà§\87 à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97 তলত দিয়া হ’ল ।',
+পà§\8dৰà§\8dমাণ à¦¸à§\8dবৰà§\82পà§\87 à¦¨à¦¿à¦¬à¦¾à§°à¦£à§° à¦\85ভিলà§\87à¦\96 তলত দিয়া হ’ল ।',
 'blocklogentry' => '"[[$1]]" ক $2 $3 লৈ সাল-সলনি কৰাৰ পৰা বাৰণ কৰা হৈছে।',
 'reblock-logentry' => '[[$1]]ৰ প্ৰতিবন্ধক ছেটিং ম্যাদ উকলা সময় $2 $3ৰ সৈতে সলনি কৰা হ’ল ।',
-'blocklogtext' => 'à¦\8fà¦\87 à¦²â\80\99à¦\97à¦\96ন অৱৰোধ কৰা আৰু অৱৰোধ আঁতৰ কৰা সদস্য সম্পৰ্কীয়।
+'blocklogtext' => 'à¦\8fà¦\87 à¦\85ভিলà§\87à¦\96 অৱৰোধ কৰা আৰু অৱৰোধ আঁতৰ কৰা সদস্য সম্পৰ্কীয়।
 স্বয়ংক্ৰিয়ভাৱে প্ৰতিবন্ধক পোৱা আই.পি. ঠিকনাবোৰ ইয়াত তালিকাভুক্ত কৰা হোৱা নাই।
 সাম্প্ৰতিক কাৰ্যৰত নিষেধ আৰু প্ৰতিবন্ধকৰ বাবে [[Special:BlockList|প্ৰতিবন্ধক তালিকা]] চাওক।',
 'unblocklogentry' => '$1 বাৰণ উঠাই লোৱা হ’ল',
@@ -2511,7 +2515,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'block-log-flags-hiddenname' => 'সদস্যনাম গোপন কৰা হ’ল',
 'range_block_disabled' => 'প্ৰশাসকৰ পৰিসীমা প্ৰতিবন্ধক সৃষ্টি কৰিব পৰা ক্ষমতা নিষ্ক্ৰিয় কৰা হৈছে ।',
 'ipb_expiry_invalid' => 'অবৈধ ম্যাদ উকলা সময়',
-'ipb_expiry_temp' => 'গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হ;ব লাগিব ।',
+'ipb_expiry_temp' => 'গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হব লাগিব ।',
 'ipb_hide_invalid' => 'এই বিষয়বস্তু নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত বহুতো সম্পাদনা আছে ।',
 'ipb_already_blocked' => '"$1"ক ইতিমধ্যে অৱৰোধ কৰা হৈছে',
 'ipb-needreblock' => '$1ক ইতিমধ্যে অৱৰোধ কৰা হৈছে । আপুনি ছেটিং সলাব বিচাৰিছে নেকি ?',
@@ -2528,8 +2532,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'proxyblockreason' => 'আপোনাৰ আই.পি. ঠিকনা অৱৰোধ কৰা হৈছে কাৰণ এইটো এটা মুক্ত প্ৰক্সী ।
 অনুগ্ৰহ কৰি আপোনাৰ ইণ্টাৰনেট সেৱা প্ৰদানকাৰী বা কাৰিকৰী সহায়কৰ্তাৰ লগত যোগাযোগ কৰক আৰু এই গুৰুতৰ সুৰক্ষা সমস্যাৰ বিষয়ে জনাওক ।',
 'proxyblocksuccess' => 'সম্পন্ন কৰা হ’ল ।',
-'sorbsreason' => '{{SITENAME}}à¦\8f ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
-'sorbs_create_account_reason' => '{{SITENAME}}à¦\8f ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
+'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
+'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
 আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
 'cant-block-while-blocked' => 'নিজেই অৱৰোধিত হৈ থকা অৱস্থাত আপুনি আন সদস্যক অৱৰোধ কৰিব নোৱাৰে ।',
 'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
@@ -2572,8 +2576,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 ইয়াৰ অৰ্থ এয়ে যে ভুল হলে পৃষ্ঠাখন আগৰ ঠাইতে থাকিব, আৰু আপুনি প্ৰচলিত পৃষ্ঠা এখনক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-জনপ্ৰিয় পৃষ্ঠা এখনৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হব পাৰে;
-এই কাৰ্য্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
+জনপ্ৰিয় পৃষ্ঠা এখনৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হব পাৰে;
+এই কাৰ্য পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetext-noredirectfixer' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনামা সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামালৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামাটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
 [[Special:DoubleRedirects|দ্বি পুনৰ্নিৰ্দেশনাসমূহ]] বা [[Special:BrokenRedirects|ভঙা পুনৰ্নিৰ্দেশনসমূহ]] পৰীক্ষা কৰিবলৈ নাপাহৰিব।
@@ -2593,32 +2597,32 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'movearticle' => 'পৃষ্ঠা স্থানান্তৰ কৰক:',
 'moveuserpage-warning' => "'''সতৰ্কবাণী:''' আপুনি এখন সদস্যপৃষ্ঠা স্থানান্তৰ কৰিবলৈ বিছাৰিছে । অনুগ্ৰহ কৰি মন কৰক যে কেৱল সদস্যপৃষ্ঠাখনহে স্থানান্তৰ হ’ব আৰু সদস্যজনৰ পুনঃনামাকৰণ নহ’ব ।",
 'movenologin' => 'প্ৰৱেশ কৰা নাই',
-'movenologintext' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনি ভুক্ত সদস্য হৈ [[Special:UserLogin|পৱেশ]] কৰিব লাগিব ।',
+'movenologintext' => 'পà§\83ষà§\8dঠা à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦­à§\81à¦\95à§\8dত à¦¸à¦¦à¦¸à§\8dয à¦¹à§\88 [[Special:UserLogin|পà§\8dৰৱà§\87শ]] à¦\95ৰিব à¦²à¦¾à¦\97িব à¥¤',
 'movenotallowed' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
-'movenotallowedfile' => 'ফাà¦\87ল স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
+'movenotallowedfile' => 'নথিà¦\96ন স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
 'cant-move-user-page' => 'সদস্য পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনাৰ অনুমতি নাই (উপ-পৃষ্ঠাৰ বাহিৰে)।',
 'cant-move-to-user-page' => 'সদস্যপৃষ্ঠালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰাৰ অনুমতি আপোনাৰ নাই (কেৱল সদস্য উপপৃষ্ঠাৰ বাহিৰে ) ।',
 'newtitle' => 'নতুন শিৰোনামালৈ:',
 'move-watch' => 'এই পৃষ্ঠাখন লক্ষ্য কৰক',
 'movepagebtn' => 'পৃষ্ঠাখন স্থানান্তৰ কৰক',
-'pagemovedsub' => 'স্থানান্তৰ সফল হল',
-'movepage-moved' => "'''“$1” ক “$2” লৈ স্থানান্তৰ কৰা হৈছে'''",
+'pagemovedsub' => 'স্থানান্তৰ সফল হল',
+'movepage-moved' => "'''“$1”ক “$2”লৈ স্থানান্তৰ কৰা হৈছে'''",
 'movepage-moved-redirect' => 'এটি পুনৰ্নিদেশনা সৃষ্টি কৰা হৈছে',
 'movepage-moved-noredirect' => 'পুনৰ্নিৰ্দেশনা সৃষ্টি কৰা নিবাৰণ কৰা হৈছে ।',
 'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
 বেলেগ নাম এটা বাছি লওক।',
 'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত ।',
-'talkexists' => "'''পà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\87য়াৰ à¦²à¦\97ত à¦\9cড়িত বাৰ্তা পৃষ্ঠাখন স্থানান্তৰ কৰা নহ'ল, কাৰণ নতুন ঠাইত বাৰ্তা পৃষ্ঠা এখন আগৰ পৰাই আছে।
+'talkexists' => "'''পà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\87য়াৰ à¦²à¦\97ত à¦\9cৰিত বাৰ্তা পৃষ্ঠাখন স্থানান্তৰ কৰা নহ'ল, কাৰণ নতুন ঠাইত বাৰ্তা পৃষ্ঠা এখন আগৰ পৰাই আছে।
 অনুগ্ৰহ কৰি আপুনি নিজৰ হাতেৰে স্থানান্তৰ কৰক ।'''",
-'movedto' => 'লৈ স্থানান্তৰ কৰা হল',
+'movedto' => 'লৈ স্থানান্তৰ কৰা হল',
 'movetalk' => 'সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক',
-'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
+'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
 'movepage-page-exists' => '$1 পৃষ্ঠাখন ইতিমধ্যেই আছে আৰু তাৰ ওপৰত স্বয়ংক্ৰিয়ভাৱে লিখিব নোৱাৰি ।',
-'movepage-page-moved' => "$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা হ'ল ।",
-'movepage-page-unmoved' => '$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
+'movepage-page-moved' => "$1 পৃষ্ঠাখন $2লৈ স্থানান্তৰ কৰা হ'ল।",
+'movepage-page-unmoved' => '$1 পৃষ্ঠাখন $2লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
 'movepage-max-pages' => 'সৰ্বোচ্চ $1 {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} স্থানান্তৰ কৰা হৈছে আৰু ইয়াতকৈ অধিক স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ নহ’ব ।',
-'movelogpage' => 'সà§\8dথানানà§\8dতৰন à¦¸à§\82à¦\9aà§\80',
+'movelogpage' => 'সà§\8dথানানà§\8dতৰন à¦\85ভিলà§\87à¦\96',
 'movelogpagetext' => 'সকলো পৃষ্ঠা স্থানান্তৰৰ এখন তালিকা তলত দিয়া হৈছে ।',
 'movesubpage' => '{{PLURAL:$1|খন উপপৃষ্ঠা|খন উপপৃষ্ঠা}}',
 'movesubpagetext' => 'এই পৃষ্ঠাখনৰ তলত দিয়া {{PLURAL:$1|খন উপপৃষ্ঠা|খন উপপৃষ্ঠা}} আছে ।',
@@ -2645,9 +2649,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'fix-double-redirects' => 'প্ৰাথমিক প্ৰৱন্ধলৈ আঙুলিয়াই দিয়া যিকোনো পুনৰ্নিৰ্দেশ নবীকৰণ কৰক',
 'move-leave-redirect' => 'এটা পুনঃনিৰ্দেশনা এৰি যাওক',
 'protectedpagemovewarning' => "'''সতৰ্কবাণী: এই পৃষ্ঠা সুৰক্ষিত কৰা হৈছে; কেৱল প্ৰশাসকৰৰ মৰ্যদাৰ সদস্যইহে ইয়াক স্থানান্তৰ কৰিব পাৰিব ।'''
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦²'à¦\97 সংৰক্ষণ তলত দিয়া হ’ল:",
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦\85ভিলà§\87à¦\96 সংৰক্ষণ তলত দিয়া হ’ল:",
 'semiprotectedpagemovewarning' => "'''টোকা:''' এই পৃষ্ঠা সুৰক্ষিত কৰা হৈছে; কেৱল পঞ্জীভূত সদস্যইহে ইয়াক স্থানান্তৰ কৰিব পাৰিব ।'''
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦²'à¦\97 সংৰক্ষণ তলত দিয়া হ’ল:",
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦\85ভিলà§\87à¦\96 সংৰক্ষণ তলত দিয়া হ’ল:",
 'move-over-sharedrepo' => "== ফাইলৰ অস্বিত্ব আছে ==
 [[:$1]] এক উমৈহতীয়া ভঁৰালত আছে । এই শিৰোনামালৈ ফাইল স্থানান্তৰ কৰিলে উমৈহতীয়া ফাইলটোৰ লগত ওপৰা-ওপৰি হ'ব ।",
 'file-exists-sharedrepo' => 'নিৰ্বাচিত ফাইল নামটো ইতিমধ্যে এটা উমৈহতীয়া ভঁৰালত ব্যৱহৃত ।
@@ -2666,20 +2670,20 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'exportcuronly' => 'কেৱল সাম্প্ৰতিক সংশোধনটোহে অন্তৰ্ভুক্ত কৰক, সম্পূৰ্ণ ইতিহাস নহয় ।',
 'exportnohistory' => "----
 '''টোকা:''' কৰ্মদক্ষতা-সম্পৰ্কীয় কাৰণত এই প্ৰপত্ৰৰ মাধ্যমেৰে কোনো পৃষ্ঠাৰ সম্পূৰ্ণ ইতিহাস ৰপ্তানি কৰাটো নিষ্ক্ৰিয় কৰা হৈছে।",
-'exportlistauthors' => 'পà§\8dৰতà§\8dযà§\87à¦\95 à¦ªà§\83ষà§\8dঠাৰ à¦\85ৱদানà¦\95াৰà§\80ৰ সম্পূৰ্ণ তালিকা অন্তৰ্ভুক্ত কৰক',
+'exportlistauthors' => 'পà§\8dৰতà§\8dযà§\87à¦\95 à¦ªà§\83ষà§\8dঠাৰ à¦¬à§°à¦\99নিদাতাৰ সম্পূৰ্ণ তালিকা অন্তৰ্ভুক্ত কৰক',
 'export-submit' => 'ৰপ্তানি কৰক',
 'export-addcattext' => 'এই শ্ৰেণীকেইটাৰ পৰা পৃষ্ঠা যোগ কৰক:',
 'export-addcat' => 'যোগ কৰক',
 'export-addnstext' => 'এই নামস্থানৰ পৰা পৃষ্ঠা যোগ কৰক',
 'export-addns' => 'যোগ কৰক',
-'export-download' => 'ফাà¦\87ল à¦¹à¦¿à¦\9aাবে সংৰক্ষণ কৰক',
+'export-download' => 'নথি à§°à§\82পে সংৰক্ষণ কৰক',
 'export-templates' => 'সাঁচসমূহ অন্তৰ্ভুক্ত কৰক',
 'export-pagelinks' => 'এই স্তৰলৈকে পৃষ্ঠা সংযোগ অন্তৰ্ভুক্ত কৰক:',
 
 # Namespace 8 related
 'allmessages' => 'ব্যৱস্থাৰ বতৰা',
 'allmessagesname' => 'নাম',
-'allmessagesdefault' => "ডিফ'ল্ট বাৰ্তা পাঠ্য",
+'allmessagesdefault' => 'সাধাৰণ বাৰ্তা পাঠ্য',
 'allmessagescurrent' => 'বৰ্তমানৰ বাৰ্তাৰ পাঠ',
 'allmessagestext' => 'মিডিয়াৱিকি নামস্থানত থকা প্ৰণালী বাৰ্তাসমূহৰ তালিকা ইয়াত দিয়া হৈছে ।
 যদি আপুনি মিডিয়াৱিকিৰ স্থানীয়কৰণত আগ্ৰহী, তেন্তে অনুগ্ৰহ কৰি [//www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি স্থানীয়কৰণ] আৰু [//translatewiki.net translatewiki.net] চাওক ।',
@@ -2702,30 +2706,30 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'thumbnail-temp-create' => 'অস্থায়ী থাম্বনেইল নথিপত্ৰ সৃষ্টি কৰিবলে অক্ষম',
 'thumbnail-dest-create' => 'থাম্বনেইলক গন্তব্যত সাঁচিবলে অক্ষম',
 'thumbnail_invalid_params' => 'অবৈধ ক্ষুদ্ৰাকৃতি পাৰামিটাৰ',
-'thumbnail_dest_directory' => 'à¦\97নà§\8dতবà§\8dয à¦¡à¦¿à§°à§\87à¦\95à§\8dà¦\9fৰà§\80 সৃষ্টি কৰিব পৰা নগ’ল',
+'thumbnail_dest_directory' => 'à¦\97নà§\8dতবà§\8dয à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া সৃষ্টি কৰিব পৰা নগ’ল',
 'thumbnail_image-type' => 'চিত্ৰৰ ধৰণ সমৰ্থিত নহয় ।',
-'thumbnail_gd-library' => 'à¦\85সমà§\8dপà§\82ৰà§\8dণ GD à¦²à¦¾à¦\87বà§\8dৰà§\87ৰà§\80 à¦¸à¦\82ৰà§\82প: à¦¸à¦¨à§\8dধানহিন ফলন $1',
-'thumbnail_image-missing' => 'ফাà¦\87ল সম্ভৱতঃ নাই: $1',
+'thumbnail_gd-library' => 'à¦\85সমà§\8dপà§\82ৰà§\8dণ GD à¦²à¦¾à¦\87বà§\8dৰà§\87ৰà§\80 à¦¸à¦\82ৰà§\82প: à¦¸à¦¨à§\8dধানহà§\80ন ফলন $1',
+'thumbnail_image-missing' => 'নথিà¦\96ন সম্ভৱতঃ নাই: $1',
 
 # Special:Import
 'import' => 'পৃষ্ঠা আমদানি কৰক',
 'importinterwiki' => 'আন্তঃৱিকি আমদানি',
 'import-interwiki-text' => "আমদানি কৰিবলৈ এটা ৱিকি বা পৃষ্ঠাৰ শিৰোনামা নিৰ্বাচন কৰক ।
 সংশোধনৰ তাৰিখ আৰু সম্পাদকৰ নাম সংৰক্ষণ কৰা হ'ব ।
-সà¦\95লà§\8b à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦\86মদানি [[Special:Log/import|à¦\86মদানি à¦²'à¦\97]]ত লিপিবদ্ধ আছে ।",
+সà¦\95লà§\8b à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦\86মদানি [[Special:Log/import|à¦\86মদানি à¦\85ভিলà§\87à¦\96]]ত লিপিবদ্ধ আছে ।",
 'import-interwiki-source' => 'উৎস ৱিকি/পৃষ্ঠা:',
-'import-interwiki-history' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\95লà§\8b à¦¸à¦\82শà§\8bধনৰ à¦\87তিহাস à¦\95পà§\80 কৰক',
+'import-interwiki-history' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\95লà§\8b à¦¸à¦\82শà§\8bধনৰ à¦\87তিহাস à¦ªà§\8dৰতিলিপি কৰক',
 'import-interwiki-templates' => 'সকলো সাঁচ অন্তৰ্ভুক্ত কৰক',
 'import-interwiki-submit' => 'আমদানি',
 'import-interwiki-namespace' => 'গন্তব্য নামস্থান:',
-'import-upload-filename' => 'ফাà¦\87লনাম:',
+'import-upload-filename' => 'নথিৰ নাম:',
 'import-comment' => 'মন্তব্য:',
 'importtext' => "অনুগ্ৰহ কৰি [[Special:Export|ৰপ্তানি সুবিধা]] ব্যৱহাৰ কৰি উৎস ৱিকিৰ পৰা ফাইলটো ৰপ্তানি কৰক।
 আপোনাৰ কম্পিউটাৰত সাঁচি ৰাখক আৰু ইয়াত আপল'ড কৰক।",
-'importstart' => 'পৃষ্ঠা আমদানি কৰা হৈছে...',
+'importstart' => 'পৃষ্ঠা আমদানি কৰা হৈ হৈছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'importnopages' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই ।',
-'imported-log-entries' => "$1 {{PLURAL:$1|à¦\9fা à¦²'à¦\97 à¦­à§°à§\8dতি|à¦\9fা à¦²'à¦\97 ভৰ্তি}} আমদানি কৰা হ'ল ।",
+'imported-log-entries' => "$1 {{PLURAL:$1|à¦\9fা à¦\85ভিলà§\87à¦\96 à¦­à§°à§\8dতি|à¦\9fা à¦\85ভিলà§\87à¦\96 ভৰ্তি}} আমদানি কৰা হ'ল ।",
 'importfailed' => 'আমদানি ব্যৰ্থ হৈছে: <nowiki>$1</nowiki>',
 'importunknownsource' => 'অজ্ঞাত আমদানি উৎসৰ প্ৰকাৰ',
 'importcantopen' => "আমদানি ফাইল খুলিব পৰা নগ'ল",
@@ -2734,12 +2738,12 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'importsuccess' => 'আমদানি সমাপ্ত !',
 'importhistoryconflict' => "পৰস্পৰবিৰোধী ইতিহাস সংশোধনী আছে (এই পৃষ্ঠা আগতেও আমদানি কৰা হ'ব পাৰে)",
 'importnosources' => "কোনো আন্তঃৱিকি আমদানি উৎসৰ সংজ্ঞা দিয়া হোৱা নাই আৰু প্ৰত্যক্ষ ইতিহাস আপল'ড নিষ্ক্ৰিয় কৰা হৈছে ।",
-'importnofile' => "à¦\95à§\8bনà§\8b à¦\86মদানি à¦«à¦¾à¦\87ল আপল'ড কৰা হোৱা নাই ।",
-'importuploaderrorsize' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
-à¦\85নà§\81মà§\8bদিত à¦\86পল'ড à¦«à¦¾à¦\87লতà¦\95à§\88 à¦\8fà¦\87 à¦«à¦¾à¦\87লৰ আকাৰ ডাঙৰ ।",
-'importuploaderrorpartial' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
-ফাà¦\87লà¦\9fà§\8b কেৱল আংশিকভাৱে আপল'ড কৰা হৈছে ।",
-'importuploaderrortemp' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
+'importnofile' => "à¦\95à§\8bনà§\8b à¦\86মদানি à¦¨à¦¥à¦¿ আপল'ড কৰা হোৱা নাই ।",
+'importuploaderrorsize' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦\85সফল হৈছে ।
+à¦\85নà§\81মà§\8bদিত à¦\86পল'ড à¦¨à¦¥à¦¿à¦¤à¦\95à§\88 à¦\8fà¦\87 à¦¨à¦¥à¦¿ৰ আকাৰ ডাঙৰ ।",
+'importuploaderrorpartial' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦\85সফল হৈছে ।
+নথিà¦\96ন কেৱল আংশিকভাৱে আপল'ড কৰা হৈছে ।",
+'importuploaderrortemp' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦¬à¦¿à¦«à¦² হৈছে ।
 এটা অস্থায়ী ফ'ল্ডাৰ হেৰাইছে ।",
 'import-parse-failure' => 'XML আমদানি পাৰ্চ বিফলতা',
 'import-noarticle' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই !',
@@ -2756,9 +2760,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'import-error-invalid' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো অবৈধ।',
 
 # Import log
-'importlogpage' => "আমদানি ল'গ",
+'importlogpage' => 'আমদানিৰ অভিলেখ',
 'importlogpagetext' => 'আন ৱিকিৰ পৰা সম্পাদনা ইতিহাস সহ প্ৰশাসনীয় পৃষ্ঠা আমদানি ।',
-'import-logentry-upload' => "ফাà¦\87ল আপল'ডৰ মাধ্যমেৰে [[$1]] আমদানি কৰা হ'ল",
+'import-logentry-upload' => "নথি আপল'ডৰ মাধ্যমেৰে [[$1]] আমদানি কৰা হ'ল",
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'import-logentry-interwiki' => 'আন্তঃৱিকি-স্থানান্তৰিত $1',
 'import-logentry-interwiki-detail' => '$2ৱে কৰা $1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
@@ -2782,16 +2786,16 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-pt-preferences' => 'আপোনাৰ পছন্দসমূহ',
 'tooltip-pt-watchlist' => 'আপুনি সালসলনিৰ গতিবিধি লক্ষ্য কৰি থকা পৃষ্ঠাসমূহৰ সুচী',
 'tooltip-pt-mycontris' => 'আপোনাৰ বৰঙণিৰ তালিকা',
-'tooltip-pt-login' => "বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹'লà§\87à¦\93 à¦²à¦\97-à¦\87ন কৰাটো বাঞ্চনীয়",
-'tooltip-pt-anonlogin' => 'বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹â\80\99লà§\87à¦\93 à¦²à¦\97-à¦\87ন কৰাটো বাঞ্চনীয়',
+'tooltip-pt-login' => "বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹'লà§\87à¦\93 à¦ªà§\8dৰৱà§\87শ কৰাটো বাঞ্চনীয়",
+'tooltip-pt-anonlogin' => 'বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹â\80\99লà§\87à¦\93 à¦ªà§\8dৰৱà§\87শ কৰাটো বাঞ্চনীয়',
 'tooltip-pt-logout' => 'প্ৰস্থান',
 'tooltip-ca-talk' => 'সংশ্লিষ্ট প্ৰবন্ধ সম্পৰ্কীয় আলোচনা',
 'tooltip-ca-edit' => 'আপুনি এই পৃষ্ঠাটো সালসলনি কৰিব পাৰে, অনুগ্ৰহ কৰি সালসলনি সাচী থোৱাৰ আগতে খচৰা চাই লব',
 'tooltip-ca-addsection' => 'নতুন অনুচ্ছেদ আৰম্ভ কৰক',
-'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦\82ৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
+'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\81ৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
 'tooltip-ca-history' => 'এই পৃষ্ঠাৰ যোৱা সংস্কৰণসমূহ',
 'tooltip-ca-protect' => 'এই পৃষ্ঠাখন সুৰক্ষিত কৰক',
-'tooltip-ca-unprotect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82ৰà¦\95à§\8dষণ সলনি কৰক',
+'tooltip-ca-unprotect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à§\81ৰà¦\95à§\8dষা সলনি কৰক',
 'tooltip-ca-delete' => 'এই পৃষ্ঠাখন বিলোপ কৰক',
 'tooltip-ca-undelete' => 'বিলোপ কৰাৰ আগেয়ে কৰা পৃষ্ঠাখনৰ সালসলনিসমূহ পুনঃসংস্থাপন কৰক',
 'tooltip-ca-move' => 'এই পৃষ্ঠাখন স্থানান্তৰিত কৰক',
@@ -2810,8 +2814,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-n-help' => 'সহায়ৰ বাবে ইয়াত ক্লিক কৰক',
 'tooltip-t-whatlinkshere' => 'ইয়ালৈ সংযোজিত সকলো পৃষ্ঠাৰ সুচী',
 'tooltip-t-recentchangeslinked' => 'সংযুক্ত পৃষ্ঠাসমূহৰ শেহতীয়া সালসলনিসমূহ',
-'tooltip-feed-rss' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰ-à¦\8fà¦\9a-à¦\8fà¦\9a à¦«à¦¿à¦¡',
-'tooltip-feed-atom' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\8fà¦\9fম à¦«à¦¿à¦¡',
+'tooltip-feed-rss' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰ-à¦\8fà¦\9a-à¦\8fà¦\9a à¦­à§\81à¦\95à§\8dতি',
+'tooltip-feed-atom' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\8fà¦\9fম à¦­à§\81à¦\95à§\8dতি',
 'tooltip-t-contributions' => 'এই সদস্যজনৰ অৰিহনাসমূহৰ সূচী চাওক',
 'tooltip-t-emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠাওক',
 'tooltip-t-upload' => "ফাইল আপল'ডৰ বাবে",
@@ -2823,9 +2827,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-ca-nstab-media' => 'মিডিয়া পৃষ্ঠাখন চাওক',
 'tooltip-ca-nstab-special' => 'এইখন এখন বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
-'tooltip-ca-nstab-image' => 'ফাà¦\87ল পৃষ্ঠা চাওক',
+'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-mediawiki' => 'প্ৰণালী বাৰ্তা চাওক',
-'tooltip-ca-nstab-template' => 'সাঁচ চাওক',
+'tooltip-ca-nstab-template' => 'সাঁচটো চাওক',
 'tooltip-ca-nstab-help' => 'সহায় পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-category' => 'শ্ৰেণী পৃষ্ঠা চাওক',
 'tooltip-minoredit' => 'ইয়াক অগুৰুত্বপূৰ্ণ সম্পাদনা ৰূপে চিহ্নিত কৰক।',
@@ -2838,7 +2842,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-watchlistedit-raw-submit' => 'লক্ষ্য-তালিকা আপডেট কৰক',
 'tooltip-recreate' => 'বিলোপ কৰা সত্বেও পৃষ্ঠাখন পুনৰ সৃষ্টি কৰক',
 'tooltip-upload' => "আপল'ড আৰম্ভ কৰক",
-'tooltip-rollback' => '"ৰ\'লবà§\87à¦\95"à¦\8f এটা ক্লিকত এই পৃষ্ঠাৰ শেষ অৱদানকাৰীৰ সম্পাদনা বাতিল কৰি ইয়াক পূৰ্বাৱস্থালৈ ঘূৰাই নিব।',
+'tooltip-rollback' => '"পà§\82ৰà§\8dববত" à¦\95ৰিলà§\87 এটা ক্লিকত এই পৃষ্ঠাৰ শেষ অৱদানকাৰীৰ সম্পাদনা বাতিল কৰি ইয়াক পূৰ্বাৱস্থালৈ ঘূৰাই নিব।',
 'tooltip-undo' => '"বাতিল"এ এই সম্পাদনাক পূৰ্বাৱস্থালৈ ঘূৰাই নিব আৰু প্ৰাক্‌দৰ্শনৰ বাবে সম্পাদনাটো খুলিব। ই সম্পাদনা সাৰাংশত কাৰণ এটা লিখিবলৈ সুযোগ দিব।',
 'tooltip-preferences-save' => 'পছন্দসমূহ সাঁচি থওক',
 'tooltip-summary' => 'চমু সাৰাংশ লিখক',
@@ -2851,7 +2855,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'siteuser' => '{{SITENAME}} সদস্য $1',
 'anonuser' => '{{SITENAME}} বেনামী সদস্য $1',
 'lastmodifiedatby' => 'এই পৃষ্ঠাখন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত $3ৰ দ্বাৰা সলনি কৰা হৈছিল',
-'othercontribs' => '$1 ৰ কাৰ্য্যৰ উপৰত ভিত্তি কৰি',
+'othercontribs' => '$1ৰ কাৰ্যৰ ওপৰত ভিত্তি কৰি',
 'others' => 'অন্যান্য',
 'siteusers' => '{{SITENAME}} {{PLURAL:$2|সদস্য|সদস্যসমূহ}} $1',
 'anonusers' => '{{SITENAME}} বেনামী {{PLURAL:$2|সদস্য|সদস্যসকল}} $1',
@@ -2863,9 +2867,10 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'spamprotectiontext' => 'আপুনি সাঁচিব বিচৰা পাঠখিনিক স্পাম ছেকনীৰ দ্বাৰা বাধা প্ৰদান কৰা হৈছে ।
 সম্ভৱতঃ কোনো ব্লেকলিষ্টেড হোৱা বাহ্যিক সংযোগৰ কাৰণে এনে ঘটিছে ।',
 'spamprotectionmatch' => 'নিম্নলিখিত লিখনীৰ বাবে আমাৰ স্পাম পৰিস্ৰাৱক আৰম্ভ হৈছে: $1',
-'spambot_username' => 'মিডিয়াৱিকি স্পাম পৰিষ্কাৰ কাৰ্য্য',
-'spam_reverting' => '$1 -লে সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতি যোৱা',
-'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1 -লে সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
+'spambot_username' => 'মিডিয়াৱিকি স্পাম পৰিষ্কাৰ কাৰ্য',
+'spam_reverting' => '$1লৈ সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতাই নিয়া হৈছে',
+'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1লৈ সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
+'spam_deleting' => 'সকলো পুনৰীক্ষণৰ $1লৈ সংযোগ আছিল, বিলোপ কৰা হৈছে',
 
 # Info page
 'pageinfo-title' => '"$1" ৰ তথ্য',
@@ -2889,23 +2894,23 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'rcpatroldisabledtext' => 'শেহতীয়া সালসলনিৰ নিৰীক্ষণ কাৰ্য বৰ্তমান নিষ্ক্ৰিয় হৈ আছে ।',
 'markedaspatrollederror' => 'নিৰীক্ষিত বুলি চিহ্নিত কৰিব নোৱাৰি',
 'markedaspatrollederrortext' => 'নিৰীক্ষণ কৰা বুলি চিহ্নিত কৰিবলৈ আপুনি এটা পুনৰীক্ষণ ধাৰ্য্য কৰিব লাগিব।',
-'markedaspatrollederror-noautopatrol' => 'à¦\86পà§\8bনাà¦\95 à¦¨à¦¿à¦\9cৰ à¦ªà§°à¦¿à§±à§°à§\8dতনসমà§\82হ à¦¨à§\80ৰিক্ষিত বুলি চিহ্নিত কৰাৰ অনুমতি নাই।',
+'markedaspatrollederror-noautopatrol' => 'à¦\86পà§\8bনাà¦\95 à¦¨à¦¿à¦\9cৰ à¦ªà§°à¦¿à§±à§°à§\8dতনসমà§\82হ à¦¨à¦¿ৰিক্ষিত বুলি চিহ্নিত কৰাৰ অনুমতি নাই।',
 
 # Patrol log
-'patrol-log-page' => "নিৰীক্ষণ ল'গ",
-'patrol-log-header' => "এইখন নিৰীক্ষিত সংশোধনসমূহৰ ল'গ ।",
-'log-show-hide-patrol' => "নিৰীক্ষণ ল'গ $1",
+'patrol-log-page' => 'নিৰীক্ষণ অভিলেখ',
+'patrol-log-header' => 'এইখন নিৰীক্ষিত সংশোধনসমূহৰ অভিলেখ ।',
+'log-show-hide-patrol' => 'নিৰীক্ষণ অভিলেখ $1',
 
 # Image deletion
 'deletedrevision' => 'পুৰণি সংশোধনী $1 বিলোপ কৰা হ’ল',
-'filedeleteerror-short' => 'ফাà¦\87ল বিলোপ কৰাত ত্ৰুটি: $1',
-'filedeleteerror-long' => 'à¦\8fà¦\87 à¦«à¦¾à¦\87লà¦\9fà§\8b বিলোপ কৰাত সমস্যা হৈছে :
+'filedeleteerror-short' => 'নথি বিলোপ কৰাত ত্ৰুটি: $1',
+'filedeleteerror-long' => 'à¦\8fà¦\87 à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰাত সমস্যা হৈছে :
 
 $1',
-'filedelete-missing' => '"$1" à¦«à¦¾à¦\87লà¦\9fà§\8b বিলোপ কৰিব পৰা নাযাব, কিয়নো ইয়াৰ কোনো অস্তিত্ব নাই ।',
+'filedelete-missing' => '"$1" à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰিব পৰা নাযাব, কিয়নো ইয়াৰ কোনো অস্তিত্ব নাই ।',
 'filedelete-old-unregistered' => 'নিৰ্ধাৰিত ফাইল সংশোধন "$1" তথ্যকোষত নাই ।',
-'filedelete-current-unregistered' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87ল "$1" তথ্যকোষত নাই ।',
-'filedelete-archive-read-only' => 'à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¡à¦¾à¦\87ৰà§\87à¦\95à¦\9fৰি "$1" ৱেবচাৰ্ভাৰ দ্বাৰা লিখিব নোৱাৰি।',
+'filedelete-current-unregistered' => 'নিৰà§\8dধাৰিত à¦¨à¦¥à¦¿ "$1" তথ্যকোষত নাই ।',
+'filedelete-archive-read-only' => 'à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া "$1"ত ৱেবচাৰ্ভাৰ দ্বাৰা লিখিব নোৱাৰি।',
 
 # Browsing diffs
 'previousdiff' => 'প্ৰবীণ সম্পাদনা',
@@ -2922,9 +2927,9 @@ $1',
 'file-info-size-pages' => '$1 × $2 পিক্সেলসমূহ, নথিপত্ৰৰ আকাৰ: $3, MIME ধৰণ: $4, $5 {{PLURAL:$5|page|pages}}',
 'file-nohires' => 'ইয়াতকৈ ডাঙৰকৈ দেখুৱাব নোৱাৰি ।',
 'svg-long-desc' => 'SVG ফাইল, সাধাৰণতঃ $1 × $2 পিক্সেল, ফাইল মাত্ৰা: $3',
-'show-big-image' => 'সম্পূৰ্ণ দৃশ্য',
+'show-big-image' => "সম্পূৰ্ণ ৰিজ'লিউশ্যন",
 'show-big-image-preview' => 'এই খচৰাৰ আকাৰ: $1.',
-'show-big-image-other' => 'আন {{PLURAL:$2|ৰিজলিউচন|ৰিজলিউচনসমূহ}}: $1।',
+'show-big-image-other' => "আন {{PLURAL:$2|ৰিজ'লিউশ্যন|ৰিজ'লিউশ্যনসমূহ}}: $1।",
 'show-big-image-size' => '$1 × $2 পিক্সেল',
 'file-info-gif-looped' => 'লুপকৃত',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|ফ্ৰেম|ফ্ৰেম}}',
@@ -2937,7 +2942,7 @@ $1',
 'imagelisttext' => "তলত '''$1''' {{PLURAL:$1|file|files}} সজোঁৱা $2 -ৰ এটা তালিকা দিয়া আছে।",
 'newimages-summary' => "এই বিশেষ পৃষ্ঠাখনত সৰ্বশেষত আপল'ড কৰা ফাইলসমূহ দেখিব ।",
 'newimages-legend' => 'ছেকনী',
-'newimages-label' => 'ফাà¦\87লনাম (বা তাৰ এটা অংশ)',
+'newimages-label' => 'নথিৰ নাম (বা তাৰ এটা অংশ)',
 'showhidebots' => '(বট $1)',
 'noimages' => 'চাবলৈ একো নাই ।',
 'ilsubmit' => 'সন্ধান কৰক',
@@ -2961,7 +2966,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 # Metadata
 'metadata' => 'মেটাডেটা',
 'metadata-help' => 'এই ফাইলত অতিৰিক্ত খবৰ আছে, হয়তো ডিজিটেল কেমেৰা বা স্কেনাৰ ব্যৱহাৰ কৰি সৃষ্টি বা পৰিৱৰ্তন কৰা হৈছে ।
-এই ফাইলটো আচলৰ পৰা পৰিৱৰ্তন  কৰা হৈছে, সেয়েহে পৰিৱৰ্তিত ফাইলটোৰ সৈতে নিমিলিব পাৰে ।',
+এই ফাইলটো আচলৰ পৰা পৰিৱৰ্তন কৰা হৈছে, সেয়েহে পৰিৱৰ্তিত ফাইলটোৰ সৈতে নিমিলিব পাৰে ।',
 'metadata-expand' => 'বহলাই ইয়াৰ বিষয়ে জনাওক',
 'metadata-collapse' => 'বিষয় বৰ্ণনা নেদেখুৱাবলৈ',
 'metadata-fields' => 'এই সূচীত থকা বিষয়বোৰ চিত্ৰৰ পৃষ্ঠাৰ তলত দেখা যাব ।
@@ -2981,28 +2986,28 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 * gpsaltitude',
 
 # EXIF tags
-'exif-imagewidth' => 'বহল',
+'exif-imagewidth' => 'পà§\8dৰসà§\8dথ',
 'exif-imagelength' => 'উচ্চতা',
 'exif-bitspersample' => 'প্ৰতি অংশৰ বিট',
 'exif-compression' => 'সংকোচন আঁচনি',
 'exif-photometricinterpretation' => 'পিক্সেল গঠন',
 'exif-orientation' => 'দিশবিন্যাস',
 'exif-samplesperpixel' => 'উপাদানৰ সংখ্যা',
-'exif-planarconfiguration' => 'ডà§\87à¦\9fা বিন্যাস',
-'exif-ycbcrsubsampling' => 'Y to C -ৰ হাৰৰ উপনমুনা',
+'exif-planarconfiguration' => 'তথà§\8dয বিন্যাস',
+'exif-ycbcrsubsampling' => 'Y to Cৰ হাৰৰ উপনমুনা',
 'exif-ycbcrpositioning' => 'Y আৰু C অৱস্থান',
-'exif-xresolution' => 'আনুভূমিক ৰিজলিউচন',
-'exif-yresolution' => "উলম্ব ৰিজ'লিউচন",
+'exif-xresolution' => "আনুভূমিক ৰিজ'লিউশ্যন",
+'exif-yresolution' => "উলম্বিক ৰিজ'লিউশ্যন",
 'exif-stripoffsets' => 'ছবিৰ ডেটা অৱস্থান',
 'exif-rowsperstrip' => 'প্ৰতি ষ্ট্ৰিপত শাৰীসমূহৰ সংখ্যা',
 'exif-stripbytecounts' => 'প্ৰতি সংকোচিত স্ট্ৰিপ বাইটসমূহ',
-'exif-jpeginterchangeformat' => 'JPEG SOI -লে অফচেট',
+'exif-jpeginterchangeformat' => 'JPEG SOI’লৈ অফচেট',
 'exif-jpeginterchangeformatlength' => 'JPEG তথ্যৰ বাইটসমূহ',
 'exif-whitepoint' => 'বগা বিন্দুৰ বৰ্ণ',
 'exif-primarychromaticities' => 'প্ৰাথমিকতাৰ বৰ্ণসমূহ',
 'exif-ycbcrcoefficients' => 'ৰঙ স্থান পৰিৱৰ্তন সাঁচৰ গুণকসমূহ',
 'exif-referenceblackwhite' => 'কলা আৰু বগা প্ৰসংগ মানসমূহৰ যোৰ',
-'exif-datetime' => 'ফাà¦\87ল সলনিৰ তাৰিখ আৰু সময়',
+'exif-datetime' => 'নথিৰ সলনিৰ তাৰিখ আৰু সময়',
 'exif-imagedescription' => 'চিত্ৰ শিৰোনামা',
 'exif-make' => 'কেমেৰা নিৰ্মাতা',
 'exif-model' => 'কেমেৰা মডেল',
@@ -3029,7 +3034,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-exposureprogram' => 'উন্মুক্ত প্ৰগ্ৰাম',
 'exif-spectralsensitivity' => 'বৰ্ণালীৰ সংবেদ্যতা',
 'exif-isospeedratings' => 'ISO গতিৰ হাৰ',
-'exif-shutterspeedvalue' => 'APEX à¦াটাৰ গতি',
+'exif-shutterspeedvalue' => 'APEX à¦\9aাটাৰ গতি',
 'exif-aperturevalue' => 'APEX বিন্ধা',
 'exif-brightnessvalue' => 'APEX উজ্জ্বলতা',
 'exif-exposurebiasvalue' => 'APEX উন্মুক্ত পক্ষপাত',
@@ -3041,9 +3046,9 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-focallength' => "লেন্‌ছৰ ফ'কেল দৈৰ্ঘ্য",
 'exif-subjectarea' => 'বিষয়বস্তুৰ ক্ষেত্ৰফল',
 'exif-flashenergy' => 'ফ্লেছ শক্তি',
-'exif-focalplanexresolution' => 'X à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cà§\8bলà§\8bà¦\9aন',
-'exif-focalplaneyresolution' => 'Y à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cà§\8bলà§\8bà¦\9aন',
-'exif-focalplaneresolutionunit' => "ফ'কেল তল ৰিজ'লিউচন একক",
+'exif-focalplanexresolution' => 'X à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cলিà¦\89শà§\8dযন',
+'exif-focalplaneyresolution' => 'Y à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cলিà¦\89শà§\8dযন',
+'exif-focalplaneresolutionunit' => "ফ'কেল তল ৰিজলিউশ্যন একক",
 'exif-subjectlocation' => 'বিষয়বস্তুৰ স্থান',
 'exif-exposureindex' => 'উন্মুক্ত সূচী',
 'exif-sensingmethod' => 'সংবেদ পদ্ধতি',
@@ -3098,7 +3103,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-worldregioncreated' => "বিশ্বৰ অঞ্চল য'ত ছবিখন তোলা হৈছিল",
 'exif-countrycreated' => 'যি দেশত চিত্ৰখন গ্ৰহণ কৰা হৈছে',
 'exif-countrycodecreated' => "দেশৰ ক'ড য'ত ছবিখন তোলা হৈছিল",
-'exif-provinceorstatecreated' => "পà§\8dৰদà§\87শ à¦\85থবা à§°à¦¾à¦\9cà§\8dয à¦¯'ত à¦\9bবিà¦\9fà§\8b তোলা হৈছিল",
+'exif-provinceorstatecreated' => "পà§\8dৰদà§\87শ à¦\85থবা à§°à¦¾à¦\9cà§\8dয à¦¯'ত à¦\9bবিà¦\96ন তোলা হৈছিল",
 'exif-citycreated' => 'যি চহৰত চিত্ৰখন গ্ৰহণ কৰা হৈছে',
 'exif-sublocationcreated' => "নগৰৰ উপঅৱস্থান য'ত ছবিখন তোলা হৈছিল",
 'exif-worldregiondest' => 'বিশ্বৰ অঞ্চল দেখুওৱা হল',
@@ -3121,7 +3126,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-contact' => 'যোগাযোগৰ তথ্য',
 'exif-writer' => 'লেখক',
 'exif-languagecode' => 'ভাষা',
-'exif-iimversion' => 'IIM à¦¸à¦\82স্কৰণ',
+'exif-iimversion' => 'IIM à¦¸à¦\82ষ্কৰণ',
 'exif-iimcategory' => 'শ্ৰেণী',
 'exif-iimsupplementalcategory' => 'পৰিপূৰ্ণ বিভাগসমূহ',
 'exif-datetimeexpires' => 'পিছত ব্যৱহাৰ নকৰিব',
@@ -3134,33 +3139,33 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-label' => 'লেবেল',
 'exif-datetimemetadata' => 'মেটাডেটাৰ শেষ পৰিৱৰ্তনৰ তাৰিখ',
 'exif-nickname' => 'ছবিৰ খচৰা নাম',
-'exif-rating' => 'ৰà§\87à¦\9fিà¦\82 (out of 5)',
+'exif-rating' => 'মানাà¦\82à¦\95 (৫ৰ à¦­à¦¿à¦¤à§°à¦¤)',
 'exif-rightscertificate' => 'অধিকাৰিত্ব ব্যৱস্থাপনাৰ প্ৰমাণপত্ৰ',
 'exif-copyrighted' => 'স্বত্বাধিকাৰ স্থিতি',
 'exif-copyrightowner' => 'স্বত্বাধিকাৰী',
 'exif-usageterms' => 'ব্যৱহাৰ কৰাৰ চৰ্ত্ত',
-'exif-webstatement' => 'à¦\85নলাà¦\87ন à¦¸à§\8dবতà§\8dবাধিà¦\95াৰ à¦¬à§\8dযà¦\95à§\8dতবà§\8dয',
+'exif-webstatement' => 'অনলাইন স্বত্বাধিকাৰ বক্তব্য',
 'exif-originaldocumentid' => 'মূল ডকুমেণ্টৰ অদ্বিতীয় আই.ডি.',
 'exif-licenseurl' => 'কপিৰাইট অনুজ্ঞাপত্ৰৰ বাবে URL',
 'exif-morepermissionsurl' => 'অতিৰিক্ত অনুজ্ঞাপত্ৰৰ তথ্য',
 'exif-attributionurl' => 'এই কাৰ্যৰ পুনৰ ব্যৱহাৰ কৰিলে অনুগ্ৰহ এই লিংকটো যোগ কৰক',
 'exif-preferredattributionname' => 'এই কাম পুনৰ-ব্যৱহাৰ কৰোতে, অনুগ্ৰহ কৰি কৃতিত্ব দিব',
 'exif-pngfilecomment' => 'পি.এন.জি. ফাইল মন্তব্য',
-'exif-disclaimer' => 'দাবà§\80তà§\8dযাà¦\97',
+'exif-disclaimer' => 'দায়লà§\81পà§\8dতি',
 'exif-contentwarning' => 'বিষয়বস্তু সতৰ্কবাণী',
 'exif-giffilecomment' => 'জি.আই.এফ. ফাইল মন্তব্য',
 'exif-intellectualgenre' => 'আইটেমৰ প্ৰকাৰ',
 'exif-subjectnewscode' => 'বিষয় ক’ড',
 'exif-scenecode' => "IPTC দৃশ্য ক'ড",
 'exif-event' => 'ঘটনা বৰ্ণিত',
-'exif-organisationinimage' => 'সà¦\82à¦\98ঠন বৰ্ণিত',
+'exif-organisationinimage' => 'সà¦\82à¦\97ঠন বৰ্ণিত',
 'exif-personinimage' => 'ব্যক্তি বর্ণিত',
 'exif-originalimageheight' => "ক্ৰ'প কৰাৰ আগত ছবিৰ উচ্চতা",
 'exif-originalimagewidth' => "ক্ৰ'প কৰাৰ আগত ছবিৰ প্ৰস্থতা",
 
 # EXIF attributes
 'exif-compression-1' => 'অসংকুচিত',
-'exif-compression-2' => "CCITT দল ৩ ১-পৰিসৰ পৰিৱৰ্তীত Huffman চলন দৈৰ্ঘ এনক'ডিং",
+'exif-compression-2' => "CCITT দল ৩ ১-পৰিসৰ পৰিৱৰ্তীত Huffman চলন দৈৰ্ঘ্য এনক'ডিং",
 'exif-compression-3' => "CCITT দল ৩ ফেক্স এনক'ডিং",
 'exif-compression-4' => "CCITT দল ৪ ফেক্স এনক'ডিং",
 
@@ -3181,7 +3186,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-planarconfiguration-1' => 'খণ্ড বিন্যাস',
 'exif-planarconfiguration-2' => 'সমতলীয় বিন্যাস',
 
-'exif-colorspace-65535' => 'মানাংকন নহোৱা',
+'exif-colorspace-65535' => 'মানাà¦\82à¦\95ন à¦¨à§\8bহà§\8bৱা',
 
 'exif-componentsconfiguration-0' => 'অস্তিত্ব নাই',
 
@@ -3190,10 +3195,10 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-exposureprogram-2' => 'সাধাৰণ প্ৰ’গ্ৰেম',
 'exif-exposureprogram-3' => 'বিন্ধাৰ প্ৰাথমিকতা',
 'exif-exposureprogram-4' => 'শ্বাটাৰ প্ৰাথমিকতা',
-'exif-exposureprogram-5' => 'সà§\83ষà§\8dà¦\9fিমà§\82লà¦\95 à¦ªà§\8dৰà¦\97à§\8dৰাম (à¦\95à§\8dষà§\87তà§\8dৰৰ à¦\97ভà§\80ৰতাৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতি)',
-'exif-exposureprogram-6' => "à¦\95াৰà§\8dযà§\8dযত à¦ªà§\8dৰ'à¦\97à§\8dৰাম (দà§\8dৰà§\81ত à¦¶à§\8dবাà¦\9fাৰ à¦\97তিৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতি)",
-'exif-exposureprogram-7' => 'পà§\8dৰতিà¦\95à§\83তি à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aৰ à¦¬à¦¾à¦¹à¦¿à§° à¦¥à¦\95াà¦\95à§\87 à¦\95à§\8dলà§\8cà¦\9cà¦\86প à¦«à¦\9fà§\8bসমূহ)',
-'exif-exposureprogram-8' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aত à¦¥à¦\95াà¦\95à§\88 à¦²à§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প à¦«à¦\9fà§\8bসমূহৰ বাবে)',
+'exif-exposureprogram-5' => 'সà§\83ষà§\8dà¦\9fিমà§\82লà¦\95 à¦ªà§\8dৰà¦\97à§\8dৰাম (à¦\95à§\8dষà§\87তà§\8dৰৰ à¦\97ভà§\80ৰতাৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতবিশিষà§\8dà¦\9f)',
+'exif-exposureprogram-6' => "à¦\95াৰà§\8dযà§\8dযত à¦ªà§\8dৰ'à¦\97à§\8dৰাম (দà§\8dৰà§\81ত à¦¶à§\8dবাà¦\9fাৰ à¦\97তিৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতবিশিষà§\8dà¦\9f)",
+'exif-exposureprogram-7' => 'পà§\8dৰতিà¦\95à§\83তি à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aৰ à¦¬à¦¾à¦¹à¦¿à§° à¦¥à¦\95াà¦\95à§\87 à¦\95à§\8dলà¦\9cà¦\86প à¦\9aিতà§\8dৰসমূহ)',
+'exif-exposureprogram-8' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87প à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aত à¦¥à¦\95াà¦\95à§\88 à¦²à§\87ণà§\8dডসà§\8dà¦\95à§\87প à¦\9aিতà§\8dৰসমূহৰ বাবে)',
 
 'exif-subjectdistance-value' => '$1 মিটাৰ',
 
@@ -3209,7 +3214,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-lightsource-0' => 'অজ্ঞাত',
 'exif-lightsource-1' => 'দিনৰ পোহৰ',
 'exif-lightsource-2' => 'প্রতিপ্রভ',
-'exif-lightsource-3' => 'à¦\9fাà¦\82ষà§\8dà¦\9fà§\87ন (ভাসà§\8dবৰ পোহৰ)',
+'exif-lightsource-3' => 'à¦\9fাà¦\82ষà§\8dà¦\9fà§\87ন (ভাষà§\8dà¦\95ৰ পোহৰ)',
 'exif-lightsource-4' => 'ফ্লাছ',
 'exif-lightsource-9' => 'ফটফটীয়া বতৰ',
 'exif-lightsource-10' => 'ডাৱৰীয়া বতৰ',
@@ -3248,7 +3253,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 
 'exif-filesource-3' => 'ডিজিটাল স্টিল ক্যামেৰা',
 
-'exif-scenetype-1' => 'à¦\8fà¦\9fা প্ৰত্যক্ষভাৱে তোলা ছবি',
+'exif-scenetype-1' => 'à¦\8fà¦\96ন প্ৰত্যক্ষভাৱে তোলা ছবি',
 
 'exif-customrendered-0' => 'স্বাভাবিক প্রক্রিয়া',
 'exif-customrendered-1' => 'স্বনিৰ্বাচিত প্ৰক্ৰিয়া',
@@ -3261,7 +3266,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-whitebalance-1' => 'হস্তচালিত বগা ভাৰসাম্য',
 
 'exif-scenecapturetype-0' => 'প্ৰামাণিক',
-'exif-scenecapturetype-1' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প',
+'exif-scenecapturetype-1' => 'নà§\88সৰà§\8dà¦\97িà¦\95',
 'exif-scenecapturetype-2' => 'প্ৰতিকৃতি',
 'exif-scenecapturetype-3' => 'ৰাতিৰ দৃশ্য',
 
@@ -3285,7 +3290,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 
 'exif-subjectdistancerange-0' => 'অজ্ঞাত',
 'exif-subjectdistancerange-1' => "মেক্ৰ'",
-'exif-subjectdistancerange-2' => 'à¦\89à¦\9aৰৰ দৃষ্টি',
+'exif-subjectdistancerange-2' => 'নিà¦\95à¦\9f দৃষ্টি',
 'exif-subjectdistancerange-3' => 'দূৰ দৃষ্টি',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
@@ -3297,7 +3302,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-gpslongitude-w' => 'পশ্চিম দ্রাঘিমা',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => 'সমà§\81দà§\8dৰপà§\83ষà§\8dঠৰ $1 {{PLURAL:$1|মিà¦\9fাৰ|মিà¦\9fাৰ}} à¦\89পৰত',
+'exif-gpsaltitude-above-sealevel' => 'সমà§\81দà§\8dৰপà§\83ষà§\8dঠৰ $1 {{PLURAL:$1|মিà¦\9fাৰ|মিà¦\9fাৰ}} à¦\93পৰত',
 'exif-gpsaltitude-below-sealevel' => 'সমুদ্ৰপৃষ্ঠৰ $1 {{PLURAL:$1|মিটাৰ|মিটাৰ}} তলত',
 
 'exif-gpsstatus-a' => 'পৰিমাপ চলি আছে',
@@ -3319,7 +3324,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-gpsdop-excellent' => 'অতি উত্তম ($1)',
 'exif-gpsdop-good' => 'ভাল ($1)',
 'exif-gpsdop-moderate' => 'মোটামুটি ($1)',
-'exif-gpsdop-fair' => 'ভাল ($1)',
+'exif-gpsdop-fair' => 'ধà§\81নà§\80য়া ($1)',
 'exif-gpsdop-poor' => 'বেয়া ($1)',
 
 'exif-objectcycle-a' => 'কেৱল পুৱা',
@@ -3333,7 +3338,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-ycbcrpositioning-1' => 'কেন্দ্ৰিত',
 'exif-ycbcrpositioning-2' => 'সমানভাৱে চাইট কৰা',
 
-'exif-dc-contributor' => 'à¦\85ৱদানà¦\95াৰà§\80সমà§\82হ',
+'exif-dc-contributor' => 'বৰà¦\99ণিদাতাসà¦\95ল',
 'exif-dc-coverage' => 'মাধ্যমৰ ব্যৱধানীক অথবা অস্থায়ী অৱকাশ',
 'exif-dc-date' => 'তাৰিখ(সমূহ)',
 'exif-dc-publisher' => 'প্ৰকাশক',
@@ -3390,7 +3395,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'confirmemail_send' => 'এটা নিশ্চিতকৰণ সংকেত মেইল কৰক',
 'confirmemail_sent' => 'নিশ্চিতকৰণ ই-মেইল পঠোৱা হৈছে ।',
 'confirmemail_oncreate' => 'আপোনাৰ ই-মেইল ঠিকনালৈ এটা নিশ্চিতকৰণ সংকেত পঠোৱা হৈছে ।
-লà¦\97à§\8dâ\80\8c-à¦\87ন কৰিবলৈ এই সংকেতৰ আৱশ্যক নাই, কিন্তু ৱিকিৰ যিকোনো ই-মেইল ভিত্তিক সেৱা সক্ৰিয় কৰিবলৈ ইয়াৰ প্ৰয়োজন হ’ব ।',
+পà§\8dৰৱà§\87শ কৰিবলৈ এই সংকেতৰ আৱশ্যক নাই, কিন্তু ৱিকিৰ যিকোনো ই-মেইল ভিত্তিক সেৱা সক্ৰিয় কৰিবলৈ ইয়াৰ প্ৰয়োজন হ’ব ।',
 'confirmemail_sendfailed' => '{{SITENAME}}এ আপোনালৈ নিশ্চিতকৰণ ই-মেইল পঠাব পৰা নাই ।
 অনুগ্ৰহ কৰি আপোনাৰ ই-মেইল ঠিকনা ভুল বৰ্ণ আছে নেকি পৰীক্ষা কৰক ।
 
@@ -3399,7 +3404,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 সম্ভৱতঃ ইয়াৰ ম্যাদ উকলি গৈছে ।',
 'confirmemail_needlogin' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিতকৰণৰ বাবে $1 কৰক ।',
 'confirmemail_success' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিতকৰণ কৰা হৈছে ।
-আপুনি এতিয়া [[Special:UserLogin|log in]] কৰক আৰু ৱিকি উপভোগ কৰক ।',
+আপুনি এতিয়া [[Special:UserLogin|প্ৰৱেশ]] কৰক আৰু ৱিকি উপভোগ কৰক ।',
 'confirmemail_loggedin' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিত কৰা হৈছে ।',
 'confirmemail_error' => 'আপোনাৰ নিশ্চিতকৰণ সংৰক্ষণ কৰাত কিছু সমস্যা হৈছে ।',
 'confirmemail_subject' => '{{SITENAME}} ই-মেইল ঠিকনা নিশ্চিতকৰণ',
@@ -3407,7 +3412,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 এটা একাউণ্ট "$2" পঞ্জীয়ন কৰিছে ।
 
 এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
-à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
 
 $3
 
@@ -3457,20 +3462,20 @@ $5
 'deletedwhileediting' => "'''সতৰ্কবাণী''': আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত পৃষ্ঠাখন বিলোপ কৰা হৈছে !",
 'confirmrecreate' => "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাখন বিলোপ কৰিছে, তাৰ কাৰণ:
 : ''$2''
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦ªà§\81নৰà§\8dনিৰà§\8dমাণ কৰিব খোজাটো নিশ্চিত কৰক ।",
-'confirmrecreate-noreason' => 'à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিà¦\9bà§\87 à¥¤ à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦ªà§\81নৰà§\8dনিৰà§\8dমাণ কৰিব খোজাটো অনুগ্ৰহ কৰি নিশ্চিত কৰক ।',
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\95à§\8c à¦¸à§\83ষà§\8dà¦\9fি কৰিব খোজাটো নিশ্চিত কৰক ।",
+'confirmrecreate-noreason' => 'à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিà¦\9bà§\87 à¥¤ à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\95à§\8c à¦¸à§\83ষà§\8dà¦\9fি কৰিব খোজাটো অনুগ্ৰহ কৰি নিশ্চিত কৰক ।',
 'recreate' => 'পুনৰ সৃষ্টি কৰক',
 
 # action=purge
-'confirm_purge_button' => "অ'কে",
-'confirm-purge-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87শà§\8dবà§\87 খালী কৰা হওক ?',
-'confirm-purge-bottom' => "à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠাà¦\95 à¦¶à§\8bধিত à¦\95ৰিলà§\87 à¦\95à§\87শà§\8dবà§\87 আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
+'confirm_purge_button' => 'ঠিক আছে',
+'confirm-purge-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87à¦\9aà§\8dâ\80\8c খালী কৰা হওক ?',
+'confirm-purge-bottom' => "à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠাà¦\95 à¦¶à§\8bধিত à¦\95ৰিলà§\87 à¦\95à§\87à¦\9aà§\8dâ\80\8c আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
 
 # action=watch/unwatch
-'confirm-watch-button' => 'à¦\85â\80\99à¦\95ে',
-'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰা à¦¯à¦¾à¦\93à¦\95 ?',
-'confirm-unwatch-button' => 'à¦\85â\80\99à¦\95ে',
-'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰ কৰা হওক ?',
+'confirm-watch-button' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰà¦\95',
+'confirm-unwatch-button' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
 
 # Multipage image navigation
 'imgmultipageprev' => '← পূৰ্বৱৰ্তী পৃষ্ঠা',
@@ -3492,37 +3497,37 @@ $5
 
 # Auto-summaries
 'autosumm-blank' => "পৃষ্ঠাখন খালী কৰা হ'ল",
-'autosumm-replace' => 'বিষয়বসà§\8dতà§\81ক "$1"ৰে সলনি কৰা হ\'ল',
+'autosumm-replace' => 'পà§\84ষà§\8dঠাà¦\96নক "$1"ৰে সলনি কৰা হ\'ল',
 'autoredircomment' => "[[$1]]-ক পুনৰ্নিৰ্দেশ কৰা হ'ল",
 'autosumm-new' => '"$1" দি পৃষ্ঠা সৃষ্টি কৰা হ\'ল',
 
 # Live preview
 'livepreview-loading' => "ল'ড হৈ আছে…",
 'livepreview-ready' => "ল'ড হৈ আছে… প্ৰস্তুত!",
-'livepreview-failed' => "à¦\9cà§\80ৱনà§\8dত à¦ªà§\82ৰà§\8dবদৰ্শন ব্যৰ্থ হ'ল!
-সাধাৰণ à¦ªà§\82ৰà§\8dবদৰ্শন চেষ্টা কৰি চাওক।",
+'livepreview-failed' => "à¦\9cà§\80ৱনà§\8dত à¦ªà§\8dৰাà¦\95দৰ্শন ব্যৰ্থ হ'ল!
+সাধাৰণ à¦ªà§\8dৰাà¦\95দৰ্শন চেষ্টা কৰি চাওক।",
 'livepreview-error' => 'সংযোগ কৰিবলে ব্যৰ্থ হল: $1 "$2"।
-সাধাৰণ à¦ªà§\82ৰà§\8dবদৰ্শন চেষ্টা কৰি চাওক।',
+সাধাৰণ à¦ªà§\8dৰাà¦\95দৰ্শন চেষ্টা কৰি চাওক।',
 
 # 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' => 'কথাবতৰা পৃষ্ঠাসমূহ বাদ দি আপোনাৰ লক্ষ্য-তালিকাত {{PLURAL:$1|এটা শিৰোনামা|$1 টা শিৰোনামা}} আছে ।',
 'watchlistedit-noitems' => 'আপোনাৰ লক্ষ্য-তালিকাত এখনো ঘাই পৃষ্ঠা নাই ।',
 'watchlistedit-normal-title' => 'লক্ষ্য-তালিকা সম্পাদন কৰক',
 'watchlistedit-normal-legend' => 'লক্ষ্য-তালিকাৰ পৰা শিৰোনামা আঁতৰাওক',
-'watchlistedit-normal-explain' => 'Titles on your watchlist are shown below.
-To remove a title, check the box next to it, and click "{{int:Watchlistedit-normal-submit}}".
-You can also [[Special:EditWatchlist/raw|edit the raw list]].',
+'watchlistedit-normal-explain' => 'আপোনাৰ নজৰ তালিকাত থকা সূচীবদ্ধ পৃষ্ঠা তলত দেখুওৱা হৈছে।
+পৃষ্ঠা সূচী আৰৰাবলৈ তাৰ আগত দিয়া বাকচত ক্লিক কৰক, আৰু "{{int:Watchlistedit-normal-submit}}"ত ক্লিক কৰক।
+আপুনি [[Special:EditWatchlist/raw|মূল তালিকাখনো]] সম্পাদনা কৰিব পাৰে।',
 'watchlistedit-normal-submit' => 'শিৰোনামা আঁতৰাওক',
 'watchlistedit-normal-done' => "{{PLURAL:$1|এটা শিৰোনামা|$1 টা শিৰোনামা}} আপোনাৰ লক্ষ্যতালিকাৰ পৰা আঁতৰোৱা হ'ল:",
 'watchlistedit-raw-title' => 'অশোধিত অনুসৰণ-তালিকা সম্পাদন কৰক',
 'watchlistedit-raw-legend' => 'অশোধিত অনুসৰণ-তালিকা সম্পাদন কৰক',
-'watchlistedit-raw-explain' => 'আপোনাৰ দৰ্শনতালিকাত থকা শীৰ্ষকসমূহ তলত দেখুৱা হৈছে, আৰু তালিকালে যোগ কৰি অথবা তালিকাৰ পৰা আতৰাই সম্পাদন কৰিব পাৰি;
+'watchlistedit-raw-explain' => 'আপোনাৰ দৰ্শন তালিকাত থকা শীৰ্ষকসমূহ তলত দেখুওৱা হৈছে, আৰু তালিকালৈ যোগ কৰি অথবা তালিকাৰ পৰা আতৰাই সম্পাদন কৰিব পাৰি;
 প্ৰতি শাৰী এটা শীৰ্ষক হিচাপে।
-যেতিয়া সম্পূৰ্ণ হব, "{{int:Watchlistedit-raw-submit}}" -ত ক্লিক কৰিব।
+যেতিয়া সম্পূৰ্ণ হব, "{{int:Watchlistedit-raw-submit}}"ত ক্লিক কৰিব।
 আপুনি লগতে [[Special:EditWatchlist|প্ৰামাণিক সম্পাদকক ব্যৱহাৰ কৰিব পাৰে]]।',
 'watchlistedit-raw-titles' => 'শিৰোনামা:',
 'watchlistedit-raw-submit' => 'লক্ষ্য-তালিকা আপডেট কৰক',
@@ -3540,7 +3545,7 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 
 # Core parser functions
 'unknown_extension_tag' => 'অজ্ঞাত এক্সটেনচন টেগ "$1"',
-'duplicate-defaultsort' => '\'\'\'সাৱধান!\'\'\' পূৰ্বনিৰ্ধাৰিত ক্ৰমসূচক "$2"-এ আগৰ ক্ৰমসূচক "$1"-অক বিস্থাপিত কৰিছে।',
+'duplicate-defaultsort' => '\'\'\'সাৱধান!\'\'\' পূৰ্বনিৰ্ধাৰিত ক্ৰমসূচক "$2"-এ আগৰ ক্ৰমসূচক "$1"ক বিস্থাপিত কৰিছে।',
 
 # Special:Version
 'version' => 'সংস্কৰণ',
@@ -3562,10 +3567,10 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'version-license' => 'অনুজ্ঞাপত্ৰ',
 'version-poweredby-credits' => "এই ৱিকি '''[//www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
 'version-poweredby-others' => 'অন্য',
-'version-license-info' => "মিডিয়াৱিà¦\95ি à¦\8fà¦\9fা à¦¬à¦¿à¦¨à¦¾à¦®à§\82লà§\80য়া à¦\9aফà§\8dà¦\9fৱà§\87ৰ; à¦\86পà§\81নি Free Software Foundation -ৰ à¦¦à§\8dবাৰা à¦ªà§\8dৰà¦\95াশিত GNU General Public License -ৰ à¦\9aà§\81à¦\95à§\8dতিসমà§\82হৰ à¦\85নà§\8dতৰà§\8dà¦\97ত à¦\87য়াà¦\95 à¦ªà§\81নৰ à¦¬à¦¿à¦²à¦¾à¦¬ à¦ªà¦¾à§°à¦¿à¦¬ à¦\85থবা à¦¸à¦²à¦¨à¦¿  à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬; à¦¹à¦¯à¦¼à¦¤à§\8b à¦²à¦¾à¦\87à¦\9aà§\87à¦\9eà§\8dà¦\9aৰ সংস্কৰণ ২ 
-à¦\85থবা (à¦\86পà§\81নাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
+'version-license-info' => "মিডিয়াৱিà¦\95ি à¦\8fà¦\9fা à¦¬à¦¿à¦¨à¦¾à¦®à§\82লà§\80য়া à¦\9aফà§\8dà¦\9fৱà§\87ৰ; à¦\86পà§\81নি Free Software Foundation -ৰ à¦¦à§\8dবাৰা à¦ªà§\8dৰà¦\95াশিত GNU General Public License -ৰ à¦\9aà§\81à¦\95à§\8dতিসমà§\82হৰ à¦\85নà§\8dতৰà§\8dà¦\97ত à¦\87য়াà¦\95 à¦ªà§\81নৰ à¦¬à¦¿à¦¤à§°à¦£ à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬ à¦\85থবা à¦¸à¦²à¦¨à¦¿ à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬; à¦¹à¦¯à¦¼à¦¤à§\8b à¦\85নà§\81à¦\9cà§\8dà¦\9eাপতà§\8dৰৰ সংস্কৰণ ২ 
+à¦\85থবা (à¦\86পà§\8bনাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
 
-মিডিয়াৱিà¦\95ি à¦\8fà¦\87à¦\9fà§\8b à¦\86শাত à¦¬à¦¿à¦²à§\8bৱা হৈছে যে ই ব্যৱহাৰযোগ্য হ'ব, কিন্তু কোনো ৱাৰেন্টি নথকাকৈ; ব্যৱসায়ীক অথবা কোনো এটা বিশেষ কাৰণৰ যোগ্যতাৰ বাবে বুজোৱা ৱাৰেন্টি নথকাকৈ। 
+মিডিয়াৱিà¦\95ি à¦\8fà¦\87à¦\9fà§\8b à¦\86শাত à¦¬à¦¿à¦¤à§°à¦£ à¦\95ৰা হৈছে যে ই ব্যৱহাৰযোগ্য হ'ব, কিন্তু কোনো ৱাৰেন্টি নথকাকৈ; ব্যৱসায়ীক অথবা কোনো এটা বিশেষ কাৰণৰ যোগ্যতাৰ বাবে বুজোৱা ৱাৰেন্টি নথকাকৈ। 
 অধিক জানিবলৈ 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 ইয়াক অনলাইন পঢ়ক] -লে লিখক।",
@@ -3577,8 +3582,8 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:FilePath
-'filepath' => 'ফাà¦\87ল পথ',
-'filepath-page' => 'ফাà¦\87ল:',
+'filepath' => 'নথিৰ পথ',
+'filepath-page' => 'নথি:',
 'filepath-submit' => 'যাওক',
 'filepath-summary' => 'এই বিশেষ পৃষ্ঠায় এটা নথিপত্ৰৰ বাবে সম্পূৰ্ণ পথ ঘুৰাই পঠায়।
 ছবিসমূহক সম্পূৰ্ণ বিভেদনত দেখুৱা হয়, অন্য নথিপত্ৰ ধৰণসমূহ সিহতৰ সংলঘ্ন প্ৰগ্ৰামৰ সৈতে প্ৰত্যক্ষভাৱে আৰম্ভ হয়।',
@@ -3587,12 +3592,12 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'fileduplicatesearch' => 'প্ৰতিলিপি পৃষ্ঠাসমূহ অনুসন্ধান কৰক',
 'fileduplicatesearch-summary' => 'হেছ্‌ মানসমূহৰ উপৰত নিৰ্ভৰ কৰি প্ৰতিলিপিত নথিপত্ৰসমূহৰ বাবে সন্ধান কৰক।',
 'fileduplicatesearch-legend' => 'প্ৰতিলিপিৰ বাবে অনুসন্ধান কৰক',
-'fileduplicatesearch-filename' => 'ফাইলনাম:',
+'fileduplicatesearch-filename' => 'ফাà¦\87লৰ à¦¨à¦¾à¦®:',
 'fileduplicatesearch-submit' => 'সন্ধান কৰক',
 'fileduplicatesearch-info' => '$1 × $2 পিক্সেল<br /> ফাইলৰ মাত্ৰা: $3<br /> MIME প্ৰকাৰ: $4',
-'fileduplicatesearch-result-1' => '"$1" à¦«à¦¾à¦\87লৰ কোনো প্ৰতিলিপি নাই ।',
+'fileduplicatesearch-result-1' => '"$1" à¦¨à¦¥à¦¿ৰ কোনো প্ৰতিলিপি নাই ।',
 'fileduplicatesearch-result-n' => '"$1" ফাইলৰ {{PLURAL:$2|এটা প্ৰতিলিপি|$2টা প্ৰতিলিপি}} আছে ।',
-'fileduplicatesearch-noresults' => 'à¦\95à§\8bনà§\8b "$1" à¦¨à¦¾à¦®à§° à¦«à¦¾à¦\87ল à¦¸à¦¨à§\8dধান à¦ªà§\8bৱা à¦¨à¦\97ল ।',
+'fileduplicatesearch-noresults' => 'à¦\95à§\8bনà§\8b "$1" à¦¨à¦¾à¦®à§° à¦¨à¦¥à¦¿à§° à¦¸à¦¨à§\8dধান à¦ªà§\8bৱা à¦¨à¦\97â\80\99ল ।',
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
@@ -3603,7 +3608,7 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
 'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
 'specialpages-group-login' => 'প্ৰৱেশ/সদস্যভুক্তি',
-'specialpages-group-changes' => "সাম্প্ৰতিক সালসলনি আৰু ল'গসমূহ",
+'specialpages-group-changes' => 'সাম্প্ৰতিক সালসলনি আৰু অভিলেখসমূহ',
 'specialpages-group-media' => "মিডিয়া বিৱৰণী আৰু আপল'ডসমূহ",
 'specialpages-group-users' => 'সদস্যবৃন্দ আৰু অধিকাৰসমূহ',
 'specialpages-group-highuse' => 'অধিক ব্যবহৃত পৃষ্ঠাসমূহ',
@@ -3614,13 +3619,13 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'specialpages-group-spam' => 'স্পাম সা-সঁজুলি',
 
 # Special:BlankPage
-'blankpage' => 'à¦\96ালà§\80 পৃষ্ঠা',
+'blankpage' => 'à¦\89à¦\95া পৃষ্ঠা',
 'intentionallyblankpage' => 'এই পৃষ্ঠা ইচ্ছাকৃতভাৱে খালী ৰখা হৈছে ।',
 
 # External image whitelist
 'external_image_whitelist' => " #এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক<pre>
 #স্বাভাৱিক অভিব্যক্তি অংশসমূহ (কেৱল সেই অংশ যি // মাজেৰে যায়) তলত দিয়ক
-#ইহঁতক বহিৰ্তম (hotlinked) ছবিসমূহৰ URLসমূহৰ সৈতে মিলাই চোৱা হ'ব
+#ইহঁতক বহিৰ্তম (hotlinked) ছবিসমূহৰ URL সমূহৰ সৈতে মিলাই চোৱা হ'ব
 #যিসমূহ মিল খায় সেইসমূহক ছবি হিচাপে প্ৰদৰ্শন কৰা হব, নহলে কেৱল ছবিখনলৈ এটা সংযোগ দেখুওৱা হ'ব
 # # -ৰ সৈতে আৰম্ভ হোৱা শাৰীসমূহক মন্তব্য বুলি ধৰা হয়
 #ই ফলা-সংবেদ্য
@@ -3628,8 +3633,8 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 #সকলো regex অংশক এই শাৰীৰ ওপৰত দিব। এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক</pre>",
 
 # Special:Tags
-'tags' => 'সালসলনি টেগ চাওক',
-'tag-filter' => '[[Special:Tags|Tag]] ছেকনী:',
+'tags' => 'সালসলনি টেগসমূহ চাওক',
+'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
 'tag-filter-submit' => 'সংশোধন',
 'tags-title' => 'টেগসমূহ',
 'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে ।',
@@ -3660,12 +3665,12 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'dberr-info' => '(তথ্যকোষৰ চাৰ্ভাৰৰ লগত যোগাযোগ কৰিব নোৱাৰি: $1)',
 'dberr-usegoogle' => 'এই পৰিস্থিতিত আপুনি গুগলৰ মাধ্যমেৰে অনুসন্ধান কৰিব পাৰে ।',
 'dberr-outofdate' => "মন কৰক যে, আমাৰ বিষয়বস্তু সম্পৰ্কে তেওঁলোকৰ সূচী পুৰণা হ'ব পাৰে ।",
-'dberr-cachederror' => "à¦\8fà¦\87à¦\96ন à¦\85নà§\81ৰà§\8bধ à¦\95ৰা à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87শà§\8dবà§\8dâ\80\8cড à¦\95পà§\80, à¦¨à¦¬à§\80à¦\95ৰণ à¦¨à¦\95ৰা হ'ব পাৰে ।",
+'dberr-cachederror' => "à¦\8fà¦\87à¦\96ন à¦\85নà§\81ৰà§\8bধ à¦\95ৰা à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87à¦\9aà§\8dâ\80\8cড à¦²à¦¿à¦ªà¦¿, à¦¯à¦¿à¦\96ন à¦¨à¦¬à§\80à¦\95ৰণ à¦¨à¦\95ৰাà¦\93 হ'ব পাৰে ।",
 
 # HTML forms
-'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\95িà¦\9bà§\81মান à¦\87নপà§\81à¦\9fৰ à¦²à¦\97ত সমস্যা হৈছে',
+'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত à¦\95িà¦\9bà§\81মান সমস্যা হৈছে',
 'htmlform-select-badoption' => 'আপুনি ধাৰ্য কৰা মান উপযুক্ত বিকল্প নহয়।',
-'htmlform-int-invalid' => 'à¦\85পà§\81নি à¦§à¦¾à§°à§\8dয à¦\95ৰা à¦®à¦¾à¦¨ à¦\87নà§\8dà¦\9fà§\87à¦\9cাৰ (integer) নহয়।',
+'htmlform-int-invalid' => 'à¦\85পà§\81নি à¦§à¦¾à§°à§\8dয à¦\95ৰা à¦®à¦¾à¦¨ à¦\85à¦\96ণà§\8dড à¦¸à¦\82à¦\96à§\8dযা (integer) নহয়।',
 'htmlform-float-invalid' => 'অপুনি ধাৰ্য কৰা মান সংখ্যা নহয়।',
 'htmlform-int-toolow' => 'আপুনি ধাৰ্য কৰা মান ন্যূনতম $1 তকৈ তলত',
 'htmlform-int-toohigh' => 'আপুনি ধাৰ্য কৰা মান অধিকতম $1 তকৈ ওপৰত',
@@ -3679,14 +3684,14 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'sqlite-no-fts' => '$1 সম্পূৰ্ণ-পাঠ অনুসন্ধান সমৰ্থন অবিহনে',
 
 # New logging system
-'logentry-delete-delete' => '$1 মচি পেলোৱা হল পৃষ্ঠা $3',
-'logentry-delete-restore' => '$1 পুনৰ সংৰক্ষণ কৰা হল পৃষ্ঠা $3',
+'logentry-delete-delete' => '$1’ৰ দ্বাৰা $3 পৃষ্ঠাখন বিলোপ কৰা হ’ল',
+'logentry-delete-restore' => '$1 পুনৰ সংৰক্ষণ কৰা হল পৃষ্ঠা $3',
 'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4 -ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
-'logentry-delete-event-legacy' => '$3 -ত লগ ঘটনামসমূহৰ $1 changed দৃশ্যমানতা',
-'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3 -ত পুনৰীক্ষনসমূহৰ $1 changed দৃশ্যমানতা',
+'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-event-legacy' => '$3ত অভিলেখ ঘটনামসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
 'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
-'logentry-suppress-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
+'logentry-suppress-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
 'logentry-suppress-revision' => 'পৃষ্ঠা $3: $4 -ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তনসমূহ দৃশ্যমানতা',
 'logentry-suppress-event-legacy' => '$3 -ত লগ ঘটনাসমূহৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
 'logentry-suppress-revision-legacy' => 'পৃষ্ঠা $3 -ত পুনৰীক্ষনসমূহৰ $1 গোপন পৰিৱৰ্তন কৰা হল',
@@ -3698,21 +3703,21 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'revdelete-uname-unhid' => 'সদস্যনাম মুকলি কৰা হৈছে',
 'revdelete-restricted' => 'এই সীমাবদ্ধতা প্ৰশাসকৰ ক্ষেত্ৰত প্ৰযোজ্য',
 'revdelete-unrestricted' => 'প্ৰশাসকৰ সীমাবদ্ধতা বাতিল কৰা হ’ল',
-'logentry-move-move' => 'পৃষ্ঠা $3 -ৰ পৰা $4 -লে $1 স্থানান্তৰ কৰা হল',
-'logentry-move-move-noredirect' => 'পুনৰ্নিৰ্দেশ নেৰাকৈ $1 স্থানান্তৰ কৰা হল পৃষ্ঠা $3 -ৰ পৰা $4',
-'logentry-move-move_redir' => 'পুনৰ্নিৰ্দেশৰে পৃষ্ঠা $3 -ৰ পৰা $4 $1 স্থানান্তৰ কৰা হল',
+'logentry-move-move' => 'পৃষ্ঠা $3ৰ পৰা $4লৈ $1য়ে স্থানান্তৰ কৰিলে',
+'logentry-move-move-noredirect' => '$1য়ে পুনৰ্নিৰ্দেশ নেৰাকৈ পৃষ্ঠা $3ৰ পৰা $4লৈ স্থানান্তৰ কৰিলে',
+'logentry-move-move_redir' => 'পুনৰ্নিৰ্দেশৰে পৃষ্ঠা $3ৰ পৰা $4 $1লৈ স্থানান্তৰ কৰা হ’ল',
 'logentry-move-move_redir-noredirect' => 'পুনৰ্নিৰ্দেশ নেৰাকৈ এটা পুনৰ্নিৰ্দেশৰ ওপৰেৰে পৃষ্ঠা $3 -ৰ পৰা $4 $1 স্থানান্তৰ কৰা হল',
 'logentry-patrol-patrol' => "পৃষ্ঠা $3 -ৰ $1 চিহ্নিত সংশোধন $4 নিৰীক্ষণ কৰা হ'ল",
 'logentry-patrol-patrol-auto' => "পৃষ্ঠা $3 -ৰ $1 চিহ্নিত সংশোধন $4 স্বচালিতভাৱে নিৰীক্ষণ কৰা হ'ল",
-'logentry-newusers-newusers' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
-'logentry-newusers-create' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
-'logentry-newusers-create2' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট $3 সৃষ্টি কৰিলে',
-'logentry-newusers-autocreate' => 'একাউণ্ট $1-ক স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা হৈছিল',
+'logentry-newusers-newusers' => '$1’য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
+'logentry-newusers-create' => '$1য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
+'logentry-newusers-create2' => '$1’য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট $3 সৃষ্টি কৰিলে',
+'logentry-newusers-autocreate' => '$1’ৰ একাউণ্ট স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা হৈছিল',
 'newuserlog-byemail' => 'গুপ্তশব্দ ই-মেইল কৰি পঠোৱা হৈছে',
 
 # Feedback
 'feedback-bugornote' => 'যদি আপুনি এটা কাৰিকৰী সমস্যাৰ বিৱৰণ দিবলৈ প্ৰস্তুত, অনুগ্ৰহ কৰি [$1 এটা বাগ ৰিপ\'ৰ্ট কৰক]।
-নহ\'লে আপুনি তলৰ সহজ ফৰ্ম ব্যৱহাৰ কৰিব পাৰিব। আপোনাৰ মন্তব্য আপোনাৰ সদস্যনাম আৰু আপুনি ব্যৱহাৰ কৰা ব্ৰাউজাৰৰ সৈতে "[$3 $2]" -পৃষ্ঠাত যোগ কৰা হ\'ব।',
+নহ\'লে আপুনি তলৰ সহজ ফৰ্ম ব্যৱহাৰ কৰিব পাৰিব। আপোনাৰ মন্তব্য আপোনাৰ সদস্যনাম আৰু আপুনি ব্যৱহাৰ কৰা ব্ৰাউজাৰৰ সৈতে "[$3 $2]" -পৃষ্ঠাত যোগ কৰা হ\'ব।',
 'feedback-subject' => 'বিষয়:',
 'feedback-message' => 'বাৰ্তা:',
 'feedback-cancel' => 'বাতিল কৰক',
@@ -3728,19 +3733,19 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 
 # API errors
 'api-error-badaccess-groups' => "এই ৱিকিত ফাইল আপল'ড কৰিবলৈ আপোনাৰ অনুমতি নাই।",
-'api-error-badtoken' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦¬à§\87য়া টোকেন।',
-'api-error-copyuploaddisabled' => "ইউ আৰ এল-ৰ মাধ্যমেৰে আপল'ড কৰাটো এই চাৰ্ভাৰত নিষ্ক্ৰিয় কৰা হৈছে।",
+'api-error-badtoken' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦­à§\81ল টোকেন।',
+'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' => 'পà§\8dৰতিলিপি {{PLURAL:$1|ফাà¦\87ল|ফাà¦\87ল}} à¦¯à§\8bনà¦\95à§\87à¦\87à¦\9fা à¦\87তিমধà§\8dযà§\87 à¦®à¦\9aা হৈছে।',
-'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}}।',
-'api-error-empty-file' => 'à¦\86পà§\81নি à¦¦à¦¾à¦\96িল à¦\95ৰা à¦«à¦¾à¦\87লà¦\96ন খালী ।',
+'api-error-duplicate-archive-popup-title' => 'পà§\8dৰতিলিপি {{PLURAL:$1|ফাà¦\87ল|ফাà¦\87ল}} à¦¯à¦¿à¦¸à¦®à§\82হ à¦\87তিমধà§\8dযà§\87 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা হৈছে।',
+'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।',
+'api-error-empty-file' => 'à¦\86পà§\81নি à¦¦à¦¾à¦\96িল à¦\95ৰা à¦«à¦¾à¦\87লà¦\9fà§\8b খালী ।',
 'api-error-emptypage' => 'নতুন, খালী পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
 'api-error-fetchfileerror' => 'আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।',
 'api-error-file-too-large' => 'আপুনি দাখিল কৰা ফাইলখন বৰ ডাঙৰ ।',
 'api-error-filename-tooshort' => 'ফাইলৰ নামটো অতি চুটি।',
-'api-error-filetype-banned' => 'à¦\8fà¦\87 à¦§à§°à¦£à§° à¦«à¦¾à¦\87ল à¦¨à¦¿à¦·à§\87ধ ।',
-'api-error-filetype-missing' => 'ফাইলনামটোত এক্সটেন্‌ছন নাই।',
+'api-error-filetype-banned' => 'à¦\8fà¦\87 à¦§à§°à¦£à§° à¦«à¦¾à¦\87ল à¦¨à¦¿à¦·à¦¿à¦¦à§\8dধ।',
+'api-error-filetype-missing' => 'ফাইল নামটোত এক্সটেন্‌ছন নাই।',
 'api-error-hookaborted' => 'আপুনি কৰিব বিচৰা সালসলনি এটা এক্সটেনচনৰ দ্বাৰা বাতিল কৰা হৈছে।',
 'api-error-http' => "আভ্যন্তৰীণ ত্ৰুটি: চাৰ্ভাৰৰ লগত সংযোগ স্থাপন নহ'ল।",
 'api-error-illegal-filename' => 'ফাইলৰ এই নামটো গ্ৰহণযোগ্য নহয় ।',
@@ -3748,14 +3753,14 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'api-error-invalid-file-key' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ভঁৰালত ফাইলটো পোৱা নগ'ল।",
 'api-error-missingparam' => 'আভ্যন্তৰীণ ত্ৰুটি: অনুৰোধত পেৰামিটাৰৰ কিবা সমস্যা ৰৈছে।',
 'api-error-missingresult' => "আভ্যন্তৰীণ ত্ৰুটি: অনুলিপি সফল হৈছেনে নাই তাক নিশ্চিত কৰিব পৰা নগ'ল।",
-'api-error-mustbeloggedin' => "ফাà¦\87ল à¦\86পল'ড à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦²à¦\97à§\8dâ\80\8c à¦\87নà§\8dâ\80\8c à¦\95ৰিব à¦²à¦¾à¦\97িব।",
+'api-error-mustbeloggedin' => "ফাà¦\87ল à¦\86পল'ড à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87 à¦\86পà§\81নি à¦ªà§\8dৰৱà§\87শ à¦\95ৰাà¦\9fà§\8b à¦¬à¦¾à¦§à§\8dযতামà§\82লà¦\95 ।",
 'api-error-mustbeposted' => 'আভ্যন্তৰীণ ত্ৰুটি: এই অনুৰোধত HTTP POST প্ৰয়োজন।',
 'api-error-noimageinfo' => "আপল'ড সফল হৈছে, কিন্তু চাৰ্ভাৰে ফাইলটোৰ সম্পৰ্কে কোনো তথ্য প্ৰদান কৰা নাই।",
 'api-error-nomodule' => "আভ্যন্তৰীণ ত্ৰুটি: কোনো আপল'ড মডিউল ঠিক কৰা হোৱা নাই।",
 'api-error-ok-but-empty' => 'আভ্যন্তৰীণ ত্ৰুটি: চাৰ্ভাৰে কোনো সঁহাৰি জনোৱা নাই।',
 'api-error-overwrite' => 'এতিয়া থকা ফাইলৰ ওপৰত লিখা নিষেধ।',
 'api-error-stashfailed' => 'আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ফাইল সাঁচি ৰখাত চাৰ্ভাৰ অসমৰ্থ হৈছে।',
-'api-error-timeout' => 'à¦\85শা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
+'api-error-timeout' => 'à¦\86শা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
 'api-error-unclassified' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে।',
 'api-error-unknown-code' => 'অজ্ঞাত সমস্যা: "$1"।',
 'api-error-unknown-error' => "আভ্যন্তৰীণ ত্ৰুটি: আপোনাৰ ফাইলটো আপল'ড কৰাত কিবা সমস্যা হৈছে।",
@@ -3775,4 +3780,6 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
 'duration-millennia' => '$1 {{PLURAL:$1|সহস্ৰাব্দ|সহস্ৰাব্দ}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "$1 চাৰ্ভাৰত তলা মোকোলাই দিব পৰা নগ'ল",
 );
index 7bc1e4b..5ad6fa2 100644 (file)
@@ -11,6 +11,7 @@
  * @author Kaganer
  * @author Mikel
  * @author Remember the dot
+ * @author Savh
  * @author Xuacu
  * @author לערי ריינהארט
  */
@@ -64,7 +65,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Anubrir les ediciones vixilaes nos cambeos recientes',
 'tog-newpageshidepatrolled' => 'Anubrir les páxines vixilaes na llista de páxines nueves',
 'tog-extendwatchlist' => "Espander la llista de vixilancia p'amosar tolos cambeos, non solo los más recientes.",
-'tog-usenewrc' => 'Cambeos recientes ameyoraos (necesita JavaScript)',
+'tog-usenewrc' => 'Agrupar los cambeos por páxina nos cambeos recientes y na llista de vixilancia (necesita JavaScript)',
 'tog-numberheadings' => 'Autonumberar los encabezaos',
 'tog-showtoolbar' => "Amosar la barra de ferramientes d'edición (JavaScript)",
 'tog-editondblclick' => 'Editar páxines con doble clic (necesita JavaScript)',
@@ -451,6 +452,8 @@ El motivu conseñáu ye «''$2''».",
 L'alministrador que lu bloquió dio esti motivu: «$3».",
 'invalidtitle-knownnamespace' => 'Títulu non válidu col espaciu de nomes «$2» y el testu «$3»',
 'invalidtitle-unknownnamespace' => "Titulu non válidu col númberu $1 d'espaciu de nomes desconocíu y el testu «$2»",
+'exception-nologin' => 'Non identificáu',
+'exception-nologin-text' => "Esta páxina o aición necesita qu'anicies sesión nesta wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Fallu de configuración: Escáner de virus desconocíu: ''$1''",
@@ -1748,7 +1751,7 @@ Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
 'sharedupload-desc-there' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
 Llee la [páxina de descripción del ficheru $2] pa más información.',
 'sharedupload-desc-here' => "Esti ficheru ye de $1 y puen usalu otros proyeutos.
-La descripción de la [páxina de descripción del ficheru $2] s'amuesa darréu.",
+La descripción de la [$2 páxina de descripción del ficheru] s'amuesa darréu.",
 'sharedupload-desc-edit' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
 Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.",
 'sharedupload-desc-create' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
@@ -1945,6 +1948,7 @@ Date cuenta de qu'otros sitios web puen enllazar a un ficheru con una URL direut
 Pues filtrar la visualización seleicionando una mena de rexistru, el nome d'usuariu (teniendo en cuenta les mayúscules y minúscules) o la páxina afectada (teniendo en cuenta tamién les mayúscules y minúscules).",
 'logempty' => 'Nun hai coincidencies nel rexistru.',
 'log-title-wildcard' => "Buscar títulos qu'emprimen con esti testu",
+'showhideselectedlogentries' => 'Amosar/anubrir les entraes del rexistru seleicionaes',
 
 # Special:AllPages
 'allpages' => 'Toles páxines',
@@ -2857,6 +2861,7 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'spambot_username' => 'Llimpieza de spam de MediaWiki',
 'spam_reverting' => 'Revirtiendo a la cabera versión que nun contién enllaces a $1',
 'spam_blanking' => 'Toles revisiones teníen enllaces a $1; dexando en blanco',
+'spam_deleting' => 'Toles revisiones teníen enllaces a $1, desaniciando',
 
 # Info page
 'pageinfo-title' => 'Información sobro "$1"',
@@ -3774,4 +3779,6 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nun se pudieron afitar los bloqueos nel sirvidor $1.',
 );
index 18c6564..1a04bbb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Azerbaijani (Azərbaycanca)
+/** Azerbaijani (azərbaycanca)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 0e235c3..bc72730 100644 (file)
@@ -125,30 +125,30 @@ $messages = array(
 'monday' => 'Дүшәмбе',
 'tuesday' => 'Шишәмбе',
 'wednesday' => 'Шаршамбы',
-'thursday' => 'Ð\9aеÑ\81еаÒ\99на',
+'thursday' => 'Кесаҙна',
 'friday' => 'Йома',
 'saturday' => 'Шәмбе',
-'sun' => 'Йәкшәмбе',
-'mon' => 'Дүшәмбе',
-'tue' => 'Шишәмбе',
-'wed' => 'Шаршамбы',
-'thu' => 'Кесеаҙна',
-'fri' => 'Ð\99ома',
-'sat' => 'Шәмбе',
-'january' => 'ғинуар',
-'february' => 'февраль',
-'march' => 'март',
-'april' => 'апрель',
-'may_long' => 'май',
-'june' => 'июнь',
-'july' => 'июль',
-'august' => 'август',
-'september' => 'сентябрь',
-'october' => 'октябрь',
-'november' => 'ноябрь',
-'december' => 'декабрь',
-'january-gen' => 'ғинуар',
-'february-gen' => 'февраль',
+'sun' => 'Йш',
+'mon' => 'Дш',
+'tue' => 'Шш',
+'wed' => 'Шр',
+'thu' => 'Кс',
+'fri' => 'Ð\99м',
+'sat' => 'Шб',
+'january' => 'ғинуар (һыуығай)',
+'february' => 'февраль (шаҡай)',
+'march' => 'март (буранай)',
+'april' => 'апрель (алағарай)',
+'may_long' => 'май (һабанай)',
+'june' => 'июнь (һөтай)',
+'july' => 'июль (майай)',
+'august' => 'август (урағай)',
+'september' => 'сентябрь (һарысай)',
+'october' => 'октябрь (ҡарасай)',
+'november' => 'ноябрь (ҡырпағай)',
+'december' => 'декабрь (аҡъюлай)',
+'january-gen' => 'ғинуар (һыуығай)',
+'february-gen' => 'февраль (шаҡай)',
 'march-gen' => 'март',
 'april-gen' => 'апрель',
 'may-gen' => 'май',
@@ -157,8 +157,8 @@ $messages = array(
 'august-gen' => 'август',
 'september-gen' => 'сентябрь',
 'october-gen' => 'октябрь',
-'november-gen' => 'ноябрь',
-'december-gen' => 'декабрь',
+'november-gen' => 'ноябрь (ҡырпағай)',
+'december-gen' => 'декабрь (аҡъюлай)',
 'jan' => 'ғин',
 'feb' => 'фев',
 'mar' => 'мар',
@@ -274,7 +274,7 @@ $messages = array(
 'mediawikipage' => 'Хәбәрҙәр битен ҡарарға',
 'templatepage' => 'Ҡалып битен ҡарарға',
 'viewhelppage' => 'Ярҙам битен ҡарарға',
-'categorypage' => 'Ð\9aаÑ\82егоÑ\80иÑ\8f битен ҡарарға',
+'categorypage' => 'ТөÑ\80көм битен ҡарарға',
 'viewtalkpage' => 'Фекер алышыу битен ҡарарға',
 'otherlanguages' => 'Башҡа телдәрҙә',
 'redirectedfrom' => '($1 битенән йүнәлтелде)',
@@ -450,9 +450,9 @@ $2',
 'ns-specialprotected' => '«{{ns:special}}» исем арауығындағы биттәрҙе үҙгәртеп булмай.',
 'titleprotected' => "Был исем менән бит яһау [[User:$1|$1]] тарафынан тыйылған.
 Белдерелгән сәбәп: ''$2''.",
-'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибенде.
+'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибендә.
 
£Ñ\81Ñ\82ановивÑ\88ий Ñ\8dÑ\82оÑ\82 Ñ\80ежим Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80 Ð¾Ñ\81Ñ\82авил Ñ\81ледÑ\83Ñ\8eÑ\89ее Ñ\80азÑ\8aÑ\8fÑ\81нение: «''$3''».",
\91Ñ\8bл Ñ\81иклÓ\99Ò¯Ò\99е Ð¸Ð½Ð´ÐµÑ\80гÓ\99н Ñ\85аким Ð±Ð¸Ñ\80гÓ\99н Ð°Ò£Ð»Ð°Ñ\82ма:«''$3''».",
 
 # Virus scanner
 'virus-badscanner' => "Көйләү хатаһы: Билдәһеҙ вирустар сканеры: ''$1''",
@@ -1097,6 +1097,7 @@ $1",
 'prefs-beta' => 'Бета версияһы мөмкинлектәре',
 'prefs-datetime' => 'Көн һәм ваҡыт',
 'prefs-labs' => 'Һынау өсөн мөмкинлектәр',
+'prefs-user-pages' => 'Ҡатнашыусы бите',
 'prefs-personal' => 'Шәхси мәғлүмәттәр',
 'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
 'prefs-watchlist' => 'Күҙәтеү исемлеге',
@@ -3667,9 +3668,9 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => 'минут',
-'duration-hours' => 'сәғәт',
-'duration-days' => 'көн',
+'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|ун көнлөк|ун көнлөктәр}}',
index e2b8e2c..8ea0efa 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Filipinayzd
+ * @author Geopoet
  * @author Kaganer
  * @author Steven*fung
  * @author Urhixidur
@@ -95,50 +96,63 @@ $specialPageAliases = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Kurítan an mga takód:',
+'tog-underline' => 'Linyahan an kilyawan:',
 'tog-justify' => 'Pantayón an mga talodtód',
 'tog-hideminor' => 'Tagóon an mga saradít na paghirá sa nakakaági pa sanáng pagbabàgo',
-'tog-hidepatrolled' => 'Tagóon an mga saradít na paghirá sa nakakaági pa sanáng pagbabàgo',
-'tog-newpageshidepatrolled' => 'Tagóon an mga pigbabantayán na pahina sa lista nin mga bàgong pahina',
-'tog-extendwatchlist' => 'Palakbangón an taytáy kan babantayan tanganing mahilíng an gabós na angay na pagbàgo',
-'tog-usenewrc' => 'Gamiton an pinauróg na mga nakaaging pagbàgo (kaipohan nin JavaScript)',
-'tog-numberheadings' => 'Tolos na pagbílang sa mga pamayohán',
-'tog-showtoolbar' => 'Ipahilíng an toolbar nin paghirá (JavaScript)',
-'tog-editondblclick' => 'Hirahón sa dobleng paglagatík an mga pahina (JavaScript)',
-'tog-editsection' => 'Togótan an paghirá kan seksyon sa paági kan mga takód na [hirá]',
-'tog-editsectiononrightclick' => 'Togotan an paghirá kan seksyon sa pag-lagatik sa walá sa mga titulo nin seksyon (JavaScript)',
-'tog-showtoc' => 'Ipahilíng an indise kan mga laog (para sa mga pahinang igwang sobra sa 3 pamayohan)',
-'tog-rememberpassword' => 'Giromdomón an mga paglaóg ko sa panlibotlibot na iní (sa nakaaging $1 {{PLURAL:$1|aldaw|mga aldaw}})',
-'tog-watchcreations' => 'Idúgang an mga pahinang ginigíbo ko sa pigbabantayan ko',
-'tog-watchdefault' => 'Idúgang an mga pahinang pighíhirá ko sa pigbabantayan ko',
-'tog-watchmoves' => 'Idúgang an mga pahinang piglilípat ko sa pigbabantayan ko',
-'tog-watchdeletion' => 'Idúgang an mga pahinang pigpapárà ko sa pigbabantayan ko',
-'tog-minordefault' => 'Markahán an gabos na paghirá nin sadit na paghirá',
+'tog-hidepatrolled' => 'Tagóa an patrolyadong mga paghirá sa nakakaági pa sanáng pagbabàgo',
+'tog-newpageshidepatrolled' => 'Tagóa an patrolyadong mga pahina gikan sa listahan kan bàgong pahina',
+'tog-extendwatchlist' => 'Palakbanga an bantay-listahan (watchlist) na maipahiling an gabos na pinagbago, bako sana an pinakahurihang binago',
+'tog-usenewrc' => 'Grupong mga pagbabago sa kada pahina kan pinakahuring mga binago asin bantay-listahan (minakaipo nin JavaScript)',
+'tog-numberheadings' => 'Tolos-bilang na mga pamayohán',
+'tog-showtoolbar' => 'Ihayag an toolbar nin paghirá (minakaipo nin JavaScript)',
+'tog-editondblclick' => 'Liwaton an mga pahina sa dobleng pagpindot (minakaipo nin JavaScript)',
+'tog-editsection' => 'Paganaha an paghihirá kan seksyon sa paági kan [liwaton] na kilyawan',
+'tog-editsectiononrightclick' => 'Paganaha an paghihirá kan seksyon sa paagi kan patoong pagpindot sa mga titulo kan seksyon (minakaipo nin JavaScript)',
+'tog-showtoc' => 'Ihayag an taytayan nin mga laog (para sa mga pahinang igwang sobra sa 3 pamayohan)',
+'tog-rememberpassword' => 'Giromdoma an sakong paglaóg sa kilyaw (browser) na ini (para sa maximum na $1 {{PLURAL:$1|aldaw|mga aldaw}})',
+'tog-watchcreations' => 'Idagdag sa mga pahina na ako an nagmukna sa sakong bantay-listahan',
+'tog-watchdefault' => 'Idagdag an mga pahina na ako an nagliwat sa sakong bantay-listahan',
+'tog-watchmoves' => 'Idagdag an mga pahina na ako an nagbalyo sa sakong bantay-listahan',
+'tog-watchdeletion' => 'Idagdag an mga pahina na ako an nagpura sa sakong bantay-listahan',
+'tog-minordefault' => 'Markahán gabos na saradit na pagliwat sa paaging panugmad',
 'tog-previewontop' => 'Ipahilíng an patànaw bàgo an kahon nin paghirá',
 'tog-previewonfirst' => 'Ipahilíng an patànaw sa enot na paghirá',
-'tog-nocache' => 'Pugolon an pag-abáng nin mga pahina',
-'tog-enotifwatchlistpages' => 'E-koreohan ako pag pigribayan an pahinang pigbabantayan ko',
+'tog-nocache' => 'Pundoha an pagsaray nin mga pahina sa kilyaw (browser)',
+'tog-enotifwatchlistpages' => 'E-koreohan ako kunsoarin an sarong pahina sa sakong bantay-listahan (watchlist) pinagribayan',
 'tog-enotifusertalkpages' => 'E-koreohan ako pag pigribáyan an pahina kan sakóng olay',
 'tog-enotifminoredits' => 'E-koreohan man giraray ako para sa saradit na paghirá kan mga pahina',
-'tog-enotifrevealaddr' => 'Ibunyág an adres kan sakuyang e-koreo sa mga surat na pag-abiso',
-'tog-shownumberswatching' => 'Ipahilíng an bilang kan nagbabantay na mga parágamit',
-'tog-fancysig' => 'Mga bàgong pirma (mayò nin tolos na pantakod)',
-'tog-externaleditor' => 'Gamíton mùna an panluwas na editor',
-'tog-externaldiff' => 'Gamíton mùna an diff na panluwás',
-'tog-showjumplinks' => 'Maka-"luksó sa" mga takód na pangabót',
-'tog-uselivepreview' => 'Gamíton an patànaw na direkto (JavaScript) (Experimental)',
-'tog-forceeditsummary' => 'Ipaarám sakuyà kun malaog sa sumáriong blanko nin paghirá',
-'tog-watchlisthideown' => 'Tagóon an mga saradít na paghirá sa pigbabantayán',
-'tog-watchlisthidebots' => 'Tagóon an mga paghirá kan bot sa pigbabantayán',
-'tog-watchlisthideminor' => 'Tagóon an mga saradít na paghirá sa pigbabantayán',
-'tog-nolangconversion' => 'Pogólon an pagríbay nin mga lain-lain',
-'tog-ccmeonemails' => 'Padarahán ako nin mga kopya kan e-koreo na pigpadara ko sa ibang mga parágamit',
-'tog-diffonly' => 'Dai ipahilíng an mga laog nin pahina sa babâ kan kaib',
-'tog-showhiddencats' => 'Ipahiling an mga nakatagong kategorya',
+'tog-enotifrevealaddr' => 'Ibuyágyag an sakong e-koreong address sa pan-abisong mga e-koreo',
+'tog-shownumberswatching' => 'Ihayag an numero kan nagbabantay na mga parágamit',
+'tog-oldsig' => 'Tugmadong pirma',
+'tog-fancysig' => 'Trataron an pirma na wiki-teksto (mayo nin awtomatikong kilyaw)',
+'tog-externaleditor' => 'Gamíta nguna an panluwas na editor (para sa mga eksperto sana, minakaipo nin espesyal na mga panuytoy (settings) sa saimong kompyuter.',
+'tog-externaldiff' => 'Gamíta an panluwas na diff nguna (para sa mga eksperto sana, minakaipo nin espesyal na mga panuytoy (settings) sa saimong kompyuter.
+[//www.mediawiki.org/wiki/Manual:External_editors Kadagdagang impormasyon.])',
+'tog-showjumplinks' => 'Paganaha an "luksó sa" kilyaw nin kalangkayan',
+'tog-uselivepreview' => 'Gamíta an buhay na patànaw (minakaipo nin JavaScript) (eksperimental)',
+'tog-forceeditsummary' => 'Ibunyaw sako kun maglalaog sa blangkong kalanyang nin paghirá',
+'tog-watchlisthideown' => 'Tagóa an sakong mga pagliwat gikan sa bantay-listahan',
+'tog-watchlisthidebots' => 'Tagóa an bot na mga pagliwat gikan sa bantay-listahan',
+'tog-watchlisthideminor' => 'Tagóa an saradít na mga pagliwat gikan sa bantay-listahan',
+'tog-watchlisthideliu' => 'Tagoon an mga pagbabagong nahimo kan mga nakalaog na paragamit gikan sa bantayang listahan',
+'tog-watchlisthideanons' => 'Tagoon an mga pagbabagong nahimo kan mga bakong bistadong paragamit gikan sa bantayang listahan',
+'tog-watchlisthidepatrolled' => 'Tagoon an mga patrolyadong pagbabago gikan sa bantayang listahan',
+'tog-nolangconversion' => 'Pundoha an mga palaen na pagbabago',
+'tog-ccmeonemails' => 'Ipadara sako an mga kopya kan e-koreo na pinadara ko sa ibang mga paragamit',
+'tog-diffonly' => 'Dai tabi ihayag an laog kan pahina sa ibaba nin mga diffs',
+'tog-showhiddencats' => 'Ihayag an nakatagong mga kategorya',
+'tog-norollbackdiff' => 'Omidohon an diff matapos himoon an pagbalikot',
 
 'underline-always' => 'Pirmi',
 'underline-never' => 'Nungka',
-'underline-default' => 'Browser na normal',
+'underline-default' => 'Kilyaw na panugmad',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Baguhon an estilo nin kalwig sa sinasakupan',
+'editfont-default' => 'Kilyawang tugmad',
+'editfont-monospace' => 'Manarong espasyo nin kalwig',
+'editfont-sansserif' => 'Kalwig na Sans-serif',
+'editfont-serif' => 'Kalwig na Serif',
 
 # Dates
 'sunday' => 'Domingo',
@@ -194,120 +208,140 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorya|Mga kategorya}}',
-'category_header' => 'Mga artikulo sa kategoryang "$1"',
+'category_header' => 'Mga pahina sa kategoryang "$1"',
 'subcategories' => 'Mga sub-kategorya',
 'category-media-header' => 'Media sa kategoryang "$1"',
-'category-empty' => "''Mayò nin laog an kategoryang ini sa ngonyan.''",
+'category-empty' => "''Ining kategorya sa presente mayong laog na mga pahina o media.\"",
 'hidden-categories' => '{{PLURAL:$1|Nakatagong kategorya|Mga nakatagong kategorya}}',
 'hidden-category-category' => 'Mga nakatagong kategorya',
-'category-subcat-count-limited' => 'Igwa nin {{PLURAL:$1|sub-kategorya|$1 mga sub-kategorya}} an artikulong ini.',
-'category-article-count' => '{{PLURAL:$2|An mga minasunod na pahina sana an laog kan kategoryang ini|An mga minasunod na {{PLURAL:$1|pahina|$1 pahina}} an yaon sa kategoryang ini, sa $2 gabos.}}',
-'category-article-count-limited' => 'Yaon sa presenteng kategorya an mga minasunod na {{PLURAL:$1|pahina|$1 pahina}}.',
+'category-subcat-count' => '{{PLURAL:$2|Ining kategorya igwa sana kan minasunod na sub-kategorya.|Ining kategorya igwa kan minasunod {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}',
+'category-subcat-count-limited' => 'Ining kategorya igwa kan minasunod na {{PLURAL:$1|sub-kategorya|$1 mga sub-kategorya}}.',
+'category-article-count' => '{{PLURAL:$2|An mga minasunod na pahina sana an laog kan kategoryang ini|An mga minasunod na {{PLURAL:$1|pahina|$1 mga pahina}} an yaon sa kategoryang ini, gikan sa $2 kagabsan.}}',
+'category-article-count-limited' => 'An minasunod na {{PLURAL:$1|pahina|$1 mga pahina}} yaon sa presenteng kategorya.',
+'category-file-count' => '{{PLURAL:$2|Ining kategorya naglalaman sana kan minasunod na sagunson.|An minasunod {{PLURAL:$1|sagunson iyo|$1 na mga sagunson iyo}} sa kategoryang ini, na ginahi sa $2 sa kabilogan.}}',
+'category-file-count-limited' => 'An minasunod {{PLURAL:$1|na sagunson|$1 na mga sagunson}} yaon sa presenteng kategorya.',
 'listingcontinuesabbrev' => 'sunód',
+'index-category' => 'Hinukdoang mga pahina',
+'noindex-category' => 'Bakong hinukdoang mga pahina',
+'broken-file-category' => 'Mga pahina na igwang nagkaparasa na sagunsong kilyawan',
 
 'about' => 'Manonongod',
 'article' => 'Laog na pahina',
 'newwindow' => '(minabukas sa bàgong bintanà)',
-'cancel' => 'Pondohón',
-'moredotdotdot' => 'Dakol pa...',
+'cancel' => 'Kanselaron',
+'moredotdotdot' => 'Kadagdagan...',
 'mypage' => 'An sakóng pahina',
 'mytalk' => 'An sakóng olay',
-'anontalk' => 'Olay para sa IP na ini',
-'navigation' => 'Paglibotlíbot',
+'anontalk' => 'Olay para kaining IP address',
+'navigation' => 'Nabigasyon',
 'and' => '&#32;asin',
 
 # Cologne Blue skin
-'qbfind' => 'Hanápon',
-'qbbrowse' => 'Maghalungkát',
-'qbedit' => 'Hirahón',
+'qbfind' => 'Maghanap',
+'qbbrowse' => 'Halungkáta',
+'qbedit' => 'Liwata',
 'qbpageoptions' => 'Ining pahina',
 'qbpageinfo' => 'Konteksto',
-'qbmyoptions' => 'Mga pahina ko',
+'qbmyoptions' => 'Sakong mga pahina',
 'qbspecialpages' => 'Espesyal na mga pahina',
-'faq' => 'HD',
-'faqpage' => 'Project:HD',
+'faq' => 'PPK (Pirmihang Pighahapot na mga kahaputan)',
+'faqpage' => 'Project:PPK (Pirmihang Pighahapot na mga Kahaputan)',
 
 # Vector skin
-'vector-action-delete' => 'paráon',
+'vector-action-addsection' => 'Idagdag an topic',
+'vector-action-delete' => 'puráon',
 'vector-action-move' => 'Ibalyó',
-'vector-action-protect' => 'Olangán',
-'vector-view-create' => 'Maggíbo',
+'vector-action-protect' => 'Protektaran',
+'vector-action-undelete' => 'Bawion sa pagkapara',
+'vector-action-unprotect' => 'Ribayan an proteksyon',
+'vector-simplesearch-preference' => 'Paganahon an pinapusog na suhestiyon sa paghahanap (Yanong panhanap sana)',
+'vector-view-create' => 'Magmukna',
 'vector-view-edit' => 'Liwatón',
-'vector-view-history' => 'Hilingón an uusipón',
-'vector-view-view' => 'Basáhon',
+'vector-view-history' => 'Tanawon sa historiya',
+'vector-view-view' => 'Basáha',
 'vector-view-viewsource' => 'Hilingón an ginikánan',
-'actions' => 'Mga paghiro',
-'namespaces' => 'Liang-liang',
+'actions' => 'Mga aksyon',
+'namespaces' => 'Mga espasyong ngaran',
+'variants' => 'Mga pinalaen',
 
 'errorpagetitle' => 'Salâ',
-'returnto' => 'Magbwelta sa $1.',
-'tagline' => 'Halì sa {{SITENAME}}',
-'help' => 'Tabang',
-'search' => 'Hanápon',
-'searchbutton' => 'Hanápon',
-'go' => 'Dumanán',
-'searcharticle' => 'Dumanán',
-'history' => 'Uusipón nin pahina',
-'history_short' => 'Uusipón',
-'updatedmarker' => 'nabàgo poon kan huri kong pagdalaw',
-'printableversion' => 'Naipiprentang bersyon',
-'permalink' => 'Permanenteng takod',
-'print' => 'Iprenta',
-'view' => 'Mga paghilíng',
+'returnto' => 'Magbalik sa $1.',
+'tagline' => 'Gikan sa {{SITENAME}}',
+'help' => 'Katabangan',
+'search' => 'Maghanap',
+'searchbutton' => 'Maghanap',
+'go' => 'Dumani',
+'searcharticle' => 'Lakaw',
+'history' => 'Historiya kan pahina',
+'history_short' => 'Historiya',
+'updatedmarker' => 'dinagdagan poon kan sakong huring pagbisita',
+'printableversion' => 'Puwede maimprintang bersyon',
+'permalink' => 'Permanenteng kilyawan',
+'print' => 'Imprintaron',
+'view' => 'Tanawon',
 'edit' => 'Liwatón',
-'create' => 'Maggíbo',
-'editthispage' => 'Hirahón ining pahina',
-'create-this-page' => 'Gibohon ining pahina',
-'delete' => 'Paraon',
-'deletethispage' => 'Paraon ining pahina',
-'undelete_short' => 'Bawion an pagparà {{PLURAL:$1|paghirá|$1 mga paghirá}}',
-'protect' => 'Protehiran',
-'protect_change' => 'ribáyan an proteksyon',
-'protectthispage' => 'Protehiran ining pahina',
-'unprotect' => 'bawion an pagprotehir',
-'unprotectthispage' => 'Bawion an proteksyon kaining pahina',
-'newpage' => 'Bàgong pahina',
-'talkpage' => 'Pag-olayan ining pahina',
-'talkpagelinktext' => 'Pag-oláyan',
+'create' => 'Muknaon',
+'editthispage' => 'Liwata ining pahina',
+'create-this-page' => 'Muknaon ining pahina',
+'delete' => 'Puraon',
+'deletethispage' => 'Puraon ining pahina',
+'undelete_short' => 'Bawia an pagpurà kan {{PLURAL:$1|sarong pagliwat|$1 mga pagliwat}}',
+'viewdeleted_short' => 'Hilngon {{PLURAL:$1|sarong pinara na pagliwat|$1 mga pinara na pagliwat}}',
+'protect' => 'Protektari',
+'protect_change' => 'Ribayan',
+'protectthispage' => 'Protektaran ining pahina',
+'unprotect' => 'Ribayi an proteksyon',
+'unprotectthispage' => 'Ribayi an proteksyon kaining pahina',
+'newpage' => 'Bàguhong pahina',
+'talkpage' => 'Orolayan ining pahina',
+'talkpagelinktext' => 'Olay',
 'specialpage' => 'Espesyal na Pahina',
-'personaltools' => 'Mga gamit na personal',
-'postcomment' => 'Magkomento',
-'articlepage' => 'Hilingón an pahina kan laog',
-'talk' => 'Orólay',
-'views' => 'Mga hilíng',
-'toolbox' => 'Kagamitan',
-'userpage' => 'Hilingón an pahina kan parágamit',
-'projectpage' => 'Hilingón an pahina kan proyekto',
-'imagepage' => 'Hilingón an pahina kan ladawan',
-'mediawikipage' => 'Hilingón an pahina kan mensahe',
-'templatepage' => 'Hilingón an pahina kan templato',
-'viewhelppage' => 'Hilingón an pahina kan tabang',
-'categorypage' => 'Hilingón an pahina kan kategorya',
-'viewtalkpage' => 'Hilingón an orólay',
-'otherlanguages' => 'Sa ibáng mga tatarámon',
+'personaltools' => 'Personal na mga kagamitan',
+'postcomment' => 'Baguhong seksyon',
+'articlepage' => 'Tanawon an laog kan pahina',
+'talk' => 'Orolayan',
+'views' => 'Mga Tanawon',
+'toolbox' => 'Kagamitang kahon',
+'userpage' => 'Tanawon an pahina kan parágamit',
+'projectpage' => 'Tanawon an pahina kan proyekto',
+'imagepage' => 'Hilngón an pahina nin sagunson (file)',
+'mediawikipage' => 'Tanawon an pahina kan mensahe',
+'templatepage' => 'Tanawon an pahina kan panguyog',
+'viewhelppage' => 'Tanawon an pahina nin katabangan',
+'categorypage' => 'Tanawon an pahina nin kategorya',
+'viewtalkpage' => 'Tanawon an orolayan',
+'otherlanguages' => 'Sa ibang mga lengguwahe',
 'redirectedfrom' => '(Piglikay halì sa $1)',
 'redirectpagesub' => 'Ilikáy an pahina',
 'lastmodifiedat' => 'Huring pigbàgo an pahinang iní $2 kan $1.',
 'viewcount' => 'Binukasán ining pahina nin {{PLURAL:$1|sarong beses|nin $1 beses}}.',
 'protectedpage' => 'Protektadong pahina',
-'jumpto' => 'Maglukso sa:',
-'jumptonavigation' => 'paglibotlíbot',
-'jumptosearch' => 'hanápon',
+'jumpto' => 'Magluksó sa:',
+'jumptonavigation' => 'paglibotlibot',
+'jumptosearch' => 'hanapon',
+'view-pool-error' => 'Sori tabi, an mga server kargado sa oras na ini.
+Grabe kadakol an mga paragamit na pinagprubaran mahiling an pahinang ini.
+Makihalat tabi nin kadikit na panahon bago ka magprubara na makapaglaog sa pahinang ini.
+
+$1',
+'pool-timeout' => 'Timeout naghahalat para makapanugpon',
+'pool-queuefull' => 'An grupong panproseso panoon',
+'pool-errorunknown' => 'Bakong bistadong sala',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Dapít sa {{SITENAME}}',
 'aboutpage' => 'Project:Manonongód',
 'copyright' => 'Makukua an laog sa $1.',
 'copyrightpage' => '{{ns:project}}:Mga derechos nin parásurat',
-'currentevents' => 'Mga panyayári sa ngonyán',
-'currentevents-url' => 'Project:Mga panyayari sa ngonyan',
+'currentevents' => 'Mga pangyayari sa ngunyán',
+'currentevents-url' => 'Project:Mga pangyayari sa ngunyán',
 'disclaimers' => 'Mga pagpabayà',
-'disclaimerpage' => 'Project:Pankagabsán na pagpabayà',
+'disclaimerpage' => 'Project:Pangkagabsán na pagpabayà',
 'edithelp' => 'Paghirá kan pagtabang',
 'edithelppage' => 'Help:Pagliwát',
 'helppage' => 'Help:Mga laóg',
-'mainpage' => 'Pangenot na Pahina',
-'mainpage-description' => 'Pangenot na Pahina',
+'mainpage' => 'Panginot na Pahina',
+'mainpage-description' => 'Panginot na Pahina',
 'policy-url' => 'Project:Palakáw',
 'portal' => 'Portal kan komunidad',
 'portal-url' => 'Project:Portal kan Komunidad',
@@ -316,7 +350,7 @@ $messages = array(
 
 'badaccess' => 'Salang permiso',
 'badaccess-group0' => 'Dai ka tinotogotan na gibohon an aksyon na saimong hinahagad.',
-'badaccess-groups' => 'An aksyon na saimong hinahagad limitado sa mga parágamit sa sarô sa mga grupong $1.',
+'badaccess-groups' => 'An aksyon na saimong pinaghahagad limitado sa mga parágamit na {{PLURAL:$2|an grupo|saro sa mga grupo}}: $1.',
 
 'versionrequired' => 'Kaipuhan an bersyon $1 kan MediaWiki',
 'versionrequiredtext' => 'Kaipuhan an bersyon $1 kan MediaWiki sa paggamit kan pahinang ini. Hilíngón an [[Special:Version|Bersyon kan pahina]].',
@@ -336,6 +370,8 @@ $messages = array(
 'toc' => 'Mga laóg',
 'showtoc' => 'ipahilíng',
 'hidetoc' => 'tagóon',
+'collapsible-collapse' => 'Pinahalipot',
+'collapsible-expand' => 'Pinahalawig',
 'thisisdeleted' => 'Hilingón o isulít an $1?',
 'viewdeleted' => 'Hilingón an $1?',
 'restorelink' => '{{PLURAL:$1|sarong pinarang paghirá|$1 na pinarang paghirá}}',
@@ -347,13 +383,15 @@ $messages = array(
 'page-rss-feed' => '"$1" Hungit na RSS',
 'page-atom-feed' => '"$1" Hungit na Atomo',
 'feed-atom' => 'Atomo',
-'red-link-title' => '$1 (daí pa naisusurat)',
+'red-link-title' => '$1 (an pahina bako pang eksistido)',
+'sort-descending' => 'Suysoy paibaba',
+'sort-ascending' => 'Suysoy paitaas',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pahina',
 'nstab-user' => 'Pahina nin paragamít',
 'nstab-media' => 'Pahina kan media',
-'nstab-special' => 'Espesyal',
+'nstab-special' => 'Espesyal na pahina',
 'nstab-project' => 'Pahina kan proyekto',
 'nstab-image' => 'File',
 'nstab-mediawiki' => 'Mensahe',
@@ -363,7 +401,9 @@ $messages = array(
 
 # Main script and global functions
 'nosuchaction' => 'Mayong siring na aksyon',
-'nosuchactiontext' => 'An gibo na pinílì nin URL dai bisto kan wiki',
+'nosuchactiontext' => 'An aksyon na pinanungdan kan kilyawan sarong imbalido.
+Baka napasala ka sa pagsurat kan kilyawan, o nagsunod nin salang kilyawan.
+Ini minapanungod man nin sarong kubol (bug) sa ginagamit na software kan {{SITENAME}}.',
 'nosuchspecialpage' => 'Mayong siring na espesyal na páhina',
 'nospecialpagetext' => '<strong>Dai pwede an pahinang espesyal na pinilî mo.</strong>
 
@@ -372,28 +412,36 @@ Pwede mong mahiling an lista nin mga marhay na pahina sa [[Special:SpecialPages|
 # General errors
 'error' => 'Salâ',
 'databaseerror' => 'Salâ sa base nin datos',
-'dberrortext' => 'May salâ sa hapot na sintaksis kan base nin datos.
-Pwedeng may salâ digdi.
-An huring probar na hapót iyo:
+'dberrortext' => 'Sarong datos-sarayan na may napasalang sintaks an nangyari.
+Ini puwedeng minapanungod nin sarong kubol (bug) sa software.
+An pinakahuring pagprubar sa datos-sarayan naghahapot nin:
 <blockquote><tt>$1</tt></blockquote>
-hale sa aksyón "<tt>$2</tt>".
-AnSQL ko nagbalik nin salâ na"<tt>$3: $4</tt>".',
-'dberrortextcl' => 'May salâ sa hapót nin sintaksis kan base nin datos.
-Ini an huring probar na hapót:
+hale sa laog kan punksyon na "<tt>$2</tt>".
+An datos-sarayan nagbalik nin sala na "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'Sarong datos-sarayan na may napasalang sintaks an nangyari.
+An pinakahuring pagprubar sa datos-sarayan naghahapot nin:
 "$1"
-sa aksyón na "$2".
-AnSQL ko nagbalik nin salâ na"$3: $4"',
+na hale sa laog kan punksyon na "$2".
+An datos-sarayan nagbalik nin sala na "<tt>$3: $4</tt>".',
 'laggedslavemode' => 'Patanid: An pahina pwedeng dai nin pagbabâgo sa ngonyan.',
 'readonly' => 'Kandado an base nin datos',
 'enterlockreason' => 'Magkaag tabì nin rason sa pagkandado, asin ikalkulo kun nuarin bubukasón an kandado',
 'readonlytext' => 'Sarado mùna an base nin datos sa mga bàgong entrada asin iba pang mga pagribay, pwede gayod sa rutinang pagmantenir kan base nin datos, despues, mabalik na ini sa normal.
 
 Ini an eksplikasyon kan tagamató na nagkandado kaini: $1',
+'missing-article' => 'An datos-sarayan dae nakanagbo kan teksto nin sarong pahina na dapat kuta nang managboan, pinagngaran na "$1" S2.
+
+Ini pirmeng pinagkakausa sa paagi nin pagsusunod nin sarong lumang diff o historiyang kilyawan na yaon sa sarong pahinang pinagpura na.
+
+Kun iyo ini an kaso, ika nakanagbo nin sarong kubol (bug) sa software.
+Pakireport tabi ini sa [[Special:ListUsers/sysop|administrador]], na naka-antabay sa kilyawan.',
 'missingarticle-rev' => '(pagbàgo#: $1)',
 'missingarticle-diff' => '(Kaibhán: $1, $2)',
-'readonly_lag' => 'Enseguidang nakandado an base nin datos mientras makaabot an base nin datos na esklabo saiyang amo.',
+'readonly_lag' => 'Tulostulos na pagkandado an base nin datos mantang makaabot an base nin datos na esklabo saiyang amo.',
 'internalerror' => 'Panlaog na salâ',
 'internalerror_info' => 'Panlaog na salâ: $1',
+'fileappenderrorread' => 'Dae nakakabasa nin "$1" habang pinagdadagdag.',
+'fileappenderror' => 'Dae nakakapagdagdag nin "$1" sagkod "$2".',
 'filecopyerror' => 'Dai naarog an mga file na "$1" hasta "$2".',
 'filerenameerror' => 'Dai natàwan nin bàgong ngaran an file na "$1" sa "$2".',
 'filedeleteerror' => 'Dai naparà an file na "$1".',
@@ -403,118 +451,218 @@ Ini an eksplikasyon kan tagamató na nagkandado kaini: $1',
 'unexpected' => 'Dai pighuhunà na balór: "$1"="$2".',
 'formerror' => 'Salâ: dai pwedeng isumitir an porma',
 'badarticleerror' => 'Dai pwedeng gibohon ini sa ining páhina.',
-'cannotdelete' => 'Dai naparà an pahina o file na napilî. (Pwede na naparà na ini kan ibang paragamit.)',
+'cannotdelete' => 'An pahina o an sagunson (file) na "$1" dae tabi napupura.
+Ini puwede nang napura kan iba.',
+'cannotdelete-title' => 'Dae mapura an pahina na "$1"',
+'delete-hook-aborted' => 'An pagpura pinundo kan pangawit.
+Ini dae nagtao nin kapaliwanagan.',
 'badtitle' => 'Salâ an titulo',
 'badtitletext' => 'Dai pwede an hinagad na titulo nin pahina, o mayong laog, o sarong titulong pan-ibang tatarámon o pan-ibang wiki na sala an pagkatakód. Pwedengigwa ining sarô o iba pang mga karakter na dai pwedeng gamiton sa mga titulo.',
-'perfcached' => 'Nakaabang an minasunod na mga datos, asin pwede ser na mga lumâ na. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Nakaabang an nagsusunod na mga datos, asin huring nabâgo sa $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'An minasunod na datos pinagtago asin bakong gayo napapanahon. An maximum na {{PLURAL:$1|sarong resulta na|$1 mga resulta na}} yaon sana sa pinagtago.',
+'perfcachedts' => 'An minasunod na datos pinagtago, asin huring pinagdagdagan kan $1. An maximum na {{PLURAL:$4|sarong result na |$4 mga resulta na }} yaon sana sa pinagtago.',
 'querypage-no-updates' => 'Pigpopogol mùna an mga pagbabàgo sa pahinang ini. Dai mùna mababàgo an mga datos digdi.',
 'wrong_wfQuery_params' => 'Salâ na parámetro sa wfQuery()<br />
 Acción: $1<br />
 Hapót: $2',
 'viewsource' => 'Hilingón an ginikanan',
+'viewsource-title' => 'Hilnga an piggikanan para sa $1',
+'actionthrottled' => 'An aksyon pinagpugulan',
+'actionthrottledtext' => 'Bilang sarong pangontra sa spam, ika limitadong sanang himoon ining aksyon sa kadakulon na beses sa halipot sanang panahon, asin ika nakasobra na sa limitasyong ini.
+Paki-otroha giraray sa nagkapirang minuto sana.',
 'protectedpagetext' => 'An pahinang ini pigsará tangarig pogolon an paghirá.',
 'viewsourcetext' => 'Pwede mong hilingón asin arógon an ginikanan kan pahinang ini:',
+'viewyourtext' => "Saimong mahihiling asin makokopya an gikanan kan '''saimong mga pinagriliwat''' sa pahinang ini:",
 'protectedinterface' => 'An pahinang ini nagtatao nin interface para sa software, asin sarado tangarig mapondo an pag-abuso.',
-'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
-Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'editinginterface' => "'''Warning:''' Ika nagliliwat kan pahina na ginagamit sa pagtao nin pantahaw-olay na teksto para sa software.
+An mga pagbabago kaining pahina makaka-apekto sa hitsura kan pantahaw-olay nin paragamit para sa iba man na paragamit.
+Para sa mga pagdadakit-taramon, pakikonsidera man tabi an paggagamit kan [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], an MediaWiking lokalisasyon kan proyekto.",
 'sqlhidden' => '(nakatagô an hapót nin SQL)',
 'cascadeprotected' => 'Pinoprotehirán ining páhina sa mga paghirá, ta sarô ini sa mga minasunod na {{PLURAL:$1|páhina|mga páhina}} na pinoprotehiran kan opsyón na "katarata" na nakabuká:
 $2',
 'namespaceprotected' => "Mayô kang permisong maghirá kan mga páhina sa '''$1''' ngaran-espacio.",
-'ns-specialprotected' => 'An mga páhinang nasa {{ns:special}} na ngaran-espacio dai pwedeng hirahón.',
+'customcssprotected' => 'Ika mayong permiso sa pagliwat kaining pahinang CSS, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.',
+'customjsprotected' => 'Ika mayong permiso sa pagliwat kaining pahinang JavaScript, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.',
+'ns-specialprotected' => 'An mga pahinang nasa {{ns:special}} na liang-liang dai pwedeng hirahón.',
+'titleprotected' => 'Ining titulo pinagprotektaran poon pagkamukna ni [[User:$1|$1]].
+An rason na pinagtao iyo na "\'\'$2\'\'".',
+'filereadonlyerror' => 'Dae kinayang baguhon an sagunson (file) "$1$ nin huli ta an repositoryo kan sagunson "$2" yaon sa kamugtakan na basahon sana.
+
+An administrador na iyo an nagkandado kaini nagpahayag kaining kapaliwanagan: "$3".',
+'invalidtitle-knownnamespace' => 'Imbalidong titulo na igwang espasyadong ngaran na "$2" asin teksto na "$3"',
+'invalidtitle-unknownnamespace' => 'Imbalidong titulo na igwang nin bakong bistado na bilang kan espasyadong ngaran na $1 asin teksto na "$2"',
+'exception-nologin' => 'Dae ka nakalaog',
+'exception-nologin-text' => 'Ining pahina o aksyon minakaipo saimo na maglaog kaining wiki.',
 
 # Virus scanner
-'virus-badscanner' => "Saláng konfigurasyon: dai aram an virus scanner: ''$1''",
-'virus-unknownscanner' => 'dai aram an antivirus:',
+'virus-badscanner' => "Raot na kasalansanan: Bakong bistadong virus scanner: ''$1''",
+'virus-scanfailed' => 'An paghingipid (scan) nagpalya (Koda $1)',
+'virus-unknownscanner' => 'bakong bistadong antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''Nakaluwas ka na.'''
+'logouttext' => "'''Ika po sa ngunyan nakaluwas na.'''
 
-Pwede mo pang gamiton an {{SITENAME}} na dai nagpapabisto, o pwede ka giraray lumaog
-bilang pareho o ibang parágamit. Giromdomon tabî na an ibang mga páhina pwedeng mahiling pa na garo nakalaog ka pa, hasta limpyarón mo an abang kan ''browser'' mo.",
-'welcomecreation' => "== Maogmang Pagdagos, $1! ==
-
-Nagibo na an ''account'' mo. Giromdomon tabi na ribayán an saimong mga kabôtan sa {{SITENAME}}.",
+Ika makakadagos pa sa paggamit kan {{SITENAME}} na dai nagpapabisto, o ika [[Special:UserLogin|Maglaog giraray]] bilang pareho o bilang ibang paragamit.
+Giromdoma na an ibang mga pahina mapuwedeng padagos na magpapahiling siring baga na kun ika garo yaon man sana sa laog, sagkod na saimong malinigan mo an sarayan sa kilyawan.",
+'welcomecreation' => '== Maogmang Pag-abot, $1! ==
+An saimong panindog (account) naimukna na tabi.
+Dae ka man tabi malingaw na ribayan an saimong [[Special:Preferences|{{SITENAME}} mga kabôtan]].',
 'yourname' => 'Pangaran kan paragamit:',
-'yourpassword' => 'Sekretong panlaog:',
-'yourpasswordagain' => 'Itaták giraray an sekretong panlaog:',
-'remembermypassword' => 'Giromdomon an paglaog ko sa kompyuter na ini(for a maximum of $1 {{PLURAL:$1|day|days}})',
-'yourdomainname' => "An saimong ''domain'':",
-'externaldberror' => "Igwang nin salang panluwas pantunay kan base nin datos o dai ka pigtotogotan na bâgohon an saimong panluwas na ''account''.",
+'yourpassword' => 'Pasa-taramon:',
+'yourpasswordagain' => 'Pakilaog giraray kan sekretong panlaog:',
+'remembermypassword' => 'Giromdoma an sakong paglaog sa kilyaw (browser) na ini (para sa maksimum na $1 {{PLURAL:$1|aldaw|mga aldaw}})',
+'securelogin-stick-https' => 'Magpirmeng konektado sa HTTPS matapos kang maglaog',
+'yourdomainname' => 'An saimong kasakupan:',
+'externaldberror' => 'Igwa gayod sala sa arinman kan patunay sa datos-sarayan o ika dae pinagtugutan na bâgohon an saimong panluwas na panindog.',
 'login' => 'Maglaog',
-'nav-login-createaccount' => 'Maglaog / maggibo nin account',
-'loginprompt' => 'Kaipuhan may cookies ka para makalaog sa {{SITENAME}}.',
-'userlogin' => 'Maglaog / maggibo nin account',
+'nav-login-createaccount' => 'Maglaog / magmukna nin panindog',
+'loginprompt' => 'Ika kaipong paganahon an mga cookies tanganing makalaog sa {{SITENAME}}.',
+'userlogin' => 'Maglaog / magmukna nin panindog',
+'userloginnocreate' => 'Maglaog ka',
 'logout' => 'Magluwas',
 'userlogout' => 'Magluwás',
-'notloggedin' => 'Mayò sa laog',
-'nologin' => "Mayò ka pa nin entrada? '''$1'''.",
-'nologinlink' => 'Maggibo nin account',
-'createaccount' => 'Maggibo nin account',
-'gotaccount' => "Igwa ka na nin account? '''$1'''.",
+'notloggedin' => 'Dae ka nakalaog',
+'nologin' => 'Mayò ka pa nin panindog (account)? $1.',
+'nologinlink' => 'Magmukna nin panindog',
+'createaccount' => 'Magmukna nin panindog',
+'gotaccount' => 'Igwa ka na tabi nin panindog? $1.',
 'gotaccountlink' => 'Maglaog',
-'createaccountmail' => 'sa e-koreo',
-'badretype' => 'Dai parehas an pigtaták mong mga sekretong panlaog.',
-'userexists' => 'Piggagamit na kan iba an pangaran. Magpili tabî nin iba.',
-'loginerror' => 'Salâ an paglaog',
-'createaccounterror' => 'Daí maggíbo an account: $1.',
-'nocookiesnew' => 'Nagibo na an account kan parágamit, alagad dai ka pa nakalaog. Naggagamit nin cookies an {{SITENAME}} para magpalaog sa mga parágamit. Nakapondo an cookies mo. Paandaron tabì ini, dangan, maglaog gamit an bàgo mong pangaran asin sekretong panlaog.',
-'nocookieslogin' => 'Naggagamit nin mga cookies an {{SITENAME}} para magpalaog nin mga paragamit. Nakapondo an mga cookies mo. Paandaron tabi ini asin probaran giraray.',
-'noname' => 'Dai ka pa nagkaag nin pwedeng gamiton na pangaran.',
-'loginsuccesstitle' => 'Matriumpo an paglaog',
-'loginsuccess' => "'''Nakalaog ka na sa {{SITENAME}} \"\$1\".'''",
-'nosuchuser' => 'Mayong paragamit sa pangaran na "$1". Reparohon an pigsurat mo, o maggibo nin bàgong account.',
-'nosuchusershort' => 'Mayong paragamit sa nagngangaran na "$1". Reparohon an pigsurat mo.',
-'nouserspecified' => 'Kaipuhan mong kaagan nin pangaran.',
-'wrongpassword' => 'Salâ an pigtaták na sekretong panlaog. Probaran giraray tabì.',
-'wrongpasswordempty' => 'Mayong pigkaag na sekretong panlaog. Probaran giraray tabì.',
-'passwordtooshort' => 'Salâ o halìpoton an saimong sekretong panlaog. Igwa dapat ining dai mababà sa {{PLURAL:$1|1 karakter|$1 karakter}} asin iba man sa pinilì mong pangaran.',
-'mailmypassword' => 'Ipadara sa e-koreo an sekretong panlaog',
-'passwordremindertitle' => 'Panpaísi nin sekretong panlaog halì sa {{SITENAME}}',
-'passwordremindertext' => 'Sarong paragamit (pwedeng ika, halì sa IP na $1)
-an naghagad nin bàgong sekretong panlaog para sa {{SITENAME}} ($4).
-"$3" na an bàgong sekretong panlaog ni "$2".
-Kaipuhan maglaog ka asin ibalyó an saimong sekretong panlaog.
-
-Kun ibang tawo an naghagad kaini o kun nagiromdóman mo na an saimong sekretong panlaog asin habô mo nang ribayan ini, dai mo na pagintiendehon ining mensahe. Ipadagos na an paggamit kan dating sekretong panlaog.',
-'noemail' => 'Mayong e-koreo na nakarehistro sa parágamit na "$1".',
-'passwordsent' => 'Igwang bàgong sekretong panlaog na pigpadará sa e-koreong nakarehistro ki "$1".
-Maglaog tabì giraray pagnakua mo na ini.',
-'blocked-mailpassword' => 'Pigbagatan sa paghirá an saimong IP, asin pigpopogolan na magamit an pagbawi kan sekretong panlaog tangarig maibitaran an pagabuso.',
-'eauthentsent' => 'May ipinadarang e-koreong kompirmasyon sa piniling adres nin e-koreo.
-Bàgo pa magpadara nin iba pang e-koreo sa account na ini, kaipuhan tabing sunodon an mga instruksyon na nasa e-koreo, tangarig makompirmar na talagang saimo ining account.',
-'throttled-mailpassword' => 'May pinadara nang paisi nin sekretong panlaog, sa huring
-$1 na oras. Para pogolan an mga pagabuso, sarong paisi sana an ipapadara sa laog nin
-$1 na oras.',
-'mailerror' => 'Salâ an pagpadará nin e-koreo: $1',
-'acct_creation_throttle_hit' => 'Pasensya, nakagibo ka na nin $1 accounts. Dai ka na makakagibo pa.',
-'emailauthenticated' => "An saimong ''e''-surat pinatunayan sa $1.",
-'emailnotauthenticated' => "Dai pa napatunayan an saimong ''e''-surat. Mayong ipapadarang ''e''-surat para sa ano man na minasunod na gamit.",
-'noemailprefs' => "Magpilî tabî nin ''e''-surat tangarig magandar ining mga gamit.",
-'emailconfirmlink' => "Kompirmaron tabî an saimong ''e''-surat",
-'invalidemailaddress' => "Dai matogotan ining ''e''-surat ta garo salâ an ''format'' kaini. Magkaag tabî nin tamâ o dai pagkaagan.",
-'accountcreated' => "Nagibo na an ''account''.",
-'accountcreatedtext' => "Ginibo na an ''account'' para ki $1.",
-'loginlanguagelabel' => 'Tataramon: $1',
+'userlogin-resetlink' => 'Nakalingaw ka sa panlaog mong detalye?',
+'createaccountmail' => 'Sa paagi nin e-koreo',
+'createaccountreason' => 'Rason:',
+'badretype' => 'An mga sekretong panlaog mong pinagtatak bakong pareho.',
+'userexists' => 'Paragamit na ngarang piglaog may naggagamit na.
+Pakipili nin ibang ngaran tabi.',
+'loginerror' => 'An paglaog napasalâ',
+'createaccounterror' => 'Dae tabi maimukna an panindog: $1.',
+'nocookiesnew' => 'An panindog kan paragamit namukna na, pero ika dae pa tabi nakalaog.
+{{SITENAME}} naggagamit nin cookies tanganing makalaog an mga paragamit.
+Ika igwang mga cookies na dae pinagana.
+Tabi paganaha sinda, dangan maglaog ka sa saimong baguhon na pangaran kan paragamit asin sekretong panlaog.',
+'nocookieslogin' => '{{SITENAME}} naggagamit nin mga cookies para sa maglaog na mga paragamit.
+Ika igwang mga cookies na dae pinagana.
+Tabi paganaha sinda asin otroha giraray.',
+'nocookiesfornew' => 'An panindog kan paragamit dae pinagmukna, nin huli ta dae nyamo kumpirmado an pinaggikanan kaini.
+Pakipaseguro na saimong pinagana an cookies, ikarga giraray ining pahina asin probaran mo otro.',
+'noname' => 'Ika dae tabi nakapagkaag nin sarong balidong pangaran nin paragamit.',
+'loginsuccesstitle' => 'Matrayumpo an saimong paglaog',
+'loginsuccess' => "'''Ika ngunyan nakalaog na sa {{SITENAME}} bilang si \"\$1\".'''",
+'nosuchuser' => 'Dae pang paragamit na ginagamit an pangaran na "$1".
+An mga ngaran nin paragamit sensitibo gayo sa tipahan.
+Pakireparo kan saimong espeling, o [[Special:UserLogin/signup|Magmukna nin bagong panindog]].',
+'nosuchusershort' => 'Mayo po tabing paragamit na an pangaran "$1".
+Paki-tsek an saimong espeling.',
+'nouserspecified' => 'Kaipuhan mong magkaag nin sarong pangaran nin paragamit.',
+'login-userblocked' => 'An paragamit na ini pinagkubkob. An paglaog dae pinagtutugutan.',
+'wrongpassword' => 'Salâ an pigtaták na sekretong panlaog.
+Tabi probaran giraray.',
+'wrongpasswordempty' => 'An sekretong panlaog pinagtatak na blangko.
+Tabi probaran giraray.',
+'passwordtooshort' => 'Mga sekretong panlaog dapat igwa nin {{PLURAL:$1|1 karakter|$1 mga karakter}}.',
+'password-name-match' => 'An saimong sekretong panlaog dapat laen sa saimong paragamit na ngaran.',
+'password-login-forbidden' => 'An paggamit kaining pangaran nin paragamit asin sekretong panlaog pinagbabawal.',
+'mailmypassword' => 'Paki-koreo an bagong sekretong panlaog',
+'passwordremindertitle' => 'Bagong temporaryo na sekretong panlaog para sa {{SITENAME}}',
+'passwordremindertext' => 'May sarong tawo (pwedeng ika gayod, gikan sa IP address na $1) naghagad nin sarong bagong sekretong panlaog para sa {{SITENAME}} ($4). Sarong temporaryong sekretong panlaog para sa paragamit "$2" an pinagmukna asin pinagtuytoy na magin "$3". Kun iyo ini an saimong katuyuhan, kaipuhan mong maglaog asin magpili nin sarong bagong sekretong panlaog ngunyan.
+An saimong temporaryong sekretong panlaog mapapaso sa laog nin {{PLURAL:$5|sarong aldaw|$5 aldaw}}. 
+
+Kun ibang tawo an naghimo kaining kahagadan, o kun saimo nang nagiromdoman an saimong sekretong panlaog, asin habo mo nang ribayan ini, ipasapara mo na sana an mensaheng ini asin ipadagos mo nang gamiton an saimong lumang sekretong panlaog.',
+'noemail' => 'Mayo tabing e-koreong address na nakarehistro para sa paragamit na "$1".',
+'noemailcreate' => 'Kaipuhan kang magtao nin sarong balidong address sa e-surat',
+'passwordsent' => 'Sarong baguhon na sekretong panlaog an ipinadara sa e-koreong address na nakarehistro para ki "$1".
+Tabi maglaog giraray matapos mong maresibe ini.',
+'blocked-mailpassword' => 'An saimong IP address pinagkubkob na magliwat, asin kaya dae tinutugutan na gumamit kan pambawi nin sekretong panlaog na punksyon tanganing makalikay sa abuso.',
+'eauthentsent' => 'Sarong e-koreong pankumpirmasyon an ipinadara sa nominadong e-koreong address.
+Bago an ibang e-koreo ipinadara sa panindog, ika igwang pagsunudong na mga instruksyon na yaon sa e-koreo, tanganing kumpirmaron na an panindog tunay talagang saimo.',
+'throttled-mailpassword' => 'Sarong pagiromdom kan sekretong panlaog an ipinadara na, sa laog nin {{PLURAL:$1|hour|$1 hours}}.
+Tangarig malikayan an abuso, saro sanang pagiromdom kan sekretong panlaog an ipinapadara sa lambang {{PLURAL:$1|hour|$1 hours}}.',
+'mailerror' => 'Salâ an pagpadará kan koreo: $1',
+'acct_creation_throttle_hit' => 'Mga bisita kaining wiki na ginagamit an saimong IP address nagmukna nin {{PLURAL:$1|1 panindog|$1 mga panindog}} sa nakaaging aldaw, na iyo ngani an maximum na pinagtutugot sa laog kan peryodong panahon.
+Bilang resulta, an mga bisita na naggagamit kaining IP address dae nguna makakamukna nin mga panindog.',
+'emailauthenticated' => 'An saimong e-koreo awtentikado kan $2 sa $3.',
+'emailnotauthenticated' => 'An saimong e-surat dae pa tabi pinagpatunayan. 
+Mayong e-surat an ipapadara para sa arinman kan minasunod na estima.',
+'noemailprefs' => 'Magkaag nin sarong e-koreong address sa saimong mga kabotan para gumana ining mga estima.',
+'emailconfirmlink' => 'Kompirmaron tabî an saimong e-koreong address',
+'invalidemailaddress' => 'An e-koreo dae akseptado habang ini minapahiling na igwa nin imbalidong panugmad.
+Pakilaog sana tabi nin sarong tugmadong koreo o pabayae na mayong laman an suratan.',
+'cannotchangeemail' => 'An panindog na address sa e-surat dati mariribayan sa Wiki na ini.',
+'emaildisabled' => 'Ining sayt dae makakapagpadara nin mga e-surat.',
+'accountcreated' => 'Panindog pinagmukna na',
+'accountcreatedtext' => 'An paragamit na panindog para sa $1 pinagmukna na.',
+'createaccount-title' => 'Panindog na pagmukna para sa {{SITENAME}}',
+'createaccount-text' => 'May tawong nagmukna nin sarong panindog na gamit an saimong address na e-surat sa {{SITENAME}} ($4) na may ngaran na "$2, na may sikretong panlaog na "$3".',
+'usernamehasherror' => 'Paragamit na ngaran dae puwede na igwang simbolikong mga kabtang',
+'login-throttled' => 'Nakapaghimo ka na nin kadakulon na pagprubar sa paglaog dae pa sana nahaloy. Mapuwede lang po na maghalat bago magprubar giraray.',
+'login-abort-generic' => 'An saimong paglaog dae nakadagos - Pinundo',
+'loginlanguagelabel' => 'Lengguwahe: $1',
+'suspicious-userlogout' => 'An hinahagad mong magluwas pinagpundo nin huli ta ini gayod pinagpadara sa paagi nin sarong pasang kilyaw o proksing hilom.',
+
+# E-mail sending
+'php-mail-error-unknown' => 'Bakong bantog na kasalaan sa PHP mail() function.',
+'user-mail-no-addy' => 'Nagprubar na magpadara nin e-koreo na mayo nin e-koreong address.',
 
 # Change password dialog
-'resetpass' => "Ipwesto giraray an sekretong panlaog kan ''account''",
-'resetpass_announce' => "Nakalaog ka na may kodang temporaryong ''e''-sinurat. Para matapos an paglaog, kaipuhan mong magpwesto nin bâgong sekretong panlaog digdi:",
-'resetpass_text' => '<!-- Magdugang nin teksto digdi -->',
-'resetpass_header' => 'Ibalyó an sekretong panlaog',
-'oldpassword' => 'Lumang sekretong panlaog:',
-'newpassword' => 'Bàgong sekretong panlaog:',
+'resetpass' => 'Ribayan an sekretong panlaog',
+'resetpass_announce' => 'Ika nakalaog na na igwang sarong temporaryong koda sa e-koreo.
+Tanganing tapuson an paglalaog, ika kaipong magkaag nin sarong baguhon na sekretong panlaog digdi:',
+'resetpass_text' => '<!-- Magdagdag nin teksto digdi -->',
+'resetpass_header' => 'Ribayan an panindog na sekretong panlaog',
+'oldpassword' => 'Dating sekretong panlaog:',
+'newpassword' => 'Bàguhon na sekretong panlaog:',
 'retypenew' => 'Itaták giraray an bàgong panlaog:',
 'resetpass_submit' => 'Ipwesto an sekretong panlaog dangan maglaog',
 'resetpass_success' => 'Naribayan na an saimong sekretong panlaog! Pigpapadagos ka na...',
-'resetpass_forbidden' => 'Dai pwedeng ribayan an mga sekretong panlaog sa ining wiki',
+'resetpass_forbidden' => 'An mga sekretong panlaog dae puwedeng maribayan',
+'resetpass-no-info' => 'Ika dapat nakalaog na tanganing direktang makagamit kaining pahina.',
 'resetpass-submit-loggedin' => 'Ribayan an sekretong panlaog',
+'resetpass-submit-cancel' => 'I-kansela',
 'resetpass-wrong-oldpass' => 'Saláng temporaryo o presenteng sekretong panlaog.
 Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong sekretong panlaog.',
 'resetpass-temp-password' => 'Temporaryong sekretong panlaog:',
 
+# Special:PasswordReset
+'passwordreset' => 'Pakibago kan sekretong panlaog',
+'passwordreset-text' => 'Kumpletoha ining porma tanganing makaresibe nin pampagiromdom na e-koreo kan detalye nin saimong panindog.',
+'passwordreset-legend' => 'Pakibago kan sekretong panlaog',
+'passwordreset-disabled' => 'An pagbago kan sekretong panlaog pinagpundo sa wiking ini.',
+'passwordreset-pretext' => '{{PLURAL:$1||Pakilaog kan saro sa mga pedaso nin datos sa ibaba}}',
+'passwordreset-username' => 'Paragamit-ngaran:',
+'passwordreset-domain' => 'Kasakupan:',
+'passwordreset-capture' => 'Hilngon an kinaluwasang e-koreo?',
+'passwordreset-capture-help' => 'Kun saimong i-tsek ini box, an e-koreo (na igwang temporaryong sekretong panlaog) ipapahiling saimo siring na ini ipagpapadara sa paragamit.',
+'passwordreset-email' => 'E-koreong address:',
+'passwordreset-emailtitle' => 'Mga detalye kan panindog sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'May sarong tawo (pwedeng ika gayod, gikan sa IP address na $1) naghagad nin sarong pagiromdom kan detalye kan saimong panindog para sa {{SITENAME}} ($4). An minasunod na paragamit {{PLURAL:$3|panindog iyo an|mga panindog iyo an}} na asosyado kaining e-koreong address:
+
+$2
+
+{{PLURAL:$3|Ining temporaryong sekretong panlaog|Ining mga temporaryong panlaog}} mapapaso sa {{PLURAL:$5|sarong aldaw|$5 mga aldaw}}.
+Ika dapat na maglaog asin magpili nin sarong bagong sekretong panlaog ngunyan. Kun ibang tawo an naghimo kaining kahagadan, o kun saimo nang nagiromdoman an saimong orihinal na sekretong panlaog, asin habo mo nang ribayan ini, ipasapara mo na sana an mensaheng ini asin ipadagos mo nang gamiton an saimong lumang sekretong panlaog.',
+'passwordreset-emailtext-user' => 'Paragamit $1 sa {{SITENAME}} naghahagad nin sarong pagiromdom kan detalye nin saimong panindog para sa {{SITENAME}}
+($4). An minasunod na paragamit {{PLURAL:$3|panindog iyo an|mga panindog iyo an}} na asosyado kaining e-koreong address:
+
+$2
+
+
+{{PLURAL:$3|Ining temporaryong sekretong panlaog|Ining mga temporaryong panlaog}} mapapaso sa {{PLURAL:$5|sarong aldaw|$5 mga aldaw}}.
+Ika dapat na maglaog asin magpili nin sarong bagong sekretong panlaog ngunyan. Kun ibang tawo an naghimo kaining kahagadan, o kun saimo nang nagiromdoman an saimong orihinal na sekretong panlaog, asin habo mo nang ribayan ini, ipasapara mo na sana an mensaheng ini asin ipadagos mo nang gamiton an saimong lumang sekretong panlaog.',
+'passwordreset-emailelement' => 'Paragamit-ngaran: $1
+Temporaryong sekretong panlaog: $2',
+'passwordreset-emailsent' => 'Sarong pampagiromdom na e-koreo ipinadara na.',
+'passwordreset-emailsent-capture' => 'Sarong pampagiromdom na e-koreo ipinadara na, ipinapahiling sa may ibaba.',
+'passwordreset-emailerror-capture' => 'Sarong pampagiromdom na e-koreo pinaghimo na, ipinapahiling sa may ibaba, alagad an pagpapadara kaini sa paragamit nagpalya: $1',
+
+# Special:ChangeEmail
+'changeemail' => 'Ribayan an e-koreong address',
+'changeemail-header' => 'Ribayan an panindog na e-koreong address',
+'changeemail-text' => 'Kumpletoha ining porma tanganing ribayan an saimong e-koreong address. Kinakaipo mong ilaog an saimong sekretong panlaog tanganing kumpirmaron ining pagribay.',
+'changeemail-no-info' => 'Ika dapat nakalaog na tanganing direktang makagamit kaining pahina.',
+'changeemail-oldemail' => 'Presenteng e-koreong address:',
+'changeemail-newemail' => 'Bagong e-koreong address:',
+'changeemail-none' => 'mayo tabi.',
+'changeemail-submit' => 'Ribayan an e-koreo',
+'changeemail-cancel' => 'Kanselaha',
+
 # Edit page toolbar
 'bold_sample' => 'Tekstong mahìbog',
 'bold_tip' => 'Mahìbog na teksto',
@@ -529,9 +677,9 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
 'nowiki_sample' => "Isaliot digdi an tekstong dai na-''format''",
 'nowiki_tip' => "Dai pagindiendehon pag-''format'' kan wiki",
 'image_sample' => 'Halimbawa.jpg',
-'image_tip' => 'Nakaturay na file',
+'image_tip' => 'Nakalubog na sagunson',
 'media_sample' => 'Halimbawa.ogg',
-'media_tip' => 'Takod nin file',
+'media_tip' => 'Kilyaw nin sagunson (file)',
 'sig_tip' => 'Pirma mo na may taták nin oras',
 'hr_tip' => 'Pabalagbag na linya (use sparingly)',
 
@@ -546,77 +694,114 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
 'showlivepreview' => 'Patànaw na direkto',
 'showdiff' => 'Hilingón an mga pagbabàgo',
 'anoneditwarning' => "'''Patanid:''' Dai ka nakalaog. Masusurat an saimong IP sa uusipón kan pagbabàgo kan pahinang ini.",
+'anonpreviewwarning' => 'Dae ka tabi nakalaog. An pagtatagama matala kan saimong IP address sa historya nin pagliwat sa pahinang ini.',
 'missingsummary' => "'''Paisi:''' Dai ka nagkaag nin sumád kan paghirâ. Kun pindotón mo giraray an Itagama, maitatagama an hirá mo na mayô kaini.",
 'missingcommenttext' => 'Paki lâgan nin komento sa ibabâ.',
-'missingcommentheader' => "'''Paisi:''' Dai ka nagkaag nin tema/pamayohan para sa ining komentaryo. Kun pindoton mo giraray an Itagama, maitatagama an hira mo na mayô ini.",
+'missingcommentheader' => "'''Pagiromdom:''' Ika dae tabi nagtao nin sarong panultol (subject)/Pamayong linya (headline) para kaining sinambit mo.
+Kun saimong pinduton an \"{{int:savearticle}}\" giraray, an saimong pigliwat matatagama na mayo kaiyan.",
 'summary-preview' => 'Patànaw nin sumada:',
 'subject-preview' => 'Patânaw nin tema/pamayohan:',
 'blockedtitle' => 'Pigbágat an parágamit',
-'blockedtext' => "'''Pigbagat an pangaran o IP mo.'''
+'blockedtext' => "'''An saimong paragamit na ngaran o IP address pinagkubkob.'''
 
-Si $1 an nagbagat. Ini an itinaong rasón, ''$2''.
+An pagkubkob hinimo ni $1.
+An rason na ipinagtao iyo na ''$2''.
 
-* Pagpoon kan pagbagat: $8
-* Pagpasó kan pagbagat: $6
-* Piniling bagaton: $7
+* Pagpoon kan pagkubkob: $8
+* Pagpasó kan pagkubkob: $6
+* Katuyuhan kan parakubkob: $7
 
-Pwede mong suratan si $1 o an iba pang [[{{MediaWiki:Grouppage-sysop}}|administrador]] para pagoralayan an manonongod sa pagbagat.
-Dai mo pwedeng gamiton an ' e-koreohan an paragamit ' kun mayong tamang e-surat sa  [[Special:Preferences|mga kabòtan kan account]] mo asin dai ka pigbagat sa paggamit kaini.
-$3 an presente mong IP, asin #$5 an ID nin pigbagat. Ikaag tabì an arin man o pareho sain man na hapót.",
-'autoblockedtext' => "Enseguidang pigbagat an IP mo ta ginamit ini kan ibang parágamit, na binagat ni \$1.
-Ini an rasón:
+Ika puwedeng magkontak sa $1 or ibang [[{{MediaWiki:Grouppage-sysop}}|administrador]] tanganing pag-orolayan an pagkubkob.
+Ika dae makakagamit kan 'e-koreo kaining paragamit' na panuytuyan laen lang na may sarong balidong e-koreo address na ipinahayag sa saimong [[Special:Preferences|panindog na mga kabotan]] asin ika dae pinagkubkob para sa paggamit kaini.
+An saimong presenteng IP address iyo $3, asin an kubkob ID iyo #$5.
+Pakibale na lang tabi an gabos na mga detalye sa itaas sa anuman na mga kahaputan na saimong himoon.",
+'autoblockedtext' => 'An saimong IP address awtomatikong pinagkubkob nin huli ta ini pinaggamit kan ibang paragamit, na pinagkubkob ni $1.
+An rason na ipinagtao iyo:
 
-:''\$2''
+:\'\'$2\'\'
 
-* Pagpoon kan pagbagat: \$8
-* Pagpasó kan pagbagat: \$6
+* Pagpoon kan pagkubkob: $8
+* Pagpasó kan pagkubkob: $6
+* Katuyuhan kan parakubkob: $7
 
-Pwedeng mong suratan si \$1 o an iba pang mga
-[[{{MediaWiki:Grouppage-sysop}}|administrador]] para pagolayan an manonongod sa pagbagat.
+Puwede mong kontakon si $1 o saro sa [[{{MediaWiki:Grouppage-sysop}}|mga administrador] tanganing pag-orolayan an kubkob.
 
-Giromdomon tabî na pwede mo sanang gamiton an \"''e''-suratan ining parágamit\" na gamit kun igwa kang tamang ''e''-surat na nakarehistro saimong [[Special:Preferences|mga kabôtan nin parágamit]] asin dai ka pigbabagat sa paggamit kaini.
+Patanid tabi dae mo puwedeng gamiton an "e-koreo kaining paragamit" estima laen lang kun ika igwa nin sarong balidong e-koreo address na rehistrado sa saimong [[Special:Preferences|paragamit na mga kabotan]] asin ika dae pinagkubkob para sa paggamit kaini.
 
-\$5 an pigbagat na ID. Ikaag tabî ining ID sa gabos na paghapot mo.",
+An saimong presenteng IP address iyo an $3, asin and Kubkob ID iyo an #$5.
+Pakibale tabi an gabos na mga detalye sa itaas sa anuman na mga kahaputan na saimong himoon.',
 'blockednoreason' => 'mayong itinaong rason',
 'whitelistedittext' => 'Kaipuhan mong $1 tangarig makahirá nin mga páhina.',
 'confirmedittext' => "Kaipuhan mong kompirmaron an saimong ''e''-surat. Ipwesto tabî asin patunayan an saimong ''e''-surat sa [[Special:Preferences|mga kabôtan kan parágamit]].",
-'nosuchsectiontitle' => 'Mayong siring na seksyón',
-'nosuchsectiontext' => 'Mayo man an seksyón an pighihira mo.',
+'nosuchsectiontitle' => 'Dae managboan an seksyon',
+'nosuchsectiontext' => 'Ika nagprubar na liwaton an sarong seksyon na bakong eksistido.
+Ini puwedeng pinagbalyo o pinagpara na habang saimong pinaghihiling an pahina.',
 'loginreqtitle' => 'Kaipuhan Maglaog',
 'loginreqlink' => 'maglaog',
 'loginreqpagetext' => 'Kaipuhan kang $1 tangarig makahilíng nin ibang pahina.',
 'accmailtitle' => 'Napadará na an sekretong panlaog.',
-'accmailtext' => 'An sekretong panlaog ni "$1" naipadará na sa $2.',
+'accmailtext' => "An patsambang pagpuyos kan sekretong panlaog para ki [[User talk:$1|$1]] ipinagpadara na ki $2.
+
+An sekretong panlaog para sa bagong panindog mapuwede tabing maribayan ''[[Special:ChangePassword|Ribayan an sekretong panlaog]]'' na pahina matapos na makalaog.",
 'newarticle' => '(Bàgo)',
 'newarticletext' => 'Sinunod mo an takod sa pahinang mayò pa man.
 Tangarig magibo an pahina, magpoon pagsurat sa kahon sa babâ
 (hilingón an [[{{MediaWiki:Helppage}}|pahina nin tabang]] para sa iba pang impormasyon).
 Kun dai tinuyong nakaabot ka digdi, pindoton sana an back sa browser mo.',
-'anontalkpagetext' => "----''Ini an pahina kan olay kan sarong parágamit na dai bisto na dai pa naggibo nin account o dai naggagamit kaini. Entonces, piggagamit mi an numero nin IP tangarig mabisto siya. Ining IP pwede gamiton kan manlain-lain na mga parágamit. Kun ika sarong paraágamit na dai bisto asin konbensido ka sa pigsasabi ka ining mga komento bakô man dapit saimo,  [[Special:UserLogin|maggibo nin'' account ''o maglaog]] tabì tangarig maibitaran an pagkaribong saimo asin sa ibang mga parágamit na dai bisto.''",
-'noarticletext' => 'Mayò man na teksto sa pahinang iní, pwede mong [[Special:Search/{{PAGENAME}}|hanápon iníng titulo nin pahina]] sa ibáng mga pahina o [{{fullurl:{{FULLPAGENAME}}|action=edit}} hirahón iníng pahina].',
-'clearyourcache' => "'''Pagiromdom:''' Pagkatapos kan pagtagama, pwede ser na kaipuhan mong lawigawan an abang kan ''browser'' para mahiling mo an mga pagbabâgo. '''Mozilla / Firefox / Safari:''' doonan an ''shift'' an ''Shift'' sabay an pagpindot sa ''Reload'', o pindoton an ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sa Apple Mac); '''IE:''' doonan (dai halion an muro) an ''Ctrl'' mientras sabay an pagpindot sa  ''Refresh'', o pindoton an ''Ctrl-F5''; '''Konqueror:''': pindoton sana ''Reload'', o pindoton  an ''F5''; '''Opera''' pwede ser na kaipuhan na halîon an gabos na laog kan abang sa ''Tools→Preferences''.",
-'usercssyoucanpreview' => "'''Tip:''' Gamiton an 'Show preview' para testingon an bâgong CSS bago magtagama.",
-'userjsyoucanpreview' => "'''Tip:''' Gamiton an 'Show preview' para testingon an bâgong JS bago magtagama.",
-'usercsspreview' => "'''Giromdomon tabî na pigpapatânaw sana saimo an CSS nin parágamit, dai pa ini nakatagama!'''",
+'anontalkpagetext' => "----''Ini iyo an pahina kan orolayan para an sarong dae bistadong paragamit na dae pa nakapagmukna nin panindog, o dae pa nakapaggamit kaini.
+Kaya kami kaipong gumamit nin numerikal na IP address sa pagbisto saiya.
+An arog kaining IP address puwedeng maikapagheras sa nagkapirang mga paragamit.
+Kun ika sarong dae pa bistadong paragamit asin mati mo na igwang irelebanteng sambit na pinanungod saimo, tabi paki [[Special:UserLogin/signup|mukna nin panindog]] or [[Special:UserLogin|maglaog ka]] tanganing malikayan an pagkaribong sa pag-iriba kan iba pang mga paragamit.''",
+'noarticletext' => 'Mayo tabi sa presente nin teksto sa pahinang ini.
+Ika mapuwedeng [[Special:Search/{{PAGENAME}}|maghanap para sa titulo kan pahinang ini]] sa iba pang mga pahina,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} maghanap sa magkasurundong mga talaan],
+o [{{fullurl:{{FULLPAGENAME}}|action=edit}} liwaton ining pahina]</span>.',
+'noarticletext-nopermission' => 'Mayo tabi sa presente nin teksto sa pahinang ini.
+Ika mapuwedeng [[Special:Search/{{PAGENAME}}|maghanap para sa titulo kan pahinang ini]] sa iba pang mga pahina,
+o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} maghanap sa magkasurundong mga talaan]</span>.',
+'userpage-userdoesnotexist' => 'Paragamit na panindog "$1" bako tabing rehistrado.
+Paki-tsek kun ika magustong magmukna/magliwat kaining pahina.',
+'userpage-userdoesnotexist-view' => 'Paragamit na panindog "$1" bako tabing rehistrado.',
+'blocked-notice-logextract' => 'Ining paragamit sa presente nakakubkob.
+An pinakahuring entrada kan pagkubkob nakahaya sa ibaba bilang reperensiya:',
+'clearyourcache' => "'''Note:''' Matapos maitagama, ika mapuwedeng makaluktos sa tagoan kan saimong kilyaw tanganing mahiling an mga naribayan.
+* '''Firefox / Safari:''' Pauntok na duon sa ''Shift'' habang pinipindot an ''Ikarga otro'', o pinduton as maski arin sa ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' para sa Mac)
+* '''Google Chrome:''' Pinduton ''Ctrl-Shift-R'' (''⌘-Shift-R'' para sa Mac)
+* '''Internet Explorer:''' Pauntok na duon sa ''Ctrl'' habang pinipindot an ''Ipresko otro'', o pinduton an ''Ctrl-F5''
+* '''Konqueror:''' Ipindot an ''Ikarga otro'' o pinduton an ''F5''
+* '''Opera:''' Linigan an tagoan sa ''Tools → Mga Kabotan''",
+'usercssyoucanpreview' => "'''Tip:''' Gamita an \"{{int:showpreview}}\" na pindutan tanganing prubaran an saimong baguhong CSS bago ipagtagama.",
+'userjsyoucanpreview' => "'''Tip:''' Gamita an \"{{int:showpreview}}\" na pindutan tanganing prubaran an saimong baguhong JavaScript bago ipagtagama.",
+'usercsspreview' => "'''Giromdoma baya na ika nagtatanaw pa sana kan saimong paragamit sa CSS.'''
+'''Ini dae pa tabi naitatagama!'''",
 'userjspreview' => "'''Giromdomon tabi na pigtetest/pighihiling mo sana an patanaw kan saimong JavaScript nin paragamit, dai pa ini naitagama!'''",
+'sitecsspreview' => "'''Giromdoma baya na ika nagtatanaw pa sana kaining CSS.'''
+'''Ini dae pa tabi naitatagama!'''",
+'sitejspreview' => "'''Giromdoma baya na ika nagtatatanaw pa sana kaining koda sa JavaScript.'''
+'''Ini dae pa tabi naitatagama!'''",
 'userinvalidcssjstitle' => "'''Patanid:''' Mayong ''skin'' na \"\$1\". Giromdomon tabî na an .css asin .js na mga páhina naggagamit nin titulong nakasurat sa sadit na letras, halimbawa {{ns:user}}:Foo/vector.css bakong {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Binàgo)',
 'note' => "'''Paisi:'''",
-'previewnote' => "'''Patànaw sana ini; dai pa naitagama an mga pagbabàgo!'''",
+'previewnote' => "'''Giromdoma na ini sarong patanaw pa sana.'''
+An saimong mga pinagriliwat dae pa tabi naitatagama!",
+'continue-editing' => 'Ipagpadagos an pagliliwat',
 'previewconflict' => 'Mahihilíng sa patànaw na ini an tekstong nasa itaas na lugar nin paghirá arog sa maipapahiling kun ini an itatagama mo.',
 'session_fail_preview' => "'''Despensa! Dai mi naipadagos an paghirá mo huli sa pagkawara nin datos kan sesyon.
 Probaran tabì giraray. Kun dai man giraray magibo, probaran na magluwas dangan maglaog giraray.'''",
-'session_fail_preview_html' => "'''Despensa! Dai mi naipadagos an paghirá mo nin huli sa kawàran kan datos kan sesyon.'''
+'session_fail_preview_html' => "'''Sori po! Dae tabi nyamo maiproseso an saimong pagliwat nin huli sa kawaraan kan datos sa sesyon.'''
 
-''Huli ta ining wiki may HTML na nakaandar, pigtago an patànaw bilang paglikay kontra sa mga atake sa JavaScript.''
+''Nin huli ta {{SITENAME}} igwa nin bakong pang naprosesong HTML pinagpagana, an patanaw ipinagtago bilang pag-ingat kontra sa atake kan JavaScript.''
 
-'''Kun talagang boot mong hirahón ini, probaran giraray. Kun dai pa giraray magibo, magluwas dangan maglaog giraray. '''",
+'''Kun ini sarong lehitimong pagprubar nin pagliwat, paki-otro tabi giraray.'''
+Kun ini dae man giraray guminana, magprubar na [[Special:UserLogout|magluwas]] asin maglaog giraray.",
 'token_suffix_mismatch' => "'''Dai pigtogotan an paghirá mo ta sinabrit kan client mo an punctuation characters.
 Dai pigtogotan ining paghirá tangarig maibitaran na maraot an teksto kan pahina.
 Nanyayari nanggad ini kun naggagamit ka nin bakong maraháy asin dai bistong web-based proxy service.'''",
+'edit_form_incomplete' => "'''An ibang mga parte kan porma nin pagliwat dae nakaabot sa serbidor; paki-dobleng mansay na an saimong mga pinagliwat bilog na yaon pa asin paki-otro giraray.'''",
 'editing' => 'Pigliliwat an $1',
+'creating' => 'Pinagmumukna an $1',
 'editingsection' => 'Pighihira an $1 (seksyon)',
-'editingcomment' => 'Pighihira an $1 (komento)',
+'editingcomment' => 'Pigliliwat an $1 (bagong seksyon)',
 'editconflict' => 'Komplikto sa paghihira: $1',
 'explainconflict' => "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.
 Nahihilíng ang pahina kan teksto sa parteng itaas kan teksto.
@@ -634,35 +819,78 @@ Pigpropromesa mo man samuyà na ika an kagsurat kaini, o kinopya mo ini sa domin
 '''DAI TABÌ MAGSUMITIR NIN MGA GIBONG IPINAPANGALAD NA KOPYAHON NIN MAYONG PERMISO!'''",
 'copyrightwarning2' => "Giromdomon tabì na an gabos na kontribusyon sa {{SITENAME}} pwedeng hirahón, bàgohon o halion kan ibang mga parágamit. Kun habô mong mahirá an saimomg sinurat na mayong pakimàno, pues, dai tabì isumitir iyan digdi.<br />
 Pigpapangakò mo man samuyà na ika an nagsurat kaini, o pigkopya mo ini sa dominiong panpubliko o sarong parehong libreng rekurso (hilingon an $1 para sa mga detalye). '''DAI TABÌ MAGSUMITIR NIN MGA GIBONG IPINAPANGALAD NA KOPYAHON NIN MAYONG PERMISO!'''",
-'longpageerror' => "'''SALÀ: $1 na kilobytes na kalabà an pahinang isinumitir mo, na mas halabà sa hanggan nin $2 na kilobytes. Dai pwede ining itagama.'''",
-'readonlywarning' => "'''PATANID: Nakakandado an base nin datos para sa pagmantinir, pues, dai mo mûna pwede na itagama an mga paghirá mo. Pwede mo pa man na arogon dangan ipaskil ang teksto sa sarong dokumento arog kan MS Word asbp. asin itagama ini para sa atyan.'''",
-'protectedpagewarning' => "'''PATANID:  Nakakandado ining pahina tangarig an mga parágamit na may priblehiyo nin ''sysop'' sana an pwedeng maghira kaini.'''",
-'semiprotectedpagewarning' => "'''Paisi:''' An pahinang ini isinara tangarig mga rehistradong parágamit sana an makahira kaini.",
+'longpageerror' => "'''Ay Sala: An teksto na saimong pinagsumite {{PLURAL:$1|sarong kilobyte|$1 kilobytes}} an laba, mas halaba kesa maksimum na {{PLURAL:$2|sarong kilobyte|$2 kilobytes}}.'''
+Ini dae tabi maitatagama.",
+'readonlywarning' => "'''Patanid tabi: An datos-sarayan nakakandado para sa maintenance, kay ika dae makakapagtagama kan saimong mga pinagriliwat sa ngunyan.'''
+Ika mapuwedeng maikopya an teksto pasiring sa sarong sagunson kan teksto asin para itagama ini sa huri.
+
+An administrador na iyo an nagkandado kaini naghayag kaining kapaliwanagan: $1",
+'protectedpagewarning' => "'''Patanid tabi: Ining pahina pinagprotektaran tanganing an mga paragamit sana na igwang pribilihiyo bilang administrador an makakapagliwat kaini.'''
+An pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
+'semiprotectedpagewarning' => "'''Note:''' Ining pahina pinagprotektaran na tanganing an mga rehistradong mga paragamit sana an mapuwedeng makapagliwat kaini.
+An pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
 'cascadeprotectedwarning' => "'''Patanid:''' Nakakandado an pahinang ini tangarig an mga parágamit na igwang pribilehyo nin sysop sana an pwedeng maghirá kaini, huli ta kabali ini sa mga kataratang protektado na {{PLURAL:$1|pahina|mga pahina}}:",
-'templatesused' => 'Mga templato na piggamit sa pahinang ini:',
-'templatesusedpreview' => 'Mga templato na piggamit sa patànaw na ini:',
-'templatesusedsection' => 'Mga templato na piggamit sa seksyon na ini:',
+'titleprotectedwarning' => "'''Patanid tabi: Ining pahina pinagprotektaran na tanganing [[Special:ListGroupRights|espesipikong karapatan]] minakaipo tanganing magmukna kaini.'''
+An pinakahuring entrada sa talaan pinaghaya sa ibaba bilang reperensiya:",
+'templatesused' => '{{PLURAL:$1|Template|Mga Panguyog}} na pinaggamit kaining pahina:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Mga Panguyog}} na pinaggamit kaining patanaw:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Mga Panguyog}} na pinaggamit kaining seksyon:',
 'template-protected' => '(protektado)',
 'template-semiprotected' => '(semi-protektado)',
+'hiddencategories' => 'Ining pahina sarong miyembro kan {{PLURAL:$1|1 pinagtagong kategorya|$1 pinagtagong mga kategorya}}:',
 'edittools' => '<!-- An teksto digdi mahihiling sa babâ kan mga pormang pighihirá asin pigkakarga. -->',
 'nocreatetitle' => 'Limitado an paggibo nin pahina',
-'nocreatetext' => 'Igwang pagpogol sa paggibo nin bàgong pahina sa site na ini.
-Pwede kang bumalik dangan maghirá nin presenteng pahina, o [[Special:UserLogin|maglaog o magbukas nin account]].',
-'nocreate-loggedin' => 'Mayò ka nin permiso na maggibo nin mga bàgong pahina sa wiki na ini.',
+'nocreatetext' => '{{SITENAME}} pinagpupugol an kakayanan na magmukna nin baguhong mga pahina.
+Ika makakabalik asin magliwat kan eksistidong nang pahina, o [[Special:UserLogin|maglaog ka o magmukna nin sarong panindog]].',
+'nocreate-loggedin' => 'Ika mayo tabi nin permiso tanganing magmukna nin baguhong mga pahina.',
+'sectioneditnotsupported-title' => 'An pagliliwat tabi sa seksyon bakong suportado',
+'sectioneditnotsupported-text' => 'An pagliliwat tabi sa seksyon bakong suportado sa pahinang ini.',
 'permissionserrors' => 'Mga saláng Permiso',
 'permissionserrorstext' => 'Mayò ka nin permiso na gibohon yan, sa minasunod na {{PLURAL:$1|rason|mga rason}}:',
-'recreate-moveddeleted-warn' => "'''Patanid: Piggigíbo mo giraray an pahina na pigparà na dati pa.'''
-
-Dapat mong isipon kun kaipuhan na ipadagos an paghirá kaining pahina.
-An paghalì kan historial para sa pahinang ini yaon digdi para sa saimong kombenyensya:",
+'permissionserrorstext-withaction' => 'Ika mayo tabi nin permiso sa $2, para sa minasunod na {{PLURAL:$1|rason|mga rason}}:',
+'recreate-moveddeleted-warn' => "'''Patanid tabi: Saimong pinagmumukna giraray an sarong pahina na dati nang pinagpura.'''
+
+Saimo tabing ikonsidera kun ini maninigo na ipagpadagos pa an pagliliwat kaining pahina.
+An pagpura asin pagbalyong talaan para sa pahinang ini pinaghaya digde para sa kombenyinsiya:",
+'moveddeleted-notice' => 'Ining pahina pinagpura na.
+An pagpura asin pagbalyong talaan para sa pahina pinaghaya sa ibaba bilang reperensiya.',
+'log-fulllog' => 'Tanawon an bilog na talaan',
+'edit-hook-aborted' => 'An pagliwat pinagpundo sa paagi kan pangawil.
+Ini dae tabi nagtao nin kapaliwanagan.',
+'edit-gone-missing' => 'Dae makakapagdagdag sa pahina.
+Ini minapahiwatig tabi na pinagpura na.',
 'edit-conflict' => 'Igwang iregularidad sa pagliwat.',
+'edit-no-change' => 'An saimong pagliwat pinagbalewala, nin huli ta mayong pagbabago an pinaghimo sa teksto.',
 'edit-already-exists' => 'Dai maggibo an bàgong pahina.
 Igwa na kaini.',
+'defaultmessagetext' => 'Tugmadong mensahe sa teksto',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''Patanid tabi:''' Ining pahina naglalaman nin grabe kadakulon na ekspensibong programang pambaranga sa punksyon nin mga pag-aapod.
+
+Ini dapat magkaigwa nin menos sanang $2 {{PLURAL:$2|apod|mga apod}}, igwa na {{PLURAL:$1|ngunyan nin $1 apod|ngunyan nin $1 mga apod}}.",
+'expensive-parserfunction-category' => 'Mga pahina na igwa nin grabe kadakulon na mga ekspensibong programang pambaranga sa punksyon nin mga pag-aapod',
+'post-expand-template-inclusion-warning' => "'''Patanid tabi:''' An panguyog (template) igwang sukol na grabe kadakula.
+An ibang mga panguyog dae tabi maipagdadagdag.",
+'post-expand-template-inclusion-category' => 'Mga pahina kun saen an panguyog igwang sukol na sobrado',
+'post-expand-template-argument-warning' => "'''Patanid tabi:''' Ining pahina naglalaman baya nin sarong panguyog na igwang grabe kadakulang kalakbangan sa sukol.
+Ining mga argumento tabi pinagharali na.",
+'post-expand-template-argument-category' => 'Mga pahina na naglalaman kan pinagharaleng mga argumento sa panguyog',
+'parser-template-loop-warning' => 'An kaluktosan kan panguyog namansayan: [[$1]]',
+'parser-template-recursion-depth-warning' => 'An panguyog nin rekursyong panrarom na kasagkodan nagsobra nin ($1)',
+'language-converter-depth-warning' => 'Tagapagbago kan Lengguwaheng panrarom na kasagkodan nagsobra ($1)',
+'node-count-exceeded-category' => 'Mga pahina kun saen an kabilangan nin tagapagsumpay nagsobra',
+'node-count-exceeded-warning' => 'An pahina nagsobra an kabilangan nin tagapagsumpay',
+'expansion-depth-exceeded-category' => 'Mga pahina kun saen an panrarom na kalakbangan nagsobra',
+'expansion-depth-exceeded-warning' => 'An pahina nagsobra sa panrarom na kalakbangan',
+'parser-unstrip-loop-warning' => 'Panul-ot na kaluktusan namansayan',
+'parser-unstrip-recursion-limit' => 'Panul-ot na rekusyong kasagkodan nagsobra ($1)',
 
 # "Undo" feature
 'undo-success' => 'Pwedeng bawion an paghirá. Sosogon tabì an pagkakaiba sa babâ tangarig maberipikár kun ini an boot mong gibohon, dangan itagama an mga pagbabàgo sa babâ tangarig tapuson an pagbawì sa paghirá.',
 'undo-failure' => 'Dai napogol an paghirá ta igwa pang ibang paghirá sa tahaw na nagkokomplikto.',
-'undo-summary' => 'Bawion an pagpakaraháy na $1 ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Pag-oláyan]])',
+'undo-norev' => 'An pagliwat dae tabi magigibo nin huli ta ini bakong eksistido o pinagpura na.',
+'undo-summary' => 'Ibalik tabi an pinagbabago $1 sa paagi [[Special:Contributions/$2|$2]] ([[Paragamit na Olay:$2|olay]])',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Dai makagibo nin account',
@@ -674,6 +902,7 @@ Igwa na kaini.',
 'viewpagelogs' => 'Hilingón an mga usip para sa pahinang ini',
 'nohistory' => 'Mayong paghirá nin uusipón sa pahinang ini.',
 'currentrev' => 'Sa ngonyan na pagpakarháy',
+'currentrev-asof' => 'Pinakahuring pagbabago kan $1',
 'revisionasof' => 'Pagpakarháy sa $1',
 'revision-info' => 'An pagpakarháy sa $1 ni $2',
 'previousrevision' => '←Lumà pang pagpakarhay',
@@ -688,9 +917,10 @@ Igwa na kaini.',
 Legend: (ngonyan) = kaibhán sa ngonyan na bersyon,
 (huri) = kaibhán sa huring bersyon, S = saradít na paghirá.',
 'history-fieldset-title' => 'Rinsayon an uusipon',
+'history-show-deleted' => 'Pinagpura sana',
 'histfirst' => 'Pinakaenot',
 'histlast' => 'Pinakahúri',
-'historysize' => '($1 bytes)',
+'historysize' => '({{PLURAL:$1|sarong byte|$1 mga bytes}})',
 'historyempty' => '(mayong laog)',
 
 # Revision feed
@@ -702,51 +932,154 @@ Pwedeng pigparà na ini sa wiki, o tinàwan nin bàgong pangaran.
 Probaran tabì an [[Special:Search|pighahanap sa wiki]] para sa mga pahinang dapít.',
 
 # Revision deletion
-'rev-deleted-comment' => '(hinalì an komento)',
+'rev-deleted-comment' => '(pagliwat na sumaryo pinaghale)',
 'rev-deleted-user' => '(hinalì an parágamit)',
-'rev-deleted-event' => '(hinalì an ingreso)',
-'rev-deleted-text-permission' => 'Ining pagpakaraháy nin pahina pighalì na sa mga archibong panpubliko.
-Pwedeng igwang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
-'rev-deleted-text-view' => 'Ining pagpakaraháy nin pahina pighalì na sa mga archibong panpubliko.
-Pwede mo ining hilingón bilang sarong tagamató kaining site;
-Pwedeng igwang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} historial kan pagparà].',
+'rev-deleted-event' => '(talaan kan aksyon pinaghale)',
+'rev-deleted-user-contribs' => 'Paragamit na ngaran o IP address pinaghale - an pigliwat pinagtago gikan sa mga kontribusyon]',
+'rev-deleted-text-permission' => "An pinagbago tabi kaining pahina '''pinagpura'''.
+An mga detalye mananagboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinagpura].",
+'rev-deleted-text-unhide' => "An pagbabago tabi kaining pahina '''pinagpura'''.
+Mga detaylye puwedeng managboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan nin pagpura].
+Ika mapuwedeng [$1 hilingon ining pagbabago] kun ika nagmawot na magpadagos.",
+'rev-suppressed-text-unhide' => "An pagbabago kaining pahina '''pinaglubog'''.
+Mga detalye mapuwedeng managboan sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan kan paglubog].
+Ika mapuwede pa man [$1 matanaw ining pagbabago] kun mawot na magdagos",
+'rev-deleted-text-view' => "An pagbabago tabi kaining pahina '''pinagpura'''.
+Ika mapuwedeng magtanaw kaini; mga detalye puwedeng managboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinagpura].",
+'rev-suppressed-text-view' => "An pagbabago kaining pahina '''pinaglubog'''.
+Ika mapuwedeng matanaw ini; mga detalye puwedeng managboan sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan kan pinaglubog].",
+'rev-deleted-no-diff' => "Ika dae makapagtanaw kaining diff nin huli ta saro kan mga pagbabago '''pinagpura'''.
+Mga detalye puwedeng managboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinuraan].",
+'rev-suppressed-no-diff' => "Ika dae makapagtanaw kaining diff nin huli ta saro sa mga pagbabago '''pinagpura'''.",
+'rev-deleted-unhide-diff' => "Saro sa mga pagbabago kaining diff '''pinagpura'''.
+Mga detalye mapuwedeng managboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinuraan].
+Ika mapuwede pa [$1 magtanaw kaining diff] kun ika nagmawot na magpadagos.",
+'rev-suppressed-unhide-diff' => "Saro sa mga pagbabago kaining diff '''pinaglubog'''.
+Mga detalye mapuwedeng managboan sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan kan pinaglubog].
+Ika mapuwede pa man na [$1 matanaw ining diff] kun ika mawot na magdagos.",
+'rev-deleted-diff-view' => "Saro sa mga pinagbago kaining diff '''pinagpura'''.
+Ika makakapagtanaw kaining diff; mga detalye puwedeng mananagboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinuraan].",
+'rev-suppressed-diff-view' => "Saro sa mga pinagbago kaining diff '''pinaglubog'''.
+Ika puwedeng makakatanaw kaining diff; mga detalye puwedeng mananagboan sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan kan pinaglubog].",
 'rev-delundel' => 'ipahilíng/itagò',
+'rev-showdeleted' => 'ibuyagyag',
 'revisiondelete' => 'Paraon/bawion an mga pagpakaraháy',
-'revdelete-nooldid-title' => 'Mayong tunggit pagpakaraháy',
-'revdelete-nooldid-text' => 'Dai ka nagpili nin target na pagpakarhay o mga pagpakarhay tangarig magamit ini.',
-'revdelete-selected' => "'''{{PLURAL:$2|Selected revision|Selected revisions}} kan [[:$1]]'''",
-'revdelete-text' => "'''An mga pagpakarhay asin mga panyayari na pigparâ mahihiling pa sa historya asin mga historial kan páhina, pero an ibang parte kan mga laog kaini dai na ipapahiling sa publiko.'''
-
-An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong laog asin pwede pa nindang bawîon an pagparâ kaini sa paggamit kan parehong ''interface'', kun mayô pang mga ibang restriksyón.",
-'revdelete-legend' => 'Ipwesto an mga restriksyón',
+'revdelete-nooldid-title' => 'Imbalidong target nin pagbabago',
+'revdelete-nooldid-text' => 'Ika dae baya naghayag nin sarong target sa pagbabago tanganing gibohon ining punksyon, an ipinaghayag na pagbabago bako tabing eksistido, o ika nagpuprubar tanganing itago an presentend pagbabago.',
+'revdelete-nologtype-title' => 'Mayong tipo nin talaan na ipinagtao',
+'revdelete-nologtype-text' => 'Ika dae tabi nagpapahayag nin sarong tipo nin talaan tanganing gumibo kaining aksyon dagos.',
+'revdelete-nologid-title' => 'Imbalidong entrada sa talaan',
+'revdelete-nologid-text' => 'Ika dae tabi naghayag nin sarong target talaan nin pangyayari tanganing gumibo kaining punksyon o an pinaghayag na entrada dae tabi eksistido.',
+'revdelete-no-file' => 'An sagunson na pinaghayag dae tabi eksistido.',
+'revdelete-show-file-confirm' => 'Segurado ka tabi na gusto mo matanaw sarong pinagpurang pagbabago kan sagunson "<nowiki>$1</nowiki>" poon $2 sa $3?',
+'revdelete-show-file-submit' => 'Iyo tabi',
+'revdelete-selected' => "'''{{PLURAL:$2|Selected revision|Mga piniling pagbabago}} kan [[:$1]]'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Selected log event|Mga piniling talaan kan mga pangyayari}}:'''",
+'revdelete-text' => "'''Pinagpurang mga pagbabago asin mga pangyayari mahihiling pa man sa historiyang pahina asin mga talaan, pero an mga parte kan saindang laman dae puwedeng magamit kan publiko.'''
+An ibang administrador sa {{SITENAME}} puwede pa man makagamit sa pinagtagong laman asin balewalaon an pagpura kaini giraray sa paagi nin kaparehong panlaog-olay, laen lang kun may kadagdagang pangilin an inilapat.",
+'revdelete-confirm' => 'Pakikumpirma tabi na ika tuyong gumibo kaini, na saimong naintindihan an mga konsekuwensiya, asin ta ika pinaghihimo ini na uyon sa [[{{MediaWiki:Policy-url}}|an palisiya]].',
+'revdelete-suppress-text' => "An paglulubog dapat '''sana''' makakagamit sana para sa minasunod na mga kaso:
+*Potensiyal na libeloso an impormasyon
+*Bakong angay an personal na impormasyon
+*: ''mga address kan harong asin mga numero kan telepono, sosyal na seguridad, iba pa.''",
+'revdelete-legend' => 'Ilapat an mga restriksyon sa bisibilidad',
 'revdelete-hide-text' => 'Tagoon an teksto kan pagpakaraháy',
 'revdelete-hide-image' => 'Tagoon an laog kan file',
 'revdelete-hide-name' => 'Tagoon an aksyon asin target',
 'revdelete-hide-comment' => 'Tagoon an komento sa paghirá',
 'revdelete-hide-user' => 'Tagoon an pangaran kan editor/IP',
-'revdelete-hide-restricted' => 'Ibali sa mga restriksyón na ini an mga sysops asin iba pa',
+'revdelete-hide-restricted' => 'Ilubog an mga datos gikan sa mga administrador asin man kan iba',
+'revdelete-radio-same' => '(dae pagribayan)',
+'revdelete-radio-set' => 'Iyo tabi',
+'revdelete-radio-unset' => 'Bako tabi',
 'revdelete-suppress' => 'Dai ipahilíng an mga datos sa mga sysops asin sa mga iba pa',
 'revdelete-unsuppress' => 'Halîon an mga restriksyón sa mga ibinalík na pagpakarhay',
 'revdelete-log' => 'Rason:',
-'revdelete-submit' => 'Ibílang sa piniling pagpakarhay',
-'revdelete-success' => "'''Nakapwesto na an bisibilidad kan pagpakarhay.'''",
+'revdelete-submit' => 'Ipag-aplay sa mga piniling {{PLURAL:$1|pagbabago|mga pagbabago}}',
+'revdelete-success' => "'''Pagbabago sa bisibilidad matrayumpong pinagdagdagan.'''",
+'revdelete-failure' => "'''Pagbabago sa bisibilidad dae tabi nadagdagan:'''
+$1",
 'logdelete-success' => "'''Nakapuesto na an katalâan kan nangyari.'''",
+'logdelete-failure' => "'''Talaan sa bisibilidad dae tabi nailapat:'''
+$1",
+'revdel-restore' => 'ribayan an bisibilidad',
+'revdel-restore-deleted' => 'pinagpurang mga pagbabago',
+'revdel-restore-visible' => 'lantad na mga pagbabago',
+'pagehist' => 'Pahinang historiya',
+'deletedhist' => 'Pinagpurang historiya',
+'revdelete-hide-current' => 'Napasalang pagtatago kan item petsado $2, $1: Iyo ini an presenteng pagbabago.
+Ini dae tabi naitatago.',
+'revdelete-show-no-access' => 'Napasalang paghahayag kan item petsado $2, $1: Ining item markadong "pinagpangilin".
+Ika mayo tabing pangaputan kaini.',
+'revdelete-modify-no-access' => 'Napasalang pagsasangli kan item petsado $2, $1: Ining item markadong "pinagpangilin".
+Ika mayo tabing pangaputan kaini.',
+'revdelete-modify-missing' => 'Napasalang pagsasangli kan item ID $1: Ini nawawara gikan sa datos-sarayan!',
+'revdelete-no-change' => "'''Patanid tabi:''' An item petsado $2, $1 igwa na tabi kan pinaghahagad na mga panuytoy sa bisibilidad.",
+'revdelete-concurrent-change' => 'Napasalang pagsasangli kan item petsado $2, $1: An status nagpapahiling na pinagribayan kan ibang tawo habang ikan nagprubar na sanglian ini.
+Paki-tsek tabi sa mga talaan.',
+'revdelete-only-restricted' => 'Napasalang pagtatago kan item petsado $2, $1: Ika dae tabi makakapaglubog kan mga item na mahiling kan mga administrador na mayo kang piniling saro sa iba pang bisibilidad na mga pagpipilian.',
+'revdelete-reason-dropdown' => '*Pirmihang mga rason sa pagpura
+**Paglapas kan Copyright
+**Bakong angay na personal na impormasyon
+**Potensiyal na libelosong impormasyon',
+'revdelete-otherreason' => 'Iba pa/kadagdagang rason:',
+'revdelete-reasonotherlist' => 'Ibang rason',
+'revdelete-edit-reasonlist' => 'Liwaton an mga rason sa pagpura',
+'revdelete-offender' => 'Awtor kan pagbabago:',
+
+# Suppression log
+'suppressionlog' => 'Talaan kan paglulubog',
+'suppressionlogtext' => 'Sa ibaba yaon an sarong listahan kan mga pinuraan asin mga kinubkob na imbuwelto sa laman na pinagtatago sa mga administrador.
+Hilnga baya an [[Special:BlockList|listahan kan kinubkob]] para sa listahan kan presenteng operasyonal na mga pinagbabawal asin mga pinagkukubkob.',
+
+# History merging
+'mergehistory' => 'Tiriponon an pahina kan mga historiya',
+'mergehistory-header' => 'Ining pahina minatugot saimo na tiriponon an mga pagbabago kan historiya nin sarong pinaggikanang pahina na magin sarong baguhong pahina.
+Himoon mong segurado na ining pagbabago makapagtala nin historikal na kapadagusang pahina.',
+'mergehistory-box' => 'Tiriponon an mga pagbabago sa duwang mga pahina:',
+'mergehistory-from' => 'Gikanang pahina:',
+'mergehistory-into' => 'Destinasyong pahina:',
+'mergehistory-list' => 'Puwedeng maitiripon na historiya kan pagliwat',
+'mergehistory-merge' => 'An mga minasunod na mga pagbabago sa [[:$1]] mapuwedeng pagtiriponon na magin [[:$2]].
+Gamita an radyong pindutan sa kolum tanganing tiriponon sana an mga pagbabagong pinagmukna asin bago pa man an pinaghahayag na oras.
+Tandaan na an paggagamit kan nabigasyong kilyawan makakapaglapat giraray kaining kolum.',
+'mergehistory-go' => 'Ipahayag an mapuwedeng matiripon na mga pagliwat',
+'mergehistory-submit' => 'Tiripona an mga pagbabago',
+'mergehistory-empty' => 'Mayong mga pagbabago na puwedeng mapagtiripon.',
+'mergehistory-success' => '$3 {{PLURAL:$3|pagbabago|mga pagbabago}} sa [[:$1]] matrayumpong napagtiripon na magin [[:$2]].',
+'mergehistory-fail' => 'Dae tabi makayanan na makapaghimo nin historiyang pagtiripon, tabi pakihiling giraray an pahina asin parametro kan oras.',
+'mergehistory-no-source' => 'Gikanang pahina $1 bakong eksistido.',
+'mergehistory-no-destination' => 'Destinasyong pahina $1 bakong eksistido.',
+'mergehistory-invalid-source' => 'Gikanang pahina kaipuhan magin saro na balidong titulo.',
+'mergehistory-invalid-destination' => 'Destinasyong pahina kaipuhan magin saro na balidong titulo.',
+'mergehistory-autocomment' => 'Pinagtiripon [[:$1]] na magin [[:$2]]',
+'mergehistory-comment' => 'Pinagtiripon [[:$1]] na magin [[:$2]]: $3',
+'mergehistory-same-destination' => 'Gikanan asin destinasyong mga pahina dae puwedeng magkapareho',
+'mergehistory-reason' => 'Rason:',
 
 # Merge log
+'mergelog' => 'Talaan kan pagtiripon',
+'pagemerge-logentry' => 'pinagtiripon [[$1]] na magin [[$2]] (mga pagbabago sagkod sa $3)',
 'revertmerge' => 'Suwayón',
+'mergelogpagetext' => 'Sa ibaba yaon an sarong listahan kan pinakahuring mga pagtitiripon kan sarong pahinang historiya sagkod sa iba pa.',
 
 # Diffs
-'history-title' => 'Uusipón nin pagpakarháy kan "$1"',
+'history-title' => 'Pagbabagong historiya kan "$1"',
+'difference-title' => 'Pagkalaen sa tahaw nin mga pagbabago kan "$1"',
+'difference-title-multipage' => 'Pagkalaen sa tahaw nin mga pahina sa "$1" asin "$2"',
+'difference-multipage' => '(Pagkalaen sa tahaw kan mga pahina)',
 'lineno' => 'Taytáy $1:',
 'compareselectedversions' => 'Ikomparar an mga piniling bersyon',
+'showhideselectedversions' => 'Ihayag/itago mga piniling pagbabago',
 'editundo' => 'isulít',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} dai ipinahihiling.)',
+'diff-multi' => '({{PLURAL:$1|Saro intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} by {{PLURAL:$2|sarong paragamit|$2 mga paragamit}} dae pinaghahayag)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Sarong intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} na sobra sa $2 {{PLURAL:$2|paragamit|mga paragamit}} dae pinaghahayag)',
 
 # Search results
 'searchresults' => 'Resulta kan paghánap',
 'searchresults-title' => 'Hanápon an resulta para sa "$1"',
 'searchresulttext' => 'Para sa iba pang impormasyon manonongod sa paghanap sa {{SITENAME}}, hilingon tabî an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Hinanap mo an '''[[:$1]]'''",
+'searchsubtitle' => 'Ika naghanap para sa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gabos na mga pahina na nagpopoon sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gabos na mga pahina na nakatakod sa "$1"]])',
 'searchsubtitleinvalid' => "Hinanap mo an '''$1'''",
 'toomanymatches' => 'Kadakol-dakol na angay an ipigbalik, probaran an ibang kahaputan',
 'titlematches' => 'Angay an título kan artíkulo',
@@ -810,12 +1143,33 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
 'savedprefs' => 'Itinagama na an mga kabôtan mo.',
 'timezonelegend' => 'Zona nin oras',
 'localtime' => 'Lokal na oras',
-'servertime' => "Oras kan ''server''",
+'timezoneuseserverdefault' => 'Gamita an panugmad sa wiki ($1)',
+'timezoneuseoffset' => 'Iba pa (ihayag an pambawi)',
+'timezoneoffset' => 'Bawia¹:',
+'servertime' => 'Oras kan serbidor:',
 'guesstimezone' => "Bugtakan an ''browser''",
+'timezoneregion-africa' => 'Aprika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antartika',
+'timezoneregion-arctic' => 'Arktik',
+'timezoneregion-asia' => 'Asya',
+'timezoneregion-atlantic' => 'Atlantikong Kadagatan',
+'timezoneregion-australia' => 'Australya',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indiyang Kadagatan',
+'timezoneregion-pacific' => 'Pasipikong Kadagatan',
 'allowemail' => "Togotan an mga ''e''-surat halî sa ibang mga parágamit",
-'defaultns' => 'Maghilíng mûna sa ining mga ngaran-espacio:',
+'prefs-searchoptions' => 'Pagpipilian sa Paghahanap',
+'prefs-namespaces' => 'Pangarang mga espasyo',
+'defaultns' => 'Kun laen maghanap sa laog kaining pangarang mga espasyo:',
 'default' => 'pwestong normal',
 'prefs-files' => 'Mga dokumento',
+'prefs-custom-css' => 'Kustombreng CSS',
+'prefs-custom-js' => 'Kustombreng JavaScript',
+'prefs-common-css-js' => 'Pinagheras na CSS/JavaScript para sa gabos na mga kalapatan:',
+'prefs-reset-intro' => 'Ika makakagamit kaining pahina tanganing ilapat giraray an saimong mga kabotan sa panugmad kan sayt.
+Ini dae tabi matitingkog.',
+'prefs-emailconfirm-label' => 'Kumpirmasyon sa E-koreo',
 'youremail' => 'E-koreo:',
 'username' => 'Pangaran kan parágamit:',
 'uid' => 'ID kan parágamit:',
@@ -843,38 +1197,150 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
 'saveusergroups' => 'Itagama an mga Grupo nin Páragamit',
 'userrights-groupsmember' => 'Myembro kan:',
 'userrights-reason' => 'Rason:',
+'userrights-nologin' => 'Ika kaipuhan na [[Special:UserLogin|maglaog ka]] na igwa nin panindog na administrador bago ka makapagtao nin karapatan sa paragamit.',
+'userrights-notallowed' => 'An saimong panindog mayo tabi nin permiso na magdagdag o maghale nin karapatan kan mga paragamit.',
+'userrights-changeable-col' => 'Mga grupo na mapuwede mong baguhon',
+'userrights-unchangeable-col' => 'Mga grupo na dae mo mapuwedeng baguhon',
 
 # Groups
 'group' => 'Grupo:',
+'group-user' => 'Mga Paragamit',
 'group-autoconfirmed' => 'Paragamit na sadiring nagkonpirma',
 'group-bot' => 'Mga bots',
 'group-sysop' => 'Mga sysop',
 'group-bureaucrat' => 'Mga bureaucrat',
+'group-suppress' => 'Mga Tagapagmato',
 'group-all' => '(gabos)',
 
-'group-autoconfirmed-member' => 'Enseguidang nakonpirmar na parágamit',
-'group-sysop-member' => 'Opsys',
-'group-bureaucrat-member' => 'Bureaucrat',
+'group-user-member' => '{{GENDER:$1|paragamit}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|auto-kumpirmadong paragamit}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|administrador}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrata}}',
+'group-suppress-member' => '{{GENDER:$1|tagapagmato}}',
 
+'grouppage-user' => '{{ns:project}}:Mga Paragamit',
 'grouppage-autoconfirmed' => '{{ns:project}}:Mga enseguidang nakonpirmar na parágamit',
 'grouppage-bot' => '{{ns:project}}:Mga bot',
 'grouppage-sysop' => '{{ns:project}}:Mga tagamató',
 'grouppage-bureaucrat' => '{{ns:project}}:Mga bureaucrat',
+'grouppage-suppress' => '{{ns:project}}:Tagapagmato',
+
+# Rights
+'right-read' => 'Magbasa kan mga pahina',
+'right-edit' => 'Liwaton an mga pahina',
+'right-createpage' => 'Muknaon an mga pahina (na bakong mga pahina nin orolayan)',
+'right-createtalk' => 'Muknaon an mga pahinang orolayan',
+'right-createaccount' => 'Muknaon an baguhong mga panindog nin paragamit',
+'right-minoredit' => 'Markahan an mga pinagliwat bilang menor',
+'right-move' => 'Ibalyo an mga pahina',
+'right-move-subpages' => 'Ibalyo an mga pahina kaiba an saindang mga sub-pahina',
+'right-move-rootuserpages' => 'Ibalyo an ugat nin mga pahina kan paragamit',
+'right-movefile' => 'Ibalyo an mga sagunson',
+'right-suppressredirect' => 'Dae tabi magmukna nin paotrong direksyon gikan sa ginikanang mga pahina kunsoarin magbabalyo nin mga pahina',
+'right-upload' => 'Ipagkarga an mga sagunson (file)',
+'right-reupload' => 'Patungan an mga eksistidong mga sagunson',
+'right-reupload-own' => 'Patungan an eksistido nang mga pahina na ipinagkarga sa paagi mo',
+'right-reupload-shared' => 'Salambawan an mga sagunson sa lokal na pinagheras nin repositoryo kan media',
+'right-upload_by_url' => 'Ipagkara an mga sagunson sa sarong URL',
+'right-purge' => 'Purgaha an sarayan kan sayt para sa sarong pahina na daeng kaipo an kumpirmasyon',
+'right-autoconfirmed' => 'Liwaton an semi-protektadong mga pahina',
+'right-bot' => 'Pagtrataron bilang awtomatikong proseso',
+'right-nominornewtalk' => 'Dae gayod nagkaigwa nin menor na pagliwat sa mga pahina nin orolayan minasulpang nin bunyaw kan bagong mga mensahe',
+'right-apihighlimits' => 'Gumamit nin harahalangkaw na sagkodan sa mga kahaputan kan API',
+'right-writeapi' => 'Gamit kan pagsurat sa API',
+'right-delete' => 'Puraon an mga pahina',
+'right-bigdelete' => 'Puraon an mga pahina na igwang darakulang mga historiya',
+'right-deleterevision' => 'Puraon asin dae puraon an espisipikong pagbabago kan mga pahina',
+'right-deletedhistory' => 'Tanawon an pinagpurang mga entradang historiya, na dae kan saindang asosyadong teksto',
+'right-deletedtext' => 'Tanawon an pinagpurang teksto asin mga karibay sa tahaw kan mga pagbabagong pinagpura na',
+'right-browsearchive' => 'Hanapon an pinagpurang mga pahina',
+'right-undelete' => 'Dae puraon an pahina',
+'right-suppressrevision' => 'Hilngon otro asin balikon an mga pagbabagong itinago gikan sa mga administrador',
+'right-suppressionlog' => 'Tanawon an pribadong mga talaan',
+'right-block' => 'Kubkubon an ibang mga paragamit sa pagliliwat',
+'right-blockemail' => 'Kubkubon an paragamit na makapagpadara nin e-koreo',
+'right-hideuser' => 'Kubkubon an pangaran nin paragamit, itago ini sa publiko',
+'right-ipblock-exempt' => 'Sampawan an pangubkob kan IP, awtomatikong-kubkob asin panhalawig na kubkob',
+'right-proxyunbannable' => 'Sampawan an awtomatikong mga kubkob kan mga proksi',
+'right-unblockself' => 'Dae pagkubkubon sinda',
+'right-protect' => 'Ribayan an kurit kan proteksyon asin liwaton an protektadong mga pahina',
+'right-editprotected' => 'Liwaton an protektadong mga pahina (na bakong pinagsasalansan an proteksyon)',
+'right-editinterface' => 'Liwaton an paragamit na olay-panlaog',
+'right-editusercssjs' => 'Liwaton an CSS asin JavaScript na mga sagunson kan ibang mga paragamit',
+'right-editusercss' => 'Liwaton an CSS na mga sagunson kan ibang mga paragamit',
+'right-edituserjs' => 'Liwaton an JavaScript na mga sagunson kan ibang mga paragamit',
+'right-rollback' => 'Hidaling ibalik an mga niliwat kan huring paragamit na nagliwat nin sarong partikular na pahina',
+'right-markbotedits' => 'Markahan an pinagbalik na mga niliwat bilang bot na panliwat',
+'right-noratelimit' => 'Dae magin apektado sa paagi kan rata nin mga sagkodan',
+'right-import' => 'Importaron an mga pahina gikan sa ibang mga wikis',
+'right-importupload' => 'Importaron an mga pahina gikan sa sarong pangarga nin sagunson',
+'right-patrol' => 'Markahan an mga pagliwat kan iba bilang patrolyado',
+'right-autopatrol' => 'Giboha na an saimong sadiring mga pagliwat awtomatikong markado bilang patrolyado',
+'right-patrolmarks' => 'Tanawon an pinakahuring mga pagbabago na markadong patrol',
+'right-unwatchedpages' => 'Tanawon an listahan kan mayong bantay na mga pahina',
+'right-mergehistory' => 'Pagkasararoon an historiya kan mga pahina',
+'right-userrights' => 'Liwaton gabos an karapatan kan mga paragamit',
+'right-userrights-interwiki' => 'Liwaton an karapatan kan mga paragamit kan ibang mga wikis',
+'right-siteadmin' => 'Kandaduhan asin dae pagkandaduhan an datos-sarayan',
+'right-override-export-depth' => 'Eksportaron an mga pahina kabali na an pinagkilyawan na mga pahina sagkod sa rarom na 5',
+'right-sendemail' => 'Magpadara nin e-koreo sa ibang mga paragamit',
+'right-passwordreset' => 'Tanawon an e-koreo kan pagbabago nin sekretong panlaog',
 
 # User rights log
 'rightslog' => 'Usip nin derechos nin paragamit',
 'rightslogtext' => 'Ini an historial kan mga pagbabâgo sa mga derecho nin parágamit.',
 'rightslogentry' => 'Rinibayab an pagkamyembro ni $1 sa $2 sagkod sa $3',
+'rightslogentry-autopromote' => 'dati na awtomatikong pinagpalangkaw gikan sa $2 sagkod S3',
 'rightsnone' => '(mayô)',
 
 # Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'basaha ining pahina',
 'action-edit' => 'liwatón ining pahina',
+'action-createpage' => 'magmukna nin mga pahina',
+'action-createtalk' => 'Magmukna nin mga pahina sa orolayan',
+'action-createaccount' => 'Muknaon ining panindog kan paragamit',
+'action-minoredit' => 'marakahan ining pagliwat bilang menor',
+'action-move' => 'ibalyo ining pahina',
+'action-move-subpages' => 'ibalyo ining pahina, asin kaiba an mga sub-pahina',
+'action-move-rootuserpages' => 'ibalyo an ugat kan mga pahina nin mga paragamit',
+'action-movefile' => 'ibalyo ining sagunson',
+'action-upload' => 'ikarga ining mga sagunson',
+'action-reupload' => 'sampawan ining eksistidong sagunson',
+'action-reupload-shared' => 'salambawan ining sagunson sa pinagheras na repositoryo',
+'action-upload_by_url' => 'ikarga ining sagunson gikan sa URL',
+'action-writeapi' => 'gamita an panurat na API',
+'action-delete' => 'puraon ining pahina',
+'action-deleterevision' => 'puraon ining pagbabago',
+'action-deletedhistory' => 'tanawon an pinagpurang historiya kaining pahina',
+'action-browsearchive' => 'hanapon an pinagpurang mga pahina',
+'action-undelete' => 'dae pagpuraon ining pahina',
+'action-suppressrevision' => 'hilngon otro asin ibalik ining pinagtagong pagbabago',
+'action-suppressionlog' => 'tanawon ining pribadong talaan',
+'action-block' => 'kubkubon ining paragamit gikan sa pagliliwat',
+'action-protect' => 'ribayan an kurit nin proteksyon para sa pahinang ini',
+'action-rollback' => 'hidaling ipagbalik an mga pagliwat kan huring paragamit na pinagliwat an sarong partikular na pahina',
+'action-import' => 'importaron ining pahina gikan sa ibang wiki',
+'action-importupload' => 'importaron ining pahina gikan sa sarong ikinargang sagunson',
+'action-patrol' => 'markahan an pagliwat kan iba bilang patrolyado',
+'action-autopatrol' => 'Giboha na an saimong pagliwat markado bilang patrolyado',
+'action-unwatchedpages' => 'tanawon an listahan kan mayong bantay na mga pahina',
+'action-mergehistory' => 'Pagkasararoon an historiya kaining pahina',
+'action-userrights' => 'liwaton gabos na mga karapatan nin paragamit',
+'action-userrights-interwiki' => 'liwaton an paragamit na mga karapatan kan mga paragamit nin ibang wikis',
+'action-siteadmin' => 'ikandado o dae ikandado an datos-sarayan',
+'action-sendemail' => 'magpadara nin mga e-koreo',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|pagbabâgo|mga pagbabâgo}}',
 'recentchanges' => 'Mga nakakaági pa sanáng pagbabàgo',
+'recentchanges-legend' => 'Pinakahuring mga option kan mga pagbabago',
 'recentchanges-summary' => 'Hanapon an mga pinahuring pagbabâgo sa wiki digdi sa páhinang ini.',
 'recentchanges-feed-description' => 'Hanápon an mga pinakahuring pagbabàgo sa wiki sa hungit na ini.',
+'recentchanges-label-newpage' => 'Ining pagliwat nakapagmukna nin sarong baguhon na pahina',
+'recentchanges-label-minor' => 'Ini saro sanang menor na pagliwat',
+'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
+'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
 'rcnote' => "Mahihiling sa babâ an {{PLURAL:$1| '''1''' pagbabàgo|'''$1''' pagbabàgo}} sa huring {{PLURAL:$2|na aldaw|'''$2''' na aldaw}}, sa $3.",
 'rcnotefrom' => "Mahihiling sa babâ an mga pagbabàgo poon kan '''$2''' (hasta '''$1''' ipinapahiling).",
 'rclistfrom' => 'Ipahilíng an mga pagbabàgo poon sa $1',
index 6618844..b5b0380 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ\91еларуская (тарашкевіца)‬)
+/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ±еларуская (тарашкевіца)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -261,7 +261,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Хаваць патруляваныя зьмены ў сьпісе апошніх зьменаў',
 'tog-newpageshidepatrolled' => 'Хаваць правераныя старонкі ў сьпісе новых старонак',
 'tog-extendwatchlist' => 'Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія',
-'tog-usenewrc' => 'Ð\92Ñ\8bкаÑ\80Ñ\8bÑ\81Ñ\82оÑ\9eваÑ\86Ñ\8c Ñ\83даÑ\81каналенÑ\8b Ñ\81Ñ\8cпÑ\96Ñ\81 Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\85 Ð·Ñ\8cменаў (патрабуе JavaScript)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83паваÑ\86Ñ\8c Ð·Ñ\8cменÑ\8b Ñ\81Ñ\82аÑ\80онкÑ\96 Ñ\9e Ñ\81Ñ\8cпÑ\96Ñ\81аÑ\85 Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\85 Ð·Ñ\8cменаÑ\9e Ñ\96 Ð½Ð°Ð·Ñ\96Ñ\80анÑ\8cнÑ\8fў (патрабуе JavaScript)',
 'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
 'tog-showtoolbar' => 'Паказваць панэль інструмэнтаў рэдагаваньня (патрабуе JavaScript)',
 'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку (JavaScript)',
@@ -612,6 +612,8 @@ $1',
 'badarticleerror' => 'Гэтае дзеяньне немагчыма выканаць на гэтай старонцы.',
 'cannotdelete' => 'Немагчыма выдаліць старонку альбо файл «$1». Магчыма, яна ўжо выдаленая кімсьці іншым.',
 'cannotdelete-title' => 'Немагчыма выдаліць старонку «$1»',
+'delete-hook-aborted' => 'Выдаленьне скасаванае працэдурай-перахопнікам.
+Тлумачэньняў не было.',
 'badtitle' => 'Няслушная назва',
 'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці інтэрвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
 'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
@@ -645,6 +647,8 @@ $2',
 Адміністратар, які абмежаваў доступ, пазначыў прычыну: «$3».',
 'invalidtitle-knownnamespace' => 'Няслушная назва ў прасторы «$2»: «$3»',
 'invalidtitle-unknownnamespace' => 'Няслушная назва ў невядомай прасторы $1: «$2»',
+'exception-nologin' => 'Вы не ўвайшлі ў сыстэму',
+'exception-nologin-text' => 'Гэтая старонка ці дзеяньне патрабуе, каб вы ўвайшлі ў сыстэму.',
 
 # Virus scanner
 'virus-badscanner' => "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
@@ -1030,6 +1034,8 @@ $2
 'node-count-exceeded-warning' => 'Старонка перавысіла дазволеную колькасьць вузлоў',
 'expansion-depth-exceeded-category' => 'Старонкі зь перавышанай глыбінёй уключэньня',
 'expansion-depth-exceeded-warning' => 'Старонка перавысіла дазволеную глыбіню ўключэньняў',
+'parser-unstrip-loop-warning' => 'Вызначаная незачыненая пятля',
+'parser-unstrip-recursion-limit' => 'Перавышанае абмежаваньне глыбіні рэкурсіі ($1)',
 
 # "Undo" feature
 'undo-success' => 'Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.',
@@ -2974,6 +2980,7 @@ $1',
 'spambot_username' => 'Чыстка спаму MediaWiki',
 'spam_reverting' => 'Адкат да апошняй вэрсіі без спасылак на $1',
 'spam_blanking' => 'Усе вэрсіі ўтрымліваюць спасылкі на $1, чыстка',
+'spam_deleting' => 'Усе вэрсіі ўтрымлівалі спасылкі на $1, выдаляем',
 
 # Info page
 'pageinfo-title' => 'Інфармацыя пра «$1»',
@@ -3854,6 +3861,8 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'api-error-empty-file' => 'Дасланы Вамі файл быў пусты.',
 'api-error-emptypage' => 'Стварэньне новых пустых старонак забаронена.',
 'api-error-fetchfileerror' => 'Унутраная памылка: падчас атрыманьня файла штосьці здарылася.',
+'api-error-fileexists-forbidden' => 'Файл з назвай «$1» ужо існуе і ня можа быць перазапісаны.',
+'api-error-fileexists-shared-forbidden' => 'Файл з назвай «$1» ужо існуе ў супольным сховішчы файлаў і ня можа быць перазапісаны.',
 'api-error-file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
 'api-error-filename-tooshort' => 'Назва файла занадта кароткая.',
 'api-error-filetype-banned' => 'Гэты тып файла забаронены.',
@@ -3892,4 +3901,6 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'duration-centuries' => '$1 {{PLURAL:$1|стагодзьдзе|стагодзьдзі|стагодзьдзяў}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Немагчыма запытаць блякаваньні на сэрвэры $1.',
 );
index f40423a..eec4ffc 100644 (file)
@@ -3627,8 +3627,8 @@ Gambar ditampaiakan dalam risulusi hibak, janis barakas lain dimula lawan prugra
 Situs ngini mangalami kangalihan teknik.',
 'dberr-again' => 'Cuba hadangi babarapa manit wan muat-pulang.',
 'dberr-info' => '(Kada kawa tasambung ka server databasis: $1)',
-'dberr-usegoogle' => 'Pian kawa cuba manggagai lung Google wayah samantara ni.',
-'dberr-outofdate' => 'Catat nang sidin indiks matan isi kami pina kawa kadaluarsa.',
+'dberr-usegoogle' => 'Pian kawa mancuba manggagai lung Google wayah pahadangan ngini.',
+'dberr-outofdate' => 'Catat nang sidin indéks matan isi kami pinanya hudah kadaluarsa.',
 'dberr-cachederror' => 'Ngini adalah sabuah rekap timbuluk tungkaran nang dipinta, wan pinanya kada pahanyarnya.',
 
 # HTML forms
index 3e4f3ee..df7a4f5 100644 (file)
@@ -185,7 +185,7 @@ $messages = array(
 'tog-hidepatrolled' => "Kuzhat ar c'hemmoù evezhiet e-touez ar c'hemmoù diwezhañ",
 'tog-newpageshidepatrolled' => 'Kuzhat ar pajennoù evezhiet diouzh roll ar pajennoù nevez',
 'tog-extendwatchlist' => 'Astenn ar roll evezhiañ a-benn diskouez an holl gemmoù ha neket ar re ziwezhañ hepken.',
-'tog-usenewrc' => "Ober gant ar c'hemmoù nevez gwellaet<br /> (rekis eo JavaScript)",
+'tog-usenewrc' => "Diskouez ar c'hemmoù nevez en ur feson kempennoc'h (rekis eo JavaScript)",
 'tog-numberheadings' => 'Niverenniñ emgefre an titloù',
 'tog-showtoolbar' => 'Diskouez ar varrenn gant ar meuzioù skridaozañ',
 'tog-editondblclick' => 'Daouglikañ evit kemmañ ur bajenn (JavaScript)',
@@ -382,7 +382,7 @@ $messages = array(
 'personaltools' => 'Ostilhoù personel',
 'postcomment' => 'Rann nevez',
 'articlepage' => 'Sellet ouzh ar pennad',
-'talk' => 'Kaozeal',
+'talk' => 'Kaozeadenn',
 'views' => 'Gweladennoù',
 'toolbox' => 'Boest ostilhoù',
 'userpage' => 'Pajenn implijer',
@@ -536,7 +536,8 @@ Kasit keloù d'ur [[Special:ListUsers/sysop|merer]], en ur verkañ dezhañ choml
 Marteze e o bet diverket gant unan bennak all dija.',
 'cannotdelete-title' => 'N\'haller ket diverkañ ar bajenn "$1"',
 'badtitle' => 'Titl fall',
-'badtitletext' => "Faziek pe c'houllo eo titl ar bajenn goulennet; pe neuze eo faziek al liamm etreyezhel",
+'badtitletext' => "Faziek pe c'houllo eo titl ar bajenn goulennet; pe neuze eo faziek al liamm etreyezhel pe etrewiki.
+Marteze ez eus ennañ arouezennoù n'haller ket degemer en titloù.",
 'perfcached' => "Krubuilhet eo ar roadennoù da-heul ha marteze n'int ket bet hizivaet. D'ar muiañ e c'haller kaout {{PLURAL:$1|un disoc'h|$1 disoc'h}} er grubuilh.",
 'perfcachedts' => "Krubuilhet eo ar roadennoù da-heul hag hizivaet int bet da ziwezhañ d'an $1. D'ar muiañ e c'haller kaout {{PLURAL:$4|un disoc'h|$4 disoc'h}} er grubuilh.",
 'querypage-no-updates' => 'Diweredekaet eo an hizivaat evit ar bajenn-mañ. Evit poent ne vo ket nevesaet ar roadennoù amañ.',
@@ -566,6 +567,8 @@ Setu amañ perak ''$2''.",
 "\'\'$3\'\'" eo an abeg roet gant ar merour en deus prennet anezhi.',
 'invalidtitle-knownnamespace' => 'Titl direizh gant an esaouenn anv "$2" hag an destenn "$3"',
 'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
+'exception-nologin' => "N'oc'h ket kevreet",
+'exception-nologin-text' => "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet er wiki-mañ.",
 
 # Virus scanner
 'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
@@ -972,7 +975,7 @@ An abeg roet gant $3 zo ''$2''",
 'nextrevision' => "Stumm war-lerc'h →",
 'currentrevisionlink' => 'Gwelet ar stumm red',
 'cur' => 'red',
-'next' => "War-lerc'h",
+'next' => "war-lerc'h",
 'last' => 'kent',
 'page_first' => 'kentañ',
 'page_last' => 'diwezhañ',
@@ -1610,7 +1613,7 @@ Mar fell deoc'h enporzhiañ ho restr memes tra, kit war ho kiz ha grit gant un a
 Mar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit anezhi adarre dindan un anv all. [[File:$1|thumb|center|$1]]",
 'file-exists-duplicate' => 'Un eil eus ar {{PLURAL:$1|restr|restroù}} da-heul eo ar restr-mañ :',
 'file-deleted-duplicate' => "Diverket ez eus bet c'hoazh ur restr heñvel-poch ouzh ar restr-mañ ([[:$1]]). Gwelloc'h e vefe deoc'h teuler ur sell war istor diverkadenn ar bajenn-se a-raok hec'h enporzhiañ en-dro.",
-'uploadwarning' => 'Diwallit!',
+'uploadwarning' => 'Kemenn diwall en ur ezporzhiañ',
 'uploadwarning-text' => 'Cheñchit deskrivadur ar restr a-is ha klaskit en-dro.',
 'savefile' => 'Enrollañ ar restr',
 'uploadedimage' => '"[[$1]]" enporzhiet',
@@ -1949,7 +1952,7 @@ $1 {{PLURAL:$1|rummad|rummad}}',
 'unusedcategories' => 'Rummadoù dizimplij',
 'unusedimages' => 'Skeudennoù en o-unan',
 'popularpages' => 'Pajennoù sellet ar muiañ',
-'wantedcategories' => 'Rummadoù a vank',
+'wantedcategories' => 'Rummadoù goulennet a vank',
 'wantedpages' => 'Pajennoù goulennet ar muiañ',
 'wantedpages-badtitle' => "Titl direizh er strollad disoc'hoù : $1",
 'wantedfiles' => 'Restroù a vank',
@@ -2042,9 +2045,9 @@ Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (d
 
 # Special:Categories
 'categories' => 'Roll ar rummadoù',
-'categoriespagetext' => 'Er {{PLURAL:$1|rummad|rummadoù}}da-heul ez eus pajennoù pe restroù media.
+'categoriespagetext' => 'Er {{PLURAL:$1|rummad|rummadoù}} da-heul ez eus pajennoù pe restroù media.
 Ne ziskouezer ket amañ ar [[Special:UnusedCategories|Rummadoù dizimplij]].
-Gwelet ivez ar [[Special:WantedCategories|rummadoù a vank]].',
+Gwelet ivez ar [[Special:WantedCategories|rummadoù goulennet a vank]].',
 'categoriesfrom' => 'Diskouez ar rummadoù en ur gregiñ gant :',
 'special-categories-sort-count' => 'Urzhiañ dre gont',
 'special-categories-sort-abc' => 'urzh al lizherenneg',
@@ -2162,7 +2165,7 @@ Evit tennañ ar bajenn-mañ a-ziwar ho rollad evezhiañ. klikit war "Paouez da e
 'unwatchthispage' => 'Paouez da evezhiañ',
 'notanarticle' => 'Pennad ebet',
 'notvisiblerev' => 'Stumm diverket',
-'watchnochange' => "Pajenn ebet eus ar re evezhiet ganeoc'h n'eo bet kemmet e-pad ar prantad spisaet",
+'watchnochange' => "N'ez eus elfenn ebet eus ar re evezhiet ganeoc'h a zo bet kemmet e-pad ar prantad spisaet",
 'watchlist-details' => "Lakaet hoc'h eus {{PLURAL:$1|$1 bajenn|$1 pajenn}} dindan evezh, anez kontañ ar pajennoù kaozeal.",
 'wlheader-enotif' => "* War enaou emañ ar c'has posteloù.",
 'wlheader-showupdated' => "* E '''tev''' emañ merket ar pajennoù bet kemmet abaoe ar wezh ziwezhañ hoc'h eus sellet outo",
@@ -2480,11 +2483,8 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
 'ipb-confirm' => 'Kadarnaat ar stankadenn',
 'badipaddress' => "Kamm eo ar chomlec'h IP.",
 'blockipsuccesssub' => 'Stankadenn deuet da benn vat',
-'blockipsuccesstext' => 'Stanket eo bet chomlec\'h IP "$1".
-<br />Gallout a rit sellet ouzh ar [[Special:BlockList|bajenn-mañ]] evit gwelet roll ar chomlec\'hioù IP stanket.
-
-Stanket eo bet [[Special:Contributions/$1|$1]].<br />
-Sellit ouzh [[Special:BlockList|roll ar chomlec\'hioù IP ha kontoù stanket]] evit gwiriañ ar stankadennoù.',
+'blockipsuccesstext' => "Stanket eo bet [[Special:Contributions/$1|$1]].<br />
+Sellit ouzh [[Special:BlockList|roll ar chomlec'hioù IP ha kontoù stanket]] evit gwiriañ ar stankadennoù.",
 'ipb-blockingself' => "Emaoc'h war-nes stankañ ac'hanoc'h hoc'h-unan ! Ha sur oc'h eo se a fell deoc'h ober ?",
 'ipb-confirmhideuser' => 'Emaoc\'h war-nes stankañ un implijer ha gweredekaet hoc\'h eus "kuzhat an implijer". Diverkañ a ra an dra-se anv an implijer en holl rolloù ha monedoù ar marilh.',
 'ipb-edit-dropdown' => 'Kemmañ an abegoù stankañ',
@@ -2529,7 +2529,7 @@ Sellit ouzh [[Special:BlockList|roll ar chomlec\'hioù IP ha kontoù stanket]] e
 'contribslink' => 'degasadennoù',
 'emaillink' => 'Kas ur postel',
 'autoblocker' => 'Emstanket rak implijet eo bet ho chomlec\'h IP gant "[[User:$1|$1]]" nevez zo.
-Setu aze an abeg(où) m\'eo bet stanket $1 : "$2"',
+Setu aze an abeg(où) m\'eo bet stanket $1 : "\'\'$2\'\'"',
 'blocklogpage' => 'Roll ar stankadennoù',
 'blocklog-showlog' => "Stanket eo bet an implijer-mañ c'hoazh. A-is emañ marilh ar stankadennoù, d'ho titouriñ :",
 'blocklog-showsuppresslog' => "Stanket ha kuzhet eo bet an implijer-mañ c'hoazh. A-is emañ marilh ar diverkadennoù, d'ho titouriñ :",
@@ -2700,8 +2700,8 @@ Mard eo se e c'hallit ivez implijout ul liamm a seurt gant [[{{#Special:Export}}
 # Namespace 8 related
 'allmessages' => 'Roll kemennoù ar reizhiad',
 'allmessagesname' => 'Anv',
-'allmessagesdefault' => 'Testenn dre ziouer',
-'allmessagescurrent' => 'Testenn zo bremañ',
+'allmessagesdefault' => 'Kemennadenn dre ziouer',
+'allmessagescurrent' => 'Kemennadenn zo bremañ',
 'allmessagestext' => "Setu roll ar c'hemennadennoù reizhiad a c'haller kaout en esaouennoù anv MediaWiki.
 Kit da welet [//www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [//translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
 'allmessagesnotsupportedDB' => "N'haller ket kaout {{ns:special}}:AllMessages rak diweredekaet eo bet wgUseDatabaseMessages.",
@@ -2915,6 +2915,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'spambot_username' => 'Naetaat ar strob gant MediaWiki',
 'spam_reverting' => "Distreiñ d'ar stumm diwezhañ hep liamm davet $1",
 'spam_blanking' => 'Diverkañ an holl stummoù enno liammoù davet $1',
+'spam_deleting' => 'An holl stummoù enno liammoù war-zu $1, o tiverkañ',
 
 # Info page
 'pageinfo-title' => 'Titouroù evit "$1"',
@@ -2968,8 +2969,8 @@ $1',
 'filedelete-archive-read-only' => 'N\'hall ket ar servijer web skrivañ war ar c\'havlec\'h dielloù "$1".',
 
 # Browsing diffs
-'previousdiff' => '← Stumm kent',
-'nextdiff' => "Stumm nevesoc'h →",
+'previousdiff' => '← Kemm kent',
+'nextdiff' => "Kemm nevesoc'h →",
 
 # Media information
 'mediawarning' => "'''Diwallit :''' Kodoù siek a c'hall bezañ er seurt restr-mañ.
@@ -3844,4 +3845,6 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
 'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Dibosupl eo bet tapout ar prennoù war ar servijer $1.',
 );
index 0483dfc..68c3e0e 100644 (file)
@@ -524,7 +524,7 @@ $1',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju stranice',
 'edithelppage' => 'Help:Uređivanje',
-'helppage' => 'Help:Sadržaj',
+'helppage' => 'Pomoć:Sadržaj',
 'mainpage' => 'Početna strana',
 'mainpage-description' => 'Početna strana',
 'policy-url' => 'Project:Pravila',
@@ -1880,9 +1880,8 @@ Možda možete pokušati kada bude manje opterećenje.',
 'upload_source_file' => ' (datoteka na Vašem računaru)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ova specijalna stranica prikazuje sve postavljene datoteke.
-Uobičajeno je da posljednja postavljena datoteka bude prikazana na vrhu spiska.
-Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
+'listfiles-summary' => 'Ova posebna stranica prikazuje sve postavljene datoteke.
+Kada je filtrirana od strane korisnika, prikazane su samo datoteke ako je korisnik postavio posljednju verziju te datoteke.',
 'listfiles_search_for' => 'Traži medije po imenu:',
 'imgfile' => 'datoteka',
 'listfiles' => 'Spisak slika',
@@ -2157,8 +2156,9 @@ Vidi također [[Special:WantedCategories|zatražene kategorije]].',
 'linksearch-pat' => 'Šema traženja:',
 'linksearch-ns' => 'Imenski prostor:',
 'linksearch-ok' => 'Traži',
-'linksearch-text' => 'Općeniti izrazi poput "*.wikipedia.org" se mogu koristiti.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti općeniti izrazi poput "*.wikipedia.org"
+Potrebna je najmanje osnovna domena, naprimjer "*.org."<br />
+Podržani protokoli: <tt>$1</tt> (ne dodavajte bilo koji od ovih u vašu pretragu).',
 'linksearch-line' => '$1 je povezan od $2',
 'linksearch-error' => 'Džokeri se mogu pojavljivati samo na početku naziva servera.',
 
index ee2dbb1..5b3df80 100644 (file)
@@ -199,7 +199,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Amaga edicions patrullades als canvis recents',
 'tog-newpageshidepatrolled' => 'Amaga pàgines patrullades de la llista de pàgines noves',
 'tog-extendwatchlist' => 'Desplega la llista de seguiment per a mostrar tots els canvis afectats, no només els més recents',
-'tog-usenewrc' => 'Usa la presentació millorada dels canvis recents (cal JavaScript)',
+'tog-usenewrc' => 'Utilitza una presentació millorada dels canvis recents (cal JavaScript)',
 'tog-numberheadings' => 'Enumera automàticament els encapçalaments',
 'tog-showtoolbar' => "Mostra la barra d'eines d'edició (cal JavaScript)",
 'tog-editondblclick' => 'Edita les pàgines amb un doble clic (cal JavaScript)',
@@ -580,6 +580,8 @@ Els seus motius han estat: «''$2''».",
 L\'administrador que l\'ha bloquejat ha donat aquesta explicació: "$3".',
 'invalidtitle-knownnamespace' => "El títol amb l'espai de noms «$2» i text «$3» no és vàlid",
 'invalidtitle-unknownnamespace' => 'Títol no vàlid amb espai de noms desconegut de número «$1» i text «$2»',
+'exception-nologin' => 'No has iniciat sessió',
+'exception-nologin-text' => 'Aquesta pàgina o acció requereix que iniciïs sessió a aquest wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Mala configuració: antivirus desconegut: ''$1''",
@@ -2891,6 +2893,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'spambot_username' => 'Neteja de brossa del MediaWiki',
 'spam_reverting' => 'Es reverteix a la darrera versió que no conté enllaços a $1',
 'spam_blanking' => "Totes les revisions contenien enllaços $1, s'està deixant en blanc",
+'spam_deleting' => "S'estan suprimint totes les revisions que contenien enllaços a $1",
 
 # Info page
 'pageinfo-title' => 'Informació de «$1»',
@@ -3802,4 +3805,6 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'duration-centuries' => '$1 {{PLURAL:$1|segle|segles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mil·leni|mil·lenis}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "No s'han pogut aconseguir els bloquejos al servidor $1.",
 );
index 2988190..d2b0477 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Xqt
  */
 
 $datePreferences = array(
@@ -500,6 +501,8 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
 'statistics' => 'Só-gé̤ṳ',
 'statistics-header-users' => 'Ê̤ṳng-hô só-gé̤ṳ',
 
+'disambiguationspage' => 'Template:Gì-ngiê',
+
 'brokenredirects-edit' => 'gāi',
 'brokenredirects-delete' => 'chēng',
 
index 484952a..ae36d32 100644 (file)
@@ -361,7 +361,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skrýt patrolované editace v posledních změnách',
 'tog-newpageshidepatrolled' => 'Skrýt patrolované stránky ze seznamu nových stránek',
 'tog-extendwatchlist' => 'Na seznamu sledovaných stránek zobrazovat všechny změny, ne jen tu poslední',
-'tog-usenewrc' => 'Používat zdokonalené poslední změny (vyžaduje JavaScript)',
+'tog-usenewrc' => 'V posledních změnách a sledovaných stránkách seskupovat změny podle stránek (vyžaduje JavaScript)',
 'tog-numberheadings' => 'Automaticky číslovat nadpisy',
 'tog-showtoolbar' => 'Zobrazit panel nástrojů (vyžaduje JavaScript)',
 'tog-editondblclick' => 'Editovat dvojklikem (JavaScript)',
@@ -712,6 +712,7 @@ Pokud toto není váš případ, možná jste nalezli chybu v software. Prosíme
 'cannotdelete' => 'Nebylo možné smazat stránku nebo soubor „$1“.
 Možná už byl(a) smazán(a) někým jiným.',
 'cannotdelete-title' => 'Stránku „$1“ nelze smazat',
+'delete-hook-aborted' => 'Smazání bylo bez bližšího vysvětlení zrušeno přípojným bodem.',
 'badtitle' => 'Neplatný název',
 'badtitletext' => 'Požadovaný název stránky byl neplatný, prázdný nebo obsahoval nesprávnou předponu mezijazykového či interwiki odkazu. Možná obsahoval znaky, které v názvu nejsou dovoleny.',
 'perfcached' => 'Následující data jsou z cache a nemusí být plně aktuální. Cache může obsahovat maximálně {{PLURAL:$1|jeden výsledek|$1 výsledky|$1 výsledků}}.',
@@ -742,6 +743,8 @@ $2',
 Správce serveru, který úložiště zamkl, poskytl toto zdůvodnění: „''$3''“.",
 'invalidtitle-knownnamespace' => 'Neplatný název se jmenným prostorem „$2“ a textem „$3“',
 'invalidtitle-unknownnamespace' => 'Neplatný název s neznámým číslem jmenného prostoru $1 a textem „$2“',
+'exception-nologin' => 'Nejste přihlášen(a)',
+'exception-nologin-text' => 'Tato stránka nebo akce vyžaduje, abyste byli na této wiki přihlášeni.',
 
 # Virus scanner
 'virus-badscanner' => "Špatná konfigurace: neznámý antivirový program: ''$1''",
@@ -1095,7 +1098,7 @@ Níže vidíte soupis přesunů a smazání této stránky:",
 'moveddeleted-notice' => 'Tato stránka byla smazána.
 Podrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených přesunů a smazání této stránky.',
 'log-fulllog' => 'Zobrazit všechny záznamy',
-'edit-hook-aborted' => 'Editace byla zrušena přípojným bodem bez bližšího vysvětlení.',
+'edit-hook-aborted' => 'Editace byla bez bližšího vysvětlení zrušena přípojným bodem.',
 'edit-gone-missing' => 'Stránku se nepodařilo aktualizovat.
 Zřejmě byla smazána.',
 'edit-conflict' => 'Editační konflikt.',
@@ -3069,7 +3072,8 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'spamprotectionmatch' => 'Následující text spustil náš filtr proti spamu: $1',
 'spambot_username' => 'Systémový čistič spamu',
 'spam_reverting' => 'Revert na poslední verzi neobsahující odkazy na $1',
-'spam_blanking' => 'Všechny revize obsahovaly odkazy na $1, vyprázdněno',
+'spam_blanking' => 'Všechny verze obsahovaly odkazy na $1, vyprázdněno',
+'spam_deleting' => 'Všechny verze obsahovaly odkazy na $1, smazáno',
 
 # Info page
 'pageinfo-title' => 'Informace o "$1"',
@@ -4000,6 +4004,8 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'api-error-empty-file' => 'Načtený soubor je prázdný.',
 'api-error-emptypage' => 'Zakládání prázdných stránek není dovoleno.',
 'api-error-fetchfileerror' => 'Vnitřní chyba: došlo k chybě při stahování souboru.',
+'api-error-fileexists-forbidden' => 'Soubor s názvem „$1“ už existuje a nelze ho přepsat.',
+'api-error-fileexists-shared-forbidden' => 'Soubor s názvem „$1“ už existuje ve sdíleném úložišti a nelze ho přepsat.',
 'api-error-file-too-large' => 'Načtený soubor je příliš velký.',
 'api-error-filename-tooshort' => 'Název souboru je příliš krátký.',
 'api-error-filetype-banned' => 'Tento typ souboru je zakázán.',
@@ -4038,4 +4044,6 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'duration-centuries' => '$1 {{PLURAL:$1|století}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisíciletí}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nepodařilo se získat zámek serveru $1.',
 );
index eeef532..61de1fb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kashubian (Kaszëbsczi)
+/** Kashubian (kaszëbsczi)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 73eed18..283d58d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Church Slavic (Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
+/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 63baaa3..8edcbe4 100644 (file)
@@ -124,7 +124,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Cuddio golygiadau sydd wedi derbyn ymweliad patrôl rhag y rhestr newidiadau diweddar',
 'tog-newpageshidepatrolled' => 'Cuddio tudalennau sydd wedi derbyn ymweliad patrôl rhag y rhestr dudalennau newydd',
 'tog-extendwatchlist' => "Ehangu'r rhestr wylio i ddangos pob golygiad yn hytrach na'r diweddaraf yn unig",
-'tog-usenewrc' => 'Defnyddio newidiadau diweddar gwell (angen JavaScript)',
+'tog-usenewrc' => "Yn dangos newidiadau i un dudalen gyda'i gilydd - ar 'newidiadau diweddar' a'r 'rhestr wylio' (angen JavaScript)",
 'tog-numberheadings' => "Rhifo penawdau'n awtomatig",
 'tog-showtoolbar' => 'Dangos y bar offer golygu (angen JavaScript)',
 'tog-editondblclick' => 'Golygu tudalennau wrth glicio ddwywaith (angen JavaScript)',
@@ -505,6 +505,8 @@ Rhoddwyd y rheswm hwn - ''$2''.",
 Y rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Teitl annilys o\'r enw "$3" yn y parth "$2"',
 'invalidtitle-unknownnamespace' => 'Teitl annilys ag iddi\'r rhif parth anhysbys $1 a\'r enw "$2"',
+'exception-nologin' => 'Nid ydych wedi mewngofnodi',
+'exception-nologin-text' => "Rhaid mewngofnodi i'r wici er mwyn gweld y dudalen neu gyflawni'r weithred.",
 
 # Virus scanner
 'virus-badscanner' => "Cyfluniad gwael: sganiwr firysau anhysbys: ''$1''",
@@ -876,6 +878,8 @@ Cafodd yr argiau hyn eu hepgor.",
 'node-count-exceeded-warning' => 'Mae nifer y nodau yn y dudalen yn ormod',
 'expansion-depth-exceeded-category' => "Tudalennau â dyfnder ehangu tu hwnt i'r terfyn",
 'expansion-depth-exceeded-warning' => "Mae dyfnder ehangu'r dudalen y tu hwnt i'r terfyn",
+'parser-unstrip-loop-warning' => 'Wedi darganfod dolen dad-blicio (unstrip loop)',
+'parser-unstrip-recursion-limit' => 'Wedi mynd dros ben y terfyn ar ddychweliad dad-blicio (unstrip recursion) ($1)',
 
 # "Undo" feature
 'undo-success' => "Gellir dadwneud y golygiad. Byddwch gystal â gwirio'r gymhariaeth isod i sicrhau mai dyma sydd arnoch eisiau gwneud, ac yna rhowch y newidiadau ar gadw i gwblhau'r gwaith o ddadwneud y golygiad.",
@@ -1936,6 +1940,7 @@ Gallwch weld chwiliad mwy penodol trwy ddewis y math o lòg, enw'r defnyddiwr, n
 Sylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
 'logempty' => 'Does dim eitemau yn cyfateb yn y lòg.',
 'log-title-wildcard' => "Chwilio am deitlau'n dechrau gyda'r geiriau hyn",
+'showhideselectedlogentries' => 'Dewis dangos neu guddio cofnodion lòg',
 
 # Special:AllPages
 'allpages' => 'Pob tudalen',
@@ -2789,7 +2794,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' => "Rhoi'r dewisiadau ar gadw",
+'tooltip-preferences-save' => 'Rhodder y dewisiadau ar gadw',
 'tooltip-summary' => 'Rhowch grynodeb byr',
 
 # Metadata
@@ -2813,8 +2818,9 @@ Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
 Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr waharddedig.',
 'spamprotectionmatch' => "Dyma'r testun gyneuodd ein hidlydd amddiffyn rhag sbam: $1",
 'spambot_username' => 'Teclyn clirio sbam MediaWiki',
-'spam_reverting' => "Yn troi nôl i'r diwygiad diweddaraf sydd ddim yn cynnwys cysylltiadau i $1",
-'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, yn blancio',
+'spam_reverting' => 'Wedi adfer y diwygiad diweddaraf na sydd yn cynnwys cysylltiadau i $1',
+'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, felly gwacawyd y dudalen',
+'spam_deleting' => 'Roedd pob diwygiad yn cynnwys cysylltiadau â $1, felly fe ddilëwyd y dudalen',
 
 # Info page
 'pageinfo-title' => 'Manylion "$1"',
@@ -3710,4 +3716,6 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'duration-centuries' => '$1 {{PLURAL:$1|canmlwydd|ganmlwydd|ganmlwydd|canmlwydd|chanmlwydd|canmlwydd}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milflwydd|filflwydd|filflwydd|milflwydd|milflwydd|milflwydd}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Wedi methu sicrhau cloion ar y gweinydd $1.',
 );
index 724140a..7b279c3 100644 (file)
@@ -193,7 +193,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skjul patruljerede redigeringer i seneste ændringer',
 'tog-newpageshidepatrolled' => 'Skjul patruljerede sider på listen over nye sider',
 'tog-extendwatchlist' => 'Udvid overvågningslisten til at vise alle ændringer og ikke kun den nyeste',
-'tog-usenewrc' => 'Brug forbedret liste over seneste ændringer (kræver JavaScript)',
+'tog-usenewrc' => 'Gruppér ændringerne per side i listen over seneste ændringer og overvågningslisten (kræver JavaScript)',
 'tog-numberheadings' => 'Automatisk nummerering af overskrifter',
 'tog-showtoolbar' => 'Vis værktøjslinje til redigering (JavaScript)',
 'tog-editondblclick' => 'Redigér sider med dobbeltklik (JavaScript)',
@@ -574,6 +574,8 @@ $2',
 Administratoren, som skrivebeskyttede den, gav følgende begrundelse: "$3".',
 'invalidtitle-knownnamespace' => 'Ugyldig titel med navnerummet "$2" og teksten "$3"',
 'invalidtitle-unknownnamespace' => 'Ugyldig titel med ukendt navnerum nummer $1 og tekst "$2"',
+'exception-nologin' => 'Ikke logget på',
+'exception-nologin-text' => 'Denne side eller handling kræver, at du er logget på denne wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurationsfejl: ukendt virus-scanner: ''$1''",
@@ -1171,8 +1173,8 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'search-result-size' => '$1 ({{PLURAL:$2|et ord|$2 ord}})',
 'search-result-category-size' => '{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})',
 'search-result-score' => 'Relevans: $1%',
-'search-redirect' => '(omdiriger $1)',
-'search-section' => '(sektion $1)',
+'search-redirect' => '(omdirigering $1)',
+'search-section' => '(afsnit $1)',
 'search-suggest' => 'Mente du: $1',
 'search-interwiki-caption' => 'Søsterprojekter',
 'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
@@ -2778,7 +2780,7 @@ Du kan se på kildeteksten.',
 'tooltip-ca-move' => 'Flyt denne side',
 'tooltip-ca-watch' => 'Sæt denne side på din overvågningsliste',
 'tooltip-ca-unwatch' => 'Fjern denne side fra din overvågningsliste',
-'tooltip-search' => 'Søg på denne wiki',
+'tooltip-search' => 'Søg på {{SITENAME}}',
 'tooltip-search-go' => 'Vis en side med præcis dette navn, hvis den findes',
 'tooltip-search-fulltext' => 'Søg efter sider der indeholder denne tekst',
 'tooltip-p-logo' => 'Forsiden',
@@ -2856,6 +2858,7 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
 'spambot_username' => 'MediaWiki spam-rensning',
 'spam_reverting' => 'Sidste version uden henvisning til $1 gendannet.',
 'spam_blanking' => 'Alle versioner, som indeholdt henvisninger til $1, er renset.',
+'spam_deleting' => 'Alle versioner indeholder henvisninger til $1, sletter',
 
 # Info page
 'pageinfo-title' => 'Information om "$1"',
index 046abce..b03d293 100644 (file)
@@ -404,7 +404,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden',
 'tog-newpageshidepatrolled' => 'Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden',
 'tog-extendwatchlist' => 'Erweiterte Beobachtungsliste zur Anzeige aller Änderungen',
-'tog-usenewrc' => 'Erweiterte Darstellung der „Letzten Änderungen“ (benötigt JavaScript)',
+'tog-usenewrc' => 'Seitenbezogene Gruppierung bei den „Letzten Änderungen“ und auf der Beobachtungsliste (benötigt JavaScript)',
 'tog-numberheadings' => 'Überschriften automatisch nummerieren',
 'tog-showtoolbar' => 'Bearbeiten-Werkzeugleiste anzeigen (benötigt JavaScript)',
 'tog-editondblclick' => 'Seiten mit Doppelklick bearbeiten (benötigt JavaScript)',
@@ -429,7 +429,7 @@ $messages = array(
 'tog-fancysig' => 'Signatur als Wikitext behandeln (ohne automatische Verlinkung)',
 'tog-externaleditor' => 'Externen Editor standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
 'tog-externaldiff' => 'Externes Programm standardmäßig für Versionsunterschiede nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
-'tog-showjumplinks' => '„Wechseln zu“-Links aktivieren',
+'tog-showjumplinks' => '„Wechseln-zu“-Links aktivieren',
 'tog-uselivepreview' => 'Vorschau sofort anzeigen (benötigt JavaScript) (experimentell)',
 'tog-forceeditsummary' => 'Warnen, sofern beim Speichern die Zusammenfassung fehlt',
 'tog-watchlisthideown' => 'Eigene Bearbeitungen in der Beobachtungsliste ausblenden',
@@ -440,7 +440,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'Kontrollierte Änderungen in der Beobachtungsliste ausblenden',
 'tog-nolangconversion' => 'Konvertierung von Sprachvarianten deaktivieren',
 'tog-ccmeonemails' => 'Schicke mir Kopien der E-Mails, die ich anderen Benutzern sende',
-'tog-diffonly' => 'Zeige beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite',
+'tog-diffonly' => 'Beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite anzeigen',
 'tog-showhiddencats' => 'Anzeige versteckter Kategorien',
 'tog-noconvertlink' => 'Konvertierung des Titels deaktivieren',
 'tog-norollbackdiff' => 'Unterschied nach dem Zurücksetzen unterdrücken',
@@ -754,6 +754,8 @@ Falls dies nicht  zutrifft, hast du eventuell einen Fehler in der Software gefun
 'cannotdelete' => 'Die Seite oder Datei „$1“ kann nicht gelöscht werden.
 Möglicherweise wurde sie bereits von jemand anderem gelöscht.',
 'cannotdelete-title' => 'Seite „$1“ kann nicht gelöscht werden',
+'delete-hook-aborted' => 'Die Löschung wurde von einer Softwareerweiterung zu MediaWiki verhindert.
+Es ist hierzu keine Erklärung verfügbar.',
 'badtitle' => 'Ungültiger Titel',
 'badtitletext' => 'Der Titel der angeforderten Seite ist ungültig, leer oder ein ungültiger Sprachlink von einem anderen Wiki.',
 'perfcached' => 'Die folgenden Daten stammen aus dem Cache und sind möglicherweise nicht aktuell. Maximal {{PLURAL:$1|ein Ergebnis ist|$1 Ergebnisse sind}} im Cache verfügbar.',
@@ -775,7 +777,7 @@ Bitte versuche es in ein paar Minuten erneut.',
 'editinginterface' => "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.
 Änderungen auf dieser Seite wirken sich auf die Benutzeroberfläche aus.
 Ziehe bitte im Fall von Übersetzungen in Betracht, diese bei [//translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
-'sqlhidden' => '(SQL-Abfrage versteckt)',
+'sqlhidden' => "''Die SQL-Datenbankabfrage ist verborgen.''",
 'cascadeprotected' => 'Diese Seite ist zur Bearbeitung gesperrt. Sie ist in die {{PLURAL:$1|folgende Seite|folgenden Seiten}} eingebunden, die mittels der Kaskadensperroption geschützt {{PLURAL:$1|ist|sind}}:
 $2',
 'namespaceprotected' => "Du hast nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
@@ -789,6 +791,8 @@ Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerich
 Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3“.',
 'invalidtitle-knownnamespace' => 'Ungültiger Titel mit Namensraum „$2“ und Text „$3“',
 'invalidtitle-unknownnamespace' => 'Ungültiger Titel mit unbekannter Namensraumnummer $1 und Text „$2“',
+'exception-nologin' => 'Nicht angemeldet',
+'exception-nologin-text' => 'Diese Seite oder Aktion erfordert, dass du auf diesem Wiki angemeldet bist.',
 
 # Virus scanner
 'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
@@ -2152,7 +2156,7 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'fewestrevisions' => 'Seiten mit den wenigsten Versionen',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
+'nbytes' => '$1 {{PLURAL:$1|Byte|Byte}}',
 'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategorien}}',
 'nlinks' => '{{PLURAL:$1|1 Link|$1 Links}}',
 'nmembers' => '{{PLURAL:$1|1 Eintrag|$1 Einträge}}',
@@ -2971,7 +2975,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.',
 'import-parse-failure' => 'Fehler beim XML-Import:',
 'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
-'import-nonewrevisions' => 'Es sind keine neuen Versionen zum Import vorhanden, alle Versionen wurden bereits früher importiert.',
+'import-nonewrevisions' => 'Alle Versionen wurden bereits zu einem früheren Zeitpunkt importiert.',
 'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
 'import-upload' => 'XML-Daten importieren',
 'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
@@ -3127,7 +3131,8 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'spamprotectionmatch' => "'''Der folgende Text wurde vom Spamfilter gefunden: ''$1'''''",
 'spambot_username' => 'MediaWiki-Spam-Säuberung',
 'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
-'spam_blanking' => 'Alle Versionen enthielten Links zu $1, bereinigt.',
+'spam_blanking' => 'Alle Versionen mit einem Link zu $1 wurden bereinigt.',
+'spam_deleting' => 'Alle Versionen mit einem Link zu $1 wurden gelöscht.',
 
 # Info page
 'pageinfo-title' => 'Informationen zu „$1“',
@@ -4021,6 +4026,8 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'api-error-empty-file' => 'Die hochgeladene Datei war leer.',
 'api-error-emptypage' => 'Es ist nicht erlaubt, neue leere Seiten zu erstellen.',
 'api-error-fetchfileerror' => 'Interner Fehler: Beim Abrufen der Datei ist ein Fehler aufgetreten.',
+'api-error-fileexists-forbidden' => 'Eine Datei namens „$1“ ist bereits vorhanden und kann nicht überschrieben werden.',
+'api-error-fileexists-shared-forbidden' => 'Eine Datei namens „$1“ ist bereits im gemeinsamen Dateirepositorium vorhanden und kann daher nicht überschrieben werden.',
 'api-error-file-too-large' => 'Die hochgeladene Datei war zu groß.',
 'api-error-filename-tooshort' => 'Der Dateiname ist zu kurz.',
 'api-error-filetype-banned' => 'Diese Dateiendung ist gesperrt.',
@@ -4059,4 +4066,6 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'duration-centuries' => '$1 {{PLURAL:$1|Jahrhundert|Jahrhunderte}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtausend|Jahrtausende}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Die Sperren auf Server $1 konnte nicht abgerufen werden.',
 );
index f96794f..2fc5505 100644 (file)
@@ -11,6 +11,7 @@
  * @author Aspar
  * @author Belekvor
  * @author Erdemaslancan
+ * @author George Animal
  * @author Kaganer
  * @author Mirzali
  * @author Reedy
@@ -403,12 +404,12 @@ $messages = array(
 'linkprefix' => "'''MediaWiki niya ro.'''",
 
 'about' => 'Heqa',
-'article' => 'Pela tedeesteyan',
+'article' => 'Wesiqe',
 'newwindow' => '(zerrey pençereyê dê newey de beno a)',
 'cancel' => 'Bıterkne',
 'moredotdotdot' => 'Vêşêri...',
 'mypage' => 'Pela mı',
-'mytalk' => 'Persiyê mı',
+'mytalk' => 'Werênayışê mı',
 'anontalk' => 'Pela werênayışê nê IPy',
 'navigation' => 'Pusula',
 'and' => '&#32;u',
@@ -434,8 +435,8 @@ $messages = array(
 'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışê raverberdan ake (Tenya vector skin de)',
 'vector-view-create' => 'Vıraze',
 'vector-view-edit' => 'Bıvurne',
-'vector-view-history' => 'Ravêrda bımocne',
-'vector-view-view' => 'Bıwanê',
+'vector-view-history' => 'Tarixi bımocne',
+'vector-view-view' => 'Bıwanên',
 'vector-view-viewsource' => 'Çımey bıvêne',
 'actions' => 'Kerdeni',
 'namespaces' => 'Cayê namey',
@@ -456,7 +457,7 @@ $messages = array(
 'permalink' => 'Gıreyo daimi',
 'print' => 'Çap ke',
 'view' => 'Bıvêne',
-'edit' => 'Bıvurne',
+'edit' => 'Bıvurnên',
 'create' => 'Vırazê',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
@@ -472,11 +473,11 @@ $messages = array(
 'newpage' => 'Pela newi',
 'talkpage' => 'Ena pele sero werêne',
 'talkpagelinktext' => 'Mesac',
-'specialpage' => 'Pela xısusi',
+'specialpage' => 'Pela xısusiye',
 'personaltools' => 'Hacetê şexsi',
 'postcomment' => 'Qısımo newe',
 'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Persiyey',
+'talk' => 'Werênayış',
 'views' => 'Asayışi',
 'toolbox' => 'Haceti',
 'userpage' => 'Pela karberi bıvêne',
@@ -574,13 +575,13 @@ $1',
 'nstab-main' => 'Pele',
 'nstab-user' => 'Pela Karberi',
 'nstab-media' => 'Pela Medya',
-'nstab-special' => 'Pela xısusi',
+'nstab-special' => 'Pela xısusiye',
 'nstab-project' => 'Pela Procey',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Mesac',
 'nstab-template' => 'Şablon',
 'nstab-help' => 'Pela peşti',
-'nstab-category' => 'Kategori',
+'nstab-category' => 'Kategoriye',
 
 # Main script and global functions
 'nosuchaction' => 'Fealiyeto wınasi çıniyo',
@@ -659,11 +660,14 @@ Seba çarnayışi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=kiu tra
 'cascadeprotected' => 'No pel de vurnayiş qedexe biyo, çunke şıma tuşa "kademeyın" aqtif kerdo u no {{PLURAL:$1|pelo|pelo}} pawıteyo de xebıtyeno:
 $2',
 'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
-'customcssprotected' => 'Na pela vurnayışi re mısadey şıma çınyo, çıkı na pela xısusi sazanê karbera muhtewa kena.',
-'customjsprotected' => 'Na pela Java Scripti vurnayışi re mısadey şıma çınyo, çıkı na pela xısusi sazanê karbera muhtewa kena.',
+'customcssprotected' => 'Mısadeyê şıma çıniyo ke na pela CSSi bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
+'customjsprotected' => 'Mısadeyê şıma çıniyo ke na pela Java Scripti bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
 'ns-specialprotected' => 'Peley xısusi nênê vurnayış.',
 'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
 Sebeb: "\'\'$2\'\'".',
+'filereadonlyerror' => 'Dosyay vurnayışê "$1" nê abê no lakin depoy dosya da "$2" mod dê  salt wendi deyo.
+
+Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
 'invalidtitle-knownnamespace' => 'Canemey "$2" u metnê "$3" xırabo',
 'invalidtitle-unknownnamespace' => 'Sernameye nêşınasiya yana amraiya canameyo  $1 u metno "$2" xırab',
 
@@ -693,8 +697,8 @@ Hesabê şıma biyo a.
 'loginprompt' => "Cıkewtena {{SITENAME}}i rê gani ''cookies'' akerdey bê.",
 'userlogin' => 'Cı kewe / hesab vıraze',
 'userloginnocreate' => 'Cı kewe',
-'logout' => 'Cı ra veciye',
-'userlogout' => 'Bıvciyê',
+'logout' => 'Bıveciyên',
+'userlogout' => 'Bıveciyên',
 'notloggedin' => 'Hesab akerde niyo',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
@@ -742,8 +746,8 @@ Eke vurnayişê parolayi, şıma nêwaşt ya zi parolayê şıma ameyo şıma vi
 'noemailcreate' => 'Şıma gani yew parolayo meqbul peda bıkeri',
 'passwordsent' => '"$1" No name de yew e-posta erşawiya (ruşya). hesabê xo, şıma wext mesaj gırewt u çax akere.',
 'blocked-mailpassword' => 'Cıkewetışê na keyepel de şıma qedexe biye, ey ra newe yew şifre nêerşawyeno.',
-'eauthentsent' => 'Adreso ke şıma dayo ma, ma yew e-posta erşawıt uca, o e-posta de kodê tesdiq kerdış esto.
-Heta ke şıma o e-posta tesdiq nêkeri ma yewna e-posta şıma ri nêerşaweni.',
+'eauthentsent' => 'Adreso ke şıma dayo ma, ma yew e-posta rışt uca, o e-posta de kodê araşt kerdış esto.
+Heta ke şıma o e-postaaraşt nêkeri ma yewna e-posta şıma ri nêrışêno.',
 'throttled-mailpassword' => 'Parola vir ardış, zerreyê {{PLURAL:$1|yew seet|$1 seet}} de erşawiya.
 Parola her {{PLURAL:$1|yew seete|$1 seete}} de yew rey erşawiyena.',
 'mailerror' => 'Erşawıtışe xetayê e-posta: $1',
@@ -753,7 +757,7 @@ xulasa ney kesê ke IP adresê şıma xebıtneni hini nêeşkeni ney ra zêdêr
 'emailnotauthenticated' => 'No format de nuştışê e-postayi qebul nêbeno.
 Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'noemailprefs' => 'Hesab biyo a.',
-'emailconfirmlink' => 'E-postayê xo tesdiq kere',
+'emailconfirmlink' => 'E-postayê xo araşt kerê',
 'invalidemailaddress' => 'No format de nuştışê e-postayi qebul nêbeno. Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'cannotchangeemail' => 'E-postay hesabi ena wiki sera nêvurneyêno.',
 'emaildisabled' => 'Na site ra e-posta nêrışêno.',
@@ -824,7 +828,7 @@ Parola vêrdiye: $2',
 # Special:ChangeEmail
 'changeemail' => 'E-posta adresa xo bıvurnê',
 'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
-'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê tesdiq kerdışi zi parolay xo şıma de bınusnê',
+'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê araşt kerdışi zi parolay xo şıma de bınusnê',
 'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
 'changeemail-oldemail' => 'E-postay şımaya newki:',
 'changeemail-newemail' => 'E-postay şımayê newe:',
@@ -841,11 +845,11 @@ Parola vêrdiye: $2',
 'link_tip' => 'Gırê dahili',
 'extlink_sample' => 'http://www.example.com titleya gire',
 'extlink_tip' => 'Çımeyo tewer (http:// prefix)',
-'headline_sample' => 'nuşteyo headline',
+'headline_sample' => 'nuştey xeta seri',
 'headline_tip' => 'Ket 2 headline',
 'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
 'nowiki_tip' => 'Formatê wiki iptal bık',
-'image_sample' => 'resım bıerze cı',
+'image_sample' => 'Misal resim.jpg',
 'image_tip' => 'Dosyaya embedi',
 'media_sample' => 'misal.jpg',
 'media_tip' => 'Gırey dosya',
@@ -1304,7 +1308,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 
 # Preferences page
 'preferences' => 'Tercihi',
-'mypreferences' => 'Tercihi',
+'mypreferences' => 'Tercihê mı',
 'prefs-edits' => 'Amarê vurnayışan:',
 'prefsnologin' => 'Şıma cıkewtış nêvıraşto',
 'prefsnologintext' => 'Şıma gani be <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} cikewte]</span> ke tercihanê karberi xo eyar bıkerê.',
@@ -1453,7 +1457,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 # Groups
 'group' => 'Grup:',
 'group-user' => 'Karberi',
-'group-autoconfirmed' => 'Karberê ke otomatikmen tesdiq biy',
+'group-autoconfirmed' => 'Karbero ke xob xo biyê araşt',
 'group-bot' => 'Boti',
 'group-sysop' => 'İdarekari',
 'group-bureaucrat' => 'Burokrati',
@@ -1461,14 +1465,14 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'group-all' => '(pêro)',
 
 'group-user-member' => '{{GENDER:$1|karber}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|Karbero ke otomotik tesdiq biyo}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|Karbero ke xob xo biyê araşt}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|İdarekar}}',
 'group-bureaucrat-member' => '{{GENDER:$1|buroqrat}}',
 'group-suppress-member' => '{{GENDER:$1|Temaşekar}}',
 
 'grouppage-user' => '{{ns:project}}:Karberi',
-'grouppage-autoconfirmed' => '{{ns:project}}: karberê tesdiqbiyaey',
+'grouppage-autoconfirmed' => '{{ns:project}}:Karbero ke xob xo biyê araşt',
 'grouppage-bot' => '{{ns:project}}:Boti',
 'grouppage-sysop' => '{{ns:project}}:İdarekeri',
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrati',
@@ -1491,7 +1495,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-reupload-own' => 'Dosyeyê ke to bar kerdi, inan sero bınuse',
 'right-reupload-shared' => 'Dosyeyê ke ambarê medyao barekerde de, inan mehelli wedare',
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
-'right-purge' => 'Seba yew pela ke tesdiq nêbiya, viria (cache) keypele pak bıke',
+'right-purge' => 'Verde ju pela araşt kerdışi hafızay sita besterne',
 'right-autoconfirmed' => 'Pelanê ke nême kılit biyê, inan bıvurne',
 'right-bot' => 'Zey yew karê xoserkerdey be',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
@@ -1598,7 +1602,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'rcshowhideanons' => 'karberanê anoniman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'nuştışanê mı $1',
-'rclinks' => 'Peyni rocan de vurnayışa $1  $2 roci dı<br />$3',
+'rclinks' => 'Peyni $2 rocan de vurnayışa $1  bımocne <br />$3',
 'diff' => 'ferq',
 'hist' => 'verên',
 'hide' => 'Bınımne',
@@ -1659,7 +1663,7 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'fileuploadsummary' => 'Xulasa:',
 'filereuploadsummary' => 'Vurnayîşê dosyayî:',
 'filestatus' => 'Weziyetê heqê telifiye:',
-'filesource' => 'Çımey:',
+'filesource' => 'Çıme:',
 'uploadedfiles' => 'Dosyayê ke bar biye',
 'ignorewarning' => 'Îkazi kebul meke u dosya reyna bar bike',
 'ignorewarnings' => 'Îkazi kebul meke',
@@ -1788,13 +1792,26 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
 'backend-fail-read' => 'Na "$1" dosya nê wanêna',
 'backend-fail-create' => 'Dosyay $1 nê vırazıyê',
 'backend-fail-maxsize' => 'Dosyay $1 aya nênusneyêna feqet gırdeya cı {{PLURAL:$2|bayta|$2 bayto}}',
+'backend-fail-readonly' => 'Depo kerdışê "$1" enewke salt wanêno.Sebebê cı zi:"\'\'$2\'\'"',
+'backend-fail-synced' => 'Dosyay " $1 " miyan de depo kerdışeyda cıdı pê nêtepıştey esta',
+'backend-fail-connect' => 'Depo kerdışê "$1" peyni de nêgrêdeya.',
+'backend-fail-internal' => 'Depo kerdışê "$1" peyni de ju xırabin vıcyê.',
+'backend-fail-contenttype' => 'Qandê depo kerdışi zerrey babeta dosya da "$1" nêvineya.',
+'backend-fail-batchsize' => 'Depo kerdışê  dosya da $1 {{PLURAL:$1|operasyon de|operasyonê}} cı groto; sinorê  {{PLURAL:$2|operasyoni|operasyona}} $2.',
+'backend-fail-usable' => 'Dosyay $1 nênusneyê çıkı ratnayışê cı racnayeyo yana kewmiyo.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıya irtibat nêkewiya.',
+'filejournal-fail-dbquery' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıyo nêbeno.',
 
 # Lock manager
+'lockmanager-notlocked' => 'Dosyay "$1" kılit nêbiya; kesi kılit nêkerda.',
 'lockmanager-fail-closelock' => 'Dosyay kıliti nêracneyê "$1".',
 'lockmanager-fail-deletelock' => 'Dosyay kıliti nêbesterneyê "$1".',
 'lockmanager-fail-acquirelock' => 'Kılitê cı nêgêriya "$1".',
 'lockmanager-fail-openlock' => 'Dosyay kıliti nêracneyê qandê "$1".',
 'lockmanager-fail-releaselock' => 'Dosyay kıliti nêvıradeyê "$1".',
+'lockmanager-fail-db-bucket' => 'Kılite malumat da sitıl de $1 irtibat kewtışi re bes nêkeno.',
 'lockmanager-fail-db-release' => 'Malumatê kıliti nêvıradeyê $1.',
 'lockmanager-fail-svr-release' => 'Wasterê kıliti nêvıradeyê $1.',
 
@@ -2037,6 +2054,8 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'wantedpages' => 'Peleye ke waştênê',
 'wantedpages-badtitle' => 'sernuşte meqbul niyo: $1',
 'wantedfiles' => 'Dosyeye ke waştênê',
+'wantedfiletext-cat' => 'Dosyaya cêrên karvıstedeya lakin çınya. Mewcud dosyayan de xeriba miyan de liste bena. Xırabiya wınisin dana <del>ateber</del>. Zewbi zi, şırê pela da dosyeyê ke çınyaya [[:$1]].',
+'wantedfiletext-nocat' => 'Dosyeyê cêrêni estê lekin karnêvıstê. Dosyeyê xeribi liste benê. bo babeta dano <del>ateber</del>',
 'wantedtemplates' => 'Şablonê ke waştênê',
 'mostlinked' => 'Pelî ke tewr zafî lînk bîy.',
 'mostlinkedcategories' => 'Kategorî ke tewr zafî lînk bîy.',
@@ -2089,7 +2108,7 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'booksources-invalid-isbn' => 'ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?',
 
 # Special:Log
-'specialloguserlabel' => 'Weskedar:',
+'specialloguserlabel' => 'Kerdoğ:',
 'speciallogtitlelabel' => 'Menzil (sernuşte yana karber):',
 'log' => 'Qeydi',
 'all-logs-page' => 'Loganê umum yê hemî',
@@ -2118,6 +2137,8 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'allpages-hide-redirects' => 'Raçarnaya bınımne',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Şıma rê verhafıza versiyonê na pela aseno, hetana $1 cı kehani.',
+'cachedspecial-viewing-cached-ts' => 'Na pela raşt niya, şımayê enewke versiyonê verhafızada na pela vinenê.',
 'cachedspecial-refresh-now' => 'Peyêni bıvin.',
 
 # Special:Categories
@@ -2222,7 +2243,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 
 # Watchlist
 'watchlist' => 'lista mına seyr-kerdışi',
-'mywatchlist' => 'Listey seyri',
+'mywatchlist' => 'Lista mına seyrkerdışi',
 'watchlistfor2' => 'Qandê $1 ($2)',
 'nowatchlist' => 'listeya temaşa kerdıişê şıma de yew madde zi çina.',
 'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
@@ -2361,7 +2382,7 @@ Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê ê
 'prot_1movedto2' => 'nameyê [[$1]] peli yo newe: [[$2]]',
 'protect-badnamespace-title' => 'Heruna naman itad starêna',
 'protect-badnamespace-text' => 'Na herunda namide peley nêstarênê.',
-'protect-legend' => 'pawıtışi tesdiq bıker',
+'protect-legend' => 'Pawıtışi araşt ke',
 'protectcomment' => 'Sebeb:',
 'protectexpiry' => 'Qediyeno:',
 'protect_expiry_invalid' => 'Demo qediyayışi raşt niyo.',
@@ -2469,13 +2490,15 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Cayê namey:',
 'invert' => 'Bê weçineni ê bina peyser biya',
+'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan  zerrekan nımtışi re ena dore tesdiqi nışan kerê',
 'namespace_association' => 'Pineyê cadê naman',
+'tooltip-namespace_association' => 'Herunda canemiya elekeyın nışan kerdışi sero qıse kerdışi yana zerre dekerdışi rê ena dora tesdiqi nışan kerê',
 'blanknamespace' => '(Ser)',
 
 # Contributions
 'contributions' => 'İştirakê karberi',
 'contributions-title' => '$1 de iştırakê karberi',
-'mycontris' => 'İştıraxê mı',
+'mycontris' => 'İştıraqê mı',
 'contribsub2' => 'Qandê $1 ($2)',
 'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
 'uctop' => '(ser)',
@@ -2658,7 +2681,7 @@ eke şıma ıney gure keni u şıma xo ra emini, taahhud bıde wexta gure şıma
 'unlockconfirm' => 'Ya, ez wazene database a bikeri.',
 'lockbtn' => 'Database kilit bik',
 'unlockbtn' => 'Database a bik',
-'locknoconfirm' => 'Å\9fıma qutiyê tesdiq kerdıÅ\9fi niÅ\9fane nıkerd',
+'locknoconfirm' => 'Å\9eıma qutiyê araÅ\9ft kerdıÅ\9fi nêweçinê.',
 'lockdbsuccesssub' => 'Database kilit biya',
 'unlockdbsuccesssub' => 'Database a biya',
 'lockdbsuccesstext' => 'database qefıliya.<br />
@@ -2853,6 +2876,10 @@ dosyaya emaneti vindbiyo',
 'import-upload' => 'Dosyayê XML bar bike',
 'import-token-mismatch' => "vindibiyayişê ma'lumatê hesabi. kerem kerê newe ra tesel/cereb bıkerê.",
 'import-invalid-interwiki' => 'Eya wîkî ra nieşkenî împort bike.',
+'import-error-edit' => 'Pela " $1 " qandê vurnayışi aya nêgêrêna çıkı cı rê icazet nêdeyayo.',
+'import-error-create' => 'Pela " $1 " qandê vıraştışi aya nêabêna çıkı cı rê icazet nêdeyayo.',
+'import-error-interwiki' => 'Pela " $1 " qandê name dayışi aya nêgêrêna çıkı namey cı (interwiki) sero cırê ca abıryayo.',
+'import-error-special' => 'Pela " $1 " qandê vıraştışi aya nêgêrêna çıkı namay cı nameyo do xısusiyo u na pela rê no name nêgêrêno.',
 'import-error-invalid' => 'Pela "$1" nêdebyê de çıkı namey cı çınyo.',
 
 # Import log
@@ -2884,8 +2911,8 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-mycontris' => 'Lista iştırakanê to',
 'tooltip-pt-login' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
-'tooltip-pt-logout' => 'Bıvciyê',
-'tooltip-ca-talk' => 'Pela tedeesteyan sero werênayış',
+'tooltip-pt-logout' => 'Bıveciyên',
+'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
 'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
 Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-ca-addsection' => 'Yew qısımo newe ake',
@@ -2921,12 +2948,12 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-t-specialpages' => 'Lista pelanê xasanê pêroinan',
 'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
-'tooltip-ca-nstab-main' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
 'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
 'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
 'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
 'tooltip-ca-nstab-project' => 'pelayê kılit-kerdeyi bıvin',
-'tooltip-ca-nstab-image' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
 'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
 'tooltip-ca-nstab-template' => 'Şabloni bıvêne',
 'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
@@ -2968,7 +2995,8 @@ Tı eşkeno yew sebeb bınus.',
 'spamprotectionmatch' => 'nuşte yo ke rıcnayoxê spami herikneno: $1',
 'spambot_username' => 'wikimedya spam-pakkerdışi',
 'spam_reverting' => 'agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo',
-'spam_blanking' => 'revizyonê hemeyi de ıney $1 re gıreyi estî, deverdiyeno',
+'spam_blanking' => 'Revizyonê gredê $1 vineyay, wa weng kero',
+'spam_deleting' => 'Revizyonê gredê $1 vineyay, wa besterneyê',
 
 # Info page
 'pageinfo-title' => 'Heq tê "$1"\'i',
@@ -3302,7 +3330,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-writer' => 'Nuştekar',
 'exif-languagecode' => 'Zıwan',
 'exif-iimversion' => 'Verqaydê IIM',
-'exif-iimcategory' => 'Kategori',
+'exif-iimcategory' => 'Kategoriye',
 'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
 'exif-datetimeexpires' => 'No peyra mekarênê',
 'exif-datetimereleased' => 'Bıroşe',
@@ -3600,9 +3628,9 @@ $8',
 # E-mail address confirmation
 'confirmemail' => 'Adresê emaîlî xo konfirme bike',
 'confirmemail_noemail' => 'Yew emaîlê tu raştîyê çin o ke [[Special:Preferences|tercihê karberî]] ayar bike.',
-'confirmemail_text' => 'qey şuxulnayişê e-postayê wikiyi gani ewwil e-posyaê şıma tesdiq bıbo.
-adresa şıma re qey erşawıtışê e-postayê tesdiqi, butonê cêrıni bıtıknê.
-e-posta yo ke erşawiyeno tede gıreyê kodê tesdiqi esto, gıreyi bıtıkne akerê u e-postayê xo tesdiq kerê.',
+'confirmemail_text' => 'Qey gurweyayışê e-postayê wikiyi gani veror e-postayê şıma araşt bıbo.
+Adresa şıma re qey erşawıtışê e-postayê araştin, butonê cêrıni pıploxnê.
+E-posta yo ke erşawiyeno tede gıreyê kodê araşti esto, gıreyi pıploxne akerê u e-postayê xo araşt kerê.',
 'confirmemail_pending' => 'Yew codê konfirmasyonî ma ti ra şiravt;
 Eka ti newe hesabê xo viraşt, ti gani yew di dekika vindero u email xo kontrol bike, yani reyna yew hesab meviraz.',
 'confirmemail_send' => 'Yew kodê konfirmasyonî email mina bişirave',
@@ -3624,15 +3652,15 @@ Ti eşkeno [[Special:UserLogin|ci kewt]].',
 'confirmemail_body' => 'Brayo delal, mara ke şıma no IP-adresi ra,
 keyepelê {{SITENAME}}i de pêno $2 e-postayi hesab kerda.
 
-eke raşta no e-posta eyê şımayo şıma gani tesdiq bıkerî, qey tesdiq kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrêni bıtıkne.
+eke raşta no e-posta eyê şımayo şıma gani araşt bıkerî, qey araşt kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrêni bıtıkne.
 
 $3
 
-eke şıma hesab *nê akerdo*, qey ibtalê tesdiqkerdışê adresa e-postayi gıreyê cêrıni bıtıknê:
+eke şıma hesab *nê akerdo*, qey terqnayışê araşt kerdışê adresa e-postayi gıreyê cêrıni pıploxnê:
 
 $5
 
-kodê tesdiqi heta ıney tarixi $4 meqbulo.',
+kodê araşti heta ıney tarixi $4 meqbulo.',
 'confirmemail_body_changed' => 'Yew ten, muhtemelen şıma no IP-adresi $1 ra,
 keyepelê {{SITENAME}}i de pê no $2 e-postayi hesab kerd a.
 
@@ -3989,10 +4017,12 @@ Ena sita dı newke xırabiya teknik esta.',
 # New logging system
 'logentry-delete-delete' => "Karber $1' pelay $3' besternê",
 'logentry-delete-restore' => "Karber $1' pelay $3' peyser grot",
+'logentry-delete-event' => '$1 asaneyaışê {{PLURAL:$5|weqey roceke|$5 weqey rocekan}} kerdi het de $3: $4 vurna',
 'logentry-delete-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı vurna',
 'logentry-delete-event-legacy' => '$1 Asayışê vurnayışê $3 dekerde de',
 'logentry-delete-revision-legacy' => '$1 revizyonê pela da $3 asayışê cı vurna',
 'logentry-suppress-delete' => '$1  $3 rê pıloxneyê',
+'logentry-suppress-event' => '$1 asayışê  {{PLURAL:$5|weqey rocaka|$5 weqey rocekan}}  $3: $4 miyanıki vurna',
 'logentry-suppress-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı xısusiye vurna',
 'logentry-suppress-event-legacy' => '$1 Asayışê vurnayışê ciyo xısusiyeta cı $3 dekerde de',
 'logentry-suppress-revision-legacy' => '$1 revizyonê pela da $3 asayışê cıyo xısuiye vurna',
@@ -4007,6 +4037,7 @@ Ena sita dı newke xırabiya teknik esta.',
 'logentry-move-move' => "Karber $1' pelay $3' berd $4",
 'logentry-move-move-noredirect' => "$1'i pelay $3 raçarnayış neker dı u berd $4",
 'logentry-move-move_redir' => '$1 pela $3 pela da $4 sera hetenayış ra ahulnê',
+'logentry-move-move_redir-noredirect' => '$1 hetenayışê qeydê pela da  $3 ahulnê $4 sero hetenayış vıraşt',
 'logentry-patrol-patrol' => '$1 revizyonê pela da $4 $3 ke kontrol',
 'logentry-patrol-patrol-auto' => '$1 Otomatik revizyonê pela da $4  $3 ke kontrol',
 'logentry-newusers-newusers' => '$1 deye namey karberi vıraziya',
@@ -4016,6 +4047,7 @@ Ena sita dı newke xırabiya teknik esta.',
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
 
 # Feedback
+'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' => 'Muhtewa:',
 'feedback-message' => 'Mesac:',
 'feedback-cancel' => 'Bıterkne',
@@ -4078,4 +4110,6 @@ Ena sita dı newke xırabiya teknik esta.',
 'duration-centuries' => '$1 {{PLURAL:$1|seserre|seserri}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyum|milenyumi}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Kılitê teqdimkarê $1i nêvêniyenê.',
 );
index 8eea213..0b3ee25 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lower Sorbian (Dolnoserbski)
+/** Lower Sorbian (dolnoserbski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -166,7 +166,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Doglědowane změny w aktualnych změnach schowaś',
 'tog-newpageshidepatrolled' => 'Doglědowane boki z lisćiny nowych bokow schowaś',
 'tog-extendwatchlist' => 'Wobglědowańku wócyniś, aby wšě změny pokazał, nic jano nejnowše',
-'tog-usenewrc' => 'Rozšyrjonu lisćinu aktualnych změnow (JavaScript trěbny) wužywaś',
+'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach (trjeba JavaScript)',
 'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
 'tog-showtoolbar' => 'Wobźěłańsku lejstwu pokazaś (JavaScript)',
 'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś (JavaScript)',
@@ -515,6 +515,8 @@ Pšosym daj to a pśisłušny URL [[Special:ListUsers/sysop|administratoroju]] k
 'badarticleerror' => 'Akcija njedajo se na toś tom boku wuwjasć.',
 'cannotdelete' => 'Njejo móžno było bok abo dataju "$1" wulašowaś. Snaź jo to južo něchten drugi cynił.',
 'cannotdelete-title' => 'Bok "$1" njedajo se lašowaś',
+'delete-hook-aborted' => 'Wulašowanje pśez kokulu pśetergnjone.
+Njejo žedno wujasnjenje.',
 'badtitle' => 'Njepłaśecy nadpis',
 'badtitletext' => 'Nadpis pominanego boka jo był njepłaśecy, prozny abo njekorektny nadpis, póchadajucy z mjazyrěcnego abo interwikijowego wótkaza. Snaź wopśimjejo jadno abo wěcej znamuškow, kótarež njejsu w nadpisach dowólone.',
 'perfcached' => 'Toś te daty póchadaju z pufrowaka a mógu snaź njeaktualne byś. Maksimalnje {{PLURAL:$1|jaden wuslědk stoj|$1 wuslědka stojtej|$1 wuslědki stoje|$1 wuslědkow stoj}} w pufrowaku k dispoziciji.',
@@ -544,6 +546,8 @@ Wótpšašanje: $2',
 Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 'invalidtitle-knownnamespace' => 'Njepłaśiwy titel z mjenjowym rumom "$2" a tekstom "$3"',
 'invalidtitle-unknownnamespace' => 'Njepłaśiwy titel z njeznatym mjenjowym rumom $1 a tekstom "$2"',
+'exception-nologin' => 'Njejsy se pśizjawił',
+'exception-nologin-text' => 'Toś ten bok abo toś ta akcija pomina, až sy na toś tom wikiju pśizjawjony.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
@@ -876,7 +880,7 @@ Pšosym pśespytuj kradosćiwje, lěc jo gódnje z wobźěłowanim boka pokšaco
 Protokol wulašowanjow a pśesunjenjow za toś ten bok so how za informaciju pódawa:",
 'moveddeleted-notice' => 'Toś ten bok jo se wulašował. Protokol wulašowanjow a pśesunjenjow za toś ten bok pódawa se dołojce ako referenca.',
 'log-fulllog' => 'Dopołny protokol se woglědaś',
-'edit-hook-aborted' => 'Wobźěłanje pśez kokulu pśetergnjony.
+'edit-hook-aborted' => 'Wobźěłanje pśez kokulu pśetergnjone.
 Njejo žedno wujasnjenje.',
 'edit-gone-missing' => 'Njejo móžno było bok aktualizěrowaś.
 Zda sem až jo wulašowany.',
@@ -2817,6 +2821,7 @@ W zespominanju dajo se pśicyna pódaś.',
 'spambot_username' => 'MediaWikijowe spamowe rěšenje',
 'spam_reverting' => 'Nawrośijo se slědna wersija, kótaraž njejo wopśimjeła wótkaz na $1.',
 'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
+'spam_deleting' => 'Wšykne wersije z wótkazami do $1 so lašuju',
 
 # Info page
 'pageinfo-title' => 'Informacije za bok "$1"',
@@ -3687,6 +3692,8 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'api-error-empty-file' => 'Dataja, kótaruž sy nagrał, jo prozna była.',
 'api-error-emptypage' => 'Napóranje nowych, proznych bokow njejo dowólone.',
 'api-error-fetchfileerror' => 'Nutśikowna zmólka: Pśii wobstarowanju dataje jo se něco njeraźiło.',
+'api-error-fileexists-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo, a njedajo se pśepisaś.',
+'api-error-fileexists-shared-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo w zgromadnem datajowem repozitoriumje a njedajo se pśepisaś.',
 'api-error-file-too-large' => 'Dataja, kótaruž sy nagrał, jo pśewjelika była.',
 'api-error-filename-tooshort' => 'Datajowe mě jo pśekrotke.',
 'api-error-filetype-banned' => 'Toś ten datajowy typ jo zakazany.',
@@ -3725,4 +3732,6 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Zastajenja na serwer $1 njedaju se wótwołaś.',
 );
diff --git a/languages/messages/MessagesEgl.php b/languages/messages/MessagesEgl.php
new file mode 100644 (file)
index 0000000..cb1e053
--- /dev/null
@@ -0,0 +1,696 @@
+<?php
+/** Emiliàn (Emiliàn)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Reder
+ */
+
+$fallback = 'it';
+
+$messages = array(
+# Dates
+'sun' => 'Dum',
+'mon' => 'Lün',
+'tue' => 'Mär',
+'wed' => 'Mer',
+'thu' => 'Giu',
+'fri' => 'Van',
+'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',
+
+# Categories related messages
+'hidden-categories' => '{{PLURAL:$1|Categuria nascost|Categuri nascost}}',
+
+'about' => 'Informaziun',
+'cancel' => ' 
+Cancellä',
+'mytalk' => 'Le mé discüssion',
+'navigation' => 'Navigazion',
+'and' => '&#32;e',
+
+# Cologne Blue skin
+'qbfind' => 'Trov',
+'qbedit' => 'Mudifich',
+'qbpageoptions' => "Opzion d'la pàgina",
+'qbmyoptions' => 'Le mé pàgin',
+'qbspecialpages' => 'Pàgin speciäl',
+'faq' => 'Dumand frequeint',
+
+# 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',
+'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ü',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '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',
+'edithelppage' => 'Help:Mudifich',
+'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',
+'newmessageslink' => "növ messagg'",
+'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}}',
+'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',
+
+# 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',
+
+# General errors
+'error' => 'Errur',
+'databaseerror' => 'Errur dal database',
+'readonly' => 'Database bluccä',
+'missingarticle-rev' => '(revision 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',
+
+# 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',
+
+# Change password dialog
+'resetpass' => '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:',
+
+# Special:PasswordReset
+'passwordreset' => 'Cambiä la password',
+'passwordreset-legend' => 'Cambiä la password',
+'passwordreset-username' => 'Nom uteint:',
+'passwordreset-domain' => 'Dumini:',
+
+# Edit page toolbar
+'bold_sample' => 'Grassètt',
+'italic_sample' => 'Cursìv',
+'media_tip' => 'Cullegameint al file',
+
+# 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.',
+
+# 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',
+
+# 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',
+
+# Merge log
+'revertmerge' => "Annullä l'ünion",
+
+# Diffs
+'lineno' => 'Riga $1:',
+'editundo' => 'cancellä',
+
+# 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}})',
+'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',
+
+# Quickbar
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Ansöin',
+'qbsettings-fixedleft' => 'Fiss a sinistar',
+'qbsettings-fixedright' => 'Fiss a destar',
+'qbsettings-floatingleft' => 'Fluttuant a sinistar',
+'qbsettings-floatingright' => 'Fluttuant a destar',
+
+# Preferences page
+'preferences' => 'Prefereinz',
+'mypreferences' => 'Al me prefereinz',
+'prefs-edits' => 'Nümar ad mudifich:',
+'prefsnologin' => 'Si mia enträ',
+'changepassword' => 'Cambiä la password',
+'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',
+'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',
+'email' => 'E-mail',
+
+# Groups
+'group' => 'Grüpp:',
+'group-user' => 'Uteint',
+'group-autoconfirmed' => 'Uteint autoconvalidät',
+'group-bot' => 'Bot',
+'group-sysop' => 'Amministradór',
+'group-bureaucrat' => 'Bürocrat',
+'group-suppress' => 'Oversight',
+'group-all' => '(tütt)',
+
+'group-user-member' => '{{GENDER:$1|uteint}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|uteint autoconvalidät}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|amministradór}}',
+'group-bureaucrat-member' => '{{GENDER:$1|bürocrat}}',
+'group-suppress-member' => '{{GENDER:$1|oversight}}',
+
+'grouppage-user' => '{{ns:project}}:Uteint',
+'grouppage-autoconfirmed' => '{{ns:project}}:Uteint autoconvalidät',
+'grouppage-bot' => '{{ns:project}}:Bot',
+'grouppage-sysop' => '{{ns:project}}:Amministradór',
+'grouppage-bureaucrat' => '{{ns:project}}:Bürocrat',
+'grouppage-suppress' => '{{ns:project}}:Oversight',
+
+# Rights
+'right-read' => "Legg' pàgin",
+'right-edit' => 'Mudifich pàgin',
+
+# User rights log
+'rightsnone' => '(ansöin)',
+
+# 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é',
+
+# Recent changes
+'recentchanges' => 'Ültim cambiameint',
+'rcshowhidebots' => '$1 i bot',
+'rcshowhidemine' => '$1 le mé mudifich',
+'diff' => 'diff',
+'hist' => 'cron',
+'hide' => 'Nascond',
+'show' => 'mustra',
+'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',
+
+# Upload
+'upload' => 'Cärga un file',
+
+'license' => 'Licinza:',
+'license-header' => 'Licinza',
+'nolicense' => 'Ansöna licinza seleziunä',
+
+# Special:ListFiles
+'listfiles_date' => 'Data',
+'listfiles_name' => 'Nom',
+'listfiles_user' => 'Uteint',
+
+# 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 deletion
+'filedelete-submit' => 'Cancellä',
+
+# Random page
+'randompage' => 'Una pàgina a cäs',
+
+'brokenredirects-edit' => 'cambi',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
+'newpages' => 'Pàgin növ',
+'move' => 'Spusta',
+
+# Book sources
+'booksources-go' => 'Vé',
+
+# Special:AllPages
+'alphaindexline' => 'da $1 a $2',
+'allpagessubmit' => 'Vé',
+
+# Special:ListUsers
+'listusers-submit' => 'Mustra',
+
+# Special:ListGroupRights
+'listgrouprights-group' => 'Grüpp',
+
+# E-mail user
+'emailfrom' => 'Da:',
+'emailto' => 'A:',
+'emailsubject' => 'Uggett:',
+'emailmessage' => "Messagg'",
+
+# 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ö",
+
+'changed' => 'mudifegat',
+'created' => 'creät',
+
+# Delete
+'delete-confirm' => 'Cancellä "$1"',
+'delete-legend' => 'Cancellä',
+
+# Rollback
+'rollback_short' => 'Turne indré',
+'rollbacklink' => 'Avé indré la mudifech ad prima',
+'rollbackfailed' => 'Si mia riussì a turnä indré',
+
+# Protect
+'pagesize' => '(byte)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Mudifich',
+'restriction-move' => 'Spusta',
+'restriction-create' => 'Creä',
+'restriction-upload' => 'Caricä',
+
+# Undelete
+'undeletelink' => 'vada/turna indré',
+'undeleteviewlink' => 'vada',
+'undelete-show-file-submit' => 'Sì',
+
+# Namespace form on various pages
+'namespace' => 'Namespace:',
+'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)',
+
+'sp-contributions-submit' => 'Cercä',
+
+# What links here
+'whatlinkshere-page' => 'Pàgina:',
+'whatlinkshere-links' => '← cullegameint',
+
+# 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' => 'Ätar {{PLURAL:$1|blocc|blocc}}',
+'blocklink' => 'blocc',
+'unblocklink' => 'sblocc',
+'change-blocklink' => 'cambiä al blocc',
+'contribslink' => 'cuntribüti',
+'unblocklogentry' => "l'à sbluccä $1",
+
+# Move page
+'move-page' => 'Spustameint ad $1',
+'move-page-legend' => 'Spustä la pàgina',
+'movearticle' => 'Spustä la pàgina:',
+'movenologin' => 'Si mia enträ',
+'movepagebtn' => 'Spustä la pàgina',
+'movelogpage' => 'Spustameint',
+'revertmove' => 'Turné indré',
+
+# Export
+'export-submit' => 'Esporta',
+
+# Namespace 8 related
+'allmessages-filter-all' => 'Tütt',
+'allmessages-language' => 'Leingua:',
+'allmessages-filter-submit' => 'Vé',
+
+# Thumbnails
+'thumbnail-more' => 'Allargä',
+
+# Special:Import
+'import-upload-filename' => 'Nom dal file:',
+'import-comment' => 'Uggett:',
+'import-upload' => 'Caricä dat 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',
+
+# Attribution
+'others' => 'ätar',
+
+# Info page
+'pageinfo-header-edits' => 'Mudifich',
+'pageinfo-header-views' => 'Visit',
+'pageinfo-subjectpage' => 'Pàgina',
+'pageinfo-talkpage' => 'Pàgina ad discüssion',
+'pageinfo-watchers' => 'Numar ad visitador',
+'pageinfo-edits' => 'Nümar ad mudifich',
+'pageinfo-authors' => 'Nümar ad devers autor',
+'pageinfo-views' => 'Nümar ad visit',
+'pageinfo-viewsperedit' => 'Visit par mudifich',
+
+# Browsing diffs
+'previousdiff' => "← Mudifich piö vecc'",
+'nextdiff' => 'Mudifich piö növa →',
+
+# Media information
+'file-info-gif-looped' => 'ciclich',
+'file-info-png-looped' => 'ciclich',
+
+# Special:NewFiles
+'newimages-legend' => 'Nom dal file',
+'showhidebots' => '($1 i bot)',
+'ilsubmit' => 'Cercä',
+'bydate' => 'par data',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'ago' => '$1 fa',
+
+# Metadata
+'metadata' => 'Metadat',
+
+# 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',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tütt',
+'namespacesall' => 'tütt',
+'monthsall' => 'tütt',
+'limitall' => 'tütt',
+
+# Delete conflict
+'recreate' => 'Creä ad növ',
+
+# action=purge
+'confirm_purge_button' => 'OK',
+
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
+# Multipage image navigation
+'imgmultigo' => 'Vé!',
+'imgmultigoto' => "Vé in s'la pàgina $1",
+
+# Table pager
+'ascending_abbrev' => 'cresc',
+'descending_abbrev' => 'decresc',
+'table_pager_first' => 'Prima pàgina',
+'table_pager_last' => 'Ültima pàgina',
+'table_pager_limit_submit' => 'Vé',
+
+# Watchlist editor
+'watchlistedit-raw-titles' => 'Titul:',
+
+# Special:Version
+'version' => 'Version',
+'version-specialpages' => 'Pàgin speciäl',
+'version-other' => 'Ätar',
+'version-version' => '(Version $1)',
+'version-license' => 'Licinza',
+'version-poweredby-others' => 'ätar',
+
+# Special:FilePath
+'filepath-page' => 'Immàgin:',
+'filepath-submit' => 'Vé',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch-filename' => 'Nom dal file:',
+'fileduplicatesearch-submit' => 'Cercä',
+
+# Special:SpecialPages
+'specialpages' => 'Pàgin speciäl',
+
+# Special:Tags
+'tags-edit' => 'mudifich',
+
+# Special:ComparePages
+'compare-page1' => 'Pàgina 1',
+'compare-page2' => 'Pàgina 2',
+'compare-rev1' => 'Revisiòn 1',
+'compare-rev2' => 'Revisiòn 2',
+
+# HTML forms
+'htmlform-reset' => 'Turna indré cul la mudifich',
+'htmlform-selectorother-other' => 'Ätar',
+
+# Feedback
+'feedback-subject' => 'Uggett:',
+'feedback-message' => "Messagg':",
+'feedback-cancel' => 'Cancellä',
+
+);
index f609f4c..f701a65 100644 (file)
@@ -1276,7 +1276,7 @@ $1",
 'mergelogpagetext' => 'Παρακάτω είναι μια λίστα με τις πιο πρόσφατες συγχωνεύσεις ιστορικού μιας σελίδας σε άλλο.',
 
 # Diffs
-'history-title' => 'Ιστορικό εκδόσεων για τη σελίδα "$1"',
+'history-title' => '"$1": Ιστορικό εκδόσεων',
 'difference-title' => 'Διαφορά μεταξύ των αναθεωρήσεων του "$1"',
 'difference-title-multipage' => 'Διαφορά μεταξύ των σελίδων "$1" και "$2"',
 'difference-multipage' => '(Διαφορές μεταξύ των σελίδων)',
index 487fc86..1ee1a32 100644 (file)
@@ -288,7 +288,8 @@ $magicWords = array(
        'nse'                    => array( 0,    'NSE:'                   ),
        'localurl'               => array( 0,    'LOCALURL:'              ),
        'localurle'              => array( 0,    'LOCALURLE:'             ),
-       'articlepath'            => array( 0,    'ARTICLEPATH'            ),
+       'articlepath'            => array( 0,    'ARTICLEPATH'            ),
+       'pageid'                 => array( 0,    'PAGEID'                 ),
        'server'                 => array( 0,    'SERVER'                 ),
        'servername'             => array( 0,    'SERVERNAME'             ),
        'scriptpath'             => array( 0,    'SCRIPTPATH'             ),
@@ -636,7 +637,7 @@ XHTML id names.
 'tog-hidepatrolled'           => 'Hide patrolled edits in recent changes',
 'tog-newpageshidepatrolled'   => 'Hide patrolled pages from new page list',
 'tog-extendwatchlist'         => 'Expand watchlist to show all changes, not just the most recent',
-'tog-usenewrc'                => 'Use enhanced recent changes (requires JavaScript)',
+'tog-usenewrc'                => 'Group changes by page in recent changes and watchlist (requires JavaScript)',
 'tog-numberheadings'          => 'Auto-number headings',
 'tog-showtoolbar'             => 'Show edit toolbar (requires JavaScript)',
 'tog-editondblclick'          => 'Edit pages on double click (requires JavaScript)',
@@ -1007,6 +1008,8 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
 'cannotdelete'         => 'The page or file "$1" could not be deleted.
 It may have already been deleted by someone else.',
 'cannotdelete-title'   => 'Cannot delete page "$1"',
+'delete-hook-aborted'  => 'Deletion aborted by hook.
+It gave no explanation.',
 'badtitle'             => 'Bad title',
 'badtitletext'         => 'The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.
 It may contain one or more characters which cannot be used in titles.',
@@ -1086,6 +1089,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 Please choose a different name.',
 'loginerror'                 => 'Login error',
 'createaccounterror'         => 'Could not create account: $1',
+'exception-nologin'          => 'Not logged in',
+'exception-nologin-text'     => 'This page or action requires you to be logged in on this wiki.',
 'nocookiesnew'               => 'The user account was created, but you are not logged in.
 {{SITENAME}} uses cookies to log in users.
 You have cookies disabled.
@@ -2310,6 +2315,7 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
 'lockmanager-fail-releaselock' => 'Could not release lock for "$1".',
 'lockmanager-fail-db-bucket'   => 'Could not contact enough lock databases in bucket $1.',
 'lockmanager-fail-db-release'  => 'Could not release locks on database $1.',
+'lockmanager-fail-svr-acquire' => 'Could not acquire locks on server $1.',
 'lockmanager-fail-svr-release' => 'Could not release locks on server $1.',
 
 # ZipDirectoryReader
@@ -3194,8 +3200,8 @@ See the [[Special:BlockList|block list]] to review blocks.',
 'expiringblock'                   => 'expires on $1 at $2',
 'anononlyblock'                   => 'anon. only',
 'noautoblockblock'                => 'autoblock disabled',
-'createaccountblock'              => 'account creation blocked',
-'emailblock'                      => 'e-mail blocked',
+'createaccountblock'              => 'account creation disabled',
+'emailblock'                      => 'e-mail disabled',
 'blocklist-nousertalk'            => 'cannot edit own talk page',
 'ipblocklist-empty'               => 'The block list is empty.',
 'ipblocklist-no-results'          => 'The requested IP address or username is not blocked.',
@@ -3220,7 +3226,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'block-log-flags-anononly'        => 'anonymous users only',
 'block-log-flags-nocreate'        => 'account creation disabled',
 'block-log-flags-noautoblock'     => 'autoblock disabled',
-'block-log-flags-noemail'         => 'e-mail blocked',
+'block-log-flags-noemail'         => 'e-mail disabled',
 'block-log-flags-nousertalk'      => 'cannot edit own talk page',
 'block-log-flags-angry-autoblock' => 'enhanced autoblock enabled',
 'block-log-flags-hiddenname'      => 'username hidden',
@@ -3692,6 +3698,7 @@ This is probably caused by a link to a blacklisted external site.',
 'spambot_username'    => 'MediaWiki spam cleanup',
 'spam_reverting'      => 'Reverting to last revision not containing links to $1',
 'spam_blanking'       => 'All revisions contained links to $1, blanking',
+'spam_deleting'       => 'All revisions contained links to $1, deleting',
 
 # Info page
 'pageinfo-title'            => 'Information for "$1"',
@@ -4632,7 +4639,7 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-svn-revision'          => '(r$2)', # only translate this message to other languages if you have to change it
 'version-license'               => 'License',
 'version-poweredby-credits'     => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others'      => 'others',
+'version-poweredby-others'      => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS others]',
 'version-license-info'          => 'MediaWiki 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.
 
 MediaWiki 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.
@@ -4837,6 +4844,8 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'api-error-emptypage'                     => 'Creating new, empty pages is not allowed.',
 'api-error-fetchfileerror'                => 'Internal error: Something went wrong while fetching the file.',
 'api-error-file-too-large'                => 'The file you submitted was too large.',
+'api-error-fileexists-forbidden'          => 'A file with name "$1" already exists, and cannot be overwritten.',
+'api-error-fileexists-shared-forbidden'   => 'A file with name "$1" already exists in the shared file repository, and cannot be overwritten.',
 'api-error-filename-tooshort'             => 'The filename is too short.',
 'api-error-filetype-banned'               => 'This type of file is banned.',
 'api-error-filetype-missing'              => 'The filename is missing an extension.',
index 0faa840..40b1b11 100644 (file)
@@ -17,6 +17,7 @@
  * @author Iketsi
  * @author Jens Liebenau
  * @author Kaganer
+ * @author Karika
  * @author Lucas
  * @author LyzTyphone
  * @author Malafaya
@@ -1369,6 +1370,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'prefs-beta' => 'Ecoj de Beta',
 'prefs-datetime' => 'Dato kaj horo',
 'prefs-labs' => 'Ecoj el Laboratorio',
+'prefs-user-pages' => 'Uzanto paĝoj',
 'prefs-personal' => 'Uzanta profilo',
 'prefs-rc' => 'Lastaj ŝanĝoj',
 'prefs-watchlist' => 'Atentaro',
@@ -2152,6 +2154,9 @@ Vi povas plistrikti la mendon per selektado de protokola speco, la salutnomo (in
 'allpages-bad-ns' => '{{SITENAME}} ne havas nomspacon "$1".',
 'allpages-hide-redirects' => 'Kaŝi alidirektilojn',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Vidas plej nova.',
+
 # Special:Categories
 'categories' => 'Kategorioj',
 'categoriespagetext' => 'La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.
@@ -3130,7 +3135,7 @@ La komenca ligilo de linio devas esti ligilo al malbona bildo.
 Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la bildo rajtas esti montrata.)',
 
 # Metadata
-'metadata' => 'Metadatenoj',
+'metadata' => 'Metadatumoj',
 'metadata-help' => 'Ĉi tiu dosiero enhavas plian informon, verŝajne aldonitan de la cifereca fotilo aŭ skanilo uzita por krei aŭ skani ĝin. Se la dosiero estis modifita de sia originala stato, iuj detaloj eble ne konformos al efektiva stato de la modifita bildo.',
 'metadata-expand' => 'Montri etendajn detalojn',
 'metadata-collapse' => 'Kaŝi etendajn detalojn',
index 8830e71..1ce4396 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author -jem-
  * @author Aleator
  * @author Alhen
  * @author Alpertron
@@ -351,7 +352,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ocultar ediciones patrulladas en los cambios recientes',
 'tog-newpageshidepatrolled' => 'Ocultar páginas patrulladas de la lista de páginas nuevas',
 'tog-extendwatchlist' => 'Expandir la lista de seguimiento a todos los cambios, no sólo a los más recientes.',
-'tog-usenewrc' => 'Cambios recientes mejorados (requiere JavaScript)',
+'tog-usenewrc' => 'Agrupar los cambios por página en los cambios recientes y en la lista de vigilancia (requiere JavaScript)',
 'tog-numberheadings' => 'Numerar automáticamente los encabezados',
 'tog-showtoolbar' => 'Mostrar la barra de edición (requiere JavaScript)',
 'tog-editondblclick' => 'Editar páginas con doble clic (requiere JavaScript)',
@@ -702,6 +703,7 @@ Por favor, avisa a un [[Special:ListUsers/sysop|administrador]], tomando nota de
 'cannotdelete' => 'La página o archivo «$1» no se pudo borrar.
 Puede que ya haya sido borrado por alguien más.',
 'cannotdelete-title' => 'No se puede borrar la página «$1»',
+'delete-hook-aborted' => 'La modificación que intentaste hacer fue cancelada por un gancho de extensión. No hay explicación disponible.',
 'badtitle' => 'Título incorrecto',
 'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
 Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
@@ -733,6 +735,8 @@ El motivo dado fue: "\'\'$2\'\'".',
 El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 'invalidtitle-knownnamespace' => 'Título no válido con el espacio de nombres "$2" y el texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título no válido con número de espacio de nombres desconocido  $1  y el texto "$2"',
+'exception-nologin' => 'No has iniciado sesión',
+'exception-nologin-text' => 'Esta página o acción requiere que inicies sesión en este wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
@@ -765,7 +769,7 @@ No olvides personalizar [[Special:Preferences|tus preferencias]].',
 'notloggedin' => 'No has iniciado sesión',
 'nologin' => '¿No tienes una cuenta? $1.',
 'nologinlink' => 'Crear una cuenta',
-'createaccount' => 'Crear cuenta',
+'createaccount' => 'Crear una cuenta',
 'gotaccount' => '¿Ya tienes una cuenta? $1.',
 'gotaccountlink' => 'Entrar',
 'userlogin-resetlink' => '¿Olvidaste tus datos de acceso?',
@@ -841,7 +845,7 @@ Puedes ignorar este mensaje si esta cuenta fue creada por error.',
 'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
 
 # E-mail sending
-'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP',
+'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
 'user-mail-no-addy' => 'Se ha intentado enviar correo electrónico sin una dirección de correo electrónico.',
 
 # Change password dialog
@@ -3105,6 +3109,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'spambot_username' => 'Limpieza de spam de MediaWiki',
 'spam_reverting' => 'Revirtiendo a la última versión que no contenga enlaces a $1',
 'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
+'spam_deleting' => 'Todas las revisiones que contienen enlaces a $1, en proceso de eliminación',
 
 # Info page
 'pageinfo-title' => 'Información para «$1»',
@@ -3292,11 +3297,11 @@ Existen otros campos que se mantendrán ocultos por defecto.
 'exif-meteringmode' => 'Modo de medición',
 'exif-lightsource' => 'Fuente de luz',
 'exif-flash' => 'Flash',
-'exif-focallength' => 'Longitud de la lente focal',
+'exif-focallength' => 'Longitud focal de la lente',
 'exif-subjectarea' => 'Área del sujeto',
 'exif-flashenergy' => 'Energía del flash',
-'exif-focalplanexresolution' => 'Resolución X plano focal',
-'exif-focalplaneyresolution' => 'Resolución Y plano focal',
+'exif-focalplanexresolution' => 'Resolución X del plano focal',
+'exif-focalplaneyresolution' => 'Resolución Y del plano focal',
 'exif-focalplaneresolutionunit' => 'Unidad de resolución del plano focal',
 'exif-subjectlocation' => 'Localización del sujeto',
 'exif-exposureindex' => 'Índice de exposición',
@@ -3333,7 +3338,7 @@ Existen otros campos que se mantendrán ocultos por defecto.
 'exif-gpstrackref' => 'Referencia para la dirección del movimiento',
 'exif-gpstrack' => 'Dirección del movimiento',
 'exif-gpsimgdirectionref' => 'Referencia de la dirección de imágen',
-'exif-gpsimgdirection' => 'Dirección de imágen',
+'exif-gpsimgdirection' => 'Dirección de imagen',
 'exif-gpsmapdatum' => 'Utilizados datos de medición geodésica',
 'exif-gpsdestlatituderef' => 'Referencia para la latitud del destino',
 'exif-gpsdestlatitude' => 'Destino de latitud',
@@ -3418,7 +3423,7 @@ Existen otros campos que se mantendrán ocultos por defecto.
 'exif-compression-3' => 'Codificación de fax CCITT grupo 3',
 'exif-compression-4' => 'Codificación de fax CCITT grupo 4',
 
-'exif-copyrighted-true' => 'Copyrighted',
+'exif-copyrighted-true' => 'Con derechos de autor',
 'exif-copyrighted-false' => 'Dominio público',
 
 'exif-unknowndate' => 'Fecha desconocida',
@@ -3984,6 +3989,8 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'api-error-empty-file' => 'El archivo que enviaste estaba vacío.',
 'api-error-emptypage' => 'No se pueden crear páginas nuevas que estén vacías.',
 'api-error-fetchfileerror' => 'Error interno: Algo salió mal mientras se obtenía el archivo.',
+'api-error-fileexists-forbidden' => 'Ya existe el archivo "$1" y no se puede sobreescribir.',
+'api-error-fileexists-shared-forbidden' => 'Ya existe "$1" en el repositorio de archivos compartidos y no se puede sobreescribir.',
 'api-error-file-too-large' => 'El archivo que enviaste era demasiado grande.',
 'api-error-filename-tooshort' => 'El nombre de archivo es demasiado corto.',
 'api-error-filetype-banned' => 'Este tipo de archivo está prohibido.',
@@ -4022,4 +4029,6 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|siglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'No se pudieron obtener bloqueos en el servidor $1.',
 );
index 2f2e77e..8a691fa 100644 (file)
@@ -295,7 +295,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Peida viimaste muudatuste loetelus jälgimisloendis esitatavad muudatused',
 'tog-newpageshidepatrolled' => 'Peida uute lehtede loendis kontrollitud leheküljed',
 'tog-extendwatchlist' => 'Laienda jälgimisloendit, et näha kõiki muudatusi, mitte vaid kõige värskemaid',
-'tog-usenewrc' => 'Laiendatud viimased muudatused (nõutav JavaScripti olemasolu)',
+'tog-usenewrc' => 'Rühmita viimased muudatused ja muudatused jälgimisloendis lehekülje järgi (vaja JavaScripti)',
 'tog-numberheadings' => 'Pealkirjade automaatnummerdus',
 'tog-showtoolbar' => 'Redigeerimise tööriistariba näitamine',
 'tog-editondblclick' => 'Artiklite redigeerimine topeltklõpsu peale (JavaScript)',
@@ -321,7 +321,7 @@ $messages = array(
 'tog-externaleditor' => 'Kasuta vaikimisi välist redaktorit (ainult asjatundjatele, tarvis arvuti eriseadistust – [//www.mediawiki.org/wiki/Manual:External_editors lisateave])',
 'tog-externaldiff' => 'Kasuta vaikimisi välist võrdlusvahendit (ainult asjatundjatele, tarvis arvuti eriseadistust – [//www.mediawiki.org/wiki/Manual:External_editors lisateave])',
 'tog-showjumplinks' => 'Kuva lehekülje ülaservas "mine"-lingid',
-'tog-uselivepreview' => 'Kasuta elavat eelvaadet (nõutav JavaScript) (testimisel)',
+'tog-uselivepreview' => 'Kasuta elavat eelvaadet (vaja JavaScripti) (katseline)',
 'tog-forceeditsummary' => 'Nõua redigeerimisel resümee välja täitmist',
 'tog-watchlisthideown' => 'Peida minu redaktsioonid jälgimisloendist',
 'tog-watchlisthidebots' => 'Peida robotid jälgimisloendist',
@@ -558,7 +558,7 @@ Vaata [[Special:Version|versiooni lehekülge]].',
 'viewsourceold' => 'vaata lähteteksti',
 'editlink' => 'redigeeri',
 'viewsourcelink' => 'vaata lähteteksti',
-'editsectionhint' => 'Redigeeri alaosa $1',
+'editsectionhint' => 'Redigeeri alaosa "$1"',
 'toc' => 'Sisukord',
 'showtoc' => 'näita',
 'hidetoc' => 'peida',
@@ -677,6 +677,8 @@ $2',
 Administraator lukustas selle järgmisel põhjusel: "$3".',
 'invalidtitle-knownnamespace' => 'Vigane pealkiri nimeruumis "$2" tekstiga "$3"',
 'invalidtitle-unknownnamespace' => 'Vigane pealkiri nimeruuminumbriga $1 ja tekstiga "$2"',
+'exception-nologin' => 'Sisse logimata',
+'exception-nologin-text' => 'Selle lehekülje või toimingu jaoks pead selles vikis olema sisse loginud.',
 
 # Virus scanner
 'virus-badscanner' => "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
@@ -2103,6 +2105,7 @@ Pane tähele, et teised võrgukohad võivad viidata failile otselingiga ja seega
 Valiku kitsendamiseks vali logitüüp, sisesta kasutajanimi (tõstutundlik) või huvipakkuva lehekülje pealkiri (samuti tõstutundlik).',
 'logempty' => 'Logis puuduvad vastavad kirjed.',
 'log-title-wildcard' => 'Selle tekstiga algavad pealkirjad',
+'showhideselectedlogentries' => 'Näita valitud logisissekandeid või peida need',
 
 # Special:AllPages
 'allpages' => 'Kõik leheküljed',
@@ -2459,7 +2462,7 @@ Link võib olla kõlbmatu või redaktsioon võib olla taastatud või arhiivist e
 [[Special:Log/delete|Kustutamise logist]] võib leida loendi viimastest kustutamistest ja taastamistest.",
 'undelete-header' => 'Hiljuti kustutatud leheküljed leiad [[Special:Log/delete|kustutamislogist]].',
 'undelete-search-title' => 'Kustutatud lehekülgede otsimine',
-'undelete-search-box' => 'Otsi kustutatud lehekülgi',
+'undelete-search-box' => 'Kustutatud lehekülgede otsimine',
 'undelete-search-prefix' => 'Näita lehekülgi, mille pealkiri algab nii:',
 'undelete-search-submit' => 'Otsi',
 'undelete-no-results' => 'Kustutatud lehekülgede arhiivist sellist lehekülge ei leidunud.',
@@ -2991,6 +2994,7 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
 'spambot_username' => 'MediaWiki spämmieemaldus',
 'spam_reverting' => 'Taastan viimase versiooni, mis ei sisalda linke aadressile $1.',
 'spam_blanking' => 'Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.',
+'spam_deleting' => 'Kustutatud kõik redaktsioonid, mis viitasid aadressile $1.',
 
 # Info page
 'pageinfo-title' => 'Teave lehekülje "$1" kohta',
@@ -3830,6 +3834,8 @@ Kui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajan
 'api-error-empty-file' => 'Üleslaaditav fail on tühi.',
 'api-error-emptypage' => 'Uute tühjade lehekülgede loomine pole lubatud.',
 'api-error-fetchfileerror' => 'Sisemine tõrge: Midagi läks faili kättesaamisel valesti.',
+'api-error-fileexists-forbidden' => 'Fail nimega "$1" on juba olemas ja seda ei saa üle kirjutada.',
+'api-error-fileexists-shared-forbidden' => 'Fail nimega "$1" on jagatud failivaramus juba olemas ja seda ei saa üle kirjutada.',
 'api-error-file-too-large' => 'Üleslaaditav fail on liiga suur.',
 'api-error-filename-tooshort' => 'Failinimi on liiga lühike.',
 'api-error-filetype-banned' => 'Antud failitüüp on keelatud.',
index 1a18c19..15e16c9 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Extremaduran (Estremeñu)
+/** Extremaduran (estremeñu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 0d92e6e..eea2d63 100644 (file)
@@ -438,7 +438,7 @@ $messages = array(
 'tog-hidepatrolled' => 'ویرایش‌های گشت‌خورده از فهرست تغییرات اخیر پنهان شوند',
 'tog-newpageshidepatrolled' => 'صفحه‌های نهگبانی‌شده از فهرست صفحه‌های تازه پنهان شوند',
 'tog-extendwatchlist' => 'گسترش فهرست پی‌گیری‌ها برای نمایش همهٔ تغییرات، نه فقط آخرین‌ها',
-'tog-usenewrc' => 'از تغییرات اخیر گسترش‌یافته استفاده شود (نیازمند جاوااسکریپت)',
+'tog-usenewrc' => 'گروه تغییرات بر پایه صفحه در تغییرات اخیر و فهرست پیگیری‌ها (نیازمند جاوااسکریپت)',
 'tog-numberheadings' => 'شماره‌گذاری خودکار عنوان‌ها',
 'tog-showtoolbar' => 'نوار ابزار جعبهٔ ویرایش نمایش یابد (نیازمند جاوااسکریپت)',
 'tog-editondblclick' => 'ویرایش صفحه‌ها با دوکلیک (نیازمند جاوااسکریپت)',
@@ -795,6 +795,8 @@ $1',
 'cannotdelete' => 'امکان حذف صفحه یا تصویر «$1» وجود ندارد.
 ممکن است قبلاً فرد دیگری آن را حذف کرده باشد.',
 'cannotdelete-title' => 'نمی‌توان صفحهٔ «$1» را حذف کرد',
+'delete-hook-aborted' => 'ویرایش توسط قلاب لغو شد.
+توضیحی در این مورد داده نشد.',
 'badtitle' => 'عنوان بد',
 'badtitletext' => 'عنوان درخواستی نامعتبر، خالی، یا عنوانی میان‌زبانی یا میان‌ویکی‌ای با پیوند نادرست بود.
 ممکن است حاوی یک یا چند نویسه باشد که نمی‌توانند در عنوان‌ها استفاده شوند.',
@@ -831,6 +833,8 @@ $2',
 مدیری که آن را قفل کرده چنین توضیحی را ذکر کرده:  ''$3''.",
 'invalidtitle-knownnamespace' => 'عنوان نامعتبر با فضای نام «$2» و متن «$3»',
 'invalidtitle-unknownnamespace' => 'عنوان نامعتبر با فضای نام ناشناختهٔ شمارهٔ $1 و متن «$2»',
+'exception-nologin' => 'به سامانه وارد نشده‌اید',
+'exception-nologin-text' => 'در این ویکی انجام این عمل نیازمند وارد شدن به سیستم  است.',
 
 # Virus scanner
 'virus-badscanner' => "پیکربندی بد: پویشگر ویروس ناشناخته: ''$1''",
@@ -1232,6 +1236,12 @@ $2
 'parser-template-loop-warning' => 'حلقه در الگو پیدا شد: [[$1]]',
 'parser-template-recursion-depth-warning' => 'محدودیت عمق بازگشت الگو رد شد ($1)',
 'language-converter-depth-warning' => 'محدودیت عمق مبدل زبانی رد شد ($1)',
+'node-count-exceeded-category' => 'صفحه‌هایی که از حداکثر تعداد گره تجاوز کرده‌اند',
+'node-count-exceeded-warning' => 'صفحه از حداکثر تعداد گره تجاوز کرد',
+'expansion-depth-exceeded-category' => 'صفحه‌هایی که از حداکثر عمق بسط دادن تجاوز کرده‌اند',
+'expansion-depth-exceeded-warning' => 'صفحه حداکثر عمق بسط دادن تجاوز کرد',
+'parser-unstrip-loop-warning' => 'حلقه در دستور unstrip پیدا شد',
+'parser-unstrip-recursion-limit' => 'از حداکثر ارجاع در دستور unstrip تجاوز شد ($1)',
 
 # "Undo" feature
 'undo-success' => 'این ویرایش را می‌توان خنثی کرد.
@@ -2310,6 +2320,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 می‌توانید با انتخاب نوع سیاهه، نام کاربری (حساس به کوچکی و بزرگی حروف) و صفحه‌های تغییریافته (حساس به بزرگی و کوچکی حروف)، نمایش را محدودتر سازید.',
 'logempty' => 'مورد منطبق با منظور شما در سیاهه یافت نشد.',
 'log-title-wildcard' => 'صفحه‌هایی را جستجو کن که عنوانشان با این عبارت آغاز می‌شود',
+'showhideselectedlogentries' => 'نمایش/نهفتن موارد انتخابی در سیاهه',
 
 # Special:AllPages
 'allpages' => 'همهٔ صفحه‌ها',
@@ -3202,6 +3213,7 @@ $1',
 'spambot_username' => 'هرزه‌تمیزکارِ مدیاویکی',
 'spam_reverting' => 'واگردانی به آخرین نسخه‌ای که پیوندی به $1 ندارد.',
 'spam_blanking' => 'تمام نسخه‌ها حاوی پیوند به $1 بود، در حال خالی کردن',
+'spam_deleting' => 'تمام نسخه‌ها حاوی پیوند به $1 بود، در حال حذف',
 
 # Info page
 'pageinfo-title' => 'اطلاعات در مورد «$1»',
@@ -4140,6 +4152,8 @@ $5
 'api-error-empty-file' => 'پرونده‌ای که شما ارسال کردید خالی بود.',
 'api-error-emptypage' => 'ایجاد صفحه‌های خالی مجاز نیست.',
 'api-error-fetchfileerror' => 'خطای داخلی: در هنگام گرفتن پرونده، یک چیزی درست پیش نرفت.',
+'api-error-fileexists-forbidden' => 'یک پرونده با نام "$1" موجود است و امکان بازنویسی نیست.',
+'api-error-fileexists-shared-forbidden' => 'یک پرونده با نام "$1" در انبار اشتراک پرونده موجود است و امکان بازنویسی نیست.',
 'api-error-file-too-large' => 'پرونده‌ای که شما ارسال کردید بیش از اندازه بزرگ بود.',
 'api-error-filename-tooshort' => 'نام پرونده بیش از اندازه کوتاه است.',
 'api-error-filetype-banned' => 'این نوع پرونده ممنوع است.',
@@ -4178,4 +4192,6 @@ $5
 'duration-centuries' => '$1 قرن',
 'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'امکان گرفتن قفل‌های سرور $1 وجود ندارد.',
 );
index 326fb17..b15c71b 100644 (file)
@@ -11,6 +11,7 @@
  * @author Centerlink
  * @author Cimon Avaro
  * @author Crt
+ * @author ElmA
  * @author Harriv
  * @author Jaakonam
  * @author Jack Phoenix
@@ -689,12 +690,14 @@ $2',
 'customcssprotected' => 'Sinulla ei ole oikeutta muuttaa tätä CSS-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
 'customjsprotected' => 'Sinulla ei ole oikeutta muuttaa tätä JavaScript-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
 'ns-specialprotected' => 'Toimintosivuja ei voi muokata.',
-'titleprotected' => "Käyttäjä [[User:$1|$1]] on asettanut tämän sivun luontikieltoon: ''$2''.",
+'titleprotected' => "Käyttäjä [[User:$1|$1]] on suojannut tämän sivunimen, ja sivua ei voi luoda.
+Syynä on: ''$2''.",
 'filereadonlyerror' => 'Tiedostoa "$1" ei voi muuttaa, koska jaettu mediavarasto "$2" on "vain luku" -tilassa.
 
 Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: "$3".',
-'invalidtitle-knownnamespace' => 'Virheellinen nimike nimitilaan "$2" ja teksti "$3"',
-'invalidtitle-unknownnamespace' => 'Virheellinen nimi tuntemattomassa nimitilassa $1 ja tekstissä $2',
+'invalidtitle-knownnamespace' => 'Virheellinen sivunimi, nimiavaruus "$2" ja teksti "$3"',
+'invalidtitle-unknownnamespace' => 'Virheellinen sivunimi, tuntematon nimiavaruus numero $1 ja teksti $2',
+'exception-nologin' => 'Et ole kirjautuneena',
 
 # Virus scanner
 'virus-badscanner' => "Virheellinen asetus: Tuntematon virustutka: ''$1''",
@@ -1006,7 +1009,7 @@ Alla on viimeisin lokitapahtuma:",
 'semiprotectedpagewarning' => 'Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat muokata sitä.
 Alla on viimeisin lokitapahtuma:',
 'cascadeprotectedwarning' => '<strong>Vain ylläpitäjät voivat muokata tätä sivua, koska se on sisällytetty alla {{PLURAL:$1|olevaan laajennetusti suojattuun sivuun|oleviin laajennetusti suojattuihin sivuihin}}</strong>:',
-'titleprotectedwarning' => "'''Tämä sivun luominen on rajoitettu vain osalle käyttäjistä [[Special:ListGroupRights|tietyillä oikeuksilla]].'''
+'titleprotectedwarning' => "'''Varoitus: Tämä sivunimi on suojattu niin, että sivun luomiseen tarvitaan [[Special:ListGroupRights|erityisiä oikeuksia]].'''
 Alla on viimeisin lokitapahtuma:",
 'templatesused' => 'Tällä sivulla {{PLURAL:$1|käytetty malline|käytetyt mallineet}}:',
 'templatesusedpreview' => 'Esikatselussa mukana {{PLURAL:$1|oleva malline|olevat mallineet}}:',
@@ -1140,7 +1143,7 @@ Voit silti nähdä tämän muutoksen. Lisätietoja löytyy [{{fullurl:{{#Special
 'revdelete-no-file' => 'Määritettyä tiedostoa ei ole olemassa.',
 'revdelete-show-file-confirm' => 'Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?',
 'revdelete-show-file-submit' => 'Kyllä',
-'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta '''$1:''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta [[:$1]]'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:'''",
 'revdelete-text' => "'''Poistetut versiot ja lokitapahtumat näkyvät edelleen sivun historiassa ja lokeissa, mutta osa niiden sisällöstä ei ole julkisesti saatavilla.'''
 Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti tarkastella piilotettua sisältöä, ja he voivat palauttaa sen näkyviin tämän käyttöliittymän kautta, ellei tätä ole erikseen rajoitettu.",
@@ -1148,17 +1151,17 @@ Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti tarkastella p
 'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
 * Sopimattomat henkilötiedot
 *: ''kotiosoitteet, puhelinnumerot, sosiaaliturvatunnukset ja muut.''",
-'revdelete-legend' => 'Version rajoitukset',
-'revdelete-hide-text' => 'Piilota version sisältö',
+'revdelete-legend' => 'Aseta version näkyvyyden rajoitukset',
+'revdelete-hide-text' => 'Piilota version tekstisisältö',
 'revdelete-hide-image' => 'Piilota tiedoston sisältö',
 'revdelete-hide-name' => 'Piilota toiminto ja kohde',
 'revdelete-hide-comment' => 'Piilota yhteenveto',
 'revdelete-hide-user' => 'Piilota tekijän tunnus tai IP-osoite',
-'revdelete-hide-restricted' => 'Piilota tiedot ylläpitäjiltä kuten muilta',
+'revdelete-hide-restricted' => 'Häivytä tiedot sekä ylläpitäjien että muiden käyttäjien näkyviltä',
 'revdelete-radio-same' => '(älä muuta)',
 'revdelete-radio-set' => 'Kyllä',
 'revdelete-radio-unset' => 'Ei',
-'revdelete-suppress' => 'Piilota myös ylläpitäjiltä',
+'revdelete-suppress' => 'Häivytä tiedot myös ylläpitäjien näkyviltä samalla kun piilotat ne muilta käyttäjiltä',
 'revdelete-unsuppress' => 'Poista rajoitukset palautetuilta versiolta',
 'revdelete-log' => 'Syy',
 'revdelete-submit' => 'Toteuta {{PLURAL:$1|valittuun versioon|valittuihin versioihin}}',
@@ -1225,7 +1228,7 @@ Uuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa men
 
 # Diffs
 'history-title' => 'Sivun "$1" muutoshistoria',
-'difference-title' => 'Ero sivun "$1" versioiden välillä',
+'difference-title' => 'Ero sivun ”$1” versioiden välillä',
 'difference-title-multipage' => 'Erot sivujen "$1" ja "$2" välillä',
 'difference-multipage' => '(Sivujen välinen eroavaisuus)',
 'lineno' => 'Rivi $1:',
@@ -1296,9 +1299,9 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'powersearch-ns' => 'Hae nimiavaruuksista:',
 'powersearch-redir' => 'Luettele ohjaukset',
 'powersearch-field' => 'Etsi',
-'powersearch-togglelabel' => 'Muuta valinta',
+'powersearch-togglelabel' => 'Muuta valintaa',
 'powersearch-toggleall' => 'Valitse kaikki',
-'powersearch-togglenone' => 'Poista kaikki',
+'powersearch-togglenone' => 'Valitse ei mitään',
 'search-external' => 'Ulkoinen haku',
 'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
 
@@ -1478,7 +1481,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
 # Rights
 'right-read' => 'Lukea sivuja',
 'right-edit' => 'Muokata sivuja',
-'right-createpage' => 'Luoda sivuja pois lukien keskustelusivut',
+'right-createpage' => 'Luoda sivuja (jotka eivät ole keskustelusivuja)',
 'right-createtalk' => 'Luoda keskustelusivuja',
 'right-createaccount' => 'Luoda uusia käyttäjätunnuksia',
 'right-minoredit' => 'Merkitä muokkauksensa pieniksi',
@@ -2096,6 +2099,7 @@ Huomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla,
 Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muutos on kohdistunut. Jälkimmäiset ovat kirjainkokoherkkiä.',
 'logempty' => 'Ei tapahtumia lokissa.',
 'log-title-wildcard' => 'Kohde alkaa merkkijonolla',
+'showhideselectedlogentries' => 'Näytä tai piilota valitut lokimerkinnät',
 
 # Special:AllPages
 'allpages' => 'Kaikki sivut',
@@ -2403,16 +2407,18 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
 
 # Undelete
 'undelete' => 'Palauta poistettuja sivuja',
-'undeletepage' => 'Poistettujen sivujen selaus',
+'undeletepage' => 'Tarkastele ja palauta poistettuja sivuja',
 'undeletepagetitle' => "'''Poistetut versiot sivusta [[:$1]]'''.",
 'viewdeletedpage' => 'Poistettujen sivujen selaus',
 'undeletepagetext' => '{{PLURAL:$1|Seuraava sivu|Seuraavat sivut}} on poistettu, mutta {{PLURAL:$1|se löytyy|ne löytyvät}} vielä arkistosta, joten {{PLURAL:$1|se on|ne ovat}} palautettavissa. Arkisto saatetaan tyhjentää aika ajoin.',
 'undelete-fieldset-title' => 'Palauta versiot',
-'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian, jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.
-Voit palauttaa versiota valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
+'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.
+Voit palauttaa versioita valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
 'undeleterevisions' => '{{PLURAL:$1|Versio|$1 versiota}} arkistoitu.',
 'undeletehistory' => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan.',
-'undeleterevdel' => 'Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain poistettu. Tässä tilanteessa poista uusimman poistettavan version piilotus. Tiedostoversioita, joihin sinulla ei ole katseluoikeutta ei palauteta.',
+'undeleterevdel' => "Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain piilotettu. 
+Tässä tilanteessa älä valitse palautettavaksi näkyviin viimeisintä poistettua versiota tai poista version piilotus.<br />
+Tiedostoversioita, joihin sinulla ei ole katseluoikeutta (''häivytetyt versiot''), ei palauteta.",
 'undeletehistorynoadmin' => 'Tämä sivu on poistettu. Syy sivun poistamiseen näkyy yhteenvedossa, jossa on myös tiedot, ketkä ovat muokanneet tätä sivua ennen poistamista. Sivujen varsinainen sisältö on vain ylläpitäjien luettavissa.',
 'undelete-revision' => 'Poistettu sivu $1 hetkellä $4 kello $5. Tekijä: $3.',
 'undeleterevision-missing' => 'Virheellinen tai puuttuva versio. Se on saatettu palauttaa tai poistaa arkistosta.',
index 567e114..a20078a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Meänkieli (Meänkieli)
+/** meänkieli (meänkieli)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 394f985..e50f273 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Faroese (Føroyskt)
+/** Faroese (føroyskt)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index ae0d071..a1c070e 100644 (file)
@@ -371,7 +371,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Masquer les modifications surveillées dans les modifications récentes',
 'tog-newpageshidepatrolled' => 'Masquer les pages surveillées parmi les nouvelles pages',
 'tog-extendwatchlist' => 'Étendre la liste de suivi pour afficher toutes les modifications et non seulement les plus récentes',
-'tog-usenewrc' => 'Utiliser les modifications récentes améliorées (nécessite JavaScript)',
+'tog-usenewrc' => 'Grouper les changements dans les modifications récentes et la liste de suivi (nécessite JavaScript)',
 'tog-numberheadings' => 'Numéroter automatiquement les titres de section',
 'tog-showtoolbar' => "Montrer la barre d'outils de modification (nécessite JavaScript)",
 'tog-editondblclick' => 'Modifier des pages sur double-clic (nécessite JavaScript)',
@@ -722,6 +722,8 @@ Veuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oubli
 'cannotdelete' => 'Impossible de supprimer la page ou le fichier « $1 ».
 La suppression a peut-être déjà été effectuée par quelqu’un d’autre.',
 'cannotdelete-title' => 'Impossible de supprimer la page « $1 »',
+'delete-hook-aborted' => "Suppression annulée par une extension.
+Aucune explication n'a été fournie.",
 'badtitle' => 'Mauvais titre',
 'badtitletext' => 'Le titre de la page demandée est invalide, vide, ou il s’agit d’un titre inter-langue ou inter-projet mal lié. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.',
 'perfcached' => 'Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|un résultat|$1 résultats}} est disponible dans le cache.',
@@ -754,6 +756,8 @@ Le motif avancé est « ''$2'' ».",
 L’administrateur qui l’a verrouillé a fourni ce motif: « $3 ».',
 'invalidtitle-knownnamespace' => 'Titre invalide avec l’espace de noms « $2 » et l’intitulé « $3 »',
 'invalidtitle-unknownnamespace' => 'Titre invalide avec le numéro d’espace de noms $1 et l’intitulé « $2 » inconnus',
+'exception-nologin' => 'Non connecté',
+'exception-nologin-text' => "Cette page ou cette action nécessite d'être connecté sur ce wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
@@ -3114,6 +3118,7 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 'spambot_username' => 'Nettoyage de pourriels par MediaWiki',
 'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
 'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
+'spam_deleting' => 'Toutes les versions contenaient des liens vers $1, suppression',
 
 # Info page
 'pageinfo-title' => 'Informations pour « $1 »',
@@ -4014,6 +4019,8 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'api-error-empty-file' => 'Le fichier que vous avez soumis était vide.',
 'api-error-emptypage' => "Création de pages vide n'est pas autorisée.",
 'api-error-fetchfileerror' => 'Erreur interne : Quelque chose s’est mal passé lors de la récupération du fichier.',
+'api-error-fileexists-forbidden' => 'Un fichier nommé "$1" existe déjà, et ne peut pas être écrasé.',
+'api-error-fileexists-shared-forbidden' => 'Un fichier nommé "$1" existe déjà dans le répertoire des fichiers partagés, et ne peut pas être écrasé.',
 'api-error-file-too-large' => 'Le fichier que vous avez soumis était trop grand.',
 'api-error-filename-tooshort' => 'Le nom du fichier est trop court.',
 'api-error-filetype-banned' => 'Ce type de fichier est interdit.',
@@ -4052,4 +4059,6 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'duration-centuries' => '$1 {{PLURAL:$1|siècle|siècles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millénaire|millénaires}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "Impossible d'acquérir des verrous sur le serveur $1.",
 );
index 0dd57ec..a101aaf 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Franco-Provençal (Arpetan)
+/** Franco-Provençal (arpetan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -312,59 +312,59 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Solegnér los lims :',
 'tog-justify' => 'Èxplicar los paragrafos',
-'tog-hideminor' => 'Cachiér los petiôts changements des dèrriérs changements',
-'tog-hidepatrolled' => 'Cachiér los changements survelyês des dèrriérs changements',
-'tog-newpageshidepatrolled' => 'Cachiér les pâges survelyês de la lista de les pâges novèles',
+'tog-hideminor' => 'Cachiér los petiôts changements dedens los dèrriérs changements',
+'tog-hidepatrolled' => 'Cachiér los changements survelyês dedens los dèrriérs changements',
+'tog-newpageshidepatrolled' => 'Cachiér les pâges survelyês entre-mié les pâges novèles',
 'tog-extendwatchlist' => 'Ètendre la lista de survelyence por fâre vêre tôs los changements et pas solament los ples novéls',
-'tog-usenewrc' => 'Utilisar los dèrriérs changements mèlyorâs (at fôta de JavaScript)',
-'tog-numberheadings' => 'Numerotar ôtomaticament los titros de sèccions',
-'tog-showtoolbar' => 'Montrar la bârra d’outils d’èdicion (at fôta de JavaScript)',
-'tog-editondblclick' => 'Doblo-clicar pèrmèt de changiér una pâge (at fôta de JavaScript)',
-'tog-editsection' => 'Activar los lims « [changiér] » por changiér una sèccion',
-'tog-editsectiononrightclick' => 'Fâre un clic drêt sur un titro de sèccion pèrmèt de changiér ceta (at fôta de JavaScript)',
+'tog-usenewrc' => 'Rassemblar los changements per pâge dedens los dèrriérs changements et la lista de survelyence (at fôta de JavaScript)',
+'tog-numberheadings' => 'Numerotar ôtomaticament los titros de sèccion',
+'tog-showtoolbar' => 'Fâre vêre la bârra d’outils de changement (at fôta de JavaScript)',
+'tog-editondblclick' => 'Changiér des pâges sur doblo-clic (at fôta de JavaScript)',
+'tog-editsection' => 'Activar lo changement de sèccions avouéc los lims « [changiér] »',
+'tog-editsectiononrightclick' => 'Activar lo changement de sèccions per clic drêt sur lors titros (at fôta de JavaScript)',
 'tog-showtoc' => 'Fâre vêre la trâbla de les matiéres (por les pâges qu’ont més de 3 sèccions)',
-'tog-rememberpassword' => 'Sè rapelar de mon branchement sur ceti navigator (por $1 jorn{{PLURAL:$1||s}} u més)',
+'tog-rememberpassword' => 'Sè rapelar de mon contresegno sur ceti navigator (por $1 jorn{{PLURAL:$1||s}} u més)',
 'tog-watchcreations' => 'Apondre les pâges que fé a ma lista de survelyence',
 'tog-watchdefault' => 'Apondre les pâges que chanjo a ma lista de survelyence',
 'tog-watchmoves' => 'Apondre les pâges que renomo a ma lista de survelyence',
 'tog-watchdeletion' => 'Apondre les pâges que suprimo a ma lista de survelyence',
-'tog-minordefault' => 'Marcar per dèfôt mos changements coment petiôts',
-'tog-previewontop' => 'Montrar la prèvisualisacion en-dessus de la bouèta d’èdicion',
-'tog-previewonfirst' => 'Montrar la prèvisualisacion pendent la premiére èdicion',
+'tog-minordefault' => 'Marcar per dèfôt tôs los changements coment petiôts',
+'tog-previewontop' => 'Fâre vêre la prèvisualisacion en-dessus de la zona de changement',
+'tog-previewonfirst' => 'Fâre vêre la prèvisualisacion pendent lo premiér changement',
 'tog-nocache' => 'Dèsactivar lo cache de les pâges per lo navigator',
-'tog-enotifwatchlistpages' => 'M’avèrtir per mèssageria èlèctronica quand una pâge de ma lista de survelyence est changiê',
-'tog-enotifusertalkpages' => 'M’avèrtir per mèssageria èlèctronica quand ma pâge de discussion est changiê',
-'tog-enotifminoredits' => 'M’avèrtir per mèssageria èlèctronica mémo en câs de petiôts changements',
-'tog-enotifrevealaddr' => 'Fâre vêre mon adrèce èlèctronica dens los mèssâjos d’avèrtissement',
-'tog-shownumberswatching' => 'Fâre vêre lo nombro d’usanciérs que siuvont les pâges',
+'tog-enotifwatchlistpages' => 'Mè mandar un mèssâjo quand na pâge de ma lista de survelyence est changiê',
+'tog-enotifusertalkpages' => 'Mè mandar un mèssâjo quand ma pâge de discussion est changiê',
+'tog-enotifminoredits' => 'Mè mandar un mèssâjo mémo en câs de petiôts changements de les pâges',
+'tog-enotifrevealaddr' => 'Fâre vêre mon adrèce èlèctronica dens los mèssâjos de notificacion',
+'tog-shownumberswatching' => 'Fâre vêre lo nombro d’utilisators que siuvont na pâge',
 'tog-oldsig' => 'Signatura ègzistenta :',
 'tog-fancysig' => 'Trètar la signatura coment de vouiquitèxto (sen lim ôtomatico)',
-'tog-externaleditor' => 'Utilisar per dèfôt un èditor de tèxto de defôr (solament por los usanciérs avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
-'tog-externaldiff' => 'Utilisar per dèfôt un comparator de defôr (solament por los usanciérs avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
-'tog-showjumplinks' => 'Activar los lims « navigacion » et « rechèrche » d’amont la pâge',
+'tog-externaleditor' => 'Utilisar per dèfôt un changior de tèxto de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-externaldiff' => 'Utilisar per dèfôt un comparator de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-showjumplinks' => 'Activar los lims d’accèssibilitât « {{int:jumpto}} »',
 'tog-uselivepreview' => 'Utilisar l’apèrçu vito fêt (at fôta de JavaScript) (èxpèrimentâl)',
 'tog-forceeditsummary' => 'M’avèrtir quand j’é pas spècefiâ de rèsumâ de changement',
-'tog-watchlisthideown' => 'Cachiér mos prôpros changements dens la lista de survelyence',
-'tog-watchlisthidebots' => 'Cachiér los changements fêts per des bots dens la lista de survelyence',
-'tog-watchlisthideminor' => 'Cachiér los petiôts changements dens la lista de survelyence',
-'tog-watchlisthideliu' => 'Cachiér los changements fêts per des usanciérs branchiês dens la lista de survelyence',
-'tog-watchlisthideanons' => 'Cachiér los changements fêts per des usanciérs pas encartâs dens la lista de survelyence',
-'tog-watchlisthidepatrolled' => 'Cachiér los changements survelyês dens la lista de survelyence',
-'tog-nolangconversion' => 'Dèsactivar la convèrsion de les variantes de lengoua',
-'tog-ccmeonemails' => 'Mè mandar una copia des mèssâjos que mando ux ôtros usanciérs',
-'tog-diffonly' => 'Pas montrar lo contegnu de les pâges desot los difs',
+'tog-watchlisthideown' => 'Cachiér mos prôpros changements dedens la lista de survelyence',
+'tog-watchlisthidebots' => 'Cachiér los changements fêts per des bots dedens la lista de survelyence',
+'tog-watchlisthideminor' => 'Cachiér los petiôts changements dedens la lista de survelyence',
+'tog-watchlisthideliu' => 'Cachiér los changements fêts per des utilisators branchiês dedens la lista de survelyence',
+'tog-watchlisthideanons' => 'Cachiér los changements fêts per des utilisators anonimos dedens la lista de survelyence',
+'tog-watchlisthidepatrolled' => 'Cachiér los changements survelyês dedens la lista de survelyence',
+'tog-nolangconversion' => 'Dèsactivar la convèrsion de les variantes lengouistiques',
+'tog-ccmeonemails' => 'Mè mandar na copia des mèssâjos que mando ux ôtros utilisators',
+'tog-diffonly' => 'Pas fâre vêre lo contegnu de les pâges desot los difs',
 'tog-showhiddencats' => 'Fâre vêre les catègories cachiês',
-'tog-noconvertlink' => 'Dèsactivar la convèrsion des titros',
-'tog-norollbackdiff' => 'Pas montrar lo dif pendent una rèvocacion',
+'tog-noconvertlink' => 'Dèsactivar la convèrsion des titros des lims',
+'tog-norollbackdiff' => 'Pas fâre vêre lo dif pendent na rèvocacion',
 
-'underline-always' => 'tojorn',
-'underline-never' => 'jamés',
-'underline-default' => 'd’aprés lo navigator',
+'underline-always' => 'Tojorn',
+'underline-never' => 'Jamés',
+'underline-default' => 'Valor per dèfôt du navigator',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'Stilo de la police de la bouèta d’èdicion :',
+'editfont-style' => 'Stilo de police de la zona de changement :',
 'editfont-default' => 'Celi du navigator per dèfôt',
-'editfont-monospace' => 'Police monoèspâciê',
+'editfont-monospace' => 'Police de chace fixa',
 'editfont-sansserif' => 'Police sen empiotament',
 'editfont-serif' => 'Police avouéc empiotaments',
 
@@ -422,18 +422,18 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => 'Catègorie{{PLURAL:$1||s}}',
-'category_header' => 'Pâges dens la catègorie « $1 »',
+'category_header' => 'Pâges dedens la catègorie « $1 »',
 'subcategories' => 'Sot-catègories',
-'category-media-header' => 'Fichiérs mèdia dens la catègorie « $1 »',
-'category-empty' => "''Ora, ceta catègorie contint gins de pâge ou ben de fichiér mèdia.''",
+'category-media-header' => 'Fichiérs mèdia dedens la catègorie « $1 »',
+'category-empty' => "''Ora, ceta catègorie contint gins de pâge ou de fichiér mèdia.''",
 'hidden-categories' => '{{PLURAL:$1|Catègorie cachiê|Catègories cachiês}}',
 'hidden-category-category' => 'Catègories cachiês',
-'category-subcat-count' => 'Ceta catègorie at {{PLURAL:$2|ren que la sot-catègorie|$2 sot-catègories, que {{PLURAL:$1|cela|les $1}}}} ce-desot.',
-'category-subcat-count-limited' => 'Ceta catègorie at {{PLURAL:$1|la sot-catègorie|les $1 sot-catègories}} ce-desot.',
-'category-article-count' => 'Ceta catègorie contint {{PLURAL:$2|ren que la pâge|$2 pâges, que {{PLURAL:$1|cela|les $1}}}} ce-desot.',
-'category-article-count-limited' => '{{PLURAL:$1|Ceta pâge figure|Cetes $1 pâges figuront}} dens la presenta catègorie.',
-'category-file-count' => 'Ceta catègorie contint {{PLURAL:$2|ren que lo fichiér|$2 fichiérs, que {{PLURAL:$1|celi|los $1}}}} ce-desot.',
-'category-file-count-limited' => '{{PLURAL:$1|Ceti fichiér figure|Cetos $1 fichiérs figuront}} dens la presenta catègorie.',
+'category-subcat-count' => 'Cela catègorie-que at {{PLURAL:$2|ren que ceta sot-catègorie.|{{PLURAL:$1|ceta sot-catègorie|cetes $1 sot-catègories}}, sur na soma de $2.}}',
+'category-subcat-count-limited' => 'Cela catègorie-que at {{PLURAL:$1|ceta sot-catègorie|cetes $1 sot-catègories}}.',
+'category-article-count' => '{{PLURAL:$2|Cela catègorie-que contint ren que ceta pâge.|{{PLURAL:$1|Ceta pâge figure|Cetes $1 pâges figuront}} dedens cela catègorie-que, sur na soma de $2.}}',
+'category-article-count-limited' => '{{PLURAL:$1|Ceta pâge figure|Cetes $1 pâges figuront}} dedens la presenta catègorie.',
+'category-file-count' => '{{PLURAL:$2|Cela catègorie-que contint ren que ceti fichiér.|{{PLURAL:$1|Ceti fichiér figure|Cetos $1 fichiérs figuront}} dedens cela catègorie-que, sur na soma de $2.}}',
+'category-file-count-limited' => '{{PLURAL:$1|Ceti fichiér figure|Cetos $1 fichiérs figuront}} dedens la presenta catègorie.',
 'listingcontinuesabbrev' => '(suita)',
 'index-category' => 'Pâges endèxâs',
 'noindex-category' => 'Pâges pas endèxâs',
@@ -441,7 +441,7 @@ $messages = array(
 
 'about' => 'A propôs',
 'article' => 'Pâge de contegnu',
-'newwindow' => '(ôvre una fenétra novèla)',
+'newwindow' => '(ôvre na fenétra novèla)',
 'cancel' => 'Anular',
 'moredotdotdot' => 'Et ples...',
 'mypage' => 'Ma pâge',
@@ -671,8 +671,8 @@ La suprèssion at pôt-étre ja étâ fêta per quârqu’un d’ôtro.',
 'badtitle' => 'Crouyo titro',
 'badtitletext' => 'Lo titro de pâge demandâ est fôx, vouedo, ou ben o est un titro entèrlengoua ou entèrvouiqui mâl-liyê.
 Contint sûrement yon ou ben un mouél de caractèros que pôvont pas étre utilisâs dens los titros.',
-'perfcached' => 'Cetes balyês sont en cache et pôvont pas étre a jorn. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Cetes balyês sont en cache, sont vêr pas forciêment a jorn. La dèrriére actualisacion dâte du $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Cetes balyês sont en cache et pôvont pas étre a jorn. {{PLURAL:$1|Yon rèsultat|$1 rèsultats}} u més {{PLURAL:$1|est disponiblo|sont disponiblos}} dedens lo cache.',
+'perfcachedts' => 'Cetes balyês sont en cache et ont étâ betâs a jorn por lo dèrriér côp a $1. {{PLURAL:$4|Yon rèsultat|$4 rèsultats}} u més {{PLURAL:$1|est disponiblo|sont disponiblos}} dedens lo cache.',
 'querypage-no-updates' => 'Ora, les mises a jorn por ceta pâge sont dèsactivâs.
 Les balyês ce-desot sont pas betâs a jorn.',
 'wrong_wfQuery_params' => 'Paramètres fôx dessus wfQuery()<br />
@@ -699,6 +699,7 @@ $2',
 'ns-specialprotected' => 'Les pâges dens l’èspâço de noms « {{ns:special}} » pôvont pas étre changiês.',
 'titleprotected' => "Cél titro at étâ protègiê a la crèacion per [[User:$1|$1]].
 La rêson balyê est « ''$2'' ».",
+'exception-nologin' => 'Pas branchiê',
 
 # Virus scanner
 'virus-badscanner' => "Crouye configuracion : scanor de virus encognu : ''$1''",
@@ -796,6 +797,7 @@ Nion mèssâjo serat mandâ por châcuna de cetes fonccions.',
 'invalidemailaddress' => 'Ceta adrèce èlèctronica pôt pas étre accèptâ perce que semble avêr un format fôx.
 Volyéd buchiér una adrèce bien formatâ ou ben lèssiér cél champ vouedo.',
 'cannotchangeemail' => 'Les adrèces èlèctroniques des comptos pôvont pas étre changiês sur ceti vouiqui.',
+'emaildisabled' => 'Ceti seto pôt pas mandar des mèssâjos.',
 'accountcreated' => 'Compto fêt.',
 'accountcreatedtext' => 'Lo compto usanciér por $1 at étâ fêt.',
 'createaccount-title' => 'Crèacion d’un compto por {{SITENAME}}',
@@ -1006,8 +1008,9 @@ La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
 Rapelâd-vos que les pâges a sè avouéc èxtensions .css et .js utilisont des titros en petiôtes lètres, per ègzemplo {{ns:user}}:Foo/vector.css et pas {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Betâ a jorn)',
 'note' => "'''Nota :'''",
-'previewnote' => "'''Rapelâd-vos que ceti tèxto est ren qu’una prèvisualisacion.'''
-'''Il at p’oncor étâ sôvâ !'''",
+'previewnote' => "'''Rapelâd-vos qu’o est ren qu’una prèvisualisacion.'''
+Voutros changements ont p’oncor étâ sôvâ !",
+'continue-editing' => 'Continuar lo changement',
 'previewconflict' => 'Ceta prèvisualisacion montre lo tèxto de la bouèta d’èdicion de d’amont coment aparètrat se vos chouèsésséd de lo sôvar.',
 'session_fail_preview' => "'''Dèsolâ ! Nos povens pas encartar voutron changement a côsa d’una pèrta d’enformacions en rapôrt avouéc voutra sèance.'''
 Volyéd tornar èprovar.
@@ -1048,7 +1051,7 @@ Vos nos assurâd asse-ben que vos éd cen ècrit vos-mémo, ou ben que vos l’
 Se vos voléd pas que voutros ècrits seyont changiês sen gins de rèstriccion, adonc los volyéd pas sometre ique.<br />
 Vos nos assurâd asse-ben que vos éd cen ècrit vos-mémo, ou ben que vos l’éd copiyê d’una sôrsa que vint du domêno publico, ou ben d’una ressôrsa libra (vêde $1 por més de dètalys).
 '''Utilisâd gins d’ôvra desot drêt d’ôtor sen pèrmission èxprèssa !'''",
-'longpageerror' => "'''ÈRROR : lo tèxto que vos éd somês fât $1 Kio, cen que dèpâsse la limita fixâ a $2 Kio.'''
+'longpageerror' => "'''ÈRROR : lo tèxto que vos éd somês fât {{PLURAL:$1|yon Kio|$1 Kio}}, cen que dèpâsse la limita fixâ a {{PLURAL:$2|yon Kio|$2 Kio}}.'''
 Lo tèxto pôt pas étre sôvâ.",
 'readonlywarning' => "'''Atencion : la bâsa de balyês at étâ vèrrolyê por mantegnence, vos porréd vêr pas sôvar voutros changements d’abôrd.'''
 Vos pouede copiyér lo tèxto dens un fichiér tèxto et pués lo sôvar por ples târd.
@@ -1093,6 +1096,7 @@ Semble qu’el èye étâ suprimâ.',
 'edit-no-change' => 'Voutron changement at étâ ignorâ perce que nion changement at étâ fêt u tèxto.',
 'edit-already-exists' => 'La pâge novèla at pas possu étre fêta.
 Ègziste ja.',
+'defaultmessagetext' => 'Mèssâjo per dèfôt',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Atencion : ceta pâge contint trop d’apèls que revegnont chiers de fonccions du parsor.
@@ -1252,7 +1256,7 @@ Volyéd controlar los jornals.',
 # Suppression log
 'suppressionlog' => 'Jornal de les suprèssions',
 'suppressionlogtext' => 'Vê-que la lista de les suprèssions et des blocâjos qu’ont de contegnu cachiê ux administrators.
-Vêde la [[Special:BlockList|lista ux usanciérs et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
+Vêde la [[Special:BlockList|lista des blocâjos]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
 
 # History merging
 'mergehistory' => 'Fusionar los historicos de les pâges',
@@ -1287,6 +1291,8 @@ Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colo
 
 # Diffs
 'history-title' => 'Historico de les vèrsions de « $1 »',
+'difference-title' => 'Difèrences entre les vèrsions de « $1 »',
+'difference-title-multipage' => 'Difèrences entre les pâges « $1 » et « $2 »',
 'difference-multipage' => '(Difèrences entre les pâges)',
 'lineno' => 'Legne $1 :',
 'compareselectedversions' => 'Comparar les vèrsions chouèsies',
@@ -1384,6 +1390,7 @@ Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'prefs-beta' => 'Fonccionalitâts « Bèta »',
 'prefs-datetime' => 'Dâta et hora',
 'prefs-labs' => 'Fonccionalitâts « Laboratiors »',
+'prefs-user-pages' => 'Pâges utilisator',
 'prefs-personal' => 'Enformacions a sè',
 'prefs-rc' => 'Dèrriérs changements',
 'prefs-watchlist' => 'Lista de survelyence',
@@ -1864,7 +1871,7 @@ Se lo problèmo continue, veriéd-vos vers un [[Special:ListUsers/sysop|administ
 'backend-fail-writetemp' => 'Empossiblo d’ècrire dedens lo fichiér temporèro.',
 'backend-fail-closetemp' => 'Empossiblo de cllôre lo fichiér temporèro.',
 'backend-fail-read' => 'Empossiblo de liére lo fichiér $1.',
-'backend-fail-create' => 'Empossiblo de fâre lo fichiér $1.',
+'backend-fail-create' => 'Empossiblo d’ècrire lo fichiér $1.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Empossiblo de dèvèrrolyér « $1 » ; el est pas vèrrolyê.',
@@ -1900,7 +1907,7 @@ Pôt pas étre controlâ tot drêt por la sècuritât.',
 'img-auth-nopathinfo' => 'PATH_INFO manquent.
 Voutron sèrvor est pas dèfeni por passar cela enformacion.
 Fonccione pôt-étre en CGI et pués recognêt pas img_auth.
-[https://www.mediawiki.org/wiki/Manual:Image_Authorization Vêde los drêts d’émâge.]',
+Vêde https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Lo chemin demandâ est pas lo rèpèrtouèro de tèlèchargement configurâ.',
 'img-auth-badtitle' => 'Empossiblo de construire un titro valido dês « $1 ».',
 'img-auth-nologinnWL' => 'Vos éte pas branchiê et pués « $1 » est pas dens la lista blanche.',
@@ -2201,6 +2208,9 @@ Contint sûrement yon ou ben un mouél de caractèros que pôvont pas étre util
 'allpages-bad-ns' => '{{SITENAME}} at gins d’èspâço de noms « $1 ».',
 'allpages-hide-redirects' => 'Cachiér les redirèccions',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Vêre lo ples novél.',
+
 # Special:Categories
 'categories' => 'Catègories',
 'categoriespagetext' => '{{PLURAL:$1|Ceta catègorie contint|Cetes catègories contegnont}} des pâges ou ben des fichiérs mèdia.
@@ -2650,7 +2660,7 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont 
 'badipaddress' => 'L’adrèce IP est fôssa.',
 'blockipsuccesssub' => 'Blocâjo reussi',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] at étâ blocâ.<br />
-Vêde la [[Special:BlockList|lista a les adrèces IP blocâs]] por revêre los blocâjos.',
+Vêde la [[Special:BlockList|lista des blocâjos]] por revêre los blocâjos.',
 'ipb-blockingself' => 'Vos éte prèst a vos blocar vos-mémo !  Éte-vos de sûr de lo volêr fâre ?',
 'ipb-confirmhideuser' => 'Vos éte prèst a blocar un usanciér avouéc « cachiér l’usanciér » activâ.  Cen suprime lo nom a l’usanciér dens totes les listes et les entrâs du jornal.  Éte-vos de sûr de lo volêr fâre ?',
 'ipb-edit-dropdown' => 'Changiér les rêsons de blocâjo',
@@ -2705,7 +2715,7 @@ Lo jornal de les suprèssions est disponiblo ce-desot :',
 'reblock-logentry' => 'at changiê los paramètres du blocâjo a [[$1]] avouéc una èxpiracion u $2 $3',
 'blocklogtext' => 'O est lo jornal des blocâjos et des dèblocâjos ux usanciérs.
 Les adrèces IP blocâs ôtomaticament sont pas listâs.
-Vêde la [[Special:BlockList|lista ux usanciérs et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
+Vêde la [[Special:BlockList|lista des blocâjos]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
 'unblocklogentry' => 'at dèblocâ $1',
 'block-log-flags-anononly' => 'solament los usanciérs pas encartâs',
 'block-log-flags-nocreate' => 'crèacion de compto dèfendua',
@@ -2868,6 +2878,7 @@ lo rèsultat pôt adonc étre importâ dens un ôtro vouiqui qu’utilise la pro
 Por èxportar des pâges, buchiéd lors titros dens la bouèta de tèxto ce-desot, yon titro per legne, et pués chouèsésséd se vos voléd ou pas la vèrsion d’ora avouéc totes les vielyes vèrsions, avouéc les legnes de l’historico de la pâge, ou ben simplament la pâge d’ora avouéc des enformacions sur lo dèrriér changement.
 
 Dens cél dèrriér câs, vos pouede asse-ben utilisar un lim, coment [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] por la pâge « [[{{MediaWiki:Mainpage}}]] ».',
+'exportall' => 'Èxportar totes les pâges',
 'exportcuronly' => 'Èxportar ren que la vèrsion d’ora, sen l’historico complèt',
 'exportnohistory' => "----
 '''Nota :''' l’èxportacion de l’historico complèt de les pâges avouéc ceti formulèro at étâ dèsactivâ por des rêsons de capacitât.",
@@ -2884,7 +2895,7 @@ Dens cél dèrriér câs, vos pouede asse-ben utilisar un lim, coment [[{{#Speci
 # Namespace 8 related
 'allmessages' => 'Mèssâjos sistèmo',
 'allmessagesname' => 'Nom du mèssâjo',
-'allmessagesdefault' => 'Tèxto per dèfôt',
+'allmessagesdefault' => 'Mèssâjo per dèfôt',
 'allmessagescurrent' => 'Tèxto d’ora',
 'allmessagestext' => 'O est la lista des mèssâjos sistèmo disponiblos dens l’èspâço MediaWiki.
 Volyéd visitar la [//www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [//translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
@@ -2965,6 +2976,12 @@ Volyéd tornar èprovar.',
 'import-logentry-interwiki' => 'at importâ $1 per entèrvouiqui',
 'import-logentry-interwiki-detail' => '$1 vèrsion{{PLURAL:$1||s}} dês $2',
 
+# JavaScriptTest
+'javascripttest' => 'Èprôva de JavaScript',
+'javascripttest-title' => 'Èprôves de $1 en cors',
+'javascripttest-qunit-intro' => 'Vêde la [$1 documentacion de les èprôves] dessus mediawiki.org.',
+'javascripttest-qunit-heading' => 'Suita d’èprôva QUnit de JavaScript dessus MediaWiki',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Voutra pâge usanciér',
 'tooltip-pt-anonuserpage' => 'La pâge usanciér de l’adrèce IP avouéc laquinta vos contribuâd',
@@ -3095,6 +3112,7 @@ O est probâblament diu a un lim de vers un seto de defôr qu’aparêt sur la l
 'spambot_username' => 'Neteyâjo de spame per MediaWiki',
 'spam_reverting' => 'Rètablissement de la dèrriére vèrsion que contint gins de lim de vers $1',
 'spam_blanking' => 'Totes les vèrsions que contegnont des lims de vers $1 sont blanchies',
+'spam_deleting' => 'Totes les vèrsions que contegnont des lims de vers $1 sont suprimâs',
 
 # Info page
 'pageinfo-title' => 'Enformacions por « $1 »',
@@ -3889,6 +3907,9 @@ Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la
 'version-software' => 'Programeries enstalâs',
 'version-software-product' => 'Marchandie',
 'version-software-version' => 'Vèrsion',
+'version-entrypoints' => 'URL de pouent d’entrâ',
+'version-entrypoints-header-entrypoint' => 'Pouent d’entrâ',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Chemin d’accès du fichiér',
@@ -4077,4 +4098,15 @@ Les émâges sont montrâs dens lor plêna rèsolucion, los ôtros fichiérs son
 'api-error-uploaddisabled' => 'Lo tèlèchargement est dèsactivâ sur ceti vouiqui.',
 'api-error-verification-error' => 'Cél fichiér pôt étre corrompu, ou ben son èxtension est fôssa.',
 
+# Durations
+'duration-seconds' => '$1 second{{PLURAL:$1|a|es}}',
+'duration-minutes' => '$1 menut{{PLURAL:$1|a|es}}',
+'duration-hours' => '$1 hor{{PLURAL:$1|a|es}}',
+'duration-days' => '$1 jorn{{PLURAL:$1||s}}',
+'duration-weeks' => '$1 seman{{PLURAL:$1|a|es}}',
+'duration-years' => '$1 an{{PLURAL:$1||s}}',
+'duration-decades' => '$1 dècèni{{PLURAL:$1|a|es}}',
+'duration-centuries' => '$1 sièclo{{PLURAL:$1||s}}',
+'duration-millennia' => '$1 milènèro{{PLURAL:$1||s}}',
+
 );
index b1cc827..39b419a 100644 (file)
@@ -25,7 +25,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Latje änringe fersteege',
 'tog-newpageshidepatrolled' => 'Kontroliirde side aw e list "Naie side" fersteege',
 'tog-extendwatchlist' => 'Ütwidede wåchelist tun wisen foon åle änringe',
-'tog-usenewrc' => 'Ütwidede deerstaling foon da "Leeste Änringe" (brükt JavaScript)',
+'tog-usenewrc' => "Ütwidede deerstaling foon da ''Leeste Änringe'' än aw da ''Eefterkiikliste'' (brükt JavaScript)",
 'tog-numberheadings' => 'Ouerschrafte automatisch numeriire',
 'tog-showtoolbar' => 'Beårbe-wärktjüch wise',
 'tog-editondblclick' => 'Side ma dööweltklik beårbe (brükt JavaScript)',
@@ -379,6 +379,7 @@ Wan dåt ai di fål as, hääst dü eewäntuäl en fäägel önj e software fün
 'cannotdelete' => 'Jü sid unti dootäi "$1" köö ai straagen wårde.
 Dåt as flicht ål straagen foon huum ouders.',
 'cannotdelete-title' => 'Sidj „$1“ koon ei stregen wurd.',
+'delete-hook-aborted' => 'Det striken as faan en software-feranerang faan MediaWiki ferhanert wurden. Di grünj as ei bekäänd.',
 'badtitle' => 'Ferkiirde tiitel',
 'badtitletext' => 'Di tiitel foon jü anfrååged sid as üngülti, lääsi unti n üngültigen spräklink foon en ouder wiki.',
 'perfcached' => 'Jodiar dooten kem faan a cache an san ferlicht ei muar aktuel. Huuchstens {{PLURAL:$1|ian resultoot as|$1 resultooten san}} uun a cache.',
@@ -393,7 +394,7 @@ Ouffrååch: $2',
 'actionthrottledtext' => 'Dü hääst jüdeer aksjoon tu oofding bane en kort tidrüm ütfjard. Wees sü gödj än täiw en påår minuute än fersäk dåt et dan foon naien.',
 'protectedpagetext' => 'Jüdeer sid as for dåt beårben späred.',
 'viewsourcetext' => 'Dü koost jü kwäle foon jüdeer sid bekiike än kopiire.',
-'viewyourtext' => "Dü könst di code faan '''din feranerang''' faan detheer sidj uunluke an kopiare:",
+'viewyourtext' => "Dü könst di code faan '''din feranrang''' faan detdiar sidj uunluke an kopiare:",
 'protectedinterface' => 'Jüdeer sid önjthålt takst for ju brükerouerfläche foon e software än as späred, am masbrük tu ferhanern.',
 'editinginterface' => "'''Paase üüb:''' Üüb detdiar sidj stäänt tekst, diar faan't MediaWiki software brükt woort. Wan dü diar wat feranerst, feranerst dü di skak faan't Nuurdfresk Wikipedia.
 Wan dü wat auersaat wel, maage det mä [//translatewiki.net/wiki/Main_Page?setlang=frr Translatewiki], det as det MediaWiki lokalisiarangsprojekt.",
@@ -411,6 +412,7 @@ Jü späre wörd döör [[User:$1|$1]] ma grün "$2" inruchted.',
 Di grünj faan di administraator as: „$3“.',
 'invalidtitle-knownnamespace' => 'Ferkiard auerskraft uun di nöömrüm „$2“ an tekst „$3“',
 'invalidtitle-unknownnamespace' => 'Ferkiard auerskraft uun di ünbekäänd nöömrüm „$1“ an tekst „$2“',
+'exception-nologin' => 'Ei uunmeldet',
 
 # Virus scanner
 'virus-badscanner' => "Hiinje konfigurasjoon: ünbekånde fiirusscanner: ''$1''",
@@ -570,14 +572,14 @@ Tidwis paasuurd: $2',
 'passwordreset-emailerror-capture' => 'Detdiar E-Mail, wat oner uunwiset woort, wiar tu di onerwais, oober küd ei ufsjüürd wurd: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'Feranere det E-Mail-adres',
-'changeemail-header' => 'Feranere det E-Mail-adres',
-'changeemail-text' => 'Fal detheer formulaar hialandaal ütj, am din E-Mail-adres tu feranerin. Diarför skel dü din paaswurd uundu.',
+'changeemail' => 'Feranre det E-Mail-adres',
+'changeemail-header' => 'Feranre det E-Mail-adres',
+'changeemail-text' => 'Fal detdiar formulaar hialandaal ütj, am din E-Mail-adres tu feranrin. Diarför skel dü din paaswurd uundu.',
 'changeemail-no-info' => 'Dü möist önjmälded weese am ju sid diräkt tu tu gripen.',
 'changeemail-oldemail' => 'Aktuel e-mail adres',
 'changeemail-newemail' => 'Nei e-mail adres',
 'changeemail-none' => '(niin)',
-'changeemail-submit' => 'E-mail adres feranere',
+'changeemail-submit' => 'E-mail adres feranre',
 'changeemail-cancel' => 'Ufbreeg',
 
 # Edit page toolbar
@@ -604,10 +606,10 @@ Tidwis paasuurd: $2',
 'minoredit' => 'Bloot kleenihäide wörden feränred',
 'watchthis' => 'Kiike eefter jüdeer sid',
 'savearticle' => 'Sidj seekre',
-'preview' => 'Forlök',
-'showpreview' => 'Forlök wise',
-'showlivepreview' => 'Live-forkiik',
-'showdiff' => 'Änringe wise',
+'preview' => 'Iarst ans luke',
+'showpreview' => 'Iarst ans luke',
+'showlivepreview' => 'Glik uunluke',
+'showdiff' => 'Feranrangen wise',
 'anoneditwarning' => "Dü beårbest jüdeer sid ünönjmälded. Wan dü spikerst, wård din aktuäle IP-adräs önj e fesjoonshistoori aptiikned än as deerma for åltens '''ålgemiin''' sichtboor.",
 'anonpreviewwarning' => "''Dü bast ai önjmälded. Bai t spiikern wårt din IP-adräs önj e fersjoonshistoori awtiikned.''",
 'missingsummary' => "'''Haanewising:\"' Dü heest niinj tuhuupefooting önjjääwen.
@@ -673,12 +675,12 @@ Dü koost dideere tiitel aw da ouder side [[Special:Search/{{PAGENAME}}|säke]],
 'noarticletext-nopermission' => 'Jüdeer sid önjhålt uugenblaklik nuch nån täkst.
 Dü koost dideere tiitel aw da oudre side [[Special:Search/{{PAGENAME}}|säke]],
 unti<span class="plainlinks">önj da deertuhiirende [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logböke säke] </span>.',
-'userpage-userdoesnotexist' => 'Dåt benjüterkonto "<nowiki>$1</nowiki>" as ai deer.
-Wees sü gödj än präif, weer dü jüdeer sid wörklik mååge/beårbe wååt.',
+'userpage-userdoesnotexist' => "Det brükerkonto ''$1'' as ei diar.
+Wel dü detdiar sidj würelk maage/bewerke?",
 'userpage-userdoesnotexist-view' => 'Benjüterkonto "$1" bestoont ai.',
 'blocked-notice-logextract' => 'Dideer benjüter as tutids spärd.
 For informasjoon füliet di leeste üttooch üt dåt benjüterspär-logbök:',
-'clearyourcache' => "'''Beaachte:''' Maage di cache faan dan browser leesag, wan dü a feranerangen sä wel.
+'clearyourcache' => "'''Beaachte:''' Maage di cache faan dan browser leesag, wan dü a feranrangen sä wel.
 * '''Firefox / Safari:''' Hual ''Shift'' bi't aktualisiarin, of trak ''Strg an F5'' of ''Strg an R'' (''⌘an R'' üüb en Mac)
 * '''Google Chrome:''' Trak ''Strg an Shift an R'' (''⌘an Shift an R'' üüb en Mac)
 * '''Internet Explorer:''' Hual ''Strg'' bi't aktualisiarin, of trak ''Strg an F5''
@@ -721,8 +723,8 @@ Wees so gud an kontroliare ales noch ans.",
 'editingcomment' => 'Beårben foon $1 (naien oufsnaas)',
 'editconflict' => 'Beårbingskonflikt: $1',
 'explainconflict' => "Hoker ööders hää detheer sidj feranert, üs dü jüst diarmä uun a gang wiarst.
-Boowen könst dü di aktuel stant sä. Oner stun din fernanerangen.
-Bluas wat '''boowen''' stäänt, woort seekert. Diaram kopiare din feranerangen boowen iin.
+Boowen könst dü di aktuel stant sä. Oner stun din fernanrangen.
+Bluas wat '''boowen''' stäänt, woort seekert. Diaram kopiare din feranrangen boowen iin.
 An do trak „{{int:savearticle}}“.",
 'yourtext' => 'Din täkst',
 'storedversion' => 'Spiikerd färsjoon',
@@ -799,8 +801,8 @@ Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} wees
 'parser-unstrip-recursion-limit' => 'Tuföl jinsidjag ferwisangen bi $1',
 
 # "Undo" feature
-'undo-success' => 'Detheer feranerang koon turag nimen wurd. 
-Luke oner, of dü det uk würelk du wel, an do seekre din feranerangen.',
+'undo-success' => 'Detdiar feranrang koon turag nimen wurd. 
+Luke oner, of dü det uk würelk du wel, an do seekre din feranrangen.',
 'undo-failure' => 'Jü änring köö ai tunintemååged wårde, deer di bedrååwede oufsnaas intwasche feränred wörd.',
 'undo-norev' => 'Jü beårbing köö ai tunintemååged wårde, deer jü ai bestoont unti sleeked wörd.',
 'undo-summary' => 'Änring $1 foon [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusjoon]]) tunintemååged.',
@@ -926,7 +928,7 @@ Dü heest deeraw nåån tugraawe.',
 'revdelete-modify-missing' => "Bi't bewerkin faan ID $1 as wat skiaf gingen: At waant uun a dootenbeenk!",
 'revdelete-no-change' => "'''Waarskau:''' Di iindrach faan di $1, am a klook $2 hää al jodiar iinstelangen.",
 'revdelete-concurrent-change' => "Bi't bewerkin faan di iindrach di $1, am a klook $2 as wat skiaf gingen: At sjocht so ütj, üs wan hoker ööders det bewerket hää, iar dü det bewerke wulst. Luke iin uun a logbuken.",
-'revdelete-only-restricted' => "Bi't fersteegen faan di iindrach di $1, am a klook $2 as wat skiaf gingen: Dü könst di iindrach ei föör administratooren fersteeg, saner ööder iinstelangen tu feranerin.",
+'revdelete-only-restricted' => "Bi't fersteegen faan di iindrach di $1, am a klook $2 as wat skiaf gingen: Dü könst di iindrach ei föör administratooren fersteeg, saner ööder iinstelangen tu feranrin.",
 'revdelete-reason-dropdown' => "*Grünjer för't striken san miast
 ** Copyright woort ei iinhäälen
 ** Persöönelk informatsjuunen, diar näämen wat uungung",
@@ -1059,9 +1061,9 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 # Preferences page
 'preferences' => 'Önjstalinge',
 'mypreferences' => 'Önjstalinge',
-'prefs-edits' => 'Taal faan feranerangen:',
+'prefs-edits' => 'Taal faan feranrangen:',
 'prefsnologin' => 'Ai önjmälded',
-'prefsnologintext' => 'Dü skel <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} uunmeldet]</span> wees, am din iinstelangen tu feranerin.',
+'prefsnologintext' => 'Dü skel <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} uunmeldet]</span> wees, am din iinstelangen tu feranrin.',
 'changepassword' => 'Pååsuurd änre',
 'prefs-skin' => 'Skak',
 'skin-preview' => 'Forlök',
@@ -1075,12 +1077,12 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'prefs-watchlist' => "Uun't uug behual",
 'prefs-watchlist-days' => "So föl daar uun't uug behual:",
 'prefs-watchlist-days-max' => 'Ei muar üs {{PLURAL:$1|ään dai|$1 daar}}',
-'prefs-watchlist-edits' => 'Ei muar feranerangen üs:',
+'prefs-watchlist-edits' => 'Ei muar feranrangen üs:',
 'prefs-watchlist-edits-max' => 'Ai mör as 1000',
 'prefs-watchlist-token' => "Token för uun't uug behualen:",
 'prefs-misc' => 'Dit än dat',
 'prefs-resetpass' => 'Pååsuurd änre',
-'prefs-changeemail' => 'Feranere det E-Mail-adres',
+'prefs-changeemail' => 'Feranre det E-Mail-adres',
 'prefs-setemail' => 'E-Mail-adres fäästlei:',
 'prefs-email' => 'E-Mail iinstelangen',
 'prefs-rendering' => 'Skak',
@@ -1095,10 +1097,10 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'resultsperpage' => 'So fölsis komt det föör per sidj:',
 'stub-threshold' => 'Formatiarang faan links <a href="#" class="stub">för letj sidjen</a> (uun Byte):',
 'stub-threshold-disabled' => 'Ufsteld',
-'recentchangesdays' => 'Soföl daar skel a „leetst feranerangen“ uunwise:',
+'recentchangesdays' => 'Soföl daar skel a „leetst feranrangen“ uunwise:',
 'recentchangesdays-max' => 'Ei muar üs {{PLURAL:$1|ään dai|$1 daar}}',
-'recentchangescount' => 'Soföl feranerangen skel uunwiset wurd:',
-'prefs-help-recentchangescount' => 'Det san a leetst feranerangen, wersjuunen an logbuken.',
+'recentchangescount' => 'Soföl feranrangen skel uunwiset wurd:',
+'prefs-help-recentchangescount' => 'Det san a leetst feranrangen, wersjuunen an logbuken.',
 'prefs-help-watchlist-token' => "Wan dü detdiar fial mä en hiamelken code ütjfalst, woort en RSS-feed iinracht. Arken mä didiar code koon do sä, wat dü uun't uug behual wel. Diaram skul hi ei so ianfach wees, nem dach didiar: $1",
 'savedprefs' => 'Din iinstelangen san seekert wurden.',
 'timezonelegend' => 'Tidjsoon:',
@@ -1164,9 +1166,9 @@ Do san jo ual iinstelangen wech.',
 'prefs-advancedrendering' => 'Ütwided möölikhäide',
 'prefs-advancedsearchoptions' => 'Ütwided möölikhäide',
 'prefs-advancedwatchlist' => 'Ütwided möölikhäide',
-'prefs-displayrc' => "Mögelkhaiden för't uunwisen",
-'prefs-displaysearchoptions' => "Mögelkhaiden för't uunwisen",
-'prefs-displaywatchlist' => "Mögelkhaiden för't uunwisen",
+'prefs-displayrc' => "Mögelkhaiden för't uunwisin",
+'prefs-displaysearchoptions' => "Mögelkhaiden för't uunwisin",
+'prefs-displaywatchlist' => "Mögelkhaiden för't uunwisin",
 'prefs-diffs' => 'Ferskeel',
 
 # User preference: e-mail validation using jQuery
@@ -1178,45 +1180,45 @@ Do san jo ual iinstelangen wech.',
 'userrights-lookup-user' => 'Brükersköölen bewerke',
 'userrights-user-editname' => 'Brükernööm:',
 'editusergroup' => 'Brükersköölen bewerke',
-'editinguser' => "Brükerrochten faan '''[[User:$1|$1]]''' $2 feranere",
+'editinguser' => "Brükerrochten faan '''[[User:$1|$1]]''' $2 feranre",
 'userrights-editusergroup' => 'Lasmootskap tu brükersköölen bewerke',
 'saveusergroups' => 'Brükersköölen seekre',
 'userrights-groupsmember' => 'Lasmoot faan:',
 'userrights-groupsmember-auto' => 'Faan salew lasmoot faan:',
-'userrights-groups-help' => 'Dü könst feranere, tu hün brükerskööl di brüker hiirt:
+'userrights-groups-help' => 'Dü könst feranre, tu hün brükerskööl di brüker hiirt:
 * En uunkrüsagt kasche ment, di brüker hiirt diartu.
 * En ei uunkrüsagt kasche ment, di brüker hiart ei diartu.
 * En * ment, dat dü det brükerrocht ei weder wechnem könst (of amkiard).',
 'userrights-reason' => 'Grünj:',
-'userrights-no-interwiki' => 'Dü heest ei det rocht, am brükerrochten uun ööder wikis tu feranerin.',
+'userrights-no-interwiki' => 'Dü heest ei det rocht, am brükerrochten uun ööder wikis tu feranrin.',
 'userrights-nodatabase' => 'Det dootenbeenk $1 jaft at ei, tumanst ei lokaal.',
-'userrights-nologin' => 'Dü mutst di mä en administraator-brükerkonto [[Special:UserLogin|uunmelde]], wan dü brükerrochten feranere wel.',
-'userrights-notallowed' => 'Dü heest ei det rocht, am brükerrochten tu feranerin.',
-'userrights-changeable-col' => 'Lasmootskapen, diar dü feranere könst',
-'userrights-unchangeable-col' => 'Lasmootskapen, diar dü ei feranere könst',
+'userrights-nologin' => 'Dü mutst di mä en administraator-brükerkonto [[Special:UserLogin|uunmelde]], wan dü brükerrochten feranre wel.',
+'userrights-notallowed' => 'Dü heest ei det rocht, am brükerrochten tu feranrin.',
+'userrights-changeable-col' => 'Lasmootskapen, diar dü feranre könst',
+'userrights-unchangeable-col' => 'Lasmootskapen, diar dü ei feranre könst',
 
 # Groups
 'group' => 'Skööl:',
-'group-user' => 'Brükere',
-'group-autoconfirmed' => 'Registriirde brükere',
+'group-user' => 'Brükern',
+'group-autoconfirmed' => 'Registriaret brükern',
 'group-bot' => 'Bots',
-'group-sysop' => 'Administratoore',
-'group-bureaucrat' => 'Bürokraate',
+'group-sysop' => 'Administratooren',
+'group-bureaucrat' => 'Bürokraaten',
 'group-suppress' => 'Oversighter',
 'group-all' => '(aaltumaal)',
 
 'group-user-member' => '{{GENDER:$1|brüker}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|gudkäänd brüker}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|registriaret brüker}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|administraator}}',
 'group-bureaucrat-member' => '{{GENDER:$1|bürokraat}}',
 'group-suppress-member' => '{{GENDER:$1|oversighter}}',
 
-'grouppage-user' => '{{ns:project}}:Brükere',
-'grouppage-autoconfirmed' => '{{ns:project}}:Registriirde brükere',
+'grouppage-user' => '{{ns:project}}:Brükern',
+'grouppage-autoconfirmed' => '{{ns:project}}:Registriaret brükern',
 'grouppage-bot' => '{{ns:project}}:Bots',
-'grouppage-sysop' => '{{ns:project}}:Administratoore',
-'grouppage-bureaucrat' => '{{ns:project}}:Bürokraate',
+'grouppage-sysop' => '{{ns:project}}:Administratooren',
+'grouppage-bureaucrat' => '{{ns:project}}:Bürokraaten',
 'grouppage-suppress' => '{{ns:project}}:Oversighter',
 
 # Rights
@@ -1225,6 +1227,7 @@ Do san jo ual iinstelangen wech.',
 'right-createpage' => 'Sidjen maage (saner diskusjuunssidjen)',
 'right-createtalk' => 'Diskusjuunssidjen maage',
 'right-createaccount' => 'Brükerkonto iinracht',
+'right-minoredit' => 'Feranrangen üs letj kääntiakne',
 'right-move' => 'Sidjen fersküüw',
 'right-move-subpages' => 'Sidjen mä onersidjen fersküüw',
 'right-move-rootuserpages' => 'Hood-brükersidj fersküüw',
@@ -1238,16 +1241,18 @@ Do san jo ual iinstelangen wech.',
 'right-purge' => 'Sidjen-cache leesag maage saner efterfraagin',
 'right-autoconfirmed' => 'Hualew-seekert sidjen bewerke',
 'right-bot' => 'Automatisiaret bewerke',
-'right-nominornewtalk' => 'Letj feranerangen üüb diskusjuunssidjen wurd ei üs „nei noorachten“ uunwiset.',
+'right-nominornewtalk' => 'Letj feranrangen üüb diskusjuunssidjen wurd ei üs „nei noorachten“ uunwiset.',
 'right-apihighlimits' => 'Huuger taalen für API-uunfraagen brük',
 'right-writeapi' => 'Write-API brük',
 'right-delete' => 'Sidjen strik',
 'right-bigdelete' => 'Sidjen mä föl wersjuunen strik',
 'right-deleterevision' => 'Enkelt wersjuunen faan en sidj strik of turaghaale',
+'right-browsearchive' => 'Sjük stregen sidjen',
 'right-sendemail' => 'E-mails tu oudere brükere schake',
 
 # User rights log
 'rightslog' => 'Ruchte-logbök',
+'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'jüdeer sid leese',
@@ -1255,28 +1260,34 @@ Do san jo ual iinstelangen wech.',
 'action-createpage' => 'side mååge',
 'action-createtalk' => 'diskusjoonside mååge',
 'action-createaccount' => 'jüdeer brükerkonto mååge',
+'action-minoredit' => 'detdiar feranrang üs letj kääntiakne',
 'action-move' => 'jüdeer sid ferschüwe',
 'action-move-subpages' => 'jüdeer sid än unerside ferschüwe',
+'action-move-rootuserpages' => 'hood-brükersidj fersküüw',
 'action-movefile' => 'jüdeer sid ferschüwe',
+'action-delete' => 'detdiar sidj strik',
+'action-browsearchive' => 'sjük stregen sidjen',
+'action-undelete' => 'detdiar sidj weder iinstel',
+'action-sendemail' => 'e-mails sjüür',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|änring|änringe}}',
 'recentchanges' => 'Leeste änringe',
 'recentchanges-legend' => 'Wis-opsjoone',
-'recentchanges-summary' => "Üüb detheer sidj könst dü a leetst feranerangen faan '''{{SITENAME}}''' ferfulge.",
+'recentchanges-summary' => "Üüb detdiar sidj könst dü a leetst feranrangen faan't Nuurdfresk Wikipedia ferfulge.",
 'recentchanges-feed-description' => 'Ferfülie ma dåtheer feed da leeste änringe önj {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Nei sidj uunlaanj',
-'recentchanges-label-minor' => 'Letj feranerang',
-'recentchanges-label-bot' => 'Feranerang faan en bot',
-'recentchanges-label-unpatrolled' => 'Detheer feranerang as noch ei efterluket wurden',
+'recentchanges-label-minor' => 'Letj feranrang',
+'recentchanges-label-bot' => 'Feranrang faan en bot',
+'recentchanges-label-unpatrolled' => 'Detdiar feranrang as noch ei efterluket wurden',
 'rcnote' => "Wised {{PLURAL:\$1|wård '''1''' änring|wårde da leeste '''\$''' änringe}} {{PLURAL:\$2|foon e leest däi|foon da leeste '''\$2''' deege}}. Stånd: \$4, am e klook \$5.",
-'rcnotefrom' => "Diar wurd a feranerangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranerangen).",
+'rcnotefrom' => "Diar wurd a feranrangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranrangen).",
 'rclistfrom' => 'Bloot änringe sunt $1 wise.',
 'rcshowhideminor' => 'Latje änringe $1',
 'rcshowhidebots' => 'Bots $1',
 'rcshowhideliu' => 'Önjmäldede brükere $1',
 'rcshowhideanons' => 'Anonymen brüker $1',
-'rcshowhidepatr' => '$1 efterluket feranerangen',
+'rcshowhidepatr' => '$1 efterluket feranrangen',
 'rcshowhidemine' => 'Äine tujeefte $1',
 'rclinks' => 'Wis da leeste $1 änringe foon da leeste $2 deege.<br />$3',
 'diff' => 'ferschääl',
@@ -1285,29 +1296,48 @@ Do san jo ual iinstelangen wech.',
 'show' => 'önjbläne',
 'minoreditletter' => 'L',
 'newpageletter' => 'N',
-'boteditletter' => 'b',
+'boteditletter' => 'B',
 'rc-enhanced-expand' => 'Detaile wise (JavaScript as nüsi)',
 'rc-enhanced-hide' => 'Detaile fersteege',
+'rc-old-title' => 'tuiarst maaget üs „$1“',
 
 # Recent changes linked
-'recentchangeslinked' => 'Änringe bai ferlinkte side',
-'recentchangeslinked-toolbox' => 'Feranerangen bi ferlinkt sidjen',
-'recentchangeslinked-title' => 'Änringe bai side, da foon "$1" ferlinked san',
-'recentchangeslinked-noresult' => 'Uun detdiar tidj san jo ferwiset sidjen ei feranert wurden.',
+'recentchangeslinked' => 'Feranrangen bi ferlinket sidjen',
+'recentchangeslinked-feed' => 'Feranrangen bi ferlinket sidjen',
+'recentchangeslinked-toolbox' => 'Feranrangen bi ferlinket sidjen',
+'recentchangeslinked-title' => 'Feranrangen bi sidjen, diar faan "$1" ferlinket san',
+'recentchangeslinked-noresult' => 'Uun detdiar tidj san jo ferlinket sidjen ei feranert wurden.',
 'recentchangeslinked-summary' => "Jüdeer speetsjoolsid listet da leeste änringe bai da ferlinked side ap (btw. bai kategoriie tu da lasmoote foon jüdeer kategorii). Side aw din [[Special:Watchlist|eefterkiikliste]] san '''fåt''' deerstald.",
 'recentchangeslinked-page' => 'Sid:',
 'recentchangeslinked-to' => 'Wis änringe aw side, da heerjurt ferlinke',
 
 # Upload
 'upload' => 'Huuchschake',
+'uploadbtn' => 'Datei huuchsjüür',
 'uploadnologin' => 'Ai önjmälded',
 'uploadnologintext' => 'Dü möist [[Special:UserLogin|önjmälded weese]], am dat dü dootäie huuchsiinje koost.',
 'upload_directory_missing' => 'Dåt aplees-fertiiknis ($1) breecht än köö ai foon di wäbsärwer mååged wårde.',
 'upload_directory_read_only' => 'Dåt aplees-fertiiknis ($1) koon ai foon e wäbsärver beschraawen wårde.',
 'uploaderror' => 'Aplees-fäägel',
+'uploadlog' => 'datei logbuk',
 'uploadlogpage' => 'Dåtäi-logbök',
 'filedesc' => 'Beskriiwang',
+'fileuploadsummary' => 'Beskriiwang',
+'filesource' => 'Kwel',
+'uploadedfiles' => 'Huuchsjüürd dateien',
 'uploadedimage' => 'heet "[[$1]]" huuchsånd',
+'watchthisupload' => 'Luke efter detdiar datei',
+
+'upload-file-error' => 'Diar as wat skiaf gingen',
+
+# File backend
+'backend-fail-stream' => 'Det datei $1 küd ei auerdraanj wurd.',
+'backend-fail-delete' => 'Det datei $1 küd ei stregen wurd.',
+'backend-fail-store' => 'Det datei $1 küd ei oner $2 seekert wurd.',
+'backend-fail-copy' => 'Det datei $1 küd ei efter $2 kopiaret wurd.',
+'backend-fail-move' => 'Det datei $1 küd ei efter $2 fersköwen wurd.',
+'backend-fail-read' => 'Det datei $1 küd ei leesen wurd.',
+'backend-fail-create' => 'Det datei $1 küd ei seekert wurd.',
 
 'license' => 'Lisens:',
 'license-header' => 'Lisens',
@@ -1340,7 +1370,7 @@ Det beskriiwang faan't [$2 beskriiwangssidj] woort oner uunwiset.",
 'randompage' => 'Tufali sid',
 
 # Statistics
-'statistics' => 'Statistiik',
+'statistics' => 'Statistik',
 
 'disambiguationspage' => 'Template:Muardüüdag artiikel',
 
@@ -1770,11 +1800,15 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'monthsall' => 'åle',
 'limitall' => 'åle',
 
+# Table pager
+'ascending_abbrev' => 'ap',
+'descending_abbrev' => 'deel',
+
 # Auto-summaries
-'autosumm-blank' => 'Det sidj wurd leesagd.',
-'autosumm-replace' => 'Di iinhual wurd ütjbütjet mä "$1"',
+'autosumm-blank' => 'Det sidj as leesag maaget wurden.',
+'autosumm-replace' => 'Di tekst as ütjbütjet wurden mä "$1"',
 'autoredircomment' => 'Sidj tu [[$1]] widjerfeerd',
-'autosumm-new' => 'Det sidj wurd nei uunlaanj: "$1"',
+'autosumm-new' => 'Det sidj as nei uunlaanj wurden: "$1"',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Eefterkiiklist: änringe',
@@ -1809,6 +1843,17 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'htmlform-selectorother-other' => 'Oudere',
 
 # New logging system
+'logentry-delete-delete' => '$1 hää det sidj $3 stregen',
+'logentry-delete-restore' => '$1 hää det sidj $3 weder iinsteld',
+'logentry-delete-event' => '$1 hää det uunlukin feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
+'logentry-delete-revision' => '$1 hää det uunlukin feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
+'logentry-delete-event-legacy' => '$1 hää det uunlukin feranert faan logbuk iindracher üüb $3',
+'logentry-delete-revision-legacy' => '$1 hää det uunlukin feranert faan wersjuunen faan det sidj $3',
+'logentry-suppress-delete' => '$1 hää det sidj $3 wechtrakt',
+'logentry-suppress-event' => '$1 hää stalswigin det uunlukin feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
+'logentry-suppress-revision' => '$1 hää stalswigin det uunlukin feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
+'logentry-suppress-event-legacy' => '$1 hää stalswigin det uunlukin fernanert faan logbuk iindracher üüb $3',
+'logentry-suppress-revision-legacy' => '$1 hää stalswigin det uunlukin feranert faan wersjuunen faan det sidj $3',
 'revdelete-uname-hid' => 'brükernoome ferstäägen',
 'revdelete-uname-unhid' => 'brükernoome frijääwen',
 'revdelete-restricted' => 'gränse jüle uk for administratoore',
@@ -1818,4 +1863,15 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'logentry-move-move_redir' => '$1 hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen.',
 'logentry-move-move_redir-noredirect' => '$1 hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen saner salew en widjerfeerang uuntuleien.',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|sekund|sekunden}}',
+'duration-minutes' => '$1 {{PLURAL:$1|minüüt|minüüten}}',
+'duration-hours' => '$1 {{PLURAL:$1|stünj|stünjen}}',
+'duration-days' => '$1 {{PLURAL:$1|dai|daar}}',
+'duration-weeks' => '$1 {{PLURAL:$1|weg|wegen}}',
+'duration-years' => '$1 {{PLURAL:$1|juar|juaren}}',
+'duration-decades' => '$1 {{PLURAL:$1|juartjiint|juartjiinten}}',
+'duration-centuries' => '$1 {{PLURAL:$1|juarhunert|juarhunerten}}',
+'duration-millennia' => '$1 {{PLURAL:$1|juardüüsen|juardüüsenen}}',
+
 );
index e4f32ab..2fe2c25 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Friulian (Furlan)
+/** Friulian (furlan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 077055e..f9ea105 100644 (file)
@@ -16,6 +16,7 @@
  * @author Symane
  * @author Urhixidur
  * @author Vipuser
+ * @author Xiaomingyan
  */
 
 $fallback = 'zh-hans';
@@ -1074,7 +1075,7 @@ $2',
 ** 档案重复',
 
 # MIME search
-'mimesearch' => 'MIME 搜索',
+'mimesearch' => 'MIME搜索',
 'mimesearch-summary' => '个只页面启用档案MIME类型筛检程式。输入:内容类型/子类型,像 <tt>image/jpeg</tt>。',
 'mimetype' => 'MIME 类型:',
 'download' => '下载',
index 04cdc33..2bca803 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Galician (Galego)
+/** Galician (galego)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -229,7 +229,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Agochar as edicións patrulladas nos cambios recentes',
 'tog-newpageshidepatrolled' => 'Agochar as páxinas revisadas da lista de páxinas novas',
 'tog-extendwatchlist' => 'Expandir a lista de vixilancia para mostrar todos os cambios e non só os máis recentes',
-'tog-usenewrc' => 'Usar os cambios recentes avanzados (cómpre JavaScript)',
+'tog-usenewrc' => 'Agrupar as modificacións por páxina nos cambios recentes e na lista de vixilancia (cómpre JavaScript)',
 'tog-numberheadings' => 'Numerar automaticamente as cabeceiras',
 'tog-showtoolbar' => 'Mostrar a caixa de ferramentas de edición (cómpre JavaScript)',
 'tog-editondblclick' => 'Editar as páxinas logo de facer dobre clic (cómpre JavaScript)',
@@ -580,6 +580,8 @@ Por favor, comuníquello a un [[Special:ListUsers/sysop|administrador]] tomando
 'cannotdelete' => 'Non se puido borrar a páxina ou imaxe "$1".
 Se cadra, xa a borrou alguén.',
 'cannotdelete-title' => 'Non se pode borrar a páxina "$1"',
+'delete-hook-aborted' => 'O borrado foi abortado polo asociador.
+Este non deu ningunha explicación.',
 'badtitle' => 'Título incorrecto',
 'badtitletext' => 'O título da páxina pedida non era válido, estaba baleiro ou proviña dunha ligazón interlingua ou interwiki incorrecta.
 Pode conter un ou máis caracteres dos que non se poden empregar nos títulos.',
@@ -615,6 +617,8 @@ O motivo achegado é ''$2''.",
 O administrador que bloqueou o repositorio achegou este motivo: "$3".',
 'invalidtitle-knownnamespace' => 'Título inválido co espazo de nomes "$2" e o texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título inválido cun número de espazo de nomes, $1, descoñecido e o texto "$2"',
+'exception-nologin' => 'Non accedeu ao sistema',
+'exception-nologin-text' => 'Esta páxina ou acción necesita que vostede acceda ao sistema neste wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Configuración errónea: escáner de virus descoñecido: ''$1''",
@@ -1309,7 +1313,7 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-watchlist-token' => 'Pase para a lista de vixilancia:',
 'prefs-misc' => 'Preferencias varias',
 'prefs-resetpass' => 'Cambiar o contrasinal',
-'prefs-changeemail' => 'Cambiar o correo electrónico',
+'prefs-changeemail' => 'Cambiar o enderezo de correo electrónico',
 'prefs-setemail' => 'Establecer un enderezo de correo electrónico',
 'prefs-email' => 'Opcións de correo electrónico',
 'prefs-rendering' => 'Aparencia',
@@ -1916,7 +1920,7 @@ Poida que queira editar a descrición da [$2 páxina de descrición do ficheiro]
 'filepage.css' => '/** O CSS que se coloque aquí será incluído na páxina de descrición do ficheiro, así como nos wikis de clientes estranxeiros */',
 
 # File reversion
-'filerevert' => 'Desfacer $1',
+'filerevert' => 'Reverter $1',
 'filerevert-legend' => 'Reverter o ficheiro',
 'filerevert-intro' => 'Está a piques de reverter o ficheiro "\'\'\'[[Media:$1|$1]]\'\'\'" ata a [$4 versión do $2 ás $3].',
 'filerevert-comment' => 'Motivo:',
@@ -2582,7 +2586,7 @@ Olle a [[Special:BlockList|lista de bloqueos]] para revisalo.',
 'unblockip' => 'Desbloquear o usuario',
 'unblockiptext' => 'Use o seguinte formulario para dar de novo acceso de escritura a un enderezo IP ou usuario que estea bloqueado.',
 'ipusubmit' => 'Retirar este bloqueo',
-'unblocked' => '"[[User:$1|$1]]" foi desbloqueado',
+'unblocked' => '[[User:$1|$1]] foi {{GENDER:$1|desbloqueado|desbloqueada}}',
 'unblocked-range' => '$1 foi desbloqueado',
 'unblocked-id' => 'O bloqueo $1 foi eliminado',
 'blocklist' => 'Usuarios bloqueados',
@@ -2795,7 +2799,7 @@ No último caso, pode usar tamén unha ligazón, por exemplo [[{{#Special:Export
 'export-pagelinks' => 'Engadir as páxinas ligadas a unha profundidade de:',
 
 # Namespace 8 related
-'allmessages' => 'Todas as mensaxes do sistema',
+'allmessages' => 'Mensaxes do sistema',
 'allmessagesname' => 'Nome',
 'allmessagesdefault' => 'Texto predeterminado',
 'allmessagescurrent' => 'Texto actual',
@@ -2848,7 +2852,7 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importunknownsource' => 'Fonte de importación descoñecida',
 'importcantopen' => 'Non se pode abrir o ficheiro importado',
 'importbadinterwiki' => 'Ligazón interwiki incorrecta',
-'importnotext' => 'Texto baleiro ou inexistente',
+'importnotext' => 'Baleiro ou sen texto',
 'importsuccess' => 'A importación rematou!',
 'importhistoryconflict' => 'Existe un conflito no historial de revisións (por ter importado esta páxina antes)',
 'importnosources' => 'Non se defininiu ningunha fonte de importación transwiki e os envíos directos dos historiais están desactivados.',
@@ -2858,8 +2862,8 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importuploaderrortemp' => 'Fallou o envío do ficheiro de importación. Falta un cartafol temporal.',
 'import-parse-failure' => 'Fallo de análise da importación de XML',
 'import-noarticle' => 'Ningunha páxina para importar!',
-'import-nonewrevisions' => 'Todas as revisións son previamente importadas.',
-'xml-error-string' => '$1 na liña $2, col $3 (byte $4): $5',
+'import-nonewrevisions' => 'Todas as revisións foron importadas previamente.',
+'xml-error-string' => '$1 na liña $2, columna $3 (byte $4): $5',
 'import-upload' => 'Cargar datos XML',
 'import-token-mismatch' => 'Perdéronse os datos da sesión. Por favor, inténteo de novo.',
 'import-invalid-interwiki' => 'Non se pode importar desde o wiki escificado.',
@@ -3014,8 +3018,9 @@ Pode ver o código fonte.',
 Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.',
 'spamprotectionmatch' => 'O seguinte texto foi o que activou o noso filtro de spam: $1',
 'spambot_username' => 'Limpeza de spam de MediaWiki',
-'spam_reverting' => 'Revertida á última edición sen ligazóns a $1',
+'spam_reverting' => 'Revertida á última edición sen ligazóns a "$1"',
 'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
+'spam_deleting' => 'Borráronse todas as revisións con ligazóns a "$1"',
 
 # Info page
 'pageinfo-title' => 'Información sobre "$1"',
@@ -3507,7 +3512,7 @@ Os demais agocharanse por omisión.
 
 'exif-isospeedratings-overflow' => 'Superior a 65535',
 
-'exif-iimcategory-ace' => 'Arte, cultura e entretemento',
+'exif-iimcategory-ace' => 'Arte, cultura e lecer',
 'exif-iimcategory-clj' => 'Crime e dereito',
 'exif-iimcategory-dis' => 'Desastres e accidentes',
 'exif-iimcategory-fin' => 'Economía e negocios',
@@ -3899,6 +3904,8 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'api-error-empty-file' => 'O ficheiro que enviou estaba baleiro.',
 'api-error-emptypage' => 'Non está permitida a creación de páxinas novas que estean baleiras.',
 'api-error-fetchfileerror' => 'Erro interno: Houbo un problema ao buscar o ficheiro.',
+'api-error-fileexists-forbidden' => 'Xa existe un ficheiro co nome "$1". Non se pode sobrescribir.',
+'api-error-fileexists-shared-forbidden' => 'Xa existe un ficheiro co nome "$1" no repositorio de ficheiros compartidos. Non se pode sobrescribir.',
 'api-error-file-too-large' => 'O ficheiro que enviou era grande de máis.',
 'api-error-filename-tooshort' => 'O nome do ficheiro é curto de máis.',
 'api-error-filetype-banned' => 'Este tipo de ficheiro está prohibido.',
@@ -3937,4 +3944,6 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Non se puideron obter os peches no servidor $1.',
 );
index 7a564ab..5733ff5 100644 (file)
@@ -31,6 +31,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Ñemohenda_myangekõi',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline'       => 'Haiguy joajuha',
index 69f8b78..94fb929 100644 (file)
@@ -1434,7 +1434,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'nchanges' => '$1 {{PLURAL:$1|Änderig|Änderige}}',
 'recentchanges' => 'Letschti Änderige',
 'recentchanges-legend' => 'Optione vu dr Aazeig',
-'recentchanges-summary' => 'Uff däre Syte chönne Si die letschte Änderige in däm Wiki aaluege.',
+'recentchanges-summary' => 'Uf däre Syte chasch di letschte Änderige in däm Wiki aaluege.',
 'recentchanges-feed-description' => 'Di letschten Änderige vo {{SITENAME}} i däm Feed abonniere.',
 'recentchanges-label-newpage' => 'Die Bearbeitig het e neji Syte aagleit',
 'recentchanges-label-minor' => 'Des isch e chleini Änderig',
index f6d58d5..0bd6727 100644 (file)
@@ -154,7 +154,7 @@ $messages = array(
 'tog-hidepatrolled' => 'હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.',
 'tog-newpageshidepatrolled' => 'નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો',
 'tog-extendwatchlist' => 'ધ્યાનસૂચિને વિસ્તૃત કરો જેથી,ફક્ત તાજેતરનાજ નહીં, બધા આનુષાંગિક ફેરફારો જોઇ શકાય',
-'tog-usenewrc' => 'તાજેતરનાં વર્ધિત ફેરફારો (જાવાસ્ક્રીપ્ટ જરૂરી)',
+'tog-usenewrc' => 'તાજેતરનાં વર્ધિત ફેરફારો વાપરો(જાવાસ્ક્રીપ્ટ જરૂરી)',
 'tog-numberheadings' => 'મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો',
 'tog-showtoolbar' => 'ફેરફારો માટેનો ટૂલબાર બતાવો (જાવા સ્ક્રિપ્ટ)',
 'tog-editondblclick' => 'ડબલ ક્લિક દ્વારા ફેરફાર કરો (જાવાસ્ક્રિપ્ટ જરૂરી)',
@@ -176,7 +176,7 @@ $messages = array(
 'tog-enotifrevealaddr' => 'નોટીફીકેશનના ઇમેલમાં મારૂ ઇમેલ એડ્રેસ બતાવો',
 'tog-shownumberswatching' => 'ધ્યાનમાં રાખતા સભ્યોની સંખ્યા બતાવો',
 'tog-oldsig' => 'હાલના હસ્તાક્ષર',
-'tog-fancysig' => 'સà«\8dવાàª\9aાલિત àª\95ડà«\80 àªµàª\97રનà«\80 (àª\95ાàª\9aà«\80) àª¸àª¹à«\80',
+'tog-fancysig' => 'હસà«\8dતાàª\95à«\8dષરનà«\8b àªµàª¿àª\95િલàª\96ાણ àª¤àª°à«\80àª\95à«\87 àª\89પયà«\8bàª\97 àª\95રà«\8b (સà«\8dવàª\9aાલિત àª\95ડà«\80 àªµàª\97ર)',
 'tog-externaleditor' => 'બીજું એડીટર વાપરો. (ફક્ત એકસપર્ટ માટે, તમારા કમ્પ્યુટરમાં સેટીંગ્સ બદલવા પડશે. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
 'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
 'tog-showjumplinks' => "''આના પર જાવ'' કડીને સક્રીય કરો.",
@@ -841,7 +841,7 @@ $2
 'updated' => '(સંવર્ધીત)',
 'note' => "'''નોંધ:'''",
 'previewnote' => "'''આ ફક્ત પૂર્વાવલોકન છે;'''
-ફેરફારો હજુ સાચવવામાં નથી આવ્યા!",
+તમારા àª«à«\87રફારà«\8b àª¹àª\9cà«\81 àª¸àª¾àª\9aવવામાàª\82 àª¨àª¥à«\80 àª\86વà«\8dયા!",
 'previewconflict' => 'જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.',
 'session_fail_preview' => "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''
 કૃપયા ફરી પ્રયત્ન કરો.
@@ -868,7 +868,7 @@ $2
 'yourtext' => 'તમારું લખાણ',
 'storedversion' => 'રક્ષિત પુનરાવર્તન',
 'nonunicodebrowser' => "'''ચેતવણી: તમારું બ્રાઉઝર યુનિકોડ ઉકેલવા સક્ષમ નથી.'''
-àª\85હà«\80àª\82 àª¤àª®à«\87 àª¸à«\81રàª\95à«\8dષà«\80ત àª°à«\80તà«\87 àª«à«\87રફરà«\8b àª¨àª¹à«\80àª\82 àª\95રà«\80 àª¶àª\95à«\8b: ASCII àª¸àª¿àªµàª¾àª¯àª¨àª¾ àª\85àª\95à«\8dષરà«\8b àª«à«\87રફાર ચોકઠામાં હેક્સાડેસિમલ સ્વરૂપે દેખાશે.",
+àª\85હà«\80àª\82 àª¤àª®à«\87 àª¸à«\81રàª\95à«\8dષિત àª°à«\80તà«\87 àª«à«\87રફારà«\8b àª¨àª¹à«\80àª\82 àª\95રà«\80 àª¶àª\95à«\8b: ASCII àª¸àª¿àªµàª¾àª¯àª¨àª¾ àª\85àª\95à«\8dષરà«\8b àª¸àª\82પાદન ચોકઠામાં હેક્સાડેસિમલ સ્વરૂપે દેખાશે.",
 'editingold' => "'''ચેતવણી: તમે કાલાતિત ફેરફારો ને બદલી રહ્યાં છો.'''
 જો તમે તેને સાચવશો , વચમાં થયેલ ફેરફારો સાચવી ન શકાય.",
 'yourdiff' => 'ભેદ',
@@ -890,9 +890,9 @@ $2
 તમારા સંદર્ભ માટે તાજેતરની લોગ યાદિ આપી છે:",
 'semiprotectedpagewarning' => "'''નોંધ : આ પાના પર સંરક્ષણ વિકલ્પ સક્રીય છે અને માત્ર પ્રબંધકો જ આમાં ફેરફાર કરી શકે.'''
 તમારા સંદર્ભ માટે તાજેતરની લોગ યાદિ આપી છે:",
-'cascadeprotectedwarning' => "'''àª\9aà«\87તવણà«\80:''' àª\86 àªªàª¾àª¨à«\81àª\82 àª¸àª\82રàª\95à«\8dષà«\80ત àª\9bà«\87.  àªªà«\8dરબàª\82ધન àª\85ધિàª\95ાર àª§àª°àª¾àªµàª¤àª¾ àª¸àª­à«\8dયà«\8bàª\9c àª\86માàª\82 àª«à«\87રફાર àª\95રà«\80 àª¶àª\95à«\87 àª\9bà«\87. àª\86 àªªàª¾àª¨àª¾àª¨à«\87 àª¨à«\80àª\9aà«\87ના àªªàª\97થિયામય àª¸àª\82રàª\95à«\8dષણ{{PLURAL:$1|page|pages}} àª¦à«\8dવારા àª¸à«\81રàª\95à«\8dષà«\80ત છે.",
-'titleprotectedwarning' => "'''ચેતવણી:  આ પાનું સંરક્ષીત છે  આની રચના માટે [[Special:ListGroupRights|specific rights]] ની જરૂર છે.'''
-તà«\87 àª¸àª\82બàª\82ધà«\80 àª¤àª¾àª\9cà«\87તરનà«\80 àª«à«\87રફાર àª¯àª¾àª¦àª¿ તમારા સંદર્ભ માટે આપેલી છે:",
+'cascadeprotectedwarning' => "'''àª\9aà«\87તવણà«\80:''' àª\86 àªªàª¾àª¨à«\81àª\82 àª¸àª\82રàª\95à«\8dષિત àª\9bà«\87. àªªà«\8dરબàª\82ધન àª\85ધિàª\95ાર àª§àª°àª¾àªµàª¤àª¾ àª¸àª­à«\8dયà«\8b àª\9c àª\86માàª\82 àª«à«\87રફાર àª\95રà«\80 àª¶àª\95à«\87 àª\9bà«\87. àª\86 àªªàª¾àª¨à«\81àª\82 àª¨à«\80àª\9aà«\87ના àªªàª\97થિયામય àª¸àª\82રàª\95à«\8dષણ{{PLURAL:$1|પાના|પાનાàª\93}} àª¦à«\8dવારા àª¸à«\81રàª\95à«\8dષિત છે.",
+'titleprotectedwarning' => "'''ચેતવણી: આ પાનું સંરક્ષિત છે આથી આની રચના માટે [[Special:ListGroupRights|વિશેષ અધિકારો]]ની જરૂર છે.'''
+તà«\87 àª¸àª\82બàª\82ધà«\80 àª¤àª¾àª\9cà«\87તરનà«\80 àª«à«\87રફાર àª¯àª¾àª¦à«\80 તમારા સંદર્ભ માટે આપેલી છે:",
 'templatesused' => 'આ પાનામાં વપરાયેલ {{PLURAL:$1|ઢાંચો|ઢાંચાઓ}}:',
 'templatesusedpreview' => 'આ પૂર્વાવલોકનમાં વપરાયેલ {{PLURAL:$1|ઢાંચો|ઢાંચાઓ}}:',
 'templatesusedsection' => 'આ ખંડ માં વપરાયેલા {{PLURAL:$1|ઢાંચો|ઢાંચા}} :',
@@ -1083,8 +1083,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'દાબ નોંધ',
-'suppressionlogtext' => 'નà«\80àª\9aà«\87 àªªà«\8dરબàª\82ધàª\95à«\8bથà«\80 àª\9bà«\81પાયà«\87લ àª\8fવા àª¹àª\9fાવ àª\85નà«\87 àª°à«\8bàª\95નà«\80 àª¯àª¾àª¦àª¿ આપેલી છે.
-હાલમાં સક્રીય એવા  પ્રતિબંધ અને રોકની યાદિ અહીં [[Special:BlockList|IP block list]]  આપેલ છે.',
+'suppressionlogtext' => 'નà«\80àª\9aà«\87 àªªà«\8dરબàª\82ધàª\95à«\8bથà«\80 àª\9bà«\81પાયà«\87લ àª\8fવા àª¹àª\9fાવ àª\85નà«\87 àª°à«\8bàª\95નà«\80 àª¯àª¾àª¦à«\80 આપેલી છે.
+હાલમાં સક્રીય એવા પ્રતિબંધ અને રોકની યાદિ [[Special:BlockList|અહીં]] આપેલ છે.',
 
 # History merging
 'mergehistory' => 'પાનાનાં ઇતિહાસોનું વિલીનીકરણ',
@@ -1409,7 +1409,7 @@ HTML નાકું ચકાસો',
 'right-ipblock-exempt' => 'IP દ્વારા, સ્વયં ચાલિત રીતે અને સમૂહ રોકને અવગનીને આગળ વધો',
 'right-proxyunbannable' => 'અવેજીના અવયંચાલિત ખંડોને ટાળો',
 'right-unblockself' => 'તેમને જાતે અપ્રતિબંધિત થવા દો',
-'right-protect' => 'સàª\82રàª\95à«\8dષણ àª¸à«\8dતર àª¬àª¦àª²à«\8b àª\85નà«\87 àª¸àª\82રàª\95à«\8dષà«\80ત àªªàª¾àª¨àª¾માં ફેરફાર કરો.',
+'right-protect' => 'સàª\82રàª\95à«\8dષણ àª¸à«\8dતર àª¬àª¦àª²à«\8b àª\85નà«\87 àª¸àª\82રàª\95à«\8dષિત àªªàª¾àª¨àª¾àª\93માં ફેરફાર કરો.',
 'right-editprotected' => 'સંરક્ષિત પાનામાં ફેરફાર કરો (પગથિયામય સુરક્ષા વગર)',
 'right-editinterface' => 'સભ્ય સંભાષણ પટલમાં ફેરફાર કરો',
 'right-editusercssjs' => 'અન્ય સભ્યોની CSS અને JavaScript ફાઇલમાં ફેરફાર કરો',
@@ -1492,7 +1492,7 @@ HTML નાકું ચકાસો',
 'rcshowhideminor' => 'નાના ફેરફારો $1',
 'rcshowhidebots' => 'બૉટો $1',
 'rcshowhideliu' => 'લૉગ ઇન થયેલાં સભ્યો $1',
-'rcshowhideanons' => 'àª\85નામિ સભ્યો $1',
+'rcshowhideanons' => 'àª\85નામà«\80 સભ્યો $1',
 'rcshowhidepatr' => ' $1 ચોકીયાત ફેરફારો',
 'rcshowhidemine' => 'મારા ફેરફારો $1',
 'rclinks' => 'છેલ્લાં $2 દિવસમાં થયેલા છેલ્લાં $1 ફેરફારો દર્શાવો<br />$3',
@@ -1871,7 +1871,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'randomredirect-nopages' => 'નામ સ્થળ "$1" માં કોઇ દિશા નિર્દેશન નથી',
 
 # Statistics
-'statistics' => 'àª\86àª\82àª\95ડાàª\95િય àª®àª¾àª¹àª¿àª¤àª¿',
+'statistics' => 'àª\86àª\82àª\95ડાàª\95à«\80ય àª®àª¾àª¹àª¿àª¤à«\80',
 'statistics-header-pages' => 'પાના સંબંધી આંકડાકીય માહિતી',
 'statistics-header-edits' => 'આંકડાકીય માહિતી બદલો',
 'statistics-header-views' => 'આંકડાકીય માહિતી જુઓ',
@@ -1929,10 +1929,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'specialpage-empty' => 'આ પાનું ખાલી છે.',
 'lonelypages' => 'અનાથ પાના',
 'lonelypagestext' => 'નીચે બતાવેલા પાના {{SITENAME}} પર કે થી કડી દ્વારા જોડાયેલ નથી',
-'uncategorizedpages' => 'àª\85વરà«\8dàª\97િકૃત પાનાં',
-'uncategorizedcategories' => 'àª\85વરà«\8dàª\97િકૃત શ્રેણીઓ',
-'uncategorizedimages' => 'àª\85વરà«\8dàª\97િકૃત દસ્તાવેજો',
-'uncategorizedtemplates' => 'àª\85વરà«\8dàª\97િકૃત ઢાંચાઓ',
+'uncategorizedpages' => 'àª\85વરà«\8dàª\97à«\80કૃત પાનાં',
+'uncategorizedcategories' => 'àª\85વરà«\8dàª\97à«\80કૃત શ્રેણીઓ',
+'uncategorizedimages' => 'àª\85વરà«\8dàª\97à«\80કૃત દસ્તાવેજો',
+'uncategorizedtemplates' => 'àª\85વરà«\8dàª\97à«\80કૃત ઢાંચાઓ',
 'unusedcategories' => 'વણ વપરાયેલી શ્રેણીઓ',
 'unusedimages' => 'વણ વપરાયેલાં દસ્તાવેજો',
 'popularpages' => 'પ્રખ્યાત પાના',
@@ -1959,8 +1959,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'protectedpages-indef' => 'ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના',
 'protectedpages-cascade' => 'માત્ર પગથિયામય સુરક્ષા વાળા પગ',
 'protectedpagestext' => 'નીચેના પાના કોઈ ફેરફાર કે હટાવવા થી સુરકક્ષીત કરાયા છે',
-'protectedpagesempty' => 'àª\86 àªµàª¿àª\95લà«\8dપà«\8b àª¦à«\8dવારા àª\95à«\8bàª\88 àªªàª¾àª¨àª¾ àª¸à«\81રàª\95à«\8dષà«\80ત àª\95રાયા àª¨àª¥à«\80',
-'protectedtitles' => 'સàª\82રàª\95à«\8dષà«\80ત શીર્ષકો',
+'protectedpagesempty' => 'àª\86 àªµàª¿àª\95લà«\8dપà«\8b àª¦à«\8dવારા àª\95à«\8bàª\88 àªªàª¾àª¨àª¾ àª¸à«\81રàª\95à«\8dષિત àª\95રાયા àª¨àª¥à«\80.',
+'protectedtitles' => 'સàª\82રàª\95à«\8dષિત શીર્ષકો',
 'protectedtitlestext' => 'આ શીર્ષકો રચના માટે આરક્ષીત છે',
 'protectedtitlesempty' => 'આ પરિબળો દ્વારા કોઇ પણ શીર્ષકો સચવાયા નથી.',
 'listusers' => 'સભ્યોની યાદી',
@@ -2325,8 +2325,8 @@ Deleting it may disrupt database operations of {{SITENAME}};',
 'restriction-upload' => 'ફાઇલ ચઢાવો',
 
 # Restriction levels
-'restriction-level-sysop' => 'સંપૂર્ણા સંરક્ષીત',
-'restriction-level-autoconfirmed' => 'àª\85રà«\8dધ àª¸àª\82રàª\95à«\8dષà«\80ત',
+'restriction-level-sysop' => 'સંપૂર્ણ સંરક્ષિત',
+'restriction-level-autoconfirmed' => 'àª\85રà«\8dધ àª¸àª\82રàª\95à«\8dષિત',
 'restriction-level-all' => 'કોઈ પણ સ્તર',
 
 # Undelete
@@ -2476,8 +2476,8 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'ipb-confirm' => 'પ્રતિબંધ પુષ્ટિ',
 'badipaddress' => 'અવૈધ IP સરનામું',
 'blockipsuccesssub' => 'સફળ પ્રતિબંધ મુકાયો',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] પરા રોક લગાવાઈ છે<br />
-રà«\8bàª\95 àª²àª\97ાવà«\87લ àª¸àª­à«\8dયà«\8bનà«\80 àª¯àª¾àª¦àª¿ [[Special:BlockList|IP block list]].',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] પર રોક લગાવાઈ છે.<br />
+સમà«\80àª\95à«\8dષા àª®àª¾àª\9fà«\87 [[Special:BlockList|રà«\8bàª\95 àª²àª\97ાવાયà«\87લ àª¸àª­à«\8dયà«\8bનà«\80 àª¯àª¾àª¦à«\80]] àª\9cà«\81àª\93.',
 'ipb-blockingself' => 'તમે પોતાના પર પ્રતિબંધ મુકવા જાઓ છો! શું તમે સાચેજમાં આ કરવા માગો છો?',
 'ipb-confirmhideuser' => 'તમે "સભ્ય છુપાવો" સક્રિય રાખીને આ સભ્ય પર પ્રતિબંધ મુકવા જઇ રહ્યાં છો. આના કારણે કોઇપણ યાદી કે નોંધમાં સભ્યનું નામ જોઇ નહી શકાય. શું તમે ખરેખર આમ કરવા માંગો છો?',
 'ipb-edit-dropdown' => 'પ્રતિબંધ કારણોમાં ફેરફાર કરો',
@@ -2530,9 +2530,9 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 રોક લગાવાયેલા સભ્યોની યાદિ આ મુજબ છે',
 'blocklogentry' => '[[$1]] પર પ્રતિબંધ $2 $3 સુધી મુકવામાં આવ્યો છે.',
 'reblock-logentry' => '[[$1]] ની પ્રતિબંધ વિકલ્પો બદલ્યા જે નો કલાતિત સમય છે   $2 $3',
-'blocklogtext' => 'àª\86 àª¸àª­à«\8dયà«\8b àªªàª° àª°à«\8bàª\95 àª²àª\97ાવવા àª\85નà«\87 àª¹àª\9fાવવા àª¸àª\82બàª\82ધિત àª¯àª¾àª¦àª¿ છે.
-સà«\8dવયàª\82àª\9aાલિત àª°à«\80તà«\87 àª°à«\8bàª\95 àª²àª\97ાવાયà«\87લ IP àª¸àª°àª¨àª¾àª®àª¾àª¨à«\80 àª¯àª¾àª¦àª¿ અહીં નથી આપી.
-હાલમાàª\82 àªªà«\8dરવરà«\8dતમાન àª°à«\8bàª\95 àª¨à«\80 àª¯àª¾àª¦àª¿ àª\85હà«\80àª\82 àª\9cà«\81àª\93 [[Special:BlockList|IP block list]].',
+'blocklogtext' => 'àª\86 àª¸àª­à«\8dયà«\8b àªªàª° àª°à«\8bàª\95 àª²àª\97ાવવા àª\85નà«\87 àª¹àª\9fાવવા àª¸àª\82બàª\82ધિત àª¯àª¾àª¦à«\80 છે.
+સà«\8dવયàª\82àª\9aાલિત àª°à«\80તà«\87 àª°à«\8bàª\95 àª²àª\97ાવાયà«\87લ IP àª¸àª°àª¨àª¾àª®àª¾àª¨à«\80 àª¯àª¾àª¦à«\80 અહીં નથી આપી.
+હાલમાàª\82 àªªà«\8dરવરà«\8dતમાન àªªà«\8dરતિબàª\82ધ àª\85નà«\87 àª°à«\8bàª\95 àª¨à«\80 [[Special:BlockList|યાદà«\80 àª\85હà«\80àª\82 àª\9cà«\81àª\93]].',
 'unblocklogentry' => '$1 પરનો પ્રતિબંધ ઉઠાવ્યો',
 'block-log-flags-anononly' => 'માત્ર અજ્ઞાત સભ્ય',
 'block-log-flags-nocreate' => 'ખાતું ખોલવા પર પ્રતિબંધ છે',
@@ -2714,8 +2714,8 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'allmessagesname' => 'નામ',
 'allmessagesdefault' => 'મૂળ સંદેશ',
 'allmessagescurrent' => 'વર્તમાન દસ્તાવેજ',
-'allmessagestext' => 'આ મિડિયાવિકિ નામ સ્થળમાં આવેલ પ્રણાલીજનિત સંદેશાની યાદિ આ મુજબ છે.
-àª\95à«\83પયા [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] àª\85નà«\87 [//translatewiki.net translatewiki.net]નà«\80 àª®à«\81લાàª\95ાત àª²à«\8b àª\9cà«\8b àª¤ àª®àª¿àª¡àª¿àª¯àª¾àª¯àª¾àªµàª¿àª\95િના àª¸à«\8dથાનિય àª\95રણમાàª\82 àª®àª¦àª¦àª°à«\82પ àª¥àªµàª¾ àª\87àª\9aà«\8dàª\9bતા àª¹à«\8bવ.',
+'allmessagestext' => 'આ મિડિયાવિકિ નામસ્થળમાં આવેલ પ્રણાલીજનિત સંદેશાની યાદી આ મુજબ છે.
+àª\9cà«\8b àª¤àª®à«\87 àª®àª¿àª¡àª¿àª¯àª¾àª¯àª¾àªµàª¿àª\95િના àª¸à«\8dથાનà«\80યàª\95રણમાàª\82 àª®àª¦àª¦àª°à«\82પ àª¥àªµàª¾ àª\87àª\9aà«\8dàª\9bતા àª¹à«\8bવ àª¤à«\8b àª\95à«\83પયા [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] àª\85નà«\87 [//translatewiki.net translatewiki.net]નà«\80 àª®à«\81લાàª\95ાત àª²à«\8b.',
 'allmessagesnotsupportedDB' => "આ પાનું ન વાપરી શકાશે કેમકે '''\$wgUseDatabaseMessages'''  નિષ્ક્રીય કરાયું છે",
 'allmessages-filter-legend' => 'ચાળણી',
 'allmessages-filter' => 'સ્થાનીયકરણ સ્થિતિ દ્વારા ચાળો',
@@ -2743,11 +2743,11 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 # Special:Import
 'import' => 'પાના આયાત કરો',
 'importinterwiki' => 'ટ્રાંસ વિકિ આયાત',
-'import-interwiki-text' => 'આયાત કરવાના વિકિ અને પાનાનું શીર્ષક પસંદ કરો.
-ફà«\87રફરનà«\80 àª¤àª¾àª°à«\80àª\96 àª\85નà«\87 àª²à«\87àª\96àª\95à«\8b àªµàª¿àª·à«\87 àª¨à«\80 àª®àª¾àª¹àª¿àª¤à«\80 àª¸àª\9aવાશે.
-àª\86àª\82તર àªµàª¿àª\95િ àª\86યાત àª\86દિ [[Special:Log/import|import log]] àª®àª¾àª\82 àª\85àª\82àª\95િત àª¥ાય છે.',
+'import-interwiki-text' => 'આયાત કરવા માટેનાં પાનાનું શીર્ષક અને વિકિ પસંદ કરો.
+ફà«\87રફારનà«\80 àª¤àª¾àª°à«\80àª\96 àª\85નà«\87 àª²à«\87àª\96àª\95à«\8b àªµàª¿àª·à«\87નà«\80 àª®àª¾àª¹àª¿àª¤à«\80 àª\9cà«\87મનà«\80 àª¤à«\87મ àª°àª¾àª\96વામાàª\82 àª\86વશે.
+બધા àª\9c àª\86àª\82તરવિàª\95િ àª\86યાતનà«\80 àª¨à«\8bàª\82ધ [[Special:Log/import|import log]]માàª\82 àª°àª\96ાય છે.',
 'import-interwiki-source' => 'સ્રોત વિકિ/પાનું:',
-'import-interwiki-history' => 'àª\86 àªªàª¾àª¨àª¾ àª¬àª§àª¾ àª\90તિહાસà«\80àª\95 àª«à«\87રફારà«\8bનà«\80 àª¨àª\95લ કરો',
+'import-interwiki-history' => 'àª\86 àªªàª¾àª¨à«\81àª\82 àª¬àª§àª¾ àª«à«\87રફારà«\8bના àª\87તિહાસ àª¸àª¾àª¥à«\87 àª\86યાત કરો',
 'import-interwiki-templates' => 'બધા ઢાંચા શામિલ કરો',
 'import-interwiki-submit' => 'આયાત કરો',
 'import-interwiki-namespace' => 'લક્ષ્ય નામ સ્થળ',
@@ -2798,7 +2798,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 
 # JavaScriptTest
 'javascripttest' => 'જાવા સ્ક્રીપ્ટ પરીક્ષણ',
-'javascripttest-disabled' => 'àª\86 àª¸à«\82તà«\8dર (ફàª\82àª\95શન) àª¨àª¿àª·à«\8dàª\95à«\8dરà«\80ય àª\95રાયà«\8b',
+'javascripttest-disabled' => 'àª\86 àª¸à«\82તà«\8dર (ફàª\82àª\95શન) àª\86 àªµàª¿àª\95િ àªªàª° àª\95ારà«\8dયરત àª\95રાયà«\87લà«\81àª\82 àª¨àª¥à«\80.',
 'javascripttest-title' => '$1 પરીક્ષણ જારી',
 'javascripttest-pagetext-noframework' => 'આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.',
 'javascripttest-pagetext-unknownframework' => 'અજાણ ચકાસણી ફ્રેમવર્ક "$1".',
@@ -3196,7 +3196,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'exif-compression-3' => 'CCITT સમૂહ 3 ફેક્સ ઍનકોડિંગ',
 'exif-compression-4' => 'CCITT સમૂહ 3 ફેક્સ ઍનકોડિંગ',
 
-'exif-copyrighted-true' => 'પà«\8dરàª\95શન àª\85ધિàª\95ારથà«\80 àª¸à«\81રàª\95à«\8dષà«\80ત',
+'exif-copyrighted-true' => 'પà«\8dરàª\95ાશન àª\85ધિàª\95ારથà«\80 àª¸à«\81રàª\95à«\8dષિત',
 'exif-copyrighted-false' => 'સાર્વજનિક ડોમેન',
 
 'exif-unknowndate' => 'અજ્ઞાત તારીખ',
@@ -3403,7 +3403,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 
 # External editor support
 'edit-externally' => 'બાહ્ય સોફ્ટવેર વાપરીને આ ફાઇલમાં ફેરફાર કરો',
-'edit-externally-help' => '(વધà«\81 àª®àª¾àª¹àª¿àª¤àª¿ àª®àª¾àª\9fà«\87 [//www.mediawiki.org/wiki/Manual:External_editors àª¸à«\87àª\9f-àª\85પ àª¸à«\81ચનાઓ] જુઓ)',
+'edit-externally-help' => '(વધà«\81 àª®àª¾àª¹àª¿àª¤à«\80 àª®àª¾àª\9fà«\87 [//www.mediawiki.org/wiki/Manual:External_editors àª¸à«\87àª\9f-àª\85પ àª¸à«\82ચનાઓ] જુઓ)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'બધા',
@@ -3511,7 +3511,7 @@ $5
 'table_pager_first' => 'પહેલું પાનું',
 'table_pager_last' => 'છેલ્લું પાનું',
 'table_pager_limit' => 'પ્રતિ પાને $1 વસ્તુ બતાવો',
-'table_pager_limit_label' => 'વસà«\8dતિàª\93 àªªà«\8dરતિ àªªàª¾àª¨à«\87',
+'table_pager_limit_label' => 'પà«\8dરતિ àªªàª¾àª¨à«\87 àªµàª¿àª\97તà«\8b:',
 'table_pager_limit_submit' => 'જાઓ',
 'table_pager_empty' => 'કોઇ પરિણામ નથી',
 
@@ -3595,6 +3595,7 @@ $5
 'version-software' => 'બેસાડેલા સોફ્ટવેર',
 'version-software-product' => 'ઉત્પાદ',
 'version-software-version' => 'આવૃત્તિ',
+'version-entrypoints-header-entrypoint' => 'પ્રવેશ સ્થળ',
 
 # Special:FilePath
 'filepath' => 'ફાઈલ પથ',
@@ -3788,6 +3789,10 @@ $5
 '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|સહસ્ત્રાબ્દી|સહસ્ત્રાબ્દીઓ}}',
 
 );
index aba4106..3776098 100644 (file)
@@ -7,10 +7,12 @@
  * @ingroup Language
  * @file
  *
+ * @author Bulaisen
  * @author Kalani
  * @author Kolonahe
  * @author Node ue
  * @author Singularity
+ * @author Xqt
  */
 
 $namespaceNames = array(
@@ -253,7 +255,7 @@ $messages = array(
 'jumptosearch' => 'huli',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'No {{SITENAME}}',
+'aboutsite' => 'E pili ana iā {{SITENAME}}',
 'aboutpage' => 'Project:E pili ana',
 'copyrightpage' => '{{ns:project}}:Palapala ho‘okuleana',
 'currentevents' => 'Ka nū hou',
@@ -263,7 +265,7 @@ $messages = array(
 'edithelp' => 'Kōkua me ka ho‘ololi ‘ana',
 'edithelppage' => 'Help:Ho‘ololi',
 'helppage' => 'Help:Papa kuhikuhi',
-'mainpage' => 'Papa kinohi',
+'mainpage' => "Kahua pa'a",
 'mainpage-description' => 'Ka papa kinohi',
 'policy-url' => 'Project:Palapala',
 'portal' => 'Ka hui kaiaulu',
@@ -298,7 +300,7 @@ $messages = array(
 'red-link-title' => '$1 (ʻaʻole i kākau ʻia)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'ʻaoʻao',
+'nstab-main' => 'ʻAoʻao',
 'nstab-user' => 'Inoa mea ho‘ohana',
 'nstab-media' => 'Pāpaho',
 'nstab-special' => 'Papa nui',
@@ -588,6 +590,8 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 # Statistics
 'statistics' => 'Papa helu',
 
+'disambiguationspage' => 'Template:Huaʻōlelo puana like',
+
 'brokenredirects-edit' => 'e ho‘ololi',
 'brokenredirects-delete' => 'e kāpae',
 
index d37e186..f2f3162 100644 (file)
@@ -359,7 +359,7 @@ $messages = array(
 'tog-hidepatrolled' => 'הסתרת שינויים בדוקים ברשימת השינויים האחרונים',
 'tog-newpageshidepatrolled' => 'הסתרת דפים בדוקים ברשימת הדפים החדשים',
 'tog-extendwatchlist' => 'הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף',
-'tog-usenewrc' => 'ש×\99×\9e×\95ש ×\91רש×\99×\9eת ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d ×\9eש×\95פרת (דרוש JavaScript)',
+'tog-usenewrc' => 'ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93×£ ×\91ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\95×\91רש×\99×\9eת ×\94×\9eעק×\91 (דרוש JavaScript)',
 'tog-numberheadings' => 'מספור כותרות אוטומטי',
 'tog-showtoolbar' => 'הצגת סרגל העריכה (דרוש JavaScript)',
 'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה (דרוש JavaScript)',
@@ -712,6 +712,8 @@ $1',
 'cannotdelete' => 'לא ניתן היה למחוק את הדף או הקובץ "$1".
 ייתכן שהוא נמחק כבר על ידי מישהו אחר.',
 'cannotdelete-title' => 'לא ניתן למחוק את הדף "$1"',
+'delete-hook-aborted' => 'המחיקה הופסקה על־ידי מבנה Hook.
+לא ניתן הסבר.',
 'badtitle' => 'כותרת שגויה',
 'badtitletext' => 'כותרת הדף המבוקש הייתה בלתי־תקינה, ריקה, או קישור שגוי לשפה אחרת או למיזם אחר.
 ייתכן שהיא מכילה תו אחד או יותר שאינו יכול לשמש בכותרות.',
@@ -746,6 +748,8 @@ $2',
 מנהל המערכת שנעל את המאגר סיפק את ההסבר הבא: "\'\'\'$3\'\'\'".',
 'invalidtitle-knownnamespace' => 'כותרת בלתי־תקינה עם מרחב השם "$2" ושם דף "$3"',
 'invalidtitle-unknownnamespace' => 'כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף "$2"',
+'exception-nologin' => 'לא בחשבון',
+'exception-nologin-text' => 'כדי לראות את הדף הזה או לבצע את הפעולה הזאת צריך להיכנס לחשבון באתר הוויקי הזה.',
 
 # Virus scanner
 'virus-badscanner' => "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
@@ -1912,9 +1916,9 @@ $1',
 'lockmanager-fail-acquirelock' => 'לא הייתה אפשרות לקבל נעילה עבור "$1".',
 'lockmanager-fail-openlock' => 'לא הייתה אפשרות לפתוח את קובץ הנעילה עבור "$1".',
 'lockmanager-fail-releaselock' => 'לא הייתה אפשרות לשחרר את הנעילה עבור "$1".',
-'lockmanager-fail-db-bucket' => 'לא הייתה אפשרות לקבל מספיק מסדי נתונים של נעילות בדלי $1',
-'lockmanager-fail-db-release' => 'לא הייתה אפשרות לשחרר נעילות על מסד הנתונים $1',
-'lockmanager-fail-svr-release' => 'לא הייתה אפשרות לשחרר נעילות על השרת $1',
+'lockmanager-fail-db-bucket' => 'לא הייתה אפשרות לקבל מספיק מסדי נתונים של נעילות בדלי $1.',
+'lockmanager-fail-db-release' => 'לא הייתה אפשרות לשחרר נעילות על מסד הנתונים $1.',
+'lockmanager-fail-svr-release' => 'לא הייתה אפשרות לשחרר נעילות על השרת $1.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'אירעה שגיאה במהלך פתיחת הקובץ לבדיקות ZIP.',
@@ -3131,6 +3135,7 @@ $1',
 'spambot_username' => 'מנקה הספאם של מדיה ויקי',
 'spam_reverting' => 'שחזור לגרסה אחרונה שלא כוללת קישורים ל־$1',
 'spam_blanking' => 'כל הגרסאות כוללות קישורים ל־$1, מרוקן את הדף',
+'spam_deleting' => 'כל הגרסאות כוללות קישורים ל־$1, מוחק את הדף',
 
 # Info page
 'pageinfo-title' => 'מידע על "$1"',
@@ -3895,7 +3900,7 @@ $5
 'version-version' => '(גרסה $1)',
 'version-license' => 'רישיון',
 'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[//www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
-'version-poweredby-others' => 'אחרים',
+'version-poweredby-others' => '[{{SERVER}}{{SCRIPTPATH}}/CREDITS אחרים]',
 'version-license-info' => "מדיה־ויקי היא תוכנה חופשית; באפשרותכם להפיץ אותה מחדש ו/או לשנות אותה לפי תנאי הרישיון הציבורי הכללי של גנו המפורסם על ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון זה, או (לפי בחירתכם) כל גרסה מאוחרת יותר.
 
 מדיה־ויקי מופצת בתקווה שהיא תהיה שימושית, אך '''ללא כל הבטחה לאחריות'''; אפילו לא אחריות משתמעת של '''יכולת להיסחר''' או '''התאמה למטרה מסוימת'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
@@ -4067,6 +4072,8 @@ $5
 'api-error-empty-file' => 'הקובץ ששלחתם היה ריק.',
 'api-error-emptypage' => 'יצירת דפים חדשים ריקים אינה אפשרית.',
 'api-error-fetchfileerror' => 'שגיאה פנימית: משהו השתבש בזמן אחזור הקובץ.',
+'api-error-fileexists-forbidden' => 'קובץ בשם "$1" כבר קיים ואי־אפשר לדרוס אותו.',
+'api-error-fileexists-shared-forbidden' => 'קובץ בשם "$1" כבר קיים במאגר הקבצים המשותף ואי־אפשר לדרוס אותו.',
 'api-error-file-too-large' => 'הקובץ ששלחתם היה גדול מדי.',
 'api-error-filename-tooshort' => 'שם הקובץ קצר מדי.',
 'api-error-filetype-banned' => 'סוג קובץ זה חסום.',
@@ -4105,4 +4112,6 @@ $5
 'duration-centuries' => '{{PLURAL:$1|מאה שנה|$1 מאות שנים|מאתיים שנה}}',
 'duration-millennia' => '{{PLURAL:$1|אלף שנה|$1 אלפי שנים|אלפיים שנה}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'לא הייתה אפשרות לבצע נעילות על השרת $1.',
 );
index 80c55df..0a077ed 100644 (file)
@@ -24,7 +24,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Pahraa dewa gais badlao ke nawaa badlao me se lukao',
 'tog-newpageshidepatrolled' => 'Pahraa dewa gais badlao ke nawaa panna me se lukao',
 'tog-extendwatchlist' => 'Dhyaan suchi ke khol ke sab badlao ke dekhao, khaali nawaa waala nai',
-'tog-usenewrc' => 'Sadasya se enhance karaa gais nawaa badlao (reguires Javascript)',
+'tog-usenewrc' => 'Dher jan se badla gais panna, haali ke badlao aur dhyan suchi me (Javascript maange hae)',
 'tog-numberheadings' => 'Sab heading ke apne se number karo',
 'tog-showtoolbar' => 'Badle waala aujaar ke toolbar ke dekhao (JavaScript ke jarurat hai)',
 'tog-editondblclick' => 'Dugnaa click pe panna ke badlo (JavaScript ke jarurat hai)',
@@ -373,6 +373,8 @@ Iske, URL ke likh ke, koi administrator ke report karo.',
 'badarticleerror' => 'Ii chij ke ii panna me nai karaa jae sake hai.',
 'cannotdelete' => '{{PLURAL:$1|Template|Template}} ke ii jhalak me kaam me lawa gais hae:',
 'cannotdelete-title' => 'Panna "$1" ke mitae nai saktaa hae',
+'delete-hook-aborted' => 'Mitae ke kisis ke hook rok diis hae.
+Uu koi kaaran nai dis hae.',
 'badtitle' => 'Kharaab title',
 'badtitletext' => 'Jon panna aap mangta hai uske page title invalid, galat, nai to an incorrectly linked inter-language or inter-wiki title. Isme sait ek yah jaada character hoi jon ki title me nai kaam me lawa jae sake hai.',
 'perfcached' => 'Niche likha data ke cache karaa gais hai aur sait purana hoi. Jaada se jaada {{PLURAL:$1|ek result |$1 results}} cache me hae.',
@@ -402,6 +404,12 @@ $2',
 'ns-specialprotected' => 'Khaas panna ke badla nai jae sake hai.',
 'titleprotected' => "Ii title ke banae se [[User:$1|$1]] rokis hai.
 Iske kaaran hai ''$2''.",
+'filereadonlyerror' => 'File "$1" ke nai badle sakaa hae, kaahe ki ii file repository "$2" me hae aur iske khaali parrha jaae sake hae.
+Jon administrator iske lock karis hae, koi kaaran nai diis hae: "$3"',
+'invalidtitle-knownnamespace' => 'Namespace "$2" aur text "$3" ke kharaab title hae.',
+'invalidtitle-unknownnamespace' => 'Title gaer kaanuni hae aur iske namespace number "$1" aur text "$2" ke nai jaana jaawe hae',
+'exception-nologin' => 'Logged in nai hae',
+'exception-nologin-text' => 'Ii panna nai to aap ke action ke khatir ii wiki me login hoe ke jarurui hae',
 
 # Virus scanner
 'virus-badscanner' => "Kharaab ruup dewa gais hae: virus khoje waala software nawaa hae: ''$1''",
index 70c06b3..20a65da 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Croatian (Hrvatski)
+/** Croatian (hrvatski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -15,6 +15,7 @@
  * @author Dnik
  * @author Ex13
  * @author Excaliboor
+ * @author FriedrickMILBarbarossa
  * @author Herr Mlinka
  * @author Kaganer
  * @author Luka Krstulovic
@@ -2266,7 +2267,7 @@ Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu
 'actionfailed' => 'Radnja nije uspjela',
 'deletedtext' => '"$1" je izbrisana.
 Vidi $2 za evidenciju nedavnih brisanja.',
-'dellogpage' => 'Evidencija_brisanja',
+'dellogpage' => 'Evidencija brisanja',
 'dellogpagetext' => 'Dolje je popis nedavnih brisanja.
 Sva vremena su prema poslužiteljevom vremenu.',
 'deletionlog' => 'evidencija brisanja',
index b0e91bd..ccc1e7d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Upper Sorbian (Hornjoserbsce)
+/** Upper Sorbian (hornjoserbsce)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -160,7 +160,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Dohladawane změny w aktualnych změnach schować',
 'tog-newpageshidepatrolled' => 'Dohladowane strony z lisćiny nowych stronow schować',
 'tog-extendwatchlist' => 'Lisćinu wobkedźbowankow wočinić, zo by wšě změny widźał, nic jenož najnowše',
-'tog-usenewrc' => 'Rozšěrjenu lisćinu aktualnych změnow (trjeba JavaScript) wužiwać',
+'tog-usenewrc' => 'Skupinske změny po stronje w aktualnych změnach a wobkedźbowankach (trjeba JavaScript)',
 'tog-numberheadings' => 'Nadpisma awtomatisce čisłować',
 'tog-showtoolbar' => 'Gratowu lajstu pokazać (wužaduje sej JavaScript)',
 'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować (wužaduje sej JavaScript)',
@@ -325,7 +325,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ć',
@@ -509,6 +509,8 @@ Zdźěl to prošu [[Special:ListUsers/sysop|admininistratorej]] podawajo wotpow
 'cannotdelete' => 'Strona abo dataja "$1" njeje so dała wušmórnyć.
 Móže być, zo je hižo wot někoho druheho wušmórnjena.',
 'cannotdelete-title' => 'Strona "$1" njehodźi so zhašeć',
+'delete-hook-aborted' => 'Zhašenje přez hoku přetorhnjene.
+Njeje žane wujasnjenje podała.',
 'badtitle' => 'Wopačny titul',
 'badtitletext' => 'Požadane mjeno strony běše njepłaćiwy, prózdny abo njekorektny titul z mjezyrěčneho abo interwikijoweho wotkaza. Snano wobsahuje jedne znamješko abo wjacore znamješka, kotrež w titulach dowolene njejsu.',
 'perfcached' => 'Slědowace daty pochadźeja z pufrowaka a njejsu snano cyle aktualne. Maksimalnje {{PLURAL:$1|jedyn wuslědk|$1 wuslědkaj|$1 wuslědki|$1 wuslědkow}} w pufrowaku k dispoziciji {{PLURAL:$1|steji|stejitej|steja|steji}}.',
@@ -540,6 +542,8 @@ Podata přičina je \'\'"$2"\'\'.',
 Administrator, kiž je jón zawrěł, je tule přičinu podał: "$3".',
 'invalidtitle-knownnamespace' => 'Njepłaćiwy titul z mjenowym rumom "$2" a tekstom "$3"',
 'invalidtitle-unknownnamespace' => 'Njepłaćiwy titul z njeznatym mjenowym rumom $1 a tekstom "$2"',
+'exception-nologin' => 'Njejsy přizjewjeny',
+'exception-nologin-text' => 'Tuta strona abo akcija sej wužaduje, zo sy na tutym wikiju přizjewjeny.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
@@ -2811,7 +2815,8 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'spamprotectionmatch' => 'Sćěhowacy tekst je naš spamowy filter wotpokazał: $1',
 'spambot_username' => 'MediaWiki čisćenje wot spama',
 'spam_reverting' => 'wróćo na poslednju wersiju, kotraž wotkazy na $1 njewobsahuje',
-'spam_blanking' => 'Wšě wersije wobsahowachu wotkazy na $1, wučisćene.',
+'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
+'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
 
 # Info page
 'pageinfo-title' => 'Informacije za stronu "$1"',
@@ -3677,6 +3682,8 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'api-error-empty-file' => 'Dataja, kotruž sy nahrał, je prózdna.',
 'api-error-emptypage' => 'Wutworjenje nowych, prózdnych stronow njeje dowolene.',
 'api-error-fetchfileerror' => 'Nutřkowny zmylk: při wobstarowanju dataje je so něšto nimokuliło.',
+'api-error-fileexists-forbidden' => 'Dataja z mjenom "$1" hižo eksistuje, a njeda so přepisać.',
+'api-error-fileexists-shared-forbidden' => 'Dataja z mjenom "$1" hižo eksistuje w zhromadnym datajowym repozitoriju a njeda so přepisać.',
 'api-error-file-too-large' => 'Dataja, kotruž sy nahrał, bě přewulka.',
 'api-error-filename-tooshort' => 'Datajowe mjeno překrótko',
 'api-error-filetype-banned' => 'Tutón datajowy typ je zawrjeny.',
@@ -3715,4 +3722,6 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Zawěry na serwer $1 njehodźa so wotwołać.',
 );
index c507c68..45f8f94 100644 (file)
@@ -29,6 +29,7 @@
  * @author R-Joe
  * @author Samat
  * @author Sucy
+ * @author TK-999
  * @author Terik
  * @author Tgr
  * @author Xbspiro
@@ -313,12 +314,12 @@ $linkTrail = '/^([a-záéíóúöüőűÁÉÍÓÚÖÜŐŰ]+)(.*)$/sDu';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Hivatkozások aláhúzása:',
-'tog-justify' => 'Sorkizárt fejezetek',
+'tog-justify' => 'Bekezdések sorkizárása',
 'tog-hideminor' => 'Apró változtatások elrejtése a friss változtatások lapon',
 'tog-hidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése a friss változtatások lapon',
 'tog-newpageshidepatrolled' => 'Ellenőrzött lapok elrejtése az új lapok listájáról',
 'tog-extendwatchlist' => 'A figyelőlistán az összes változtatás látszódjon, ne csak az utolsó',
-'tog-usenewrc' => 'Fejlettebb friss változások listája (JavaScript-alapú)',
+'tog-usenewrc' => 'Fejlettebb friss változások használata (JavaScript-alapú)',
 'tog-numberheadings' => 'Fejezetcímek automatikus számozása',
 'tog-showtoolbar' => 'Szerkesztőeszközsor megjelenítése (JavaScript-alapú)',
 'tog-editondblclick' => 'A lapok szerkesztése dupla kattintásra (JavaScript-alapú)',
index ce350d1..c572a41 100644 (file)
@@ -15,6 +15,7 @@
  * @author Togaed
  * @author Vacio
  * @author Xelgen
+ * @author Համլետ
  * @author לערי ריינהארט
  */
 
@@ -739,6 +740,9 @@ $2',
 Խնդրում ենք սպասել որոշ ժամանակ կրկին փորձելուց առաջ։',
 'loginlanguagelabel' => 'Լեզու. $1',
 
+# E-mail sending
+'php-mail-error-unknown' => 'Անհայտ սխալ PHP-ի mail() ֆունկցիայում',
+
 # Change password dialog
 'resetpass' => 'Փոխել գաղտնաբառը',
 'resetpass_announce' => 'Դուք ներկայացել եք էլ-փոստով ստացված ժամանակավոր գաղտնաբառով։ Համակարգ մուտքի համար անհրաժեշտ է նոր գաղտնաբառ ընտրել այստեղ.',
@@ -758,12 +762,15 @@ $2',
 'resetpass-temp-password' => 'Ժամանակավոր գաղտնաբառ.',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Վերականգնել գաղտնաբառը',
 'passwordreset-username' => 'Մասնակցի անուն.',
 'passwordreset-emailelement' => 'Մասնակցային անուն. $1
 Ժամանակավոր գաղտնաբառ. $2',
 
 # Special:ChangeEmail
 'changeemail' => 'Փոխել էլ. հասցեն',
+'changeemail-submit' => 'Խմբագրել էլ․ հասցեն',
+'changeemail-cancel' => 'Չեղարկել',
 
 # Edit page toolbar
 'bold_sample' => 'Թավատառ տեքստ',
@@ -939,6 +946,7 @@ $2',
 'log-fulllog' => 'Դիտել ամբողջական տեղեկամատյանը',
 'edit-conflict' => 'Խմբագրման ընհարում։',
 'edit-no-change' => 'Ձեր խմբագրումը անտեսվել է, քանի որ ոչ մի փոփոխություն չի կատարվել տեքստի մեջ։',
+'defaultmessagetext' => 'Լռելյան տեքստը',
 
 # "Undo" feature
 'undo-success' => 'Խմբագրումը կարող է հետ շրջվել։ Ստուգեք տարբերակների համեմատությունը ստորև, որպեսզի համոզվեք, որ դա է ձեզ հետաքրքրող փոփոխությունը և մատնահարեք «Հիշել էջը»՝ գործողությունն ավարտելու համար։',
@@ -1044,7 +1052,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 
 # Diffs
 'history-title' => '«$1» էջի փոփոխումների պատմություն',
-'difference-title' => '$1: Խմագրումների տարբերություն',
+'difference-title' => '$1: Ô½Õ´Õ¢Õ¡Õ£Ö\80Õ¸Ö\82Õ´Õ¶Õ¥Ö\80Õ« Õ¿Õ¡Ö\80Õ¢Õ¥Ö\80Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶',
 'difference-title-multipage' => '$1 և $2: Խմբագրումների տարբերություն',
 'difference-multipage' => '(Էջերի տարերություն)',
 'lineno' => 'Տող  $1.',
@@ -2557,7 +2565,7 @@ $3
 'revdelete-summary-hid' => 'անտեսանելի դարձվեց խմբագրման ամփոփումը',
 'revdelete-uname-hid' => 'անտեսանելի դարձվեց մասնակցի անունը',
 'revdelete-content-unhid' => 'տեսանելի դարձվեց բովանդակությունը',
-'revdelete-summary-unhid' => 'տեսնելի դարձվեց խմագրման ամփոփումը',
+'revdelete-summary-unhid' => 'Õ¿Õ¥Õ½Õ¶Õ¥Õ¬Õ« Õ¤Õ¡Ö\80Õ±Õ¾Õ¥Ö\81 Õ­Õ´Õ¢Õ¡Õ£Ö\80Õ´Õ¡Õ¶ Õ¡Õ´Ö\83Õ¸Ö\83Õ¸Ö\82Õ´Õ¨',
 'revdelete-uname-unhid' => 'տեսանելի դարձվեց մասնակցի անունը',
 'logentry-move-move' => '$1 տեղափոխեց էջը «$3»-ից «$4»',
 'logentry-move-move-noredirect' => '$1 տեղափոխեց էջը «$3»-ից «$4» առանց վերահղում թողնելու',
index 34ed3ba..68af34e 100644 (file)
@@ -149,7 +149,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Celar le modificationes patruliate in le modificationes recente',
 'tog-newpageshidepatrolled' => 'Celar le paginas patruliate del lista de nove paginas',
 'tog-extendwatchlist' => 'Displicar le observatorio pro monstrar tote le modificationes, non solmente les plus recente',
-'tog-usenewrc' => 'Usar le modificationes recente meliorate (require JavaScript)',
+'tog-usenewrc' => 'Gruppar modificationes per pagina in modificationes recente e observatorio (require JavaScript)',
 'tog-numberheadings' => 'Numerar titulos automaticamente',
 'tog-showtoolbar' => 'Monstrar instrumentario de modification (require JavaScript)',
 'tog-editondblclick' => 'Duple clic pro modificar un pagina (require JavaScript)',
@@ -501,6 +501,8 @@ Per favor reporta isto a un [[Special:ListUsers/sysop|administrator]], faciente
 'cannotdelete' => 'Le pagina o file "$1" non poteva esser delite.
 Es possibile que un altere persona lo ha ja delite.',
 'cannotdelete-title' => 'Non pote deler le pagina "$1"',
+'delete-hook-aborted' => 'Le deletion ha essite abortate per un extension.
+Nulle explication es disponibile.',
 'badtitle' => 'Titulo invalide',
 'badtitletext' => 'Le titulo de pagina requestate es invalide, vacue, o un titulo interlingual o interwiki incorrectemente ligate.
 Es possibile que illo contine un o plure characteres que non pote esser usate in titulos.',
@@ -531,11 +533,13 @@ $2',
 'ns-specialprotected' => 'Le paginas special non es modificabile.',
 'titleprotected' => "Iste titulo ha essite protegite contra creation per [[User:$1|$1]].
 Le motivo specificate es ''$2''.",
-'filereadonlyerror' => 'Impossibile modificar le file "$1" perque le deposito de files "$2" es in modo de lectura sol.
+'filereadonlyerror' => 'Impossibile modificar le file "$1" perque le repositorio de files "$2" es in modo de lectura sol.
 
 Le administrator qui lo blocava offereva iste explication: "$3".',
 'invalidtitle-knownnamespace' => 'Titulo invalide con spatio de nomines "$2" e texto "$3"',
 'invalidtitle-unknownnamespace' => 'Titulo invalide con spatio de nomines incognite $1 e texto "$2"',
+'exception-nologin' => 'Non identificate',
+'exception-nologin-text' => 'Iste pagina o action necessita que tu aperi session in iste wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Configuration incorrecte: programma antivirus non cognoscite: ''$1''",
@@ -799,7 +803,7 @@ Per favor entra e valida tu adresse de e-mail per medio de tu [[Special:Preferen
 'nosuchsectiontitle' => 'Section non trovate',
 'nosuchsectiontext' => 'Tu ha tentate modificar un section que non existe.
 Illo pote haber essite displaciate o delite durante que tu legeva le pagina.',
-'loginreqtitle' => 'Identification requirite',
+'loginreqtitle' => 'Identification necessari',
 'loginreqlink' => 'aperir un session',
 'loginreqpagetext' => 'Tu debe $1 pro poter vider altere paginas.',
 'accmailtitle' => 'Contrasigno inviate.',
@@ -1466,7 +1470,7 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'action-movefile' => 'renominar iste file',
 'action-upload' => 'incargar iste file',
 'action-reupload' => 'superscriber iste file existente',
-'action-reupload-shared' => 'supplantar iste file in un deposito commun',
+'action-reupload-shared' => 'supplantar iste file in un repositorio commun',
 'action-upload_by_url' => 'incargar iste file ab un adresse URL',
 'action-writeapi' => 'usar le API de scriptura',
 'action-delete' => 'deler iste pagina',
@@ -1623,7 +1627,7 @@ Illo pare esser un imagine a grandor reducite ''(miniatura)''.
 Si tu possede iste imagine in plen resolution, incarga lo, alteremente cambia le nomine del file per favor.",
 'fileexists-forbidden' => 'Un file con iste nomine existe ja, e non pote esser superscribite.
 Si tu vole ancora incargar iste file, per favor retorna e usa un nove nomine. [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Un file con iste nomine existe ja in le deposito de files commun.
+'fileexists-shared-forbidden' => 'Un file con iste nomine existe ja in le repositorio de files commun.
 Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Iste file es un duplicato del sequente {{PLURAL:$1|file|files}}:',
 'file-deleted-duplicate' => 'Un file identic a iste file ([[:$1]]) esseva ja delite anteriormente. Tu deberea verificar le registro de deletiones concernente iste file ante de re-incargar lo.',
@@ -1847,7 +1851,7 @@ Tu vole forsan modificar le description in le [$2 pagina de description del file
 'filepage-nofile-link' => 'Nulle file con iste nomine existe, ma tu pote [$1 incargar lo].',
 'uploadnewversion-linktext' => 'Incargar un nove version de iste file',
 'shared-repo-from' => 'ab $1',
-'shared-repo' => 'un deposito pro uso in commun',
+'shared-repo' => 'un repositorio partite',
 
 # File reversion
 'filerevert' => 'Reverter $1',
@@ -1976,8 +1980,8 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'wantedpages' => 'Paginas plus demandate',
 'wantedpages-badtitle' => 'Titulo invalide in le gruppo de resultatos: $1',
 'wantedfiles' => 'Files desirate',
-'wantedfiletext-cat' => 'Le sequente files es usate ma non existe. Le files ab depositos distante pote esser listate malgrado que illos existe. Omne tal false positives essera <del>cancellate</del>. In addition, paginas que incorpora files que non existe es listate in [[:$1]].',
-'wantedfiletext-nocat' => 'Le sequente files es usate ma non existe. Files ab depositos distante pote esser listate malgrado que illos existe. Omne tal false positives essera <del>cancellate</del>.',
+'wantedfiletext-cat' => 'Le sequente files es usate ma non existe. Le files ab repositorios externe pote esser listate malgrado que illos existe. Omne tal false positivos essera <del>cancellate</del>. In addition, paginas que incorpora files que non existe es listate in [[:$1]].',
+'wantedfiletext-nocat' => 'Le sequente files es usate ma non existe. Files ab repositorios externe pote esser listate malgrado que illos existe. Omne tal false positivos essera <del>cancellate</del>.',
 'wantedtemplates' => 'Patronos desirate',
 'mostlinked' => 'Paginas le plus ligate',
 'mostlinkedcategories' => 'Categorias le plus ligate',
@@ -2726,8 +2730,8 @@ non pote renominar un pagina al mesme titulo.',
 'protectedpagemovewarning' => "'''Attention:''' Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
 'semiprotectedpagemovewarning' => "'''Nota:''' Iste pagina ha essite protegite de sorta que solmente usatores registrate pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
 'move-over-sharedrepo' => '== File existe ==
-[[:$1]] existe ja in un deposito usate in commun. Si tu renomina le file a iste titulo, illo supplantara le file del deposito.',
-'file-exists-sharedrepo' => 'Le nomine de file seligite es ja in uso in un deposito usate in commun.
+[[:$1]] existe in un repositorio partite. Si le file es renominate a iste titulo, illo supplantara le file partite.',
+'file-exists-sharedrepo' => 'Le nomine de file seligite es ja in uso in un repositorio partite.
 Per favor selige un altere nomine.',
 
 # Export
@@ -2965,7 +2969,8 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
 'spamprotectionmatch' => 'Le sequente texto es lo que activava nostre filtro antispam: $1',
 'spambot_username' => 'Nettamento de spam in MediaWiki',
 'spam_reverting' => 'Revertite al ultime version que non contine ligamines a $1',
-'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina ha essite vacuate.',
+'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina es vacuate.',
+'spam_deleting' => 'Tote le versiones contineva ligamines a $1. Le pagina es delite.',
 
 # Info page
 'pageinfo-title' => 'Informationes pro "$1"',
@@ -3845,6 +3850,8 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'api-error-empty-file' => 'Le file que tu submitteva es vacue.',
 'api-error-emptypage' => 'Le creation de nove paginas vacue non es permittite.',
 'api-error-fetchfileerror' => 'Error interne: qualcosa errava durante le obtention del file.',
+'api-error-fileexists-forbidden' => 'Un file con le nomine "$1" jam existe, e non pote esser superscribite.',
+'api-error-fileexists-shared-forbidden' => 'Un file con le nomine "$1" jam existe in le repositorio commun de files, e non pote esser superscribite.',
 'api-error-file-too-large' => 'Le file que tu submitteva es troppo grande.',
 'api-error-filename-tooshort' => 'Le nomine del file es troppo curte.',
 'api-error-filetype-banned' => 'Iste typo de file es prohibite.',
@@ -3883,4 +3890,6 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'duration-centuries' => '$1 {{PLURAL:$1|seculo|seculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millennios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Non poteva acquirer le serraturas sur le servitor $1.',
 );
index ef9bf95..7394dda 100644 (file)
@@ -2154,6 +2154,7 @@ Harap perhatikan bahwa situs web lain mungkin memiliki pranala ke suatu berkas d
 Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapitalisasi), atau judul halaman (juga sensitif kapitalisasi).',
 'logempty' => 'Tidak ditemukan entri log yang sesuai.',
 'log-title-wildcard' => 'Cari judul yang diawali dengan teks tersebut',
+'showhideselectedlogentries' => 'Tampilkan/sembunyikan entri log terpilih',
 
 # Special:AllPages
 'allpages' => 'Semua halaman',
@@ -3033,6 +3034,7 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
 'spambot_username' => 'Pembersihan span MediaWiki',
 'spam_reverting' => 'Mengembalikan ke versi terakhir yang tak memiliki pranala ke $1',
 'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, pengosongan',
+'spam_deleting' => 'Semua revisi yang memiliki pranala ke $1, penghapusan',
 
 # Info page
 'pageinfo-title' => 'Informasi untuk "$1"',
index 00322f5..0c21f44 100644 (file)
@@ -612,7 +612,7 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'revertmerge' => 'Desfar fusion',
 
 # Diffs
-'history-title' => 'Revision del historie de "$1"',
+'history-title' => 'Historic del revision de "$1"',
 'lineno' => 'Linea $1:',
 'compareselectedversions' => 'Comparar revisiones selectet',
 'editundo' => 'anullar',
index a376cae..4cca325 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Joemaza
  * @author Kaganer
  * @author Lam-ang
  * @author Saluyot
@@ -37,17 +38,17 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Pinag-ugisan ti silpo:',
 'tog-justify' => 'Limpiaen dagiti parapo',
-'tog-hideminor' => 'Ilemmeng dagiti babassit a panag-urnos idiay kinaudian a sinuk-sukatan',
-'tog-hidepatrolled' => 'Ilemmeng dagiti napatruliaan nga inurnos idiay kinaudian a sinuk-sukatan',
+'tog-hideminor' => 'Ilemmeng dagiti babassit a panagbaliw kadagiti naudi a panagisukat',
+'tog-hidepatrolled' => 'Ilemmeng dagiti napatruliaan nga inurnos kadagiti naudi a sinuk-sukatan',
 'tog-newpageshidepatrolled' => 'Ilemmeng dagiti napatruliaan a panid idiay baro a listaan ti panid',
-'tog-extendwatchlist' => 'Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, ta saan laeng dagita nabiit',
-'tog-usenewrc' => 'Usaren dagiti napasayaat a kinaudian a sinuk-sukatan (masapul ti JavaScript)',
+'tog-extendwatchlist' => 'Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, tapno saan laeng a dagiti nabiit',
+'tog-usenewrc' => 'Pannakabaliw ti grupo babaen ti panid iti kaudian a panagbaliw ken pakabantayan (masapul ti JavaScript)',
 'tog-numberheadings' => 'Automatiko a pabilangan dagiti paulo',
-'tog-showtoolbar' => 'Ipakita ti alikamen ti panag-urnos (masapul ti JavaScript)',
-'tog-editondblclick' => 'Urnosen ti pampanid iti mamindua a panagtakla (masapul ti JavaScript)',
+'tog-showtoolbar' => 'Ipakita ti ramit ti panag-urnos (masapul ti JavaScript)',
+'tog-editondblclick' => 'Urnosen dagiti panid iti mamindua a panagtakla (masapul ti JavaScript)',
 'tog-editsection' => 'Pakabaelan ti panag-urnos iti paset babaen kadagiti [urnosen] a  panilpo',
-'tog-editsectiononrightclick' => 'Ikkan ti pakabaelan ti paset  a panag-urnos no agtakla ti kannawan kadagiti paset a titulo (masapul ti JavaScript)',
-'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga addaan ti ad-adu ngem dagiti 3 a paulo)',
+'tog-editsectiononrightclick' => 'Ikkan ti pakabaelan ti paset  a panag-urnos no agtakla ti kanawan kadagiti paset a titulo (masapul ti JavaScript)',
+'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga addan ti ad-adu ngem dagiti 3 a paulo)',
 'tog-rememberpassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (iti kaadu nga $1 {{PLURAL:$1|aldaw|al-aldaw}})',
 'tog-watchcreations' => 'Inayon dagiti inaramidko a pampanid iti listaan ti bambantayak',
 'tog-watchdefault' => 'Inayon dagiti inurnos ko a pampanid iti listaan ti bambantayak',
@@ -62,7 +63,7 @@ $messages = array(
 'tog-enotifminoredits' => 'E-suratannak met kadagiti bassit a panag-urnos ti pampanid',
 'tog-enotifrevealaddr' => 'Iparang ti pagtaengan ti e-surat ko kadagiti pammalagip ti  e-surat',
 'tog-shownumberswatching' => 'Ipakita ti bilang dagiti agbambantay nga agar-aramat',
-'tog-oldsig' => 'Ti addaan a pirma:',
+'tog-oldsig' => 'Ti adda a pirma:',
 'tog-fancysig' => 'Tratuen ti pirma a kas wikitext (nga awan ti automatiko a panagsilpo)',
 'tog-externaleditor' => 'Isigud ti panag-usar iti ruar a pnag-urnos (para dagiti eksperto laeng, masapul ti nangruna a kasasaad a pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay a pakaammo.])',
 'tog-externaldiff' => 'Isigud ti panag-usar iti ruar a  sabali (para dagiti eksperto laeng, masapul ti nagruna a kasasaad a pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay a pakaammo.])',
@@ -76,9 +77,9 @@ $messages = array(
 'tog-watchlisthideanons' => 'Ilemmeng idiay listaan ti bambantayan dagiti inurnos ti di am-ammo nga agar-aramat',
 'tog-watchlisthidepatrolled' => 'Ilemmeng idiay listaan ti bambantayan dagiti napatruliaan nga inurnos',
 'tog-ccmeonemails' => 'Patulodandak iti kopia kadagiti e-surat nga ipatulodko kadagiti sabsabali nga agar-aramat',
-'tog-diffonly' => 'Saan nga iparang ti nagyan ti panid iti baba kadagiti sasabali',
+'tog-diffonly' => 'Saan nga iparang ti linaon ti panid dita baba dagiti pagiddiatan',
 'tog-showhiddencats' => 'Ipakita dagiti nailemmeng a kategoria',
-'tog-norollbackdiff' => 'Laksiden ti sabali a kalpasan ti panagi-subli',
+'tog-norollbackdiff' => 'Laksiden ti paggiddiatan kalpasan ti panagaramid ti panagi-subli',
 
 'underline-always' => 'Kanayon',
 'underline-never' => 'Saan uray kaanoman',
@@ -145,18 +146,18 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategoria|Dagiti kategoria}}',
-'category_header' => 'Dagiti panid iti kategoria  "$1"',
+'category_header' => 'Dagiti panid ti kategoria  "$1"',
 'subcategories' => 'Dagiti apo ti kategoria',
-'category-media-header' => 'Dagiti midia iti kategoria  "$1"',
-'category-empty' => "''Daytoy a kategoria ket awan ti agdama a nagyan na a pampanid wenno midia.''",
-'hidden-categories' => '{{PLURAL:$1|Nailemmeng a kategoria|Dagiti nailemmeng a kategoria}}',
+'category-media-header' => 'Dagiti midia ti kategoria  "$1"',
+'category-empty' => "''Daytoy a kategoria ket agdama a saan nga aglaon kadagiti panid wenno midia.''",
+'hidden-categories' => '{{PLURAL:$1|Nailemmeng a kategoria|Nailemmeng a katkategoria}}',
 'hidden-category-category' => 'Dagiti nailemmeng a kategoria',
-'category-subcat-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad nga apo ti kategoria.|Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|apo ti kategoria|$1 apo dagiti kategoria}}, manipud iti dagup a $2.}}',
-'category-subcat-count-limited' => 'Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|apo ti kategoria|$1 apo dagiti kategoria}}.',
-'category-article-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad a panid.|Ti sumaganad a {{PLURAL:$1|panid|$1 pampanid}} iti daytoy a kategoria, manipud iti dagup a $2.}}',
-'category-article-count-limited' => 'Ti sumaganad a {{PLURAL:$1|panid ket|$1 pampanid ket}} adda iti agdama a kategoria.',
-'category-file-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng kadagiti sumaganad a papeles.|Ti sumaganad a {{PLURAL:$1|papeles|$1 pap-papeles}} ket adda ti daytoy a kategoria, iti $2 a dagup.}}',
-'category-file-count-limited' => 'Ti sumaganad {{PLURAL:$1|a papeles|$1 a dagiti papeles}} ket adda ti agdama a kategoria.',
+'category-subcat-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad nga apo ti kategoria.|Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|nga apo ti kategoria|$1 nga apo dagiti kategoria}}, manipud ti dagup nga $2.}}',
+'category-subcat-count-limited' => 'Daytoy a kategoria ket adda ti sumaganad nga {{PLURAL:$1|nga apo ti kategoria|$1 nga apo dagiti kategoria}}.',
+'category-article-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a panid.|Ti sumaganad nga {{PLURAL:$1|a panid|$1 a pampanid}} ket adda iti daytoy a kategoria, manipud ti dagup nga $2.}}',
+'category-article-count-limited' => 'Ti sumaganad nga {{PLURAL:$1|a panid |$1 a pampanid}} ket adda iti agdama a kategoria.',
+'category-file-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a papeles.|Ti sumaganad nga {{PLURAL:$1| a papeles|$1  a pappapeles}} ket adda iti daytoy a kategoria, ti $2 a dagup.}}',
+'category-file-count-limited' => 'Ti sumaganad nga {{PLURAL:$1|a papeles|$1 a pappapeles}} ket adda iti agdama a kategoria.',
 'listingcontinuesabbrev' => 'tuloy.',
 'index-category' => 'Dagiti pagsurutan a panid',
 'noindex-category' => 'Dagiti saan a pagsurutan a panid',
@@ -222,8 +223,8 @@ $messages = array(
 'create-this-page' => 'Aramidem daytoy a panid',
 'delete' => 'Ikkaten',
 'deletethispage' => 'Ikkaten daytoy a panid',
-'undelete_short' => 'Isubli ti naikkat a {{PLURAL:$1|maysa a naurnos|$1 dagiti naurnos}}',
-'viewdeleted_short' => 'Kitaen {{PLURAL:$1|ti maysa a naikkat a naurnos|$1 digiti naikkat a naurnos}}',
+'undelete_short' => 'Isubli ti naikkat a  {{PLURAL:$1|maysa a naurnos|$1 a naururnos}}',
+'viewdeleted_short' => 'Kitaen {{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}',
 'protect' => 'Salakniban',
 'protect_change' => 'sukatan',
 'protectthispage' => 'Salakniban daytoy a panid',
@@ -233,7 +234,7 @@ $messages = array(
 'talkpage' => 'Pagtungtongan daytoy a panid',
 'talkpagelinktext' => 'Makipatang',
 'specialpage' => 'Espesial a panid',
-'personaltools' => 'Kinabukod a ram-ramit',
+'personaltools' => 'Bukod a ram-ramit',
 'postcomment' => 'Baro a paset',
 'articlepage' => 'Kitaen ti naglaon a panid',
 'talk' => 'Pagtungtongan',
@@ -249,11 +250,11 @@ $messages = array(
 'viewtalkpage' => 'Kitaen ti pagtungtungan',
 'otherlanguages' => 'Dagiti sabali a pagsasao',
 'redirectedfrom' => '(Naibaw-ing manipud idiay $1)',
-'redirectpagesub' => 'Ibaw-ing ti panid',
+'redirectpagesub' => 'Baw-ing a panid',
 'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $1, ti oras nga $2.',
 'viewcount' => 'Naserrekan daytoy a panid iti {{PLURAL:$1|naminsan|$1 a daras}}.',
 'protectedpage' => 'Nasalakniban a panid',
-'jumpto' => 'Mapan iti:',
+'jumpto' => 'Mapan idiay:',
 'jumptonavigation' => 'pagdaliasatan',
 'jumptosearch' => 'biruken',
 'view-pool-error' => 'Pasensian a, dagiti servers ket nadagsenan unay tattan.
@@ -293,8 +294,8 @@ $1',
 'versionrequiredtext' => 'Masapul ti bersion $1 ti MediaWiki tapno maaramat daytoy a panid. Kitaen ti [[Special:Version|panid ti bersion]].',
 
 'ok' => 'OK',
-'retrievedfrom' => 'Naala manipud iti "$1"',
-'youhavenewmessages' => 'Addaanka iti $1 ($2).',
+'retrievedfrom' => 'Naala manipud idiay "$1"',
+'youhavenewmessages' => 'Addaanka ti $1 ($2).',
 'newmessageslink' => 'dagiti baro a mensahe',
 'newmessagesdifflink' => 'naudi a sinukatan',
 'youhavenewmessagesmulti' => 'Adda dagiti baro a mensahem iti $1',
@@ -311,7 +312,7 @@ $1',
 'collapsible-expand' => 'Palawaen',
 'thisisdeleted' => 'Kitaen wenno isubli ti $1?',
 'viewdeleted' => 'Kitaen ti $1?',
-'restorelink' => '{{PLURAL:$1|maysa a naikkat a naurnos|$1 dagiti naikkat a naurnos}}',
+'restorelink' => '{{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}',
 'feedlinks' => 'Pakan:',
 'feed-invalid' => 'Saan a mabalin a kita ti maalala a pakan.',
 'feed-unavailable' => 'Awan dagiti pakan a sindikasion',
@@ -354,7 +355,7 @@ Ti pinaudi a pinagsapul ti database ket:
 <blockquote><tt>$1</tt></blockquote>
 naggapu ti uneg ti opisio "<tt>$2</tt>".
 Ti database ket nangipatulod ti biddut "<tt>$3: $4</tt>".',
-'dberrortextcl' => 'Adda biddut ti database ti  gramatika a pinagsapul.
+'dberrortextcl' => 'Adda biddut ti database ti  gramatika a panagsapul.
 Ti kinaudi a panagsapul ti database ket:
 "$1"
 naggapu ti uneg ti opisio "$2".
@@ -365,37 +366,39 @@ Ti database ket nangipatulod ti biddut "$3: $4".',
 'readonlytext' => 'Ti database ket naikandado iti baro a panagikabil ken panagbaliw, gapu dagiti kanayon nga pagsimpa, ket no malpas absublin to ti kasla idi.
 
 Ti administrador a nagkandado ket daytoy ti palawag na: $1',
-'missing-article' => 'Ti database ket saan a nakabiruk ti testo ti panid  a nabirukan na kuman, ti napanaganan a/nga "$1" $2.
+'missing-article' => 'Ti database ket saan a nakabiruk ti testo ti panid  a nabirukanna kuman, ti napanaganan ti "$1" $2.
 
-Dagiti sumaganad a gapu na daytoy ket ti nagpaso a sabali wenno pakasaritaan ti panilpo ti panid a naikkat.
+Dayoty ket gapu babaen ti sumaganad a baak a paggiddiatan wenno panilpo ti pakasaritaan ti maysa panid a dati a naikkat.
 
 No saan a kasta, baka nakasarak ti kiteb ti "software".
 
-Panngaasim ta ibagam kadagiti [[Special:ListUsers/sysop|administrador]], isurat mo ti pakaammo dayta URL.',
+Panngaasi nga  ibagam kadagiti [[Special:ListUsers/sysop|administrador]], isurat mo ti pakaammo dayta URL.',
 'missingarticle-rev' => '(binaliwan#: $1)',
 'missingarticle-diff' => '(Sabali: $1, $2)',
 'readonly_lag' => 'Automatiko a narikpan ti database kabayatan a dagiti tagabu a database servers ket kumamakam iti agturay',
 'internalerror' => 'Akin-uneg a biddut',
 'internalerror_info' => 'Akin-uneg a biddut: $1',
-'fileappenderrorread' => 'Saan nga mabasa "$1" no agpanayon.',
+'fileappenderrorread' => 'Saan a mabasa ti "$1" idi agpanayon.',
 'fileappenderror' => 'Saan a manayonan ti "$1" iti  "$2".',
-'filecopyerror' => 'Saan a matulad ti papeles "$1" iti "$2".',
-'filerenameerror' => 'Saan a managanan ti papeles "$1" iti "$2".',
-'filedeleteerror' => 'Saan a maikkat ti papeles a "$1".',
-'directorycreateerror' => 'Saan a maaramid ti direktorio a "$1".',
-'filenotfound' => 'Saan a masarakan ti papeles a "$1".',
-'fileexistserror' => 'Di mabalin a maisurat ti papeles a "$1": adda kastan a papeles',
+'filecopyerror' => 'Saan a makopia ti papeles $1 iti $2.',
+'filerenameerror' => 'Saan a managanan ti papeles "$1" iti "$2".',
+'filedeleteerror' => 'Saan a maikkat ti papeles  "$1".',
+'directorycreateerror' => 'Saan a maaramid ti direktorio  "$1".',
+'filenotfound' => 'Saan a masarakan ti papeles  "$1".',
+'fileexistserror' => 'Di mabalin a maisurat ti papeles  "$1": Adda kastan a papeles',
 'unexpected' => 'Di mapakpakadaaan a kuwenta: "$1"="$2".',
 'formerror' => 'Biddut: saan a maited ti nakabuklan.',
 'badarticleerror' => 'Saan a matungpal daytoy nga aramid iti daytoy a panid.',
 'cannotdelete' => 'Ti panid wenno ti papeles "$1" ket saan a maikkat.
 Amangan no addan sabali a nangikkat.',
-'cannotdelete-title' => 'Saan a maikkat ti panid a "$1"',
+'cannotdelete-title' => 'Saan a maikkat ti panid  "$1"',
+'delete-hook-aborted' => 'Naukasen ti kawit ti panagborra.
+Awan ti palawag.',
 'badtitle' => 'Madi a titulo',
 'badtitletext' => 'Ti nakiddaw a titulo ti panid ket imbalido, blanko, wenno saan nga umno a naisilpo a titulo a maki-pagsasao wenno maki-wiki.
 Adda ngata nagyan a maysa wenno ad-adu pay a kababalin a saan a mausar iti titulo.',
-'perfcached' => 'Ti sumaganad a data ket naka-cached ken mabalin a saan a napabaro. T kangato a {{PLURAL:$1|maysa a nagbanagan ket|$1 dagiti nagbanagan}} ket magun-od idiay cache.',
-'perfcachedts' => 'Ti sumaganad a data ket naka-cached, ken naudi a napabaro idi $1. T kangato a {{PLURAL:$4|maysa a nagbanagan ket|$4 dagiti nagbanagan}} ket magun-od idiay cache.',
+'perfcached' => 'Ti sumaganad a data ket naka-cached ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagant|dagiti $1 a nagbanagan}} ket magun-od idiay cache.',
+'perfcachedts' => 'Ti sumaganad a data ket naka-cached, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan |dagiti $4 nagbanagan}} ket magun-od idiay cache.',
 'querypage-no-updates' => 'Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. 
 Saan a mipasaradiwa ita dagiti data ditoy.',
 'wrong_wfQuery_params' => 'Kamali a parametro iti wfQuery()<br />
@@ -405,28 +408,29 @@ Panagsapul: $2',
 'viewsource-title' => 'Kitaen ti taudan iti $1',
 'actionthrottled' => 'Napabuntog ti aramid',
 'actionthrottledtext' => 'Para ti pagkontra ti spam, naipatingga ka ti pinagtungpal ti adu unay iti daytoy nga aramid iti nasiket nga oras, ken nalippasamon ti patingga.
-Pangngaasi ta ipadas mo manen no madamdama.',
-'protectedpagetext' => 'Nasalakniban daytoy a panid tapno pawilan ti panag-urnos.',
+Pangngaasi nga ipadas mo manen no madamdama.',
+'protectedpagetext' => 'Nasalakniban daytoy a panid tapno mapawilan ti panag-urnos.',
 'viewsourcetext' => 'Mabalinmo a kitaen ken tuladen ti taudan daytoy a panid:',
-'viewyourtext' => "Mabalin mo a makita ken tuladen ti taudan dagiti '''inurnosmo''' ditoy a panid:",
-'protectedinterface' => 'Daytoy a panid ket mangited ti testo nga interface para iti software, ken nasalakniban tapno pawilan ti panag-abuso.',
-'editinginterface' => "'''Ballaag:''' Ururnosam ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti software.
+'viewyourtext' => "Mabalinmo a makita ken tuladen ti taudan dagiti '''inurnosmo''' ditoy a panid:",
+'protectedinterface' => 'Daytoy a panid ket mangited ti testo nga interface para iti software, ken nasalakniban tapno mapawilan ti panag-abuso.',
+'editinginterface' => "'''Ballaag:''' Ururnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti software.
 Dagiti panagsukat iti daytoy a panid ket maarigan ti langa ti agaramat nga interface dagiti sabali nga agar-aramat.
-Para kadagiti patarus, pangngaasim ta padasem nga aramaten ti [//translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti gandat a panagipatarus iti MediaWiki.",
+Para kadagiti panagipatarus, pangngaasim a padasen ti agaramat ti [//translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti gandat a panagipatarus ti MediaWiki.",
 'sqlhidden' => '(nakalemmeng ti biniruk a SQL )',
-'cascadeprotected' => 'Daytoy a panid ket nasalakniban ti panag-urnos, ngamin ket nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga|dagiti panid, nga}} nasalakniban iti pagpilian nga "agsariap"  :
+'cascadeprotected' => 'Daytoy a panid ket nasalakniban para iti panag-urnos, ngamin ket nairaman kadagiti sumaganad {{PLURAL:$1|a panid, a|a pampanid, a}} nasalakniban nga adda ti napili nga "agsariap"  :
 $2',
-'namespaceprotected' => "Awananka iti pammalubos nga agurnos kadagiti panid iti '''$1''' a nagan ti lugar.",
-'customcssprotected' => 'Awan ti pammalubos mo ti agurnos ditoy panid ti CSS, ngamin ta adda linaonna a kukua dagiti agar-aramat ti sabali a kasasaad.',
-'customjsprotected' => 'Awan ti pammalubos mo ti agurnos ditoy panid ti JavaScript, ngamin ta adda linaonna a kukua dagiti agar-aramat ti sabali a kasasaad.',
-'ns-specialprotected' => 'Saan a mapaurnos dagiti espesial a panid.',
-'titleprotected' => "Nasalakniban daytoy a titulo manipud iti pianaka-aramid ni [[User:$1|$1]].
+'namespaceprotected' => "Awan ti pammalubosmo nga agurnos kadagiti panid iti '''$1''' a nagan ti lugar.",
+'customcssprotected' => 'Awan ti pammalubosmo nga agurnos ditoy panid ti CSS, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.',
+'customjsprotected' => 'Awan ti pammalubosmo nga agurnos ditoy panid ti JavaScript, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.',
+'ns-specialprotected' => 'Saan a mabalin nga urnosen dagiti espesial a panid.',
+'titleprotected' => "Daytoy a titulo ket nasalakniban manipud ti panakapartuat babaen ni [[User:$1|$1]].
 Ti naited a rason ket ''$2''.",
 'filereadonlyerror' => 'Di nabaliwan ti papales "$1" gapu ket ti repositorio ti papeles "$2" ket basaen laeng a moda.
 
 Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Imbalido a titulo nga adda ti nagan ti lugar "$2" ken testo "$3"',
 'invalidtitle-unknownnamespace' => 'Imbalido a titulo nga adda di-amammo a nagan ti lugar a numero $1 ken testo "$2"',
+'exception-nologin-text' => 'Masapol daytoy a panid wenno aramid ket nakastrekkayo kadaytoy a wiki.',
 
 # Virus scanner
 'virus-badscanner' => 'Madi di panaka-aramidna: Di am-ammo a birus a panagskan: "$1"',
@@ -439,15 +443,15 @@ Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'"
 Mabalinmo nga ituloy ti agusar iti {{SITENAME}} a di am-ammo, wenno [[Special:UserLogin|sumrek ka manen]] iti sigud wenno sabali nga agar-aramat.
 Laglagipem a sumagmamano a pampanid ti mabalin a nakaparang latta a kasla nakaserrek ka pay laeng, agingga na nga dalusam ti \"cache\" ti panagbasabasam.",
 'welcomecreation' => '== Kablaaw, $1! ==
-Naramiden ti pakabilangam.
+Naaramiden ti pakabilangam.
 Dimo liplipatan a sukatan dagita kaykayatmo idiay [[Special:Preferences|{{SITENAME}} kaykayat]].',
 'yourname' => 'Nagan ti agar-aramat:',
 'yourpassword' => 'Kontrasenias:',
 'yourpasswordagain' => 'Uliten ti kontrasenias:',
-'remembermypassword' => 'Laglagipem ti iseserrekko daytoy a pagbasabasa (iti kadakkelan $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}})',
+'remembermypassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (para iti kaadu iti $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}})',
 'securelogin-stick-https' => 'Agyan ka a nakasilpo iti HTTPS no nakastrekka',
 'yourdomainname' => 'Ti bukodmo a pagturayan:',
-'externaldberror' => 'Addaan a biddut ti panakasingked ti database wenno saan mo a mabalin ti agpabaro ti ruar a pakabilangan.',
+'externaldberror' => 'Adda biddut idi ti panakapasingked ti database wenno saanmo a mabalin ti agpabaro ti bukodmo a ruar a pakabilangan.',
 'login' => 'Sumrek',
 'nav-login-createaccount' => 'Sumrek / agaramid ti pakabilangan',
 'loginprompt' => 'Nasken nga adda pakabaelan dagiti "galietas" ti "pagbasabasam" tapno maka-serrek ditoy {{SITENAME}}.',
@@ -475,10 +479,10 @@ Nabaldado dagiti galietas mo.
 Pangngaasi ta pakabaelam ida,  ken sumrek ka nga agusar ti baro a nagan ken kontrasenias.',
 'nocookieslogin' => 'Ti {{SITENAME}} ket agus-usar  kadagiti galietas tapno makastrek dagiti agar-aramat.
 Nabaldado dagiti galietas mo.
-Pangngaasim ta pakabaelam ida ken padasem manen ti sumrek.',
+Pangngaasi a pakabaelam ida ken padasem manen ti sumrek.',
 'nocookiesfornew' => 'Ti pakabilangan ti agar-aramat ket saan a naaramid, saan mi a masingkedan ti naggapuan na.
 Usarem dagita galietas mo, ipadas mo manen daytoy a panid.',
-'noname' => 'Saan mo a nainaganan ti maisu a nagan ti agar-aramat.',
+'noname' => 'Saanmo a nainaganan ti agpayso a nagan ti agar-aramat.',
 'loginsuccesstitle' => 'Balligi ti panagserrek',
 'loginsuccess' => "'''Nakastrekkan iti {{SITENAME}} a kas ni \"\$1\".'''",
 'nosuchuser' => 'Awan ti agar-aramat nga agnagan iti "$1". 
@@ -486,11 +490,11 @@ Usarem dagita galietas mo, ipadas mo manen daytoy a panid.',
 Kitaem ti panangiletra, wenno [[Special:UserLogin/signup|agaramid ka ti baro a pakabilangan]].',
 'nosuchusershort' => 'Awan ti agar-aramat nga addaan iti nagan a "$1".
 Kitaem ti panangiletra.',
-'nouserspecified' => 'Nasken nga inaganam ti nagan ti agar-aramat.',
+'nouserspecified' => 'Nasken nga agikabilka ti nagan ti agar-aramat.',
 'login-userblocked' => 'Naserraan daytoy nga agar-aramat. Maiparit ti sumrek.',
 'wrongpassword' => 'Biddut (wenno awan) ti kontrasenias nga ikabil mo. Padasem koma manen, apo.',
 'wrongpasswordempty' => 'Blanko ti impanmo a kontrasenias. Padasem koma manen apo.',
-'passwordtooshort' => 'Ti kontrasenias ket nasken nga addaan ti {{PLURAL:$1| 1 a karakter|$1 a dagiti karakter}}.',
+'passwordtooshort' => 'Ti kontrasenias ket nasken nga adda  {{PLURAL:$1|iti 1 a karakter|kadagiti $1 a karakter}}.',
 'password-name-match' => 'Masapul a saan nga agpadpada ti  nagan mo nga agar-aramat ken kontrasenias',
 'password-login-forbidden' => 'Maiparit daytoy ususarem a nagan ti agar-aramat ken kontrasenias.',
 'mailmypassword' => 'E-surat ti baro a kontrasenias',
@@ -499,7 +503,7 @@ Kitaem ti panangiletra.',
 a kontrasenias para iti {{SITENAME}} ($4). Ti saan nga agnayon a kontrasenias ti agususar
 "$2" ket naaramiden ken naidisso iti "$3". No kastan ti kinayatmo,
 masapul a sumrek ka ta agpili ka ti baro a kontrasenias.
-Madinton ti saan nga agnayon a kontrasenias iti {{PLURAL:$5|aldaw|$5 al-aldaw}}.
+Ti temporario a bukodmo a kontrasenias ket agpaso  {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 
 No sabali ti nagkiddaw, wenno no malagipmo pay ti kontrasenias mo ket dimon kayat a suktan daytoy, mabalin a dimo lattan ikaskaso daytoy a mensahe ket itultuloymo latta nga usaren ti daan a kontrasenias.',
 'noemail' => 'Awan ti nagtaengan ti e-surat  a nairehistro iti agar-aramat a ni "$1".',
@@ -509,18 +513,18 @@ Sumrekka koma manen kalpasan a maawatmo daytoy a baro a kontrasenias.',
 'blocked-mailpassword' => 'Ti IP a pagtaengam ket naserraan iti panagurnos, isu nga saan a mabalin nga agusar ti panagala ti kontrasenias nga opisio tapno mapawilan ti panag-abuso.',
 'eauthentsent' => 'Naipatuloden ti pammasingked nga e-surat iti naited nga e-surat a pagtaengan.
 Sakbay nga ania man nga e-surat ti maipatulod iti pakabilangan, masapul a surotem dagiti maibagbaga iti e-surat, tapno mapasingkedan a ti pakabilangan ket agpayso a kukuam.',
-'throttled-mailpassword' => 'Ti palagip ti kontrasenias ket naipatuloden, iti napalabas nga {{PLURAL:$1|oras|$1 oras}}.
-Tapno maipawilan ti panag-abuso, maysa laeng a palagip ti kontrasenias ti maipatulod iti {{PLURAL:$1|oras|$1 oras}}.',
+'throttled-mailpassword' => 'Ti palagip ti kontrasenias ket naipatuloden, iti napalabas nga {{PLURAL:$1|oras|$1 nga oras}}.
+Tapno maipawilan ti panag-abuso, maysa laeng a palagip ti kontrasenias ti maipatulod ti tunggal maysa nga {{PLURAL:$1|oras|$1 nga oras}}.',
 'mailerror' => 'Biddut iti panagipatulod iti surat: $1',
-'acct_creation_throttle_hit' => 'Dagiti bisita daytoy wiki nga agususar ti IP a pagtaengan ket nakaaramid iti {{PLURAL:$1|1 pakabilangan|$1 dagiti pakabilangan}} ti maysa nga aldaw, dagita laeng ti mabalin a mausar.
-Ti nagbanagan na, dagitoy bisita nga agususar ti IP a pagtaengan ket saan a makaaramid ti pakabilangan tatta.',
+'acct_creation_throttle_hit' => 'Dagiti bisita daytoy wiki nga agususar ti IP a pagtaengan ket nakaaramid {{PLURAL:$1|iti 1 a pakabilangan|kadagiti $1 a pakabilangan}} ti maysa nga aldaw, dagita laeng ti mabalin a mausar.
+Ti nagbanaganna, dagitoy bisita nga agususar ti IP a pagtaengan ket saan a makaaramid ti pakabilangan tatta.',
 'emailauthenticated' => 'Napasingkedan ti e-surat a pagtaengan idi $2 ti oras nga $3.',
 'emailnotauthenticated' => 'Saan pay a napasingkedan ti e-surat mo.
 Awan ti e-surat nga ipatulod para dagitoy a langa.',
 'noemailprefs' => 'Ipanaganan ti e-surat a pagtaengan tapno agbalin dagitoy a langa.',
 'emailconfirmlink' => 'Pasingkedam ti e-surat a pagtaengam',
 'invalidemailaddress' => 'Ti e-surat a pagtaengam ket saan a maawat, ket kasla addaan ti saan a napudno a nakabuklan.
-Pangngaasi ta ikkam ti nasayaat  a  nakabuklan a pagtaengan wenno ikkatem amin dagiti naikabil mo.',
+Pangngaasi nga ikkam ti nasayaat  a  nakabuklan a pagtaengan wenno ikkatem amin dagiti naikabil mo.',
 'cannotchangeemail' => 'Dagiti pakabilangan nga e-surat a pagtaengan ket saan a mabaliwan ditoy a wiki.',
 'emaildisabled' => 'Daytoy a pagsaaadan ket saan a makaipatuod kadagiti e-surat.',
 'accountcreated' => 'Naaramiden ti pakabilangan',
@@ -534,7 +538,7 @@ Saan mo nga ikaskaso daytoy a mensahe, no biddut a naaramid daytoy a pakabilanga
 Pangaasim ta aguray ka sakbay nga agipadas manen.',
 'login-abort-generic' => 'Madi ti panakastrekmo - Napasardeng',
 'loginlanguagelabel' => 'Pagsasao: $1',
-'suspicious-userlogout' => 'Madi ti kiniddaw mo a rummuar, ngamin ket kasla inpatulod ti nadadael a "panagbasabasa" wenno "caching proxy".',
+'suspicious-userlogout' => 'Madi ti kiniddawmo a rummuar, ngamin ket kasla inpatulod ti nadadael a "panagbasabasa" wenno "caching proxy".',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Di am-ammo a biddut ti kukua ti PHP a surat () nga opisio.',
@@ -565,30 +569,30 @@ Baka mabalin a nasukatam metten ti kontrasenias mo wenno nagkiddaw ka ti saan ng
 'passwordreset-text' => 'Lippasem daytoy a kinabuklan tapno maipatulodan ka ti e-surat a palagipan kadagiti dsalaysay ti pakabilangam.',
 'passwordreset-legend' => 'Ipasubli ti kontrasenias',
 'passwordreset-disabled' => 'Naikkat dagiti pagisubli iti kontrasenias daytoy a wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Ikabil ti maysa a bukel ti data dita baba}}',
+'passwordreset-pretext' => '{{PLURAL:$1||Ikabil ti maysa a bukel ti datos dita baba}}',
 'passwordreset-username' => 'Nagan ti agar-aramat:',
 'passwordreset-domain' => 'Pagturayan:',
 'passwordreset-capture' => 'Kayatmo a kitaen ti nagbanagan ti e-surat?',
 'passwordreset-capture-help' => 'No markaam daytoy a kahon, ti e-surat (nga adda saan nga agnayon a kontrasenias) ket maipakita kenka ken maipatulod iti agar-aramat.',
 'passwordreset-email' => 'E-surat a pagtaengan:',
-'passwordreset-emailtitle' => 'Detalye ti pakabilangan iti {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Addaan (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti palagip para
-dagiti detalye ti pakabilangam para iti {{SITNAME}} ($4) . Ti sumaganad {{PLURAL:$3|a pakabilangan|a dadagiti pakabilangan}} ti agar-aramat ket
+'passwordreset-emailtitle' => 'Salaysay ti pakabilangan iti {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti palagip para
+dagiti salaysay ti pakabilangam para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket
 nakairaman iti daytoy nga e-surat a pagtaengan:
 
 $2
 
-{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso iti {{PLURAL:$5|maysa nga aldaw|$5 nga al-aldaw}}.
+{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso  {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 Sumrekka kuman ta agpili ka ti baro a kontrasenias mo tattan. No adda met sabali a nagaramid daytoy a 
 panagkiddaw, wenno malagip mo ti dati a kontrasenias mo, ket saan mo a kayaten a sukatan, saan mo nga ikaskaso daytoy a mensahe ken 
 agtuloy ka nga agusar ti daan a kontrasenias.',
-'passwordreset-emailtext-user' => 'Daytoy nga  agar-aramat  $1 iti {{SITENAME}} ket nagkiddaw ti palagip para dagiti detalye ti pakabilangan iti {{SITENAME}}
-($4) . Ti sumaganad {{PLURAL:$3|a pakabilangan|kadagiti pakabilangan}}  ti agar-aramat ket
+'passwordreset-emailtext-user' => 'Daytoy nga  agar-aramat  $1 iti {{SITENAME}} ket nagkiddaw ti palagip para dagiti salaysay ti pakabilangan iti {{SITENAME}}
+($4) .  {{PLURAL:$3|Ti|Dagiti}} sumaganad a pakabilanagn ti agar-aramat ket
 nakairaman iti daytoy nga e-surat a pagtaengan:
 
 $2
 
-{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso iti {{PLURAL:$5|maysa nga aldaw|$5 nga al-aldaw}}.
+{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 Sumrekka kuman ta agpili ka ti baro a kontrasenias mo tattan. No adda met sabali a nagaramid daytoy a 
 panagkiddaw, wenno malagip mo ti dati a kontrasenias mo, ket saan mo a kayaten a sukatan, saan mo nga ikaskaso daytoy a mensahe ken 
 agtuloy kan nga agusar ti daan a kontrasenias mo.',
@@ -601,7 +605,7 @@ Saan nga agnayon a kontrasenias: $2',
 # Special:ChangeEmail
 'changeemail' => 'Sukatan ti e-surat a pagtaengan',
 'changeemail-header' => 'Sukatan ti e-surat a pagtaengan ti pakabilangan',
-'changeemail-text' => 'Lippasem daytoy a kabuklan ti panagsukat ti e-surat a pagtaengam. Masapul mo nga ikabil ti kontrasenias mo tapno mapasingkedan ti panagsukat.',
+'changeemail-text' => 'Lippasem daytoy a kabuklan ti panagsukat ti e-surat a pagtaengam. Nasken nga ikabilmo ti kontrasenias tapno mapasingkedan daytoy a panagsukat.',
 'changeemail-no-info' => 'Masapul a nakastrekka tapno dagus ka a makapan ditoy a panid.',
 'changeemail-oldemail' => 'Agdama nga E-surat a pagtaengam:',
 'changeemail-newemail' => 'Baro nga e-surat a pagtaengam:',
@@ -624,7 +628,7 @@ Saan nga agnayon a kontrasenias: $2',
 'nowiki_tip' => 'Saan nga ikaskaso ti panagbuklan a wiki',
 'image_tip' => 'Naibinggas a papeles',
 'media_tip' => 'Panilpo ti papeles',
-'sig_tip' => 'Ti pirmam nga addaan ti oras ken petsa',
+'sig_tip' => 'Ti pirmam nga adda ti oras ken petsa',
 'hr_tip' => 'Pakuros a linia (manmano laeng nga aramaten)',
 
 # Edit pages
@@ -644,7 +648,7 @@ Mairehistro ti IP a pagtaengam iti pakasaritaan ti panagurnos iti daytoy a panid
 No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnos mo nga awan ti pakabuklan na.",
 'missingcommenttext' => 'Pangngaasim a mangipanka iti komentario dita baba.',
 'missingcommentheader' => "'''Palagip:''' Saanka a nangipan iti suheto/paulo para iti daytoy a komentario.
-No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnos mo nga awan ti pakabuklan na.",
+No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnormo nga awan ti pakabuklanna.",
 'summary-preview' => 'Naipadas a  pakabuklan:',
 'subject-preview' => 'Suheto/naipadas a paulo:',
 'blockedtitle' => 'Naseraan ti agar-aramat',
@@ -671,17 +675,17 @@ Ti rason nga inted ket:
 
 Mabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panag-serra.
 
-Laglagipem nga saan mo a mabalin nga usaren ti "e-suratam daytoy nga agar-aramat "  ket laeng no addaan ka ti napudno nga e-surat a pagtaengan a nakarehistro idiay [[Special:Preferences|kakaykayatam]] ken saan ka a
+Laglagipem nga saanmo a mabalin nga usaren ti "e-suratam daytoy nga agar-aramat "  ket laeng no addaan ka ti napudno nga e-surat a pagtaengan a nakarehistro idiay [[Special:Preferences|kakaykayatam]] ken saan ka a
 naserraan ti panag-usar na.
 
 Ti tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.
-Pangaasi nga iraman mo amin dagiti detalye ti amin a panagsaludsod mo.',
+Pangaasi nga iramanmo amin dagiti salaysay ti amin a panagsaludsodmo.',
 'blockednoreason' => 'awan ti naited a rason',
-'whitelistedittext' => 'Masapul a/nga $1 ka tapno makaurnos kadagiti panid.',
+'whitelistedittext' => 'Nasken ti $1 tapno makaurnos kadagiti panid.',
 'confirmedittext' => 'Masapul a pasingkedam ti e-surat sakbay a makaurnos ka kadagiti panid.
 Pangngaasim nga ikabil ken ipapudnom ti e-suratmo idiay [[Special:Preferences|kaykayat dagiti agar-aramat ]].',
 'nosuchsectiontitle' => 'Saan a mabirukan ti kasta a paset',
-'nosuchsectiontext' => 'Pinadasmo nga inurnos ti maysa a paet nga awan pay.
+'nosuchsectiontext' => 'Pinadasmo nga inurnos ti maysa a paset nga awan pay.
 Naiyalis ngatan wenno naikkat idi kitkitaen dayta a panid.',
 'loginreqtitle' => 'Masapul ti sumrek',
 'loginreqlink' => 'sumrek',
@@ -691,14 +695,14 @@ Naiyalis ngatan wenno naikkat idi kitkitaen dayta a panid.',
 
 Ti kontrasenias ti baro a pakabilangan ket masukatan idiay ''[[Special:ChangePassword|pagsukatan ti kontrasenias]]'' a panid no sumrekka.",
 'newarticle' => '(Baro)',
-'newarticletext' => "Nasurotmo ti maysa a panilpo iti saan pay a narugian wenno naaramid a panid. Tapno marugian daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay a pakaammo). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, agtakla ka laeng ti '''agsubli'' a buton ti pabasabasam tapno makasublika iti naggapuam a panid.",
+'newarticletext' => "Nasurotmo ti maysa a panilpo ti panid a saan pay a napartuat. Tapno pmapartuat daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay a pakaammo). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, agtakla ka laeng ti '''agsubli'' a buton ti pabasabasam tapno makasublika iti naggapuam a panid.",
 'anontalkpagetext' => "----''Daytoy ti pakitungtungan a panid para iti di am-ammo nga agar-aramat a saan pay a nakaaramid ti pakabilangan, wenno saan na nga us-usaren.
 Dakami ket agusar kami ti numero nga IP a pagtaengan ti panangilasin dagiti lalaki/babai.
 Ti kastoy nga IP a pagtaengan ket us-usaren a bingayan ti adu pay a sabsabali nga agar-aramat.
 No sika ket maysa a di am-ammo nga agar-aramat ken dagiti awan ti kapategan a komentario ket napaitudo kenka, pangngaasi nga [[Special:UserLogin/signup|agaramid ka ti pakabilangam]] wenno [[Special:UserLogin|sumrekka]] 
 tapno maawanan ti pinakaulaw kadagiti sabali a di am-ammo nga agar-aramat.",
-'noarticletext' => 'Awan pay ti  nagyan na daytoy a panid.
-Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] iti sabsabali a pampanid,
+'noarticletext' => 'Awan ti agdama a testo  daytoy a panid.
+Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] kadagiti sabsabali a pampanid,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirukka],
 wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid].',
 'noarticletext-nopermission' => 'Awan pay ti  nagyan na daytoy a panid.
@@ -708,7 +712,7 @@ wenno <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'userpage-userdoesnotexist' => 'Ti pakabilangan ti agar-aramat "$1" ket saan a nakarehistro. 
 Pangngaasi a kitaem no kayatmo ti agaramid/urnosen daytoy a panid.',
 'userpage-userdoesnotexist-view' => 'Ti pakabilangan ni agar-aramat "$1" ket saan a nakarehistro.',
-'blocked-notice-logextract' => 'Naserraan tatta daytoy nga agar-aramat.
+'blocked-notice-logextract' => 'Agdama a naserraan daytoy nga agar-aramat.
 Ti naudi a listaan ti panaka-serra ket adda dita baba tapno mausar a reperensia:',
 'clearyourcache' => "'''Pakaammo:''' No nalpas ka nga agidulin, kuma ket masapul nga ipalabas ti cahe ti pinagbasabasam tapno makita dagiti sinukatam.
 * '''Firefox / Safari:''' Tenglen ti ''Sukatan'' bayat nga agtakla ti ''Ikarga manen'', wenno itakla ti ''Ctrl-F5'' wenno''Ctrl-R'' (''⌘-R'' Mac)
@@ -716,15 +720,15 @@ Ti naudi a listaan ti panaka-serra ket adda dita baba tapno mausar a reperensia:
 * '''Internet Explorer:''' Tenglen ti ''Ctrl'' bayat nga agtakla ti ''Ipasaradiwa'', wenno itakla ti ''Ctrl-F5''
 * '''Konqueror:''' Itakla ti ''Ikarga manen'' wenno itakla ti ''F5''
 * '''Opera:''' Dalusan ti cache iti ''Ramramit → Kakaykayatan''",
-'usercssyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a CSS sakbay nga idulin mo.",
-'userjsyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a JavaScript sakbay nga idulin mo.",
-'usercsspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a CSS.'''
+'usercssyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a CSS sakbay nga idulinmo.",
+'userjsyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a JavaScript sakbay nga idulinmo.",
+'usercsspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''
 '''Saan pay a naidulin!'''",
-'userjspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a JavaScript.'''
+'userjspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a JavaScript.'''
 '''Saan pay a naidulin!'''",
-'sitecsspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a CSS.'''
+'sitecsspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''
 '''Saan pay a naidulin!'''",
-'sitejspreview' => "'''Laglagipem nga ipadpadas mo laeng ti kodigo daytoy a JavaScript.'''
+'sitejspreview' => "'''Laglagipem nga ipadpadasmo laeng ti kodigo daytoy a JavaScript.'''
 '''Saan pay nga naidulin!'''",
 'userinvalidcssjstitle' => "'''Ballaag:''' Awan ti kudil a \"\$1\".
 Annawid a .css ken .js dagiti titulo ket agususar ti napababa a letra, a kas dagiti {{ns:user}}:Foo/vector.css saan ket a {{ns:user}}:Foo/Vector.css.",
@@ -734,19 +738,19 @@ Annawid a .css ken .js dagiti titulo ket agususar ti napababa a letra, a kas dag
 Dagiti sinukatam ket saan pay a naidulin!",
 'continue-editing' => 'Agtultuloy nga agurnos',
 'previewconflict' => 'Daytoy a panagpadas ket agiparang ti testo dita ngato a panagurnos a lugar a kasla agparang no kayatmo nga idulin.',
-'session_fail_preview' => "'''Pasensian a! Saan mi a maaramid ti panag-urnos gapu ngamin ta naawanan ti gimong ti data.'''
-Pangngaasi ta padasem manen.
+'session_fail_preview' => "'''Pasensian a! Saanmi a maaramid ti panag-urnos gapu ngamin ta naawanan ti gimong ti data.'''
+Pangngaasi a padasem manen.
 No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek ka manen.",
-'session_fail_preview_html' => "'''Pangngaasi! Saan mi a maaramid ti panagurnos mo ngamin ket naawanan ti gimong a datos.'''
+'session_fail_preview_html' => "'''Pangngaasi! Saanmi a maaramid ti panagurnosmo ngamin ket naawanan ti gimong a datos.'''
 
-''Gapu ti {{SITENAME}} ket addaan ti nakilaw a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti pinagraut ti dakes a JavaScript.''
+''Gapu ti {{SITENAME}} ket addaa ti nakilaw a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut ti dakes a JavaScript.''
 
-'''No daytoy ket pudno a panagurnos, pangngaasi ta padasem manen.'''
+'''No daytoy ket pudno a panagurnos, pangngaasi a padasem manen.'''
 No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
-'token_suffix_mismatch' => "'''Ti panag-urnos mo ket saan a naawat ngamin ket ti klientem ket dinadael na ti kuldit ti kababalin idiay pinagpudno ti panag-urnos.'''
+'token_suffix_mismatch' => "'''Ti panag-urnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna ti kuldit ti kababalin idiay pinagpudno ti panag-urnos.'''
 Ti panag-urnos ket saan a naawat tapno mapawilan ti panakadadael ti testo ti panid.
-Mapasamak daytoy no agus-usar ka ti saan a nasayaat a naibasta ti sapot a diamammo a proxy a panagserbi.",
-'edit_form_incomplete' => "'''Adda dagiti paset ti panag-urnos a kabuklan a saan a nakadanon dita server; kitkitaen nga dagiti pianag-urnos mo ket saan a naikkatan ken padasem manen.'''",
+Mapasamak daytoy no agus-usarka ti saan a nasayaat a naibasta ti sapot a diamammo a proxy a panagserbi.",
+'edit_form_incomplete' => "'''Adda dagiti paset ti panag-urnos a kabuklan a saan a nakadanon dita server; kitkitaen nga dagiti panag-urnosmo ket saan a naikkatan ken padasem manen.'''",
 'editing' => 'Ururnosen ti $1',
 'creating' => 'Agparpartuat ti $1',
 'editingsection' => 'Ururnosen ti $1 (paset)',
@@ -754,7 +758,7 @@ Mapasamak daytoy no agus-usar ka ti saan a nasayaat a naibasta ti sapot a diamam
 'editconflict' => 'Adda kasinnungat ti panag-urnos: $1',
 'explainconflict' => "Adda sabali a nagsukat iti daytoy a panid idi nangrugi ka a nagurnos.
 Ti ngato a lugar ti testo ket adda dagiti nagyanna a testo ti panid a kasla agdama a kita na.
-Ti inurnos mo ket maipakita dita babba a lugar ti testo
+Ti inurnosmo ket maipakita dita babba a lugar ti testo
 Ipatipon mo dagiti sinukatam idiay lugar ti testo.
 '''Iti laeng'' testo dita ngato a lugar ti testo ti maidulin no pesselem ti \"{{int:savearticle}}\".",
 'yourtext' => 'Ti testom',
@@ -762,53 +766,53 @@ Ipatipon mo dagiti sinukatam idiay lugar ti testo.
 'nonunicodebrowser' => "'''Ballaag: Ti  pabasabasam ket saan a kasla unicode .'''
 Adda sabali a mausar tapno makaurnos ka kadagiti panid: Ti saan nga-ASCII a kababalin ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
 'editingold' => "'''Ballag: Ururnosem ti daan a panag-baliw iti daytoy a panid.'''
-No idulin mo, mapukaw amin a sinukatam iti daytoy a panag-baliw.",
+No idulinmo, mapukaw amin a sinukatam iti daytoy a panag-baliw.",
 'yourdiff' => 'Dagiti nagdudumaan',
 'copyrightwarning' => "Laglagipenyo koma, apo, nga amin a parawad iti {{SITENAME}} ket maibilang a nairuar iti babaen ti $2 (kitaen ti $1 para kadagiti salaysay). 
 No dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />
 Kasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladmo ngem iti maysa a nawaya a pagturayan ti publiko wenno pumadmad a libre a pagtaudan.
  '''Saan a mangipan iti addaan a karbengan ti pinagpablaak nga obra no awan ti  pammalubos!'''",
-'copyrightwarning2' => "Pangngaasiyo, apo, ta laglagipen nga amin a parawad iti {{SITENAME}} ket mabalin a maurnos, masuktan, wenno ikkaten dagiti sabali pay nga agar-aramat.
+'copyrightwarning2' => "Pangngaasiyo, apo, a laglagipen nga amin a parawad iti {{SITENAME}} ket mabalin a maurnos, masuktan, wenno ikkaten dagiti sabali pay nga agar-aramat.
 No dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />
 Kasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladam ngem iti maysa a nawaya a pagturayan ti publiko wenno pumadmad a libre a pagtaudan (kitaen ti $1 para iti salaysay).
 '''Saan a mangipan iti addaan ti karbengan ti pinagpablaak nga obra no awan ti  pammalubos!'''",
 'longpageerror' => "'''Biddut: Ti testo nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kil-kilobyte}} a katiddog, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kil-kilobyte}}.'''
 Isu ti gapuna a saan a maidulin.",
-'readonlywarning' => "'''Ballaag: Narikepan ti database tapno masimpaan, saan mo a mabalin nga idulin dagita inurnos mo tattan.'''
-No kayatmo i \"cut-n-paste\" mo dagiti testo iti testo a papeles ken idulin mo no madamdama.
+'readonlywarning' => "'''Ballaag: Narikepan ti database tapno masimpaan, saan mo a mabalin nga idulin dagita inurnosmo tattan.'''
+No kayatmo i \"cut-n-paste\" mo dagiti testo iti testo a papeles ken idulinmo no madamdama.
 
 Ti administrador a nangrikep ket saan a nangted ti palawag: \$1",
 'protectedpagewarning' => "'''Ballaag:  Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti makaurnos ditoy.'''
 Ti nakaudi a naikabil a listaan ket adda dita baba tapno usarena  reperensia:",
-'semiprotectedpagewarning' => "''Pakaammo:''' Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.
+'semiprotectedpagewarning' => "'''Pakaammo:'''Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.
 Ti naudi a naikabil a listaan ket adda dita baba tapno usaren a reperensia:",
 'cascadeprotectedwarning' => "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng administrador nga addaan ti  gundaway ti makaurnos, ngamin ket nairaman kadagiti sumaganad a sariap a nasalakniban
-{{PLURAL:$1|panid|dagiti panid}}:",
-'titleprotectedwarning' => "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ti masapul a makaaramid.'''
+{{PLURAL:$1|a panid|a pampanid}}:",
+'titleprotectedwarning' => "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ket nasken ti agpartuat iti daytoy.'''
 Ti kinaudi a naikabil iti listaan ket naikabil dita baba tapno usaren a reperensia:",
-'templatesused' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:',
-'templatesusedpreview' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} ti nausar daytoy a pagpadas:',
-'templatesusedsection' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} a naaramat iti daytoy a paset:',
+'templatesused' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:',
+'templatesusedpreview' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a nausar iti daytoy a panagpadas:',
+'templatesusedsection' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a paset:',
 'template-protected' => '(nasalakniban)',
 'template-semiprotected' => '(nasalakniban-bassit)',
-'hiddencategories' => 'Daytoy a panid ket kameng {{PLURAL:$1|1 ti nakalemmeng a kategoria|$1 dagiti nakalemmeng a kategoria}}:',
+'hiddencategories' => 'Daytoy a panid ket kameng  {{PLURAL:$1|ti 1 a nailemmeng a kategoria|dagiti $1 a nailemmeng a kategoria}}:',
 'nocreatetitle' => 'Napatinggaan ti panagaramid iti panid',
 'nocreatetext' => 'Pinaritan ti {{SITENAME}} ti kabaelan a panagaramid iti kabarbaro a pampanid.
 Mabalinmo ti agsubli ken urnosen ti adda a panid, wenno [[Special:UserLogin|sumrek wenno agaramid ti pakabilangan]].',
-'nocreate-loggedin' => 'Awan ti nangpalubos kenka a mangaramid kadagiti kabarbaro a panid.',
+'nocreate-loggedin' => 'Awan ti pammalubosmo nga agpartuat kadagiti baro a panid.',
 'sectioneditnotsupported-title' => 'Saan a mabalin ti agurnos ti paset',
 'sectioneditnotsupported-text' => 'Saan a mabalin ti panag-urnos ti paset iti daytoy a panid.',
 'permissionserrors' => 'Dagiti biddut ti pammalubos',
-'permissionserrorstext' => 'Awan ti pammalubos mo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|dagiti rason}}:',
-'permissionserrorstext-withaction' => 'Awan ti pammalubos mo nga $2, gapu ti sumaganad {{PLURAL:$1|a rason|dagiti rason}}:',
-'recreate-moveddeleted-warn' => "''Ballaag: Agar-aramidka ti panid a naikkaten iti kallabes.'''
+'permissionserrorstext' => 'Awan ti pammalubosmo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|a rasrason}}:',
+'permissionserrorstext-withaction' => 'Awan ti pammalubosmo nga $2, gapu ti sumaganad {{PLURAL:$1|a rason|rasrason}}:',
+'recreate-moveddeleted-warn' => "''Ballaag: Agparpartuatka manen ti naikkat idi a panid.'''
 
 Nasken a siguraduem no maikanatad nga ituloymo a parnuayen manen wenno urnosen daytoy a panid.
 Ti panaka-ikkat ken panka-iyalis a listaan para iti daytoy  a panid ket adda ditoy a pakakitaan:",
 'moveddeleted-notice' => 'Naikkaten daytoy a panid.
 Ti listaan a panaka-ikkat ken panaka-iyalis ti panid ket naikabil dita baba tapno usaren a reperensia.',
 'log-fulllog' => 'Kitaem amin dagita listaan',
-'edit-hook-aborted' => 'Iti panag-urnos ket napasardeng ti kawit.
+'edit-hook-aborted' => 'Ti panag-urnos ket napasardeng ti kawit.
 Awan ti intedna a palawag.',
 'edit-gone-missing' => 'Saan a mapabaro daytoy a panid.
 Kasla met naikkaten.',
@@ -821,16 +825,16 @@ Adda met daytoyen.',
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Ballaag:''' Daytoy a panid ket adu unay kadagiti nangina a parser nga opisio a pinagtawtawag.
 
-Adda kuman basbasit ngem $2 {{PLURAL:$2|pinagtawtawag|dagiti pinagtawtawag}}, adda {{PLURAL:$1|idiayen a $1 pinagtawtawag|a $1 kadagiti pinagtawtawag}}.",
-'expensive-parserfunction-category' => 'Dagiti panid nga addaan iti adu la unay a nangina a parser nga opisio a pinagtawtawag',
+Adda kuman basbasit ngem $2 {{PLURAL:$2|a panagtawtawag|kadagiti panagtawtawag}}, adda {{PLURAL:$1|tattan $1 a panagtawtawag|tattan kadagiti $1 a panagtawtawag}}.",
+'expensive-parserfunction-category' => 'Dagiti panid nga adda ti adu unay a nangina a parser nga opisio a panagtawtawag',
 'post-expand-template-inclusion-warning' => "'''Ballaag:''' Dakkel unay ti naikabil a plantilia.
 Addan to dagiti plantilia a saan a maikabil.",
 'post-expand-template-inclusion-category' => 'Dagiti pampanid nga ayan dagiti nagsobra ti rukod dagiti naikabil a plantilia',
-'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket adda nagyan na a maysa a panagpalawag a plantilia a dakkel unay ti panagpadakkel na.
+'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket adda nagyanna a maysa a panagpalawag a plantilia a dakkel unay ti panagpadakkel na.
 Dagitoy a panagpalawag  ket naikkaten.",
-'post-expand-template-argument-category' => 'Dagiti panid a naglaon iti naikkat kadagiti kasinnungat ti plantilia',
+'post-expand-template-argument-category' => 'Dagiti panid a naglaon ti naikkat a plantilia kadagiti kasinnungat',
 'parser-template-loop-warning' => 'Adda nasarakan a silo ti plantilia: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Ti kinauneg ti pinagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
+'parser-template-recursion-depth-warning' => 'Ti kinauneg ti panagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
 'language-converter-depth-warning' => 'Ti kauneg ti panagaramid ti pagsasao ket napalabes ti agpatingga a ($1)',
 'node-count-exceeded-category' => 'Dagiti panid a simmurok ti bilang ti node',
 'node-count-exceeded-warning' => 'Ti panid ket nasurokanna ti bilang ti node',
@@ -840,8 +844,8 @@ Dagitoy a panagpalawag  ket naikkaten.",
 'parser-unstrip-recursion-limit' => 'Ti di-naukisan a panagsumro manen a patingga ket nasurokan ($1)',
 
 # "Undo" feature
-'undo-success' => 'Ti panag-urnos ket san a maisubli.
-Pangngaasi ta kitaen ti pinagpada dita baba tapno maamuan no agpaypayso ti kayatmo nga aramiden, ken idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.',
+'undo-success' => 'Ti panag-urnos ket saan a maisubli.
+Pangngaasi a kitaen ti pagipadaan dita baba tapno maamuan no agpaypayso ti kayatmo nga aramiden, ken idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.',
 'undo-failure' => 'Ti inurnos ket saan a maipasubli ta adda dagiti nakisinnungat a patingnga a naurnos.',
 'undo-norev' => 'Saan a maibabawi ti naurnos ngamin ket awan met daytoy wenno mabalin a naikkat.',
 'undo-summary' => 'Ibabawi ti binaliwan $1 ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Makipatang]])',
@@ -855,11 +859,11 @@ Ti inted a rason ni $3 ket ''$2''",
 # History pages
 'viewpagelogs' => 'Kitaen dagiti listaan para iti daytoy a panid',
 'nohistory' => 'Awan ti pakasaritaan ti panag-urnos iti daytoy a panid.',
-'currentrev' => 'Kinaudi a panagbaliwan',
-'currentrev-asof' => 'Pinakaudi a panagbalbaliw idi sipud a $1',
-'revisionasof' => 'Panangbalbaliw sipud $1',
-'revision-info' => 'Panangbaliw ni $2 sipud idi $1',
-'previousrevision' => '←Nadadaan a panangbalbaliw',
+'currentrev' => 'Kinaudi a binaliwan',
+'currentrev-asof' => 'Kinaudi a panagbalbaliw manipud idi $1',
+'revisionasof' => 'Panangbalbaliw manipud idi $1',
+'revision-info' => 'Panangbaliw manipud idi $1 babaen ni $2',
+'previousrevision' => '←Daan a panangbalbaliw',
 'nextrevision' => 'Nabarbaro a panangbalbaliw→',
 'currentrevisionlink' => 'kitaen ti agdama a panangbaliw',
 'cur' => 'agdama',
@@ -877,8 +881,8 @@ Sarita: '''({{int:cur}})''' = naggidiatan ti kinaudi a panagbaliw, '''({{int:las
 'historyempty' => '(blanko)',
 
 # Revision feed
-'history-feed-title' => 'Pakasaritaan ti panamalbaliw',
-'history-feed-description' => 'Pakasaritaan ti panamalbaliw para ti panid ditoy a wiki',
+'history-feed-title' => 'Pakasaritaan ti panagbalbaliw',
+'history-feed-description' => 'Pakasaritaan ti panagbalbaliw para iti daytoy a panid ditoy a wiki',
 'history-feed-item-nocomment' => '$1 iti $2',
 'history-feed-empty' => 'Awan ti kiniddaw a panid..
 Baka naikkaten ditoy a wiki, wenno nanaganan.
@@ -893,37 +897,37 @@ Padasem ti [[Special:Search|agbiruk ditoy a wiki]] kadagiti mapaay a baro a pani
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
 'rev-deleted-text-unhide' => "Ti panakabaliw daytoy a panid ket '''naikkaten'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].
-Mabalin mo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
+Mabalinmo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
 'rev-suppressed-text-unhide' => "Ti panakabaliw daytoy a panid ket '''napasardeng'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].
 Mabalin mo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
 'rev-deleted-text-view' => "Ti panakabaliw daytoy a panid ket '''naikkaten'''.
-Mabalin mo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
+Mabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
 'rev-suppressed-text-view' => "Ti panakabaliw daytoy a panid ket '''napasardeng'''.
-Mabalin mo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
-'rev-deleted-no-diff' => "Saan mo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.
+Mabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
+'rev-deleted-no-diff' => "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a panagbaliw ket '''naikkat''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-'rev-suppressed-no-diff' => "Saan mo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.",
-'rev-deleted-unhide-diff' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''naikkaten'''.
+'rev-suppressed-no-diff' => "Saanmo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.",
+'rev-deleted-unhide-diff' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].
-Mabalin mo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-'rev-suppressed-unhide-diff' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''napasardeng'''.
+Mabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+'rev-suppressed-unhide-diff' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].
-Mabalin mo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-'rev-deleted-diff-view' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''naikkaten'''.
-Mabalin mo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-'rev-suppressed-diff-view' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''napasardeng'''.
-Mabalin mo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
+Mabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+'rev-deleted-diff-view' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.
+Mabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
+'rev-suppressed-diff-view' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.
+Mabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
 'rev-delundel' => 'ipakita/ilemmeng',
 'rev-showdeleted' => 'ipakita',
-'revisiondelete' => 'Naikkat/isubli dagiti naikkat a panagbaliwan',
-'revdelete-nooldid-title' => 'Imbalido ti napuntaan a panagbaliwan',
-'revdelete-nooldid-text' => 'Baka saan mo nga imbaga ti pagpuntaan ti panagbaliwan (dagiti panagbaliwan) ti panagaramid daytoy,
-awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti kadama a panagbaliwan.',
+'revisiondelete' => 'Naikkat/isubli dagiti naikkat a panagbaliw',
+'revdelete-nooldid-title' => 'Imbalido ti napuntaan a panagbaliw',
+'revdelete-nooldid-text' => 'Baka saanmo nga imbaga ti pagpuntaan ti panagbaliw  (dagiti panagbaliwan) ti panagaramid daytoy,
+awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti agdama a panagbaliw.',
 'revdelete-nologtype-title' => 'Awan ti naited a kita ti listaan',
-'revdelete-nologtype-text' => 'Saan mo nga nainaganan ti kita a listaan ti agtungpal daytoy nga aramid.',
+'revdelete-nologtype-text' => 'Saanmo nga nainaganan ti kita a listaan ti agtungpal daytoy nga aramid.',
 'revdelete-nologid-title' => 'Imbalido a panangikabil dita listaan',
-'revdelete-nologid-text' => 'Saan mo a nainaganan ti puntaan ti listaan a paspasamak ti agaramid daytoy a pagusar wenno ti nainaganan nga inkabil ket saan nga adda idiay.',
+'revdelete-nologid-text' => 'Saanmo a nainaganan ti puntaan ti listaan a paspasamak ti agaramid daytoy a pagusar wenno ti nainaganan nga inkabil ket saan nga adda idiay.',
 'revdelete-no-file' => 'Awan dayta ti nainaganan a papeles.',
 'revdelete-show-file-confirm' => 'Segurado a kayatmo ti mangkita ti naikkat a baliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
 'revdelete-show-file-submit' => 'Wen',
@@ -931,11 +935,11 @@ awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti kadama a panag
 'logdelete-selected' => "'''{{PLURAL:$1|Ti napili a listaan ti napasamak|Dagiti napili a listaan ti napasamak}}:'''",
 'revdelete-text' => "'''Dagiti naikkat a binaliwan ken dagiti napasamak ket agparang idiay panid ti pakasaritaan ken dagiti listaan, ngem addaan dagiti paset ti nagyanda a saan a maserrekan ti publiko.'''
 Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalin da a serrekan ti nailemmeng a nagyan ken isubli ti panakaikkat da manen idiay dati nga interface, ngem saan no adda dagiti nainayon a naikabil a panagparit.",
-'revdelete-confirm' => 'Pangngaasi ti pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].',
+'revdelete-confirm' => 'Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].',
 'revdelete-suppress-text' => "Ti pinagdepdep ket usaren '''laeng''' kadagiti sumaganad;
 * Makapataud a dakes a pakaammo
 * Di maiparbeng a  kabukbukodan a pakaammo
-* : ''dagiti pagtaengan ken numero ti telepono, numero ti social security, ken dadduma pay.''",
+* : ''dagiti pagtaengan ken numero ti telepono, numero ti sosial a seguridad, ken dadduma pay.''",
 'revdelete-legend' => 'Iplastar dagiti pinagparit ti panagkita',
 'revdelete-hide-text' => 'Ilemmeng ti testo ti binaliwan',
 'revdelete-hide-image' => 'Ilemmeng ti linaon ti papeles',
@@ -949,28 +953,28 @@ Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalin da a serrekan
 'revdelete-suppress' => 'Depdepen ti data a naggapu kadagiti administrador ken dagiti sabsabali',
 'revdelete-unsuppress' => 'Ikkaten dagiti pannakaiparit kadagiti naisubli a binaliwan',
 'revdelete-log' => 'Rason:',
-'revdelete-submit' => 'Ipakat iti napili {{PLURAL:$1|a panamalbaliw|dagiti panamalbaliw}}',
-'revdelete-success' => "'''Balligi ti pinakabaro ti pinakakita ti pinagbaliwan.'''",
+'revdelete-submit' => 'Ipakat ti napili {{PLURAL:$1|a panagbalbaliw|a dagiti panagbalbaliw}}',
+'revdelete-success' => "'''Balligi ti panagpabaro ti pinakakita ti pinagbaliwan.'''",
 'revdelete-failure' => "'''Saan a napabaro ti pinakakita ti pinagbaliwan.'''
 $1",
 'logdelete-success' => "'''Balligi ti panagikabil ti listaan ti panagkita.'''",
 'logdelete-failure' => "'''Napaay ti panagikabil ti listaan ti panagkita:'''
 $1",
 'revdel-restore' => 'Sukatan ti panagkita',
-'revdel-restore-deleted' => 'naikkat a pinagbaliwan',
-'revdel-restore-visible' => 'makita a pinagbaliwan',
+'revdel-restore-deleted' => 'naikkat a binaliwan',
+'revdel-restore-visible' => 'makita a binaliwan',
 'pagehist' => 'Pakasaritaan ti panid',
 'deletedhist' => 'Naikkat a pakasaritaan',
-'revdelete-hide-current' => 'Biddut ti pinakailemmeng ti banag napetsado a $2, $1: Daytoy ti kinaudian a pinagbaliwan.
-Saan nga mailemmeng.',
+'revdelete-hide-current' => 'Biddut ti panakailemmeng ti banag a napetsado a $2, $1: Daytoy ti kinaudi a panagbaliw
+Saan a mailemmeng.',
 'revdelete-show-no-access' => 'Biddut ti panagpakita ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
 Saan mo a mabalin a serrekan.',
-'revdelete-modify-no-access' => 'Biddut ti pinagpabaro ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
+'revdelete-modify-no-access' => 'Biddut ti panagpabaro ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
 Saan mo a mabalin a serrekan.',
-'revdelete-modify-missing' => 'Biddut ti pinagpabaro daytoy ID $1: Saan a nasarakan idiay database!',
+'revdelete-modify-missing' => 'Biddut ti panagpabaro daytoy ID $1: Saan a nasarakan idiay database!',
 'revdelete-no-change' => "'''Biddut:''' Daytoy a banag a petsado a  $2, $1 ket addaan ti kiniddaw kadagiti pakakita a kasasaad.",
-'revdelete-concurrent-change' => 'Biddut ti pinagpabaro daytoy a banag a petsado a $2, $1: Ti pinakaikabil na ket mabalin a nasuktanen ti sabsabli idi pinadas mo a pinabaro.',
-'revdelete-only-restricted' => 'Biddut pinagilemmeng daytoy banag a petsado a $2, $1: Saan mo a maidepdep dagita iti pinagkita dagiti adminitrador no saan mo a pilian ti maysa kadagiti pinagpili ti panagkita.',
+'revdelete-concurrent-change' => 'Biddut ti panagpabaro daytoy a banag a petsado a $2, $1: Ti panakaikabil na ket mabalin a nasuktanen ti sabsabli idi pinadas mo a pinabaro.',
+'revdelete-only-restricted' => 'Biddut ti panagilemmeng daytoy banag a petsado a $2, $1: Saan mo a maidepdep dagita iti panagkita dagiti adminitrador no saan mo a pilian ti maysa kadagiti pinagpili ti panagkita.',
 'revdelete-reason-dropdown' => '*Dagiti kadawyan a panagikkat
 ** Panaglabsing ti karbengan ti pinagipablaak
 ** Saan a maibagay a kabukbukodan a pakaammo
@@ -987,22 +991,22 @@ Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagi
 
 # History merging
 'mergehistory' => 'Pagtiponen dagiti pakasaritaan ti pampanid',
-'mergehistory-header' => 'Daytoy a panid ket mabalin mo ti agpatipon kadagiti pinagbaliwan ti pakasaritaan iti maysa a taudan idiay barbaro a panid.
-Masapul a saraduem a daytoy a pinagsukat ket agsustento ti pinakaituoy ti pakasaritaan ti panid.',
+'mergehistory-header' => 'Daytoy a panid ket mabalinmo ti agitipon kadagiti pinagbaliwan ti pakasaritaan iti maysa a taudan idiay barbaro a panid.
+Masapul a sigaraduem a daytoy a panagsukat ket agsustento ti panakaituloy ti pakasaritaan ti panid.',
 'mergehistory-box' => 'Pagtiponen dagiti nasukatan iti dua a pampanid:',
 'mergehistory-from' => 'Taudan ti panid:',
 'mergehistory-into' => 'Pangipanan a panid:',
 'mergehistory-list' => 'Mabalin nga itipon ti pakasaritaan ti inurnos',
-'mergehistory-merge' => 'Dagiti sumaganad a pinagbaliw iti [[:$1]] ket mabalin nga itipon iti [[:$2]].
-Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid idiay ken sakbay ti nainagan nga oras.',
+'mergehistory-merge' => 'Dagiti sumaganad a panagbaliw iti [[:$1]] ket mabalin nga itipon iti [[:$2]].
+Usaren ti radio a buton a tukol ti pinagtipon iti laeng panagbaliw a naaramid idiay ken sakbay ti nainagan nga oras.',
 'mergehistory-go' => 'Ipakita dagiti mabalin a maitipon a panag-urnos',
-'mergehistory-submit' => 'Pagtiponen dagiti panamalbaliw',
+'mergehistory-submit' => 'Pagtitiponen dagiti binalbaliwan',
 'mergehistory-empty' => 'Awan dagiti mabalin nga itipon.',
 'mergehistory-success' => '$3 {{PLURAL:$3|a binaliwan|dagiti binaliwan}} ti [[:$1]] balligi ti pinagtipon idiay [[:$2]].',
-'mergehistory-fail' => 'Saan a nakaaramid ti pinagtipon ti pakasaritaan, pangngaasi ta kitaen ti panid ken parametro ti oras.',
+'mergehistory-fail' => 'Saan a nakaaramid ti panagtipon ti pakasaritaan, pangngaasi ta kitaen ti panid ken parametro ti oras.',
 'mergehistory-no-source' => 'Awan ti taudan ti panid a $1.',
 'mergehistory-no-destination' => 'Awan ti papanan ti panid a $1.',
-'mergehistory-invalid-source' => 'Masapul nga addaan ti umisu a titulo ti taudan ti panid.',
+'mergehistory-invalid-source' => 'Masapul nga adda ti umisu a titulo ti taudan ti panid.',
 'mergehistory-invalid-destination' => 'Ti pangipanan ti panid ket masapul nga umisu a titulo.',
 'mergehistory-autocomment' => 'Naitipon ti [[:$1]] iti [[:$2]]',
 'mergehistory-comment' => 'Naitipon ti [[:$1]] iti [[:$2]]: $3',
@@ -1010,10 +1014,10 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'mergehistory-reason' => 'Rason:',
 
 # Merge log
-'mergelog' => 'Listaan ti pinagtipon',
-'pagemerge-logentry' => 'itipon ti [[$1]] iti [[$2]] (dagiti binaliwan agingga iti $3)',
+'mergelog' => 'Listaan ti panagtipon',
+'pagemerge-logentry' => 'itipon ti [[$1]] iti [[$2]] (dagiti binaliwan aginggana iti $3)',
 'revertmerge' => 'Pagsinaen',
-'mergelogpagetext' => 'Adda dita baba ti listaan dagiti kinaudian a pinagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.',
+'mergelogpagetext' => 'Adda dita baba ti listaan dagiti kinaudian a panagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.',
 
 # Diffs
 'history-title' => 'Panagbalbaliw a pakasaritaan iti "$1"',
@@ -1021,51 +1025,51 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'difference-title-multipage' => 'Paggiddiatan a nagbaetan dagiti panid  "$1" ken "$2"',
 'difference-multipage' => '(Paggiddiatan dagiti panid)',
 'lineno' => 'Linia $1:',
-'compareselectedversions' => 'Paggidiaten dagiti pinili a binaliwan',
+'compareselectedversions' => 'Ipada dagiti pinili a binaliwan',
 'showhideselectedversions' => 'Ipakita/ilemmeng dagiti napili a nabaliwan',
 'editundo' => 'ibabawi',
-'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|$1 dagiti agtennga a panangbalbaliw}} ni {{PLURAL:$2|agararamat|$2 dagidiay agararamat}} ti saan a naipakita)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|$1 dagiti agtengnga a panangbalbaliw}} iti ad-adu nga $2 {{PLURAL:$2|agar-aramat|dagiti agar-aramat}} a saan a naipakita)',
+'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtennga a panangbalbaliw}} babaen {{PLURAL:$2|ti agararamat|dagiti $2 nga agararamat}} ti saan a naipakita)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtengnga a panangbalbaliw}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} a saan a naipakita)',
 
 # Search results
 'searchresults' => 'Dagiti nagbanagan ti panagbiruk',
 'searchresults-title' => 'Dagiti nabirukan a nagbanagan ti "$1"',
 'searchresulttext' => 'Ti adu pay a pakaammo ti pinagbiruk {{SITENAME}}, kitaem ti [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Nagbiruk ka  iti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|amin a panid aguna iti "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|amin a panid nga agsilpo iti "$1"]])',
-'searchsubtitleinvalid' => "Nagbiruk ka  iti '''$1'''",
-'toomanymatches' => 'Adu unay ti napasubli  nga agpapada, pangngaasim a padasen ti sabali a pinagsapul',
+'searchsubtitle' => 'Nagbiruk ka  para iti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|amin a panid a mangrugi iti "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|amin a panid nga agsilpo iti "$1"]])',
+'searchsubtitleinvalid' => "Nagbiruk ka para  iti '''$1'''",
+'toomanymatches' => 'Adu unay ti napasubli  nga agpapada, pangngaasi a padasem ti sabali a panagsapul',
 'titlematches' => 'Dagiti kapadpada a titulo ti panid',
 'notitlematches' => 'Awan dagiti kapadpada a titulo ti panid',
 'textmatches' => 'Dagiti agpapada a testo ti panid',
 'notextmatches' => 'Awan dagiti kapadpada a teksto ti panid',
 'prevn' => 'napalabas {{PLURAL:$1|$1}}',
 'nextn' => 'sumaruno {{PLURAL:$1|$1}}',
-'prevn-title' => 'Napalabas $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}',
-'nextn-title' => 'Sumaruno $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}',
-'shown-title' => 'Ipakita $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}  tunggal maysa a panid',
+'prevn-title' => 'Napalabas a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}',
+'nextn-title' => 'Sumaruno a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}',
+'shown-title' => 'Ipakita ti $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}  ti tunggal maysa a panid',
 'viewprevnext' => 'Kitaen ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Pagpilian ti panagbiruk',
-'searchmenu-exists' => "'''Adda nagan ti panid nga \"[[:\$1]]\" daytoy a wiki.'''",
-'searchmenu-new' => "'''Aramidem ti panid nga \"[[:\$1]]\" daytoy a wiki!'''",
+'searchmenu-exists' => "'''Adda panid a nanaganan ti \"[[:\$1]]\" iti daytoy a wiki.'''",
+'searchmenu-new' => "'''Partuaten ti panid ti \"[[:\$1]]\" iti daytoy a wiki!'''",
 'searchhelp-url' => 'Help:Dagiti linaon',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda naipasaruno na a kastoy]]',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda kastoy a naipasaruno]]',
 'searchprofile-articles' => 'Dagiti naglaon a panid',
 'searchprofile-project' => 'Tulong ken Gandat a pam-panid',
 'searchprofile-images' => 'Sabsabali a midia',
 'searchprofile-everything' => 'Amin amin',
-'searchprofile-advanced' => 'Antenamo',
+'searchprofile-advanced' => 'Napasayaat',
 'searchprofile-articles-tooltip' => 'Agbiruk ka idiay $1',
 'searchprofile-project-tooltip' => 'Agbiruk ka idiay $1',
 'searchprofile-images-tooltip' => 'Agbiruk ka iti papeles',
 'searchprofile-everything-tooltip' => 'Birukem amin a linaon (uray dagiti makipatangan a panid)',
 'searchprofile-advanced-tooltip' => 'Agbiruk ka kadagiti naiduma a "nagan ti lugar"',
-'search-result-size' => '$1 ({{PLURAL:$2|1 a balikas|$2 dagiti balikas}})',
-'search-result-category-size' => '{{PLURAL:$1|1 kameng|$1 dagiti kameng}} ({{PLURAL:$2|1 apo ti kategoria|$2 dagiti apo ti kategoria}}, {{PLURAL:$3|1 papeles|$3 dagiti papeles}})',
+'search-result-size' => '$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})',
+'search-result-category-size' => '{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 nga apo ti kategoria|dagiti $2  nga apo ti kategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})',
 'search-result-score' => 'Kapategan: $1%',
 'search-redirect' => '(ibaw-ing ti $1)',
 'search-section' => '(paset $1)',
 'search-suggest' => 'Daytoy kadi: $1',
-'search-interwiki-caption' => 'Dagiti agkakabsat a gandat',
+'search-interwiki-caption' => 'Dagiti kakabsat a gandat',
 'search-interwiki-default' => '$1 dagiti nagbanagan:',
 'search-interwiki-more' => '(adu pay)',
 'search-mwsuggest-enabled' => 'addaan ti singasing',
@@ -1075,24 +1079,24 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'searcheverything-enable' => 'Agbiruk ka kadagiti amin a nagan ti lugar',
 'searchrelated' => 'mainaig',
 'searchall' => 'amin',
-'showingresults' => "Maiparang iti baba ti agingga iti {{PLURAL:$1|'''1''' a nagbanagan|'''$1''' dagiti nagbanagan}} a mangrugi iti #'''$2'''.",
-'showingresultsnum' => "Makita iti baba ti {{PLURAL:$3|'''1''' a nagbanagan|'''$3''' dagiti nagbanagan}} a mangrugi iti #'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Nagbanagan '''$1''' of '''$3'''|Dagiti Nagbanagan '''$1 - $2''' of '''$3'''}} ti '''$4'''",
+'showingresults' => "Maiparang iti baba ti agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
+'showingresultsnum' => "Makita dita baba  {{PLURAL:$3|iti '''1''' a nagbanagan|dagiti '''$3''' a nagbanagan}} a mangrugi iti #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Nagbanagan a '''$1''' iti '''$3'''|Dagiti Nagbanagan a '''$1 - $2''' iti '''$3'''}} para iti '''$4'''",
 'nonefound' => "'''Palagip'': Adda laeng bassit dagita nagan ti lugar a masigud a biruken.
-Padasem a  pasarunuan ti pinagbiruk mo ti ''all:'' tapno birukem amin a nagyan (mairaman ti kapatangan a pampanid, dagiti plantilia, ken dadduma pay), wenno usarem nga ipasaruno ti kayatmo a nagan ti lugar.",
+Padasem a  pasarunuan ti panagbiruk mo ti ''all:'' tapno birukem amin a nagyan (mairaman ti kapatangan a pampanid, dagiti plantilia, ken dadduma pay), wenno usarem nga ipasaruno ti kayatmo a nagan ti lugar.",
 'search-nonefound' => 'Awan ti nagbanagan a kapadpada ti sinapul.',
 'powersearch' => 'Napasayat a panagbiruk',
 'powersearch-legend' => 'Napasayat a panagbiruk',
 'powersearch-ns' => 'Agbiruk ka kadagiti nagan ti lugar:',
-'powersearch-redir' => 'Ilista dagiti panagibaw-ing',
+'powersearch-redir' => 'Ilista dagiti baw-ing',
 'powersearch-field' => 'Biruken iti',
 'powersearch-togglelabel' => 'Markaan:',
 'powersearch-toggleall' => 'Amin',
 'powersearch-togglenone' => 'Awan',
 'search-external' => 'Akinruar a panagbiruk',
-'searchdisabled' => 'Ti pinagbiruk iti {{SITENAME}} ket nabaldado.
+'searchdisabled' => 'Ti panagbiruk iti {{SITENAME}} ket nabaldado.
 Mabalin mo ti agbiruk idiay Google tattan.
-Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
+Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 
 # Quickbar
 'qbsettings' => 'Quickbar',
@@ -1101,7 +1105,7 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'qbsettings-fixedright' => 'Agyan latta iti kanawan',
 'qbsettings-floatingleft' => 'Tumpaw ti kanigid',
 'qbsettings-floatingright' => 'Tumpaw ti kanawan',
-'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti pinagsurat mo ti pagsasaom.',
+'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti panagsurat ti pagsasaom',
 
 # Preferences page
 'preferences' => 'Kaykayatan',
@@ -1118,12 +1122,12 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'prefs-labs' => 'Dagiti subokan a langa',
 'prefs-user-pages' => 'Dagiti panid ti agar-aramat',
 'prefs-personal' => 'Bariweswes ti agar-aramat',
-'prefs-rc' => 'Kaudian a balbaliw',
+'prefs-rc' => 'Kinaudi a binalbaliwan',
 'prefs-watchlist' => 'Listaan ti bambantayan',
-'prefs-watchlist-days' => 'Manu nga aldaw nga agparang iti listaan ti bambantayan:',
-'prefs-watchlist-days-max' => 'Pinakangato nga $1 {{PLURAL:$1|aldaw|al-aldaw}}',
-'prefs-watchlist-edits' => 'Pinakangato a bilang ti ipakita kadagiti sinukatan a napadakkel a bambantayan:',
-'prefs-watchlist-edits-max' => 'Pinakangato a bilang: 1000',
+'prefs-watchlist-days' => 'Manu nga aldaw nga agparang ti listaan iti bambantayan:',
+'prefs-watchlist-days-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
+'prefs-watchlist-edits' => 'Kaadu a bilang ti ipakita kadagiti sinukatan iti napadakkel a bambantayan:',
+'prefs-watchlist-edits-max' => 'Kaadu a bilang: 1000',
 'prefs-watchlist-token' => 'Tandaan ti bambantayan:',
 'prefs-misc' => 'Sabsabali',
 'prefs-resetpass' => 'Sukatan ti kontrasenias',
@@ -1132,7 +1136,7 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'prefs-email' => 'Pagpilian ti e-surat',
 'prefs-rendering' => 'Tabas',
 'saveprefs' => 'Idulin',
-'resetprefs' => 'Dalusan dagiti saan a naidulin a panamalbaliw',
+'resetprefs' => 'Dalusan dagiti saan a naidulin a sinuksukatan',
 'restoreprefs' => 'Isublim amin dagiti kinasigud a kasasaad',
 'prefs-editing' => 'Ururnosen',
 'prefs-edit-boxsize' => 'Kadakkel ti tawa ti panag-urnos.',
@@ -1142,20 +1146,20 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
 'stub-threshold' => 'Pangruggian ti <a href="#" class="stub">pungol a panilpo</a>pinagbukel (bytes):',
 'stub-threshold-disabled' => 'Nabaldado',
-'recentchangesdays' => 'Mano nga aldaw nga ipakita dagiti kaudian a balbaliw:',
-'recentchangesdays-max' => 'Pinakangato $1 {{PLURAL:$1\\aldaw|al-aldaw}}',
+'recentchangesdays' => 'Mano nga aldaw nga ipakita dagiti kinaudi a binalbaliwan:',
+'recentchangesdays-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
 'recentchangescount' => 'Dagiti bilang dagiti naurnos a kinasigud a maiparang:',
 'prefs-help-recentchangescount' => 'Nairaman dagiti kinaudian a baliwan, dagiti pakasaritaan ti panid, ken dagiti listaan.',
 'prefs-help-watchlist-token' => 'No ikkam daytoy pagikabilan ti sekreto a tulbek, agaramid ti pakan a RSS para ti binambantayam.
 No adda makaammo daytoy a tulbek ditoy a pagikabilan ket mabalin da a basaen ti binambantayam, masapul nga agpili ka ti kuwenta a seguridad.
 
-Adda ditoy ti pugto a kuwenta a mausar mo: $1',
+Adda ditoy ti pugto a kuwenta a mausarmo: $1',
 'savedprefs' => 'Naidulin dagitoy kaykayatmon.',
 'timezonelegend' => 'Sona ti oras:',
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Usaren ti wiki a kinasigud ($1)',
-'timezoneuseoffset' => 'Sabsabali (ibaga ti supli)',
-'timezoneoffset' => 'Supli¹:',
+'timezoneuseoffset' => 'Sabsabali (inaganan ti tangdan)',
+'timezoneoffset' => 'Tangda¹:',
 'servertime' => 'Oras ti server:',
 'guesstimezone' => 'Ikabil idiay pabasabasam',
 'timezoneregion-africa' => 'Aprika',
@@ -1177,25 +1181,25 @@ Adda ditoy ti pugto a kuwenta a mausar mo: $1',
 'prefs-custom-css' => 'Naiduma a CSS',
 'prefs-custom-js' => 'Naiduma a JavaScript',
 'prefs-common-css-js' => 'Bingay a CSS/JavaScript dagiti amin a kudil:',
-'prefs-reset-intro' => 'Mabalin mo nga usaren daytoy a panid tapno maisublim dagita kaykayat mo iti kinasigud daytoy a wiki.
+'prefs-reset-intro' => 'Mabalinmo nga usaren daytoy a panid tapno maisublim dagita kaykayatmo iti kinasigud daytoy a wiki.
 Ngem saanto a mabalinen nga ipasubli.',
 'prefs-emailconfirm-label' => 'Pagsingkedan ti e-surat:',
-'prefs-textboxsize' => 'Ti kadakkel ti pamalbaliw a tawa',
+'prefs-textboxsize' => 'Ti kadakkel ti pagurnosan a tawa',
 'youremail' => 'E-surat:',
 'username' => 'Nagan ti agar-aramat:',
 'uid' => 'ID ti agar-aramat:',
-'prefs-memberingroups' => 'Kameng {{PLURAL:$1| bunggoy| dagiti bunggoy}}:',
+'prefs-memberingroups' => 'Kameng iti {{PLURAL:$1|a bunggoy| a bungbunggoy}}:',
 'prefs-registration' => 'Oras a nagrehistro:',
 'yourrealname' => 'Pudno a nagan:',
 'yourlanguage' => 'Pagsasao:',
 'yourvariant' => 'Linaon ti sabali a pagsasao:',
-'prefs-help-variant' => 'Ti kaykayat mo a sabsabali a pinagsurat a maipakita kadagiti linaon ti panid daytoy a wiki.',
+'prefs-help-variant' => 'Ti kaykayatmo a sabsabali a panagsurat a maipakita kadagiti linaon ti panid daytoy a wiki.',
 'yournick' => 'Baro a pirma:',
 'prefs-help-signature' => 'Komentario kadagiti  pakipatangan a panid ket  mapirmaan koma iti "<nowiki>~~~~</nowiki>" nga agpabalin ti pirmam ken ti petsa.',
 'badsig' => 'Saan a pudno a kilaw a pirma.
 Ikur-it dagiti HTML nga etiketa.',
 'badsiglength' => 'Atiddog unay ti pirmam.
-Masapul a nababbaba ngem $1 {{PLURAL:$1| a kabalinan|dagiti kabalinan}} ti kaatiddog na.',
+Masapul a nababbaba ngem $1 {{PLURAL:$1| a karakter|kadagiti karakter}} ti kaatiddog na.',
 'yourgender' => 'Lalaki wenno Babai:',
 'gender-unknown' => 'Saan a naibagbaga',
 'gender-male' => 'Lalaki',
@@ -1206,14 +1210,14 @@ Daytoy a pakaammo ket makita ti publiko.',
 'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
 Ngem no kayatmo nga ited, maaramat daytoy a kas pammadayaw ken pangpatalged iti obram.',
 'prefs-help-email' => 'Ti e-surat a pagtaengan ket saan a masapul, ngem masapul no agsukat ka ti kontrasenias, no baka malipatam ti kontrasenias mo.',
-'prefs-help-email-others' => 'Mabalin mo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
+'prefs-help-email-others' => 'Mabalinmo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
 Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak kenka.',
 'prefs-help-email-required' => 'Masapul ti e-surat a pagtaengan.',
 'prefs-info' => 'Kangrunaan a pakaammuan',
 'prefs-i18n' => 'Internasionalisasion',
 'prefs-signature' => 'Pirma',
 'prefs-dateformat' => 'Kita ti petsa',
-'prefs-timeoffset' => 'Supli ti oras',
+'prefs-timeoffset' => 'Tangda ti oras',
 'prefs-advancedediting' => 'Dagiti nangato a pagpilian',
 'prefs-advancedrc' => 'Dagiti nangato a pagpilian',
 'prefs-advancedrendering' => 'Dagiti nangato a pagpilian',
@@ -1243,7 +1247,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 * Ti saan a nakur-it a kahon ket kayatna a saoen nga awan ti agar-aramat dita a bunggoy.
 * A * ti kunana ket saan mo a maikkat ti bunggoy no nainayonmon, wenno pagbalittaden.',
 'userrights-reason' => 'Rason:',
-'userrights-no-interwiki' => 'Awananka iti pammalubos nga agbaliw ti karkarbengan ti agar-aramat kadagiti sabali a wiki.',
+'userrights-no-interwiki' => 'Awan ti pammalubosmo nga agbaliw ti karbengan ti agar-aramat kadagiti sabali a wiki.',
 'userrights-nodatabase' => 'Awan ti database a $1 wenno baka saan a lokal.',
 'userrights-nologin' => 'Masapul a [[Special:UserLogin|sumrekka]] nga adda pakabilangan nga administrador ti magted kadagiti karbengan ti agar-aramat.',
 'userrights-notallowed' => 'Awan ti pammalubos ti pakabilangam a mangted iti kakaberngan ti agar-aramat.',
@@ -1276,7 +1280,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 
 # Rights
 'right-read' => 'Basaen dagiti panid',
-'right-edit' => 'Urnosen dagiti pampanid',
+'right-edit' => 'Agurnos kadagiti pampanid',
 'right-createpage' => 'Agaramid kadagiti panid (saan a pagtutungtongan a pampanid)',
 'right-createtalk' => 'Agaramid ti pagtungtungan a pampanid',
 'right-createaccount' => 'Agaramid kadagiti baro a pakabilangan ti agar-aramat',
@@ -1294,14 +1298,14 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-purge' => 'Pasariwaam ti cache ti pagsaadan a ti panid ket awan ti pasingkedan na.',
 'right-autoconfirmed' => 'Urnosen dagiti nasalakniban-bassit a panid',
 'right-bot' => 'Matrato a kas automatiko a panagaramid',
-'right-nominornewtalk' => 'Nga awanan ti bassit a pinagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe',
+'right-nominornewtalk' => 'Nga awanan ti bassit a panagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe',
 'right-apihighlimits' => 'Agusar ti nangatngato a patingga kadagiti pinagsapul ti API.',
-'right-writeapi' => 'Pinagusar ti pagsurat ti API',
+'right-writeapi' => 'Panagusar ti panagsurat nga API',
 'right-delete' => 'Ikkaten dagiti panid',
-'right-bigdelete' => 'Ikkaten dagiti panid nga addaan ti dadakkel a pakasaritaan',
+'right-bigdelete' => 'Ikkaten dagiti panid nga adda dagiti dakkel a pakasaritaanna',
 'right-deleterevision' => 'Ikkaten ken ipasubli dagiti nainagan a pinagbaliwan ti panid',
 'right-deletedhistory' => 'Kitaen dagiti naikabil a pakasaritaan, nga awan kaniada kadagiti nairaman a testo',
-'right-deletedtext' => 'Kitaen dagiti naikkat a testo ken dagiti nasukatan a baet ti pinagbaliwan',
+'right-deletedtext' => 'Kitaen dagiti naikkat a testo ken dagiti nasukatan a nagbaetan dagiti binaliwan',
 'right-browsearchive' => 'Biruken dagiti naikkat a panid',
 'right-undelete' => 'Isubli ti naikkat a panid',
 'right-suppressrevision' => 'Kitaen ken ipasubli dagiti binaliwan a nailemmeng kadagiti administrador',
@@ -1311,7 +1315,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-hideuser' => 'Serraan ti maysa a nagan ti agar-aramat, ilemmeng manipud ti publiko',
 'right-ipblock-exempt' => 'Labsan dagiti IP a serra, dagiti automatiko a serra ken dagiti nasakup a serra.',
 'right-proxyunbannable' => 'Labsan dagiti automatiko a serra dagiti proxie',
-'right-unblockself' => 'Ikkaten ti panaka-serra da',
+'right-unblockself' => 'Ikkaten ti panaka-serra kaniada',
 'right-protect' => 'Sukatan dagiti lessaad ti salaknib ken dagiti panid a nasalakniban ti panag-urnos',
 'right-editprotected' => 'Urnosen dagiti nasalakniban a panid (nga awan ti sariap a salaknib")',
 'right-editinterface' => 'Urnosen ti "interface" ti agar-aramat',
@@ -1324,7 +1328,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-import' => 'Agala ti pampanid manipud kadagiti sabsabali a wiki',
 'right-importupload' => 'Agala kadagiti panid a naggapu iti papeles ti pinag-ipan',
 'right-patrol' => 'Markaan a kas napatruliaan dagiti inurnos ti dadduma',
-'right-autopatrol' => 'Dagiti inurnos mo ket mamarkaan nga automatiko a napatruliaan',
+'right-autopatrol' => 'Dagiti inurnosmo ket mamarkaan nga automatiko a kas napatruliaan',
 'right-patrolmarks' => 'Kitaen dagiti kinaudian a binaliwan a  napatruliaan a marka',
 'right-unwatchedpages' => 'Kitaen ti listaan dagiti saan a nabambantayan a panid',
 'right-mergehistory' => 'Pagtitiponen ti pakasaritaan dagiti panid',
@@ -1338,42 +1342,42 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 # User rights log
 'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
 'rightslogtext' => 'Listaan daytoy kadagiti sinukatan a karbengan ti agararamat.',
-'rightslogentry' => 'Nasukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
+'rightslogentry' => 'sinukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
 'rightslogentry-autopromote' => 'na automatiko a naipangato a naggapo iti $2 idiay $3',
 'rightsnone' => '(awan)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaem datoy a panid',
-'action-edit' => 'baliwam datoy a panid',
-'action-createpage' => 'Agaramid ka kadagiti panid',
+'action-edit' => 'agurnos iti datoy a panid',
+'action-createpage' => 'agpartuat kadagiti panid',
 'action-createtalk' => 'agaramid kadagiti pagtungtungan a panid',
-'action-createaccount' => 'Aramiden ti pakabilangan daytoy nga agar-aramat',
+'action-createaccount' => 'agpartuat ti pakabilangan daytoy nga agar-aramat',
 'action-minoredit' => 'markaam a bassit nga urnos daytoy',
-'action-move' => 'Iyalis daytoy a panid',
+'action-move' => 'iyalis daytoy a panid',
 'action-move-subpages' => 'iyalis daytoy a panid, ken dagiti apo na a panid',
 'action-move-rootuserpages' => 'iyalis dagiti ramut a panid ti agar-aramat',
-'action-movefile' => 'Iyalis daytoy a papeles',
+'action-movefile' => 'iyalis daytoy a papeles',
 'action-upload' => 'ipapan daytoy a papeles',
 'action-reupload' => 'suratam manen dagiti adda a papeles',
 'action-reupload-shared' => 'paawanen daytoy a papeles idiay pagbingayan a nagikabilan',
 'action-upload_by_url' => 'ipag-ipan daytoy a papeles a naggapu ti URL',
-'action-writeapi' => 'usaren ti pinagsurat ti API',
+'action-writeapi' => 'usaren ti panagsurat ti API',
 'action-delete' => 'ikkaten daytoy a panid',
 'action-deleterevision' => 'ikkaten daytoy a binaliwan',
 'action-deletedhistory' => 'kitaen dagiti naikkat a pakasaritaan daytoy a panid',
-'action-browsearchive' => 'Birukem dagiti naikkat a panid',
-'action-undelete' => 'isublim ti pinakaikkat daytoy a panid',
-'action-suppressrevision' => 'kitaen ken ipasubli daytoy nailemmeng a pinagbaliw',
+'action-browsearchive' => 'birukem dagiti naikkat a panid',
+'action-undelete' => 'isublim ti panakaikkat daytoy a panid',
+'action-suppressrevision' => 'kitaen ken ipasubli daytoy nailemmeng a panagbaliw',
 'action-suppressionlog' => 'kitaen ti listaan a pribado',
 'action-block' => 'serraan daytoy nga agar-aramat manipud ti panag-urnos',
 'action-protect' => 'sukatan dagiti lessaad ti salaknib iti daytoy a panid',
-'action-rollback' => 'pardasan nga ipasubli dagiti inurnos ti kinaudi nga agar-aramat a nagurnos ti kaskasta a panid',
+'action-rollback' => 'pardasan nga ipasubli dagiti inurnos ti kinaudi nga agar-aramat a nagurnos ti naisangsangayan a panid',
 'action-import' => 'agala ka ti panid iti sabali a wiki',
 'action-importupload' => 'alaem daytoy a panid idiay naipan a papeles',
-'action-patrol' => 'Markaan a kas napatruliaan dagiti inurnos ti dadduma',
+'action-patrol' => 'markaan a kas napatruliaan dagiti inurnos ti dadduma',
 'action-autopatrol' => 'markaam dagiti napatruliam nga inurnos',
 'action-unwatchedpages' => 'kitaen ti listaan dagiti saan a nabambantayan a panid',
-'action-mergehistory' => 'Pagtitiponen ti pakasaritaan daytoy a panid',
+'action-mergehistory' => 'pagtitiponen ti pakasaritaan daytoy a panid',
 'action-userrights' => 'urnosen amin dagiti karbengan ti agar-aramat',
 'action-userrights-interwiki' => 'urnosen dagiti karbengan ti agar-aramat iti agar-aramat kadagiti sabsabali a wiki',
 'action-siteadmin' => 'kandaduan wenno lukatan daytoy "database"',
@@ -1383,15 +1387,15 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'nchanges' => '$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}',
 'recentchanges' => 'Kaudian a balbaliw',
 'recentchanges-legend' => 'Pagpilian kadagiti kaudian a balbaliw',
-'recentchanges-summary' => 'Bantayan iti daytoy a panid dagiti kauudian a panakabalbaliw ti wiki.',
-'recentchanges-feed-description' => 'Siputen dagiti kakaudian a panamalbaliw iti wiki iti daytoy a pakan.',
-'recentchanges-label-newpage' => 'Daytoy nga inurnos ket nakaaramid ti baro a panid',
-'recentchanges-label-minor' => 'Bassit a panag-urnos laeng daytoy',
-'recentchanges-label-bot' => 'Daytoy a panag-urnos ket inaramid ti bot',
-'recentchanges-label-unpatrolled' => 'Saan pay a napatrulian daytoy a panag-urnos',
+'recentchanges-summary' => 'Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a panid.',
+'recentchanges-feed-description' => 'Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a pakan.',
+'recentchanges-label-newpage' => 'Daytoy a panag-urnos ket nakapartuat ti baro a panid',
+'recentchanges-label-minor' => 'Daytoy ket bassit a panag-urnos',
+'recentchanges-label-bot' => 'Daytoy a panag-urnos ket inaramid babaen ti maysa a bot',
+'recentchanges-label-unpatrolled' => 'Daytoy a panag-urnos ket saan pay a naptruliaan',
 'rcnote' => "Adda dita baba {{PLURAL:$1|ti '''1''' sinukatan|dagiti naudi '''$1''' a sinukatan}} iti naudi nga {{PLURAL:$2|aldaw|'''$2''' al-aldaw}}, sipud iti $5, $4.",
 'rcnotefrom' => "Makita dita baba dagiti sinukatan manipud idi '''$2''' (agingga iti '''$1''' ti naipakita).",
-'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan mangrugi idi $1',
+'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $1',
 'rcshowhideminor' => '$1 dagiti bassit a panag-urnos',
 'rcshowhidebots' => '$1 dagiti bots',
 'rcshowhideliu' => '$1 dagiti nakastrek nga agar-aramat',
@@ -1412,7 +1416,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} kalpasan ti panag-sukat',
 'newsectionsummary' => '/* $1 */ baro a paset',
 'rc-enhanced-expand' => 'Ipakita dagiti salaysay (masapul ti JavaScript)',
-'rc-enhanced-hide' => 'Illemmeng dagiti salaysay',
+'rc-enhanced-hide' => 'Ilemmeng dagiti salaysay',
 'rc-old-title' => 'kasisigud nga inaramid a kas ti "$1"',
 
 # Recent changes linked
@@ -1430,7 +1434,7 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''napuskol'''
 'upload' => 'Mangipan iti papeles',
 'uploadbtn' => 'Mangipan iti papeles',
 'reuploaddesc' => 'Ukasen ti pag-ipan ken absubli idiay kabuklan ti pag-ipan',
-'upload-tryagain' => 'Ited ti napabaro a pinagipalawag ti papeles',
+'upload-tryagain' => 'Ited ti napabaro a panagipalawag ti papeles',
 'uploadnologin' => 'Saan a nakastrek',
 'uploadnologintext' => 'Masapul a [[Special:UserLogin|nakaserrekka]] tapno makaipanka iti papeles.',
 'upload_directory_missing' => 'Ti direktorio ti pag-ipan ($1) ket napukaw ken saan a mabalin nga aramiden iti webserver.',
@@ -1440,12 +1444,12 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''napuskol'''
 
 Ti listaan ti panagikkat ken panagiyalis daytoy a panid ket adda ditoy tapno makitam:",
 'uploadtext' => "Usaren ti kabuklan dita baba ti pinag-ipan ti papeles.
-Ti panagkita wenno panagbiruk ti napalubos a pinag-ipan ti papeles mapan ka idiay [[Special:FileList|listaan dagiti napag-ipan a papeles]], dagiti pinag-ipan wenno pinag-ipan manen ket nakalista pay idiay [[Special:Log/upload|listaan ti pinag-ipan]], dagiti pinagikkat ket idiay [[Special:Log/delete|listaan ti pinagikkat]].
+Ti panagkita wenno panagbiruk ti napalubos a pinag-ipan ti papeles mapan ka idiay [[Special:FileList|listaan dagiti napag-ipan a papeles]], dagiti pinag-ipan wenno pinag-ipan manen ket nakalista pay idiay [[Special:Log/upload|listaan ti pinag-ipan]], dagiti panagikkat ket idiay [[Special:Log/delete|listaan ti panagikkat]].
 
 Ti panagikabil ti papeles iti panid, usaren ti panilpo a kas dagiti sumaganad a kabuklan:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' ti panag-usar ti dakkel a bersion ti papeles
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' ti agusar ti 200 pixel a kaakaba  a pinagparang iti kahon idiay kannigid nga adda 'sabali a testo' ti pinagipalpalawag
-* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' ti dagus a panagsilpo idiay papeles nga awan ti pinagparang ti papeles",
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' ti agusar ti 200 pixel a kaakaba  a panagparang iti kahon idiay kannigid nga adda 'sabali a testo' ti panagipalpalawag
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' ti dagus a panagsilpo idiay papeles nga awan ti panagparang ti papeles",
 'upload-permitted' => 'Dagiti mapalubosan a kita ti papeles: $1.',
 'upload-preferred' => 'Dagiti mabalbalin a kita ti papeles: $1.',
 'upload-prohibited' => 'Dagiti maiparit a kita ti papeles: $1.',
@@ -1471,56 +1475,56 @@ Pangngaasi ta naganan manen ti papeles ken padasen manen nga ipapan.',
 'filetype-badmime' => 'Dagiti papeles a kas MIME a kita "$1" ket saan a mapalubosan a maipan.',
 'filetype-bad-ie-mime' => 'Saan a makapag-ipan ti papeles ngamin ket masarakan ti Internet Explorer a kas "$1", a saan a mabalin ken makapataud a dakes a kita ti papeles.',
 'filetype-unwanted-type' => "'''\".\$1\"''' ti saan a mapalubusan a kita ti papeles.
-Mapalubusan a {{PLURAL:\$3|kita ti papeles ket|kadagiti kita ti papeles ket}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|saan a mapalubusan a kita ti papeles|dagiti saan a mapalubusan a kita ti papeles}}.
-Mapalubusan a {{PLURAL:$3|kita ti papeles ket|dagiti kita ti papeles ket}} $2.',
+Ti mapalubusan  {{PLURAL:\$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} \$2.",
+'filetype-banned-type' => 'Ti \'\'\'".$1"\'\'\' {{PLURAL:$4|ket saan a mapalubusan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}.
+Ti mapalubusan{{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.',
 'filetype-missing' => 'Daytoy a papeles ket awan ti kita na a (kasla ".jpg").',
 'empty-file' => 'Ti papeles nga intedmo ket awan ti nagyan na.',
 'file-too-large' => 'Ti papeles nga intedmo ket dakkel unay.',
 'filename-tooshort' => 'Ti nagan daytoy a papeles ket bassit unay.',
 'filetype-banned' => 'Ti kita daytoy a papeles ket maiparit.',
 'verification-error' => 'Daytoy a papeles ket saan a nakapasa ti pagsingkedan.',
-'hookaborted' => 'Ti pinagbabaro a pinadas mo ket napasardeng iti pangpa-atiddog a kawit.',
+'hookaborted' => 'Ti panagbabaro a pinadasmo ket napasardeng babaen ti pangpa-atiddog a kawit.',
 'illegal-filename' => 'Ti nagan daytoy a papeles ket saan a maipalubos.',
 'overwrite' => 'Saan a mabalin a suratan manen iti papeles nga adda ditan.',
 'unknown-error' => 'Adda di amammo a biddut.',
 'tmp-create-error' => 'Saan a makaaramid ti saan nga agnayon a papeles.',
-'tmp-write-error' => 'Biddut ti pinakasurat  dagiti saan nga agnayon a papeles.',
+'tmp-write-error' => 'Biddut ti panakaisurat  dagiti saan nga agnayon a papeles.',
 'large-file' => 'Ti maipatalked a papeles ket saan koma a dakdakkel ngem $1;
 daytoy a papeles ket $2.',
 'largefileserver' => 'Daytoy a papeles ket dakdakel ngem ti naaramid a mabalin para iti server.',
-'emptyfile' => 'Ti papeles nga impapan mo ket kasla awan ti nagyan na.
+'emptyfile' => 'Ti papeles nga ipanmo ket kasla awan ti nagyan na.
 Baka daytoy ket gapu ti kamali ti inkabil a nagan ti papeles.
 Pangngaasi ta kitaem no kayatmo latta nga ipapan daytoy a papeles.',
-'windows-nonascii-filename' => 'Daytoy a wiki ket saan na a tapayaen dagiti nagan ti papeles nga addaan ti kangrunaan a kababalin',
-'fileexists' => "Addaan ti nagan ti papeles a kastoy, pangngaasi ta kitaem '''<tt>[[:$1]]</tt>''' no saan ka a sigurado ti agpasukat.
+'windows-nonascii-filename' => 'Daytoy a wiki ket saanna a tapayaen dagiti nagan ti papeles nga adda ti kangrunaan a kababalin',
+'fileexists' => "Adda ti papeles nga agnagan ti kastoy, pangngaasi a kitaemti  '''<tt>[[:$1]]</tt>''' no saanka a sigurado a mangsukat.
 [[$1|thumb]]",
-'filepageexists' => "Ti pinagipalpalawag a panid ti daytoy a papeles ket naaramiden idiay '''<tt>[[:$1]]</tt>''', mgem awan ti papeles a kastoy ti addaan ti nagan na.
-Ti pakabuklan nga inkabil mo ket saan nga agparang idiay panid ti pinagipalpalawag.
+'filepageexists' => "Ti panangipalpalawag a panid ti daytoy a papeles ket naaramiden idiay '''<tt>[[:$1]]</tt>''', mgem awan ti agnagan ti katoy a papeles.
+Ti pakabuklan nga inkabilmo ket saan nga agparang idiay panid ti panangipalpalawag.
 Tapno ti pakabuklan ket agparang idiay, masapul  a baliwam idiay.
 [[$1|thumb]]",
-'fileexists-extension' => "Addaan ti papeles a kastoy ti nagan na: [[$2|thumb]]
+'fileexists-extension' => "Adda papeles nga agnagan ti kastoy: [[$2|thumb]]
 * Nagan ti naipapan a papeles: '''<tt>[[:$1]]</tt>'''
-* Nagan ti addaan a papeles: '''<tt>[[:$2]]</tt>'''
-Pangngaasi ka nga agpili ti sabali a nagan.",
+* Nagan ti adda a papeles: '''<tt>[[:$2]]</tt>'''
+Pangngaasi nga agpili ti sabali a nagan.",
 'fileexists-thumbnail-yes' => "Daytoy a papeles ket kasla imahen a napabassit ''(thumbnail)''.
 [[$1|thumb]]
-Pangngaasi ta kitaem ti papeles a '''<tt>[[:$1]]</tt>'''.
-No ti nakitam a papeles ket isu met laeng dayta dati a kadakkel, saan kan a mang-ipan iti sabali pay a napabassit nga imahen.",
+Pangngaasi a kitaem ti papeles a '''<tt>[[:$1]]</tt>'''.
+No ti nakitam a papeles ket isu met laeng dayta dati a kadakkel, saanka a mang-ipan iti sabali pay a napabassit nga imahen.",
 'file-thumbnail-no' => "Ti nagan ti papeles ket mangrugi ti '''<tt>$1</tt>'''.
 Kasla imahen a napabassit ''(thumbnail)''.
 No addaan ka ti dakkel a resolusion daytoy nga imahen ipag-ipan daytoy, no saan ket pangngaasi ta sukatam ti nagan ti papeles.",
-'fileexists-forbidden' => 'Daytoy a nagan ti papeles ket addaan dita, ken saan a mabalin a masuratan manen.
+'fileexists-forbidden' => 'Daytoy a nagan ti papeles ket adda dita, ken saan a mabalin a masuratan manen.
 No ket kayatmo latta nga agipan ti papeles, pangngaasi ta agsubli ka ken usarem ti baro a nagan.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Daytoy a nagan ti papeles ket addaan dita pagbingayan a nagikabilan ti papeles.
+'fileexists-shared-forbidden' => 'Daytoy a nagan ti papeles ket adda dita pagbingayan a nagikabilan ti papeles.
 No ket kayatmo latta nga agipan ti papeles, pangngaasi ta agsubli ka ken usarem ti baro a nagan.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Daytoy a papeles ket duplikado kadagiti sumaganad a {{PLURAL:$1|papeles|dagiti papeles}}:',
-'file-deleted-duplicate' => 'Addaan ti papeles a kastoy ([[:$1]]) a naikkat idin.
-Kitaem kuma ti pakasaritaan a pinakaikkat ti papeles sakbay a mangirugi ka ti pinag-ipan.',
+'file-exists-duplicate' => 'Daytoy a papeles ket duplikado kadagiti sumaganad a {{PLURAL:$1|papeles|pappapeles}}:',
+'file-deleted-duplicate' => 'Ti papeles a kapadpada ti papeles a ([[:$1]]) ket naikkat idin.
+Kitaem kuma ti pakasaritaan a panakaikkat ti papeles sakbay a mangirugi ka ti pinag-ipan.',
 'uploadwarning' => 'Ballaag iti pinag-ipan',
-'uploadwarning-text' => 'Pangngaasi ta baliwam ti deskripsion ti papeles ken padasem manen.',
+'uploadwarning-text' => 'Pangngaasi a baliwam ti deskripsion ti papeles ken padasem manen.',
 'savefile' => 'Idulin ti papeles',
 'uploadedimage' => 'naipanen ti "[[$1]]"',
 'overwroteimage' => 'naipan ti baro a bersion ti "[[$1]]"',
@@ -1528,9 +1532,9 @@ Kitaem kuma ti pakasaritaan a pinakaikkat ti papeles sakbay a mangirugi ka ti pi
 'copyuploaddisabled' => 'Naiddep ti pinag-ipan iti URL.',
 'uploadfromurl-queued' => 'Dagiti pinag-ipan mo ket naikabil ti pinagurayan.',
 'uploaddisabledtext' => 'Napawilan ti pinag-ipan iti papeles.',
-'php-uploaddisabledtext' => 'Ti pag-ipan ti papeles ket naiddep idiay PHP.
-Panngaasi ta kitaem ti pannakaikabil ti pag-ipan ti papeles.',
-'uploadscripted' => 'Daytoy a papeles ket adda nagyan na a HTML wenno panagsurat a kodigo na baka agpakamali ti pinagbasa ti sapot a  pagbasabasa.',
+'php-uploaddisabledtext' => 'Ti pinag-ipan ti papeles ket naiddep idiay PHP.
+Panngaasi a kitaem ti pannakaikabil ti pinag-ipan ti papeles.',
+'uploadscripted' => 'Daytoy a papeles ket adda nagyan na a HTML wenno panagsurat a kodigo a mabalin nga agpakamali ti panagbasa ti sapot a  pagbasabasa.',
 'uploadvirus' => 'Addaan ti birus daytoy a papeles! Salaysay: $1',
 'uploadjava' => 'Daytoy a papeles ket ZIP a papeles nga adda nagyan na a Java .a kita ti papeles.
 Saan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsan da dagiti seguridad a pangrestrikto.',
@@ -1538,8 +1542,8 @@ Saan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsan da dagiti se
 'sourcefilename' => 'Taudan a nagan ti papeles:',
 'sourceurl' => 'Taudan ti URL:',
 'destfilename' => 'Pangipanan ti nagan ti papeles:',
-'upload-maxfilesize' => 'Pinakangato ti kadakkel ti papeles: $1',
-'upload-description' => 'Pinagipalpalawag ti papeles',
+'upload-maxfilesize' => 'Kadakkel a rukod ti papeles: $1',
+'upload-description' => 'Panagipalpalawag ti papeles',
 'upload-options' => 'Pagpilian ti pinag-ipan',
 'watchthisupload' => 'Bantayan daytoy a papeles',
 'filewasdeleted' => 'Ti papeles a nanaganan ti kastoy ket naipapan idin ken napaikkaten.
@@ -1562,10 +1566,10 @@ $1',
 Pangngaasi a kontaken ti [[Special:ListUsers/sysop|administrador]]',
 'upload-misc-error' => 'Di ammo a biddut ti panag-ipan',
 'upload-misc-error-text' => 'Adda saan nga ammo a biddut ti napasamak idi agdama a nag-ipan.
-Pangngaasinga a  kitaen ti URL ket umisu  ken maserrekan ken padasem manen.
+Pangngaasi a  kitaen ti URL ket umisu  ken maserrekan ken padasem manen.
 No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administrador]].',
 'upload-too-many-redirects' => 'Adu unay ti baw-ing daytoy nga URL',
-'upload-unknown-size' => 'Di ammo ti kadakkel na',
+'upload-unknown-size' => 'Di amammo ti kadakkelna',
 'upload-http-error' => 'Naka-adda ti biddut ti HTTP: $1',
 'upload-copy-upload-invalid-domain' => 'Ti kopia a panagipan ket saan a magun-od manipud iti daytoy a pagturayan.',
 
@@ -1573,11 +1577,11 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-stream' => 'Saan a maiwaig ti papeles $1.',
 'backend-fail-backup' => 'Saan a maidulin ti papeles $1.',
 'backend-fail-notexists' => 'Ti papeles a $1 ket awanen.',
-'backend-fail-hashes' => 'Saana maala dagiti papeles a hash tapno maipada.',
+'backend-fail-hashes' => 'Saan a maala dagiti papeles a hash tapno maipada.',
 'backend-fail-notsame' => 'Addaan ti saan a kapada tipapeles idiay $1.',
 'backend-fail-invalidpath' => '$1 ket imbalido a pagnaan ti pagidulinan.',
 'backend-fail-delete' => 'Saan a maikkat ti papeles $1.',
-'backend-fail-alreadyexists' => 'Ti papeles $1 ket aaddanen.',
+'backend-fail-alreadyexists' => 'Ti papeles $1 ket addan.',
 'backend-fail-store' => 'Saan a maidulin ti papeles $1 idiay $2.',
 'backend-fail-copy' => 'Saan a makopia ti papeles $1 idiay $2.',
 'backend-fail-move' => 'Saan a maiyalis ti papeles $1 idiay $2.',
@@ -1586,12 +1590,13 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-closetemp' => 'Saan a marikpan ti temporario a papeles.',
 'backend-fail-read' => 'Saan a mabasa ti papeles $1.',
 'backend-fail-create' => 'Saan a masuratan ti papeles $1.',
-'backend-fail-maxsize' => 'Saan a masuratan ti papeles $1 gapu ta dakdakkel ngem {{PLURAL:$2|maysa a byte|$2 a dagiti bytes}}.',
+'backend-fail-maxsize' => 'Saan a masuratan ti papeles $1 gapu ta dakdakkel ngem {{PLURAL:$2|maysa a byte|dagiti $2 a bytes}}.',
 'backend-fail-readonly' => 'Ti pagidulinan a kalikudan ti "$1" ket agdama a mabasa laeng. Ti rason a naited idi ket: "$2"',
 'backend-fail-synced' => 'Ti papeles "$1" ket bangking ti kasasaad na  iti kinauneg a pagidulinan ti kalikudan',
 'backend-fail-connect' => 'Saan a makaikapet idiay pagidulinan a kalikudan  "$1".',
 'backend-fail-internal' => 'Adda di amammo a biddut ti napasamak idiay pagidulinan a kalikudan "$1".',
 'backend-fail-contenttype' => 'Saan a maammoan ti kita ti linaon ti papeles nga idulin idiay "$1".',
+'backend-fail-batchsize' => 'Naidatag nga {{PLURAL:$1|aramid|aramid}} iti intar: $1; beddeng nga {{PLURAL:$2|aramid|aramid}}: $2.',
 'backend-fail-usable' => 'Saan a masuratan ti papeles $1 gapu ta awan ti makaanay a pammalubos wenno awan dagiti direktorio/pangikabilan.',
 
 # Lock manager
@@ -1618,8 +1623,8 @@ Saan a matutup ti pinagkita ti seguridad na.',
 'uploadstash-summary' => 'Daytoy a panid ket mangted ti panagserrek ti papeles a napag-ipan (wenno nairugi nga ipan) ngem saan pay na naipablaak dita wiki. Dagitoy a papeles ket saan a makita ti sabsabali ngem laeng ti agar-aramat a nag-ipan kaniada.',
 'uploadstash-clear' => 'Dalusan dagiti na stash a papeles',
 'uploadstash-nofiles' => 'Awan ti na stash a papeles mo.',
-'uploadstash-badtoken' => 'Ti pinag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talek mo ti panag-urnos ket nagpaso. Padasem manen.',
-'uploadstash-errclear' => 'Ti pinagdalus kadagiti papeles ket napaay.',
+'uploadstash-badtoken' => 'Ti panag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talek mo ti panag-urnos ket nagpaso. Padasem manen.',
+'uploadstash-errclear' => 'Ti panagdalus kadagiti papeles ket napaay.',
 'uploadstash-refresh' => 'Pasadiwaam dagiti listaan ti papeles',
 'invalid-chunk-offset' => 'Imbalido ti maysa a supli',
 
@@ -1632,10 +1637,10 @@ Kitaen ti https://www.mediawiki.org/wiki/Manual:Image_Authorization .',
 'img-auth-badtitle' => 'Saan a makaaramid ti umisu a titulo a naggapu idiay "$1".',
 'img-auth-nologinnWL' => 'Saan ka a nakastrek ken ti "$1" ket awan idiay mabalin a listaan.',
 'img-auth-nofile' => 'Ti papeles "$1" ket awan dita.',
-'img-auth-isdir' => 'Agserserrek ka ti direktorio ti papeles "$1".
+'img-auth-isdir' => 'Agserserrekka ti direktorio ti papeles "$1".
 Ti iseserrek ti papeles ti mabalin laeng.',
 'img-auth-streaming' => 'Agwaig "$1".',
-'img-auth-public' => 'Ti opisio ti img_auth.php ket mangiruar kadagiti papeles manipud ti pribado a wiki.
+'img-auth-public' => 'Ti pamay-an ti img_auth.php ket mangiruar kadagiti papeles manipud ti pribado a wiki.
 Daytoy a wiki naipabalin a kas publiko a wiki.
 Para iti kangatuan a talinaay, nabaldado ti img_auth.php.',
 'img-auth-noread' => 'Ti agar-aramat ket awan ti pammalubos na nga agbasa "$1".',
@@ -1699,14 +1704,14 @@ No sagaten ti agar-aramat, dagiti laeng papeles a pinag-ipan ti agar-aramat ti k
 'filehist-comment' => 'Komentario',
 'filehist-missing' => 'Mapukpukaw ti papeles',
 'imagelinks' => 'Panagusar iti daytoy a papeles',
-'linkstoimage' => 'Ti sumaganad {{PLURAL:$1|a silpo ti panid|$1 a dagiti silpo ti panid}} ditoy a papeles:',
-'linkstoimage-more' => 'Adadu a $1 {{PLURAL:$1|paninillpo ti panid|panilpo ti pampanid}} ditoy a papeles.
-Dagiti sumaganad a listaan ket ipakita na ti {{PLURAL:$1|umona a panilpo ti panid|umuna a $1 paninilpo ti panid}} ditoy a papeles laeng.
+'linkstoimage' => 'Ti sumaganad {{PLURAL:$1|a silpo ti panid|kadagiti $1 a silpo ti panid}} ditoy a papeles:',
+'linkstoimage-more' => 'Adadu ngem $1 {{PLURAL:$1|a paninillpo ti panid|kadagiti panilpo ti pampanid}} ditoy a papeles.
+Ti sumaganad a listaan ket ipakita na {{PLURAL:$1|ti umona a panilpo ti panid|dagiti umuna a $1 panilpo ti panid}} ditoy a papeles laeng.
 Ti [[Special:WhatLinksHere/$2|kompleto a listaan]] ket addaan.',
 'nolinkstoimage' => 'Awan ti pampanid a nakasilpo iti daytoy a papeles.',
 'morelinkstoimage' => 'Kitaen ti [[Special:WhatLinksHere/$1|ad-adu pay a panilpo]] iti daytoy a papeles.',
 'linkstoimage-redirect' => '$1 (baw-ing ti papeles) $2',
-'duplicatesoffile' => 'Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|$1 kadagiti papeles ket duplikado}} daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):',
+'duplicatesoffile' => 'Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|kadagiti $1 papeles ket duplikado}} daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):',
 'sharedupload' => 'Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.',
 'sharedupload-desc-there' => 'Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.
 Pangngaasim a kitaem ti [$2 pagipalpalawag ti panid] ti adu pay a pakaammo.',
@@ -1725,28 +1730,28 @@ Baka kayatmo nga urnosen ti bukodna a deskripsionna idiay [$2 deskripsion ti pap
 # File reversion
 'filerevert' => 'Isubli ti $1',
 'filerevert-legend' => 'Isubli ti papeles',
-'filerevert-intro' => "Mangmangrugi ka ti agpasubli ti papeles '''[[Media:$1|$1]]''' iti [$4 bersion ti oras ket petsa nga $3, $2].",
+'filerevert-intro' => "Mangrugrugika nga agipasubli ti papeles '''[[Media:$1|$1]]''' iti [$4 bersion ti oras ket petsa nga $3, $2].",
 'filerevert-comment' => 'Rason:',
-'filerevert-defaultcomment' => 'Naisubli ti bersion sipud iti $2, $1',
+'filerevert-defaultcomment' => 'Naisubli ti bersion manipud idi $2, $1',
 'filerevert-submit' => 'Isubli',
-'filerevert-success' => "'''[[Media:$1|$1]]''' ket naipasubli idiay [$4 bersion ti oras ken petsa $3, $2].",
+'filerevert-success' => "Ti '''[[Media:$1|$1]]''' ket naipasubli idiay [$4 bersion ti oras ken petsa $3, $2].",
 'filerevert-badversion' => 'Awan ti napalubos a lokal a bersion daytoy a papeles nga adda naikkan dayta nga oras ken petsa.',
 
 # File deletion
 'filedelete' => 'Ikkaten ti $1',
 'filedelete-legend' => 'ikkaten ti papeles',
-'filedelete-intro' => "Makarugi ka ti agikkat ti '''[[Media:$1|$1]]''' ken dagiti amin a pakasaritaan na.",
-'filedelete-intro-old' => "Ikikatem ti bersion daytoy '''[[Media:$1|$1]]''' nangrugi idi [$4 $3, $2].",
+'filedelete-intro' => "Mangrugrugika nga agikkat ti '''[[Media:$1|$1]]''' ken mairaman amin a pakasaritaanna.",
+'filedelete-intro-old' => "Ikikatem ti bersion iti '''[[Media:$1|$1]]''' manipud idi [$4 $3, $2].",
 'filedelete-comment' => 'Rason:',
 'filedelete-submit' => 'Ikkaten',
 'filedelete-success' => "Naikkaten ti '''$1'''.",
-'filedelete-success-old' => "Ti bersion iti '''[[Media:$1|$1]]''' nakarugi idi $3, $2 ket naikkaten.",
+'filedelete-success-old' => "Ti bersion iti '''[[Media:$1|$1]]''' manipud idi $3, $2 ket naikkaten.",
 'filedelete-nofile' => "awan ti '''$1''' .",
 'filedelete-nofile-old' => "Awan ti nailebbeng a bersion ti '''$1''' nga addaan ti naited a kakitkita na.",
 'filedelete-otherreason' => 'Sabali/nayon a rason:',
 'filedelete-reason-otherlist' => 'Sabali a rason',
 'filedelete-reason-dropdown' => '*Kadawyan a rasrason ti pannakaikkat
-** Panagsalungasing iti karbengan ti pianagtulad
+** Panagsalungasing iti karbengan ti panagkopia
 ** Nadoble a papeles',
 'filedelete-edit-reasonlist' => 'Unosen ti rason ti panagikkat',
 'filedelete-maintenance' => 'Saan nga agnayon a naibaldado ti pinagikkat ken pinagisubli dagiti papeles iti dagdama a pinagsimpa.',
@@ -1763,13 +1768,13 @@ Ikabil: kita ti nagyan/apo a kita, e.g. <tt>image/jpeg</tt>.',
 'unwatchedpages' => 'Di mabambantayan a pampanid',
 
 # List redirects
-'listredirects' => 'Listaan dagiti panangibaw-ing',
+'listredirects' => 'Listaan dagiti baw-ing',
 
 # Unused templates
 'unusedtemplates' => 'Dagiti saan a nausar a plantilia',
-'unusedtemplatestext' => 'Daytoy a panid ket ilista na dagiti panid idiay {{ns:template}} a nagan ti lugar a saan a nairaman iti sabali a panid.
-Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem ida.',
-'unusedtemplateswlh' => 'sabali pay a panpanilpo',
+'unusedtemplatestext' => 'Daytoy a panid ket ilistana dagiti panid idiay {{ns:template}} a nagan ti lugar a saan a nairaman iti sabali a panid.
+Laglagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem ida.',
+'unusedtemplateswlh' => 'dagiti sabali pay a panilpo',
 
 # Random page
 'randompage' => 'Pugto a panid',
@@ -1777,7 +1782,7 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 
 # Random redirect
 'randomredirect' => 'Pugto a baw-ing',
-'randomredirect-nopages' => 'Awan ti bawbaw-ing iti daytoy a nagan ti lugar "$1".',
+'randomredirect-nopages' => 'Awan dagiti baw-ing iti daytoy a nagan ti lugar "$1".',
 
 # Statistics
 'statistics' => 'Estadistika',
@@ -1788,13 +1793,13 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 'statistics-header-hooks' => 'Estadistika a sabsabali',
 'statistics-articles' => 'Dagiti naglaon a panid',
 'statistics-pages' => 'Pampanid',
-'statistics-pages-desc' => 'Dagiti panid ti wiki, nairaman dagitoy kapatangan a panid, dagitoy baw-ing, ken dadduma pay',
+'statistics-pages-desc' => 'Dagiti amin a panid ti wiki, a mairaman dagiti tungtungan a panid, dagiti baw-ing, ken dadduma pay',
 'statistics-files' => 'Ti naipapan a papeles',
 'statistics-edits' => 'Dagit naurnos a panid manipud idi nairugi ti {{SITENAME}}',
-'statistics-edits-average' => 'Napipia nga urnos tungal maysa a panid',
+'statistics-edits-average' => 'Pagtengngaan nga urnos tungal maysa a panid',
 'statistics-views-total' => 'Dagiti dagup ti panagkita',
-'statistics-views-total-desc' => 'Saan a naikabil ti pagkita dagiti awan a panid ken dagiti espesial a panid',
-'statistics-views-peredit' => 'Mano a pagkita tunggal ti maysa nga urnos',
+'statistics-views-total-desc' => 'Saan a naikabil ti panagkita dagiti awan a panid ken dagiti espesial a panid',
+'statistics-views-peredit' => 'Mano a panagkita tunggal maysa nga urnos',
 'statistics-users' => 'Dagiti nakarehistro nga [[Special:ListUsers|agar-aramat]]',
 'statistics-users-active' => 'Dagiti nasiglat nga agar-aramat',
 'statistics-users-active-desc' => 'Dagiti agar-aramat a nagtungpal iti aramid idi napalubos nga {{PLURAL:$1|aldaw|$1 al-aldaw}}',
@@ -1806,36 +1811,36 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 Ngem agpasilpo da kuma ti husto a topiko.<br />
 Ti panid ket matrato a kas panangilawlawag a panid no agusar ti plantilia a nakasilpo idiay [[MediaWiki:Disambiguationspage]]",
 
-'doubleredirects' => 'Dagiti naminduan a panangbaw-ing',
-'doubleredirectstext' => 'Daytoy a panid ket ilista na dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
-Iti maysanga aray ket adda nagyan na kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudo na.
+'doubleredirects' => 'Dagiti namindua a naibaw-ing',
+'doubleredirectstext' => 'Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
+Iti tunggal maysa nga aray ket adda nagyanna kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudona.
 <del>Nakurosan</del> dagita naikabil ket napadtuan.',
 'double-redirect-fixed-move' => 'Ti [[$1]] ket naiyalisen.
 Tattan ket naibaw-ing idiay [[$2]].',
 'double-redirect-fixed-maintenance' => 'Simsimpaen dagiti namindua a naibaw-ing a naggapo idiay [[$1]] nga ipan idiay [[$2]].',
-'double-redirect-fixer' => 'Pagsimpa ti baw-ing',
+'double-redirect-fixer' => 'Panagsimpa ti baw-ing',
 
-'brokenredirects' => 'Dagiti naputed a panangbaw-ing',
+'brokenredirects' => 'Dagiti naputed a baw-ing',
 'brokenredirectstext' => 'Dagitoy sumaganad a baw-ing ket napasilpo kadagiti awan a panid:',
 'brokenredirects-edit' => 'urnosen',
 'brokenredirects-delete' => 'ikkaten',
 
-'withoutinterwiki' => 'Dagiti panid nga awanan ti panilpo a pagsasao',
+'withoutinterwiki' => 'Dagiti panid nga awan ti silpona ti pagsasao',
 'withoutinterwiki-summary' => 'Dagitoy a pampanid ket saan a nakasilpo ti sabali a bersion ti pagsasao.',
 'withoutinterwiki-legend' => 'Pagpasaruno',
 'withoutinterwiki-submit' => 'Ipakita',
 
-'fewestrevisions' => 'Dagiti panid nga addaan ti kababassitan a panangbalbaliw',
+'fewestrevisions' => 'Dagiti panid nga adda kadagiti kabassitan a panangbalbaliw',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|a byte|a bytes}}',
-'ncategories' => '$1 {{PLURAL:$1|kategoria|dagiti kategoria}}',
-'nlinks' => '$1 {{PLURAL:$1|panilpo|pampanilpo}}',
-'nmembers' => '$1 {{PLURAL:$1|kameng|kamkameng}}',
-'nrevisions' => '$1 {{PLURAL:$1|a pinagbaliwan|dagiti pinagbaliwan}}',
-'nviews' => '$1 {{PLURAL:$1|a panangkita|dagiti panangkita}}',
-'nimagelinks' => 'Inusar idiay $1 {{PLURAL:$1|panid|pampanid}}',
-'ntransclusions' => 'inusar idiay $1 {{PLURAL:$1|panid|pampanid}}',
+'nbytes' => '$1 {{PLURAL:$1|a byte|kadagiti byte}}',
+'ncategories' => '$1 {{PLURAL:$1|a kategoria|kadagiti kategoria}}',
+'nlinks' => '$1 {{PLURAL:$1|a panilpo|kadagiti panilpo}}',
+'nmembers' => '$1 {{PLURAL:$1|a kameng|kadagiti kameng}}',
+'nrevisions' => '$1 {{PLURAL:$1|a panagbalbaliw|kadagiti panagbalbaliw}}',
+'nviews' => '$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}',
+'nimagelinks' => 'Inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}',
+'ntransclusions' => 'inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}',
 'specialpage-empty' => 'Awan dagiti nagbanagan na daytoy a padamag.',
 'lonelypages' => 'Dagiti naulila a panid',
 'lonelypagestext' => 'Dagiti sumaganad a panid ket saan a nakasilpo idiay wenno naipakita kadagiti sabali a panid idiay {{SITENAME}}.',
@@ -1845,7 +1850,7 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'uncategorizedtemplates' => 'Dagiti saan a nakategoria a plantilia',
 'unusedcategories' => 'Dagiti saan a nausar a kategoria',
 'unusedimages' => 'Dagiti saan a nausar a papeles',
-'popularpages' => 'Dagiti nalatak a panid',
+'popularpages' => 'Dagiti nadayeg a panid',
 'wantedcategories' => 'Dagiti makidkiddaw a kategoria',
 'wantedpages' => 'Dagiti makidkiddaw a panid',
 'wantedpages-badtitle' => 'Saan nga umisu a titulo idiay naikabil a pagbanagan: $1',
@@ -1874,26 +1879,26 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'protectedtitlestext' => 'Dagitoy a titulo ket nasalakniban ti panakaaramid',
 'protectedtitlesempty' => 'Awan dagiti titulo a madama a nasalakniban iti dagitoy a parametro.',
 'listusers' => 'Listaan dagiti agar-aramat',
-'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnos na',
+'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnosda',
 'listusers-creationsort' => 'Ilasin no ania a petsa ti panakaaramid',
-'usereditcount' => '$1 {{PLURAL:$1|inurnos|dagiti inurnos}}',
+'usereditcount' => '$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}}',
 'usercreated' => '{{GENDER:$3|Inaramid}} idi $1 ti oras nga $2',
 'newpages' => 'Baro a pampanid',
 'newpages-username' => 'Nagan ti agar-aramat:',
 'ancientpages' => 'Dagiti kadaanan a panid',
 'move' => 'Iyalis',
 'movethispage' => 'Iyalis daytoy a panid',
-'unusedimagestext' => 'Dagiti sumaganad a papeles ket addaan ngem saanda a naikabil iti ania man a panid.
-Pangngaasi a laglagipen a dagiti sabali a pagsaadan ti apot ket makapanilpo ti papeles iti dagus a URL, ken isu pay a nailista da ditoy uray no saan da a naus-usar iti agdama.',
+'unusedimagestext' => 'Adda dagiti sumaganad a papeles ngem saanda a naikabil iti ania man a panid.
+Pangngaasi a laglagipen a dagiti sabali a sapot ti pagsaadan  ket makasilpoda ti papeles iti dagus a URL, ken isu pay a nailista da ditoy uray no saan da a naus-usar iti agdama.',
 'unusedcategoriestext' => 'Adda dagiti sumaganad a kategoria a panid, ngem awan ti sabali a panid wenno kategoria ti agus-usar kaniada.',
 'notargettitle' => 'Awan ti napuntaan',
-'notargettext' => 'Saan mo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal daytoy nga opisio.',
+'notargettext' => 'Saanmo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal daytoy nga opisio.',
 'nopagetitle' => 'Awan ti kasta a puntaan a panid',
 'nopagetext' => 'Awan ti puntaan a panid a nainaganam.',
 'pager-newer-n' => '{{PLURAL:$1|nabarbaro 1|dagiti nabarbaro $1}}',
 'pager-older-n' => '{{PLURAL:$1|nadadaan 1|nadadaan $1}}',
 'suppress' => 'Pakapansin',
-'querypage-disabled' => 'Daytoy a nangruna a panid ket nabaldado gapu kadagiti rason a pinagtungpal.',
+'querypage-disabled' => 'Daytoy a nangruna a panid ket nabaldado gapu kadagiti rason a panagtungpal.',
 
 # Book sources
 'booksources' => 'Nagtaudan ti liblibro',
@@ -1932,22 +1937,22 @@ Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-arama
 'allpages-hide-redirects' => 'Ilemmeng dagiti baw-ing',
 
 # SpecialCachedPage
-'cachedspecial-viewing-cached-ttl' => 'Kitkitaenm ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.',
+'cachedspecial-viewing-cached-ttl' => 'Kitkitaem ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.',
 'cachedspecial-viewing-cached-ts' => 'Kitkitaem ti maysa a naidulin a bersion iti daytoy a panid, a baka daytoy ket saan a kompleto nga agpayso.',
 'cachedspecial-refresh-now' => 'Kitaen ti kinaudian.',
 
 # Special:Categories
 'categories' => 'Dagiti kategoria',
-'categoriespagetext' => 'Dagiti sumaganad a {{PLURAL:$1|nagyan ti kategoria|dagiti nagyan ti kategoria}} pampanid wenno midia.
-[[Special:UnusedCategories|Saan nga nausar nga kategoria]] ket saan nga maiparang ditoy.
-Kitaen met ti [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
+'categoriespagetext' => 'Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.
+[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.
+Kitaen met [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
 'categoriesfrom' => 'Ipakita dagiti kategoria a mangrugi iti:',
 'special-categories-sort-count' => 'paglalasinen babaen ti bilang',
 'special-categories-sort-abc' => 'paglalasinen a pang-abesedario',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'Dagiti naikkat nga inararamid ti agar-aramat',
-'deletedcontributions-title' => 'Dagiti naikkat nga inararamid iti agar-aramat',
+'deletedcontributions-title' => 'Dagiti naikkat nga inararamid ti agar-aramat',
 'sp-deletedcontributions-contribs' => 'dagiti parawad',
 
 # Special:LinkSearch
@@ -1957,8 +1962,8 @@ Kitaen met ti [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
 'linksearch-ok' => 'Biruken',
 'linksearch-text' => 'Ti naataap a tarheta a kas "*.wikipedia.org" ket mabalin nga usaren.
 Masapul ti kangatuan a pagturayan, a kaspagarigan "*.org".<br />
-Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo) .',
-'linksearch-line' => '$1 ket nakasilpo idiay $2',
+Natapayaen a protokol: <tt>$1</tt> (saanmo nga inayon dagitoy iti panagbirukmo) .',
+'linksearch-line' => 'Ti $1 ket nakasilpo idiay $2',
 'linksearch-error' => 'Ti naatap a tarheta ket agparang laeng iti pinagrugi ti nagan ti agsangaili.',
 
 # Special:ListUsers
@@ -1969,9 +1974,9 @@ Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo
 
 # Special:ActiveUsers
 'activeusers' => 'Listaan dagiti nasiglat nga agar-aramat',
-'activeusers-intro' => 'Daytoy ti listaan dagiti agar-aramat nga adda inararamidda idi napalabas $1 {{PLURAL:$1|nga aldaw|nga dagiti aldaw}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|inurnos|dagiti inurnos}} idi kalpasan {{PLURAL:$3|nga aldaw|$3 dagiti aldaw}}',
-'activeusers-from' => 'Iparang dagiti agar-aramat mangrugi iti:',
+'activeusers-intro' => 'Daytoy ti listaan dagiti agar-aramat nga adda inararamidda kadagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga alaldaw}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}} idi kalpasan ti  {{PLURAL:$3|nga aldaw|$3 nga alaldaw}}',
+'activeusers-from' => 'Iparang dagiti agar-aramat mangrugi iti:',
 'activeusers-hidebots' => 'Ilemmeng dagiti bots',
 'activeusers-hidesysops' => 'Ilemmeng dagiti administrador',
 'activeusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
@@ -1982,34 +1987,34 @@ Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo
 
 # Special:ListGroupRights
 'listgrouprights' => 'Dagiti karbengan ti bunggoy ti agar-aramat',
-'listgrouprights-summary' => 'Dagiti sumaganad a listaan ti bunggoy ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrek da.
-Adda pay ngata [[{{MediaWiki:Listgrouprights-helppage}}|adu pay a pakaammo]] a maipapan kadagiti kabukbukod da a karbengan.',
+'listgrouprights-summary' => 'Dagiti sumaganad a listaan ti bunggoy ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrekda.
+Adda pay ngata [[{{MediaWiki:Listgrouprights-helppage}}|adu pay a pakaammo]] a maipapan kadagiti kabukbukodda a karbengan.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">Naikkan ti karbengan</span>
 * <span class="listgrouprights-revoked">Naikkat ti karbengan</span>',
 'listgrouprights-group' => 'Bunggoy',
 'listgrouprights-rights' => 'Dagiti karbengan',
 'listgrouprights-helppage' => 'Help:Karbengan ti bunggoy',
 'listgrouprights-members' => '(listaan dagiti kameng)',
-'listgrouprights-addgroup' => 'Inayon {{PLURAL:$2|bunggoy|dagiti bunggoy}} : $1',
+'listgrouprights-addgroup' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} : $1',
 'listgrouprights-removegroup' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bunggoy}}: $1',
 'listgrouprights-addgroup-all' => 'Inayon amin dagiti bunggoy',
 'listgrouprights-removegroup-all' => 'Ikkatem amin dagiti bunggoy',
-'listgrouprights-addgroup-self' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} ti bukod da a pakabilangan: $1',
-'listgrouprights-removegroup-self' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bungoy}} ti bukod da a pakabilangan: $1',
-'listgrouprights-addgroup-self-all' => 'Inayon amin dagiti bunggoy ti bukod mo a pakabilangan',
+'listgrouprights-addgroup-self' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} ti bukodda a pakabilangan: $1',
+'listgrouprights-removegroup-self' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bungoy}} ti bukodda a pakabilangan: $1',
+'listgrouprights-addgroup-self-all' => 'Inayon amin dagiti bunggoy ti bukodmo a pakabilangan',
 'listgrouprights-removegroup-self-all' => 'Ikkatem amin dagiti bunggoy ti bukod a pakabilangan',
 
 # E-mail user
-'mailnologin' => 'Awan pagipatulodan a pagtaengan',
+'mailnologin' => 'Awan ti pagipatulodan a pagtaengan',
 'mailnologintext' => 'Masapul a [[Special:UserLogin|nakastrekka]] ken adda umisu nga e-surat a pagtaengan idiay [[Special:Preferences|kaykayatmo]] ti agipatulod ti e-surat kadagiti sabsabali nga agar-aramat.',
 'emailuser' => 'E-suratan daytoy nga agar-aramat',
 'emailpage' => 'E-suratan ti agar-aramat',
-'emailpagetext' => 'Mabalin mo nga usaren ti kinabuklan dita baba nga agipatulod ti e-surat a mensahe daytoy nga agar-aramat.
-Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agparang a kas "Naggapu" a pagtaengan ti e-surat, tapno ti nagipatulodam ket makasungbat kenka.',
+'emailpagetext' => 'Mabalinmo nga usaren ti kinabuklan dita baba nga agipatulod ti e-surat a mensahe daytoy nga agar-aramat.
+Ti e-surat nga inkabilmo idiay  [[Special:Preferences|kakaykayatam]] ket agparang a kas "Naggapu" a pagtaengan ti e-surat, tapno ti nagipatulodam ket makasungbat kenka.',
 'usermailererror' => 'Kita ti surat ket nangisubli ti biddut:',
 'defemailsubject' => '{{SITENAME}} e-surat naggapo ken ni "$1"',
-'usermaildisabled' => 'Saan mo a mabalin ti agipatulod ti e-surat',
-'usermaildisabledtext' => 'Saan mo a mabalin ti agipatulod ti e-surat kadagiti sabali nga agar-aramat ditoy a wiki',
+'usermaildisabled' => 'Saanmo a mabalin ti agipatulod ti e-surat',
+'usermaildisabledtext' => 'Saanmo a mabalin ti agipatulod ti e-surat kadagiti sabali nga agar-aramat ditoy a wiki',
 'noemailtitle' => 'Awan ti e-surat a pagtaengan',
 'noemailtext' => 'Ti agar-aramat ket saan a nagikabil ti umisu nga e-surat a pagtaengan.',
 'nowikiemailtitle' => 'Maiparit ti e-surat',
@@ -2019,13 +2024,13 @@ Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agpara
 'emailusername' => 'Nagan ti agar-aramat:',
 'emailusernamesubmit' => 'Ited',
 'email-legend' => 'Ipatulod ti e-surat ti sabali a {{SITENAME}} ti agar-aramat',
-'emailfrom' => 'Naggapo ken ni:',
+'emailfrom' => 'Naggapo kenni:',
 'emailto' => 'Para kenni:',
 'emailsubject' => 'Suheto:',
 'emailmessage' => 'Mensahe:',
 'emailsend' => 'Ipatulod',
 'emailccme' => 'E-surat iti kopia ti mensahek.',
-'emailccsubject' => 'Kopya ti mensahem ken ni $1: $2',
+'emailccsubject' => 'Kopia ti mensahem kenni $1: $2',
 'emailsent' => 'Naipatuloden ti e-surat',
 'emailsenttext' => 'Naipatuloden ti e-surat a mensahem.',
 'emailuserfooter' => 'Daytoy nga e-surat ket impatulod ni $1 kenni $2 iti "E-surat" a panagararamid idiay {{SITENAME}}',
@@ -2039,7 +2044,7 @@ Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agpara
 'mywatchlist' => 'Bambantayak',
 'watchlistfor2' => 'Para iti $1 $2',
 'nowatchlist' => 'Awan ti banag iti listaan dagiti bambantayam.',
-'watchlistanontext' => 'Pangngaasim ti $1 tapno makitam dagiti inurnos mo dita bambantayam.',
+'watchlistanontext' => 'Pangngaasim ti $1 tapno makitam dagiti inurnosmo dita bambantayam.',
 'watchnologin' => 'Saan a nakastrek',
 'watchnologintext' => 'Masapul a [[Special:UserLogin|nakastrekka]] tapno mabaliwam dagiti bambantayam a panid.',
 'addwatch' => 'Inayon iti bambantayan',
@@ -2056,12 +2061,12 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 'watchnochange' => 'Awan dagiti binambantayam ket naurnos dita panawen a naipakita.',
 'watchlist-details' => '{{PLURAL:$1|$1 panid|$1 dagiti panid}} a bambantayam, saan a mairaman dagiti panid ti tungtongan.',
 'wlheader-enotif' => '* Napakabaelan ti pakiammo ti e-surat.',
-'wlheader-showupdated' => "* Dagiti panid a nasukatan idi kinaudi a pinagbisitam ket naipakita iti '''napuskol'''",
+'wlheader-showupdated' => "* Dagiti panid a nasukatan manipud ti kinaudi a panagsarungkarmo ket naipakita iti '''napuskol'''",
 'watchmethod-recent' => 'kitkitaen dagiti kinaudi nga inurnos kadagiti bambantayan a panid',
 'watchmethod-list' => 'kitkitaen dagiti bambantayan a panid kadagiti kinaudi nga inurnos',
-'watchlistcontains' => 'Addaan ti listaan ti bambantayam iti $1 {{PLURAL:$1|a panid|a pampanid}}.',
+'watchlistcontains' => 'Ti listaan ti bambantayam ket aglaon ti $1 {{PLURAL:$1|a panid|a pampanid}}.',
 'iteminvalidname' => "Parikut iti banag '$1', imbalido a nagan...",
-'wlnote' => "Adda dita baba {{PLURAL:$1|ti kaudian a panagsukat|dagiti kaudian '''$1''' a pinagsukat}} iti naudi a {{PLURAL:$2|oras|'''$2''' oras}}, sipud idi $3, $4.",
+'wlnote' => "Adda dita baba {{PLURAL:$1|ti kaudian a panagsukat|dagiti kaudian '''$1''' a panagsukat}} iti naudi  {{PLURAL:$2|nga oras| a '''$2''' nga oras}}, manipud idi $3, $4.",
 'wlshowlast' => 'Ipakita dagiti naudi a $1 nga or-oras $2 nga al-aldaw $3',
 'watchlist-options' => 'Dagiti pagpilian ti listaan a bambantayan',
 
@@ -2077,7 +2082,7 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 'changed' => 'nasukatan',
 'created' => 'naaramid',
 'enotif_subject' => 'Ti {{SITENAME}} a panid a $PAGETITLE ket $CHANGEDORCREATED ni $PAGEEDITOR',
-'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a pinagsukat sipud ti naudi nga isasarungkarmo.',
+'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a panagsukat sipud ti naudi nga isasarungkarmo.',
 'enotif_lastdiff' => 'kitaen ti $1 tapno mabuya daytoy a pinagsukat.',
 'enotif_anon_editor' => 'di am-ammo nga agar-aramat $1',
 'enotif_body' => 'Nadungngo a $WATCHINGUSERNAME,
@@ -2120,7 +2125,7 @@ Ti makunkunam ken no masapulmo pay ti tulong:
 'exblank' => 'blanko ti panid',
 'delete-confirm' => 'Ikkaten ti "$1"',
 'delete-legend' => 'Ikkaten',
-'historywarning' => "'''Ballaag: ''' Ti panid a kayatmo nga ikkaten ket addaan iti pakasaritaan nga adda $1 {{PLURAL:$1|binaliwan|dagiti binaliwan}}:",
+'historywarning' => "'''Ballaag: ''' Ti panid a kayatmo nga ikkaten ket adda pakasaritaanna ti agarup a $1 {{PLURAL:$1|a binaliwan|kadagiti binaliwan}}:",
 'confirmdeletetext' => 'Ikkatemon ti maysa a panid agraman am-amin a pakasaritaanna.
 Pangngaasim ta pasingkedam a talaga a kayatmo nga aramiden daytoy, a maawatam ti bunga ti panangikkatmo, ken aramidem daytoy kas maiyannugot iti [[{{MediaWiki:Policy-url}}|annuroten]].',
 'actioncomplete' => 'Nalpasen a naaramid',
@@ -2130,18 +2135,18 @@ Kitaen ti $2 para iti panakrehistro dagiti naudi a naikkat.',
 'dellogpage' => 'Listaan ti panagikkat',
 'dellogpagetext' => 'Adda dita baba ti listaan dagiti kaudian a panangikkat.',
 'deletionlog' => 'listaan ti panagikkat',
-'reverted' => 'Naisubli iti immun-una a panamalbaliw',
+'reverted' => 'Naisubli iti immuna a panagbalbaliw',
 'deletecomment' => 'Rason:',
 'deleteotherreason' => 'Sabali/dadduma pay a rason:',
 'deletereasonotherlist' => 'Sabali a rason',
 'deletereason-dropdown' => '*Kadawyan a gapgapu dagiti pannakaikkat
 ** Kiddaw ti mannurat
-** Panaglabsing iti karbengan ti pinagpablaak
+** Panaglabsing iti karbengan ti panagipablaak
 ** Bandalismo',
-'delete-edit-reasonlist' => 'Urnosen dagiti rason ti pinagikkat',
-'delete-toobig' => 'Daytoy a panid ket dakkel ti pakasaritaan na, mabalin ket $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.
+'delete-edit-reasonlist' => 'Urnosen dagiti rason ti panagikkat',
+'delete-toobig' => 'Daytoy a panid ket dakkel ti pakasaritaanna, sumurok  $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.
 Ti panagikkat ti kastoy a pammpanid ket naparitan tapno mapawilan ti saan nga inkarkaro a panakadadael ti {{SITENAME}}.',
-'delete-warning-toobig' => 'Daytoy a panid ket addaan ti dakkel unay ti pakasaritaan na a panag-urnos, ti kaadu nga $1 {{PLURAL:$1|panagbaliw|dagiti panagbaliw}}.
+'delete-warning-toobig' => 'Daytoy a panid ket adda ti dakkel unay a pakasaritaan ti panag-urnos, ti kaadu nga $1 {{PLURAL:$1|panagbaliw|dagiti panagbaliw}}.
 Ti panagikkat ket madisturbo ti panagpataray ti database ti {{SITNAME}};
 agal-aluad ka a mangrugi.',
 
@@ -2150,22 +2155,22 @@ agal-aluad ka a mangrugi.',
 'rollback_short' => 'Isubli',
 'rollbacklink' => 'isubli',
 'rollbackfailed' => 'Napaay ti panangisubli',
-'cantrollback' => 'Saan a maisubli ti pinagurnos;
+'cantrollback' => 'Saan a maisubli ti panagurnos;
 ti naudi a nakaaramid ket iti laeng nagsurat daytoy a panid..',
-'alreadyrolled' => 'Saan a maipasubli ti kinaudi a pinagurnos iti [[:$1]] ni [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
-addaan sabali a naurnos wenno nagipasubli ti panid.
+'alreadyrolled' => 'Saan a maipasubli ti kinaudi a panagurnos iti [[:$1]] ni [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+adda sabali a naurnos wenno nagipasubli ti panid.
 
-Ti kinaudi a nagurnos daytoy a panid ket ni [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ti pinagurnos a pakabuklan ket: \"''\$1''\".",
-'revertpage' => 'Insubli ti pinagurnos ni [[Special:Contributions/$2|$2]] ([[User talk:$2|pagtutungtongan]]), naisubli iti kaudian a pinagbaliw ni [[User:$1|$1]]',
-'revertpage-nouser' => 'Insubli ti pinagurnos ni (naikkat ti nagan ti agar-aramat) iti kinaudi a pinagbaliw ni [[User:$1|$1]]',
+Ti kinaudi a panagurnos daytoy a panid ket babaen ni [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Ti panagurnos a pakabuklan ket: \"''\$1''\".",
+'revertpage' => 'Insubli ti panagurnos ni [[Special:Contributions/$2|$2]] ([[User talk:$2|pagtutungtongan]]), naisubli ti kinaudi a panagbaliw ni [[User:$1|$1]]',
+'revertpage-nouser' => 'Naisubli ti panagurnos ni (naikkat ti nagan ti agar-aramat) ti kinaudi a panagbaliw ni [[User:$1|$1]]',
 'rollback-success' => 'Naibabawi dagiti panag-urnos ni $1;
-naisubli manen iti naudi a panagbaliw ni $2.',
+naisubli manen ti naudi a panagbaliw ni $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Napaay ti gimong',
-'sessionfailure' => 'Addaan ti parikut ti gimong ti pinagserrek mo;
-daytoy nga aramid ket naibabawi a kas pagpawilan ti pinaghijack ti gimong.
+'sessionfailure' => 'Adda parikut ti gimong ti panagserrekmo;
+daytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti gimong.
 Agsubli ka ti naggapuam a panid, ikargam ti panid ken padasem manen.',
 
 # Protect
@@ -2187,14 +2192,14 @@ Kitaen ti [[Special:ProtectedPages|listaan kadagiti nasalakniban a panid]] ti li
 'protect_expiry_invalid' => 'Imbalido ti oras a panagpaso.',
 'protect_expiry_old' => 'Napalabasen ti oras ti panagpaso.',
 'protect-unchain-permissions' => 'Lukatan dagiti pagpilian ti salaknib',
-'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti saluad ditoy ti panid a '''$1'''.",
-'protect-locked-blocked' => "Saan mo a mabalin a sukatan dagiti kita ti salaknib no naserraan ka.
+'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti salaknib para iti panid ti '''$1'''.",
+'protect-locked-blocked' => "Saanmo a mabalin a sukatan dagiti kita ti salaknib no naserraan ka.
 Adda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
 'protect-locked-dblock' => "Ti kita ti salaknib ket saan a masukatan gapu ti agdama a kandado ti database.
 Adda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
 'protect-locked-access' => "Awan ti pammalubos ti pakabilangam a mangsukat kadagiti lessaad ti salaknib ti panid.
 Dagitoy dagiti agdama a kasasaad ti panid a '''$1''':",
-'protect-cascadeon' => 'Daytoy a panid ket nasalakniban iti agdama gapu ta nairaman iti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti sipapakat a salaknib ti amin-amin.
+'protect-cascadeon' => 'Daytoy a panid ket agdama a  nasalakniban gapu ta nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} ti sipapakat a salaknib ti amin-amin.
 Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignayen ti salaknib nga amin-amin.',
 'protect-default' => 'Mabalin amin nga agar-aramat',
 'protect-fallback' => 'Masapul ti "$1" a pammalubos',
@@ -2205,10 +2210,10 @@ Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignaye
 'protect-expiring-local' => 'agpaso $1',
 'protect-expiry-indefinite' => "inggana't inggana",
 'protect-cascade' => 'Salakniban dagiti pampanid a nairaman iti daytoy a panid (babaen ti sariap a salaknib)',
-'protect-cantedit' => 'Saanmo a masuktan ti lessaad ti salaknib daytoy a panid, ta awananka iti pammalubos nga agurnos',
+'protect-cantedit' => 'Saanmo a masuktan ti lessaad ti salaknib iti daytoy a panid, gapu ta awan ti pammalubosmo nga agurnos iti daytoy.',
 'protect-othertime' => 'Sabali nga oras:',
 'protect-othertime-op' => 'sabali nga oras',
-'protect-existing-expiry' => 'Daytoy agpaso nga oras: $3, $2',
+'protect-existing-expiry' => 'Ti adda a panagpaso ti oras: $3, $2',
 'protect-otherreason' => 'Sabali/dadduma a rason:',
 'protect-otherreason-op' => 'Sabali a rason',
 'protect-dropdown' => '*Kadawyan a rason ti panagsalaknib
@@ -2231,31 +2236,31 @@ Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignaye
 'restriction-upload' => 'Pang-ipan',
 
 # Restriction levels
-'restriction-level-sysop' => 'sibubukel a nasalakniban',
+'restriction-level-sysop' => 'napno a nasalakniban',
 'restriction-level-autoconfirmed' => 'nasalakniban bassit',
 'restriction-level-all' => 'ania man a lessaad',
 
 # Undelete
 'undelete' => 'Kitaen dagiti naikkat a pampanid',
 'undeletepage' => 'Kitaen ken isubli dagiti naikkat a panid',
-'undeletepagetitle' => "'''TI sumaganad ket buklen dagiti naikkat a pinagbaliw ti [[:$1|$1]]'''.",
+'undeletepagetitle' => "'''TI sumaganad ket buklen dagiti naikkat a panagbaliw ti [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Kitaen dagiti naikkat a pampanid',
-'undeletepagetext' => 'Dagiti sumaganad {{PLURAL:a panid ket naikkaten ngem|$1 dagiti panid ket naikkaten ngem}} addaan da pay idiay a nailebbeng ken maipasubli pay.
-Ti lebbeng ket mabalin a mapaminsanan a dalusan.',
+'undeletepagetext' => 'Ti sumaganad a {{PLURAL:$1|panid ket naikkaten ngem|$1 pampanid ket naikkaten ngem}} adda pay naarkibo ken mabalin pay a maipasubli .
+Ti arkibo ket mabalin a sagpaminsan a madalusan.',
 'undelete-fieldset-title' => 'Ipasubli dagiti pinagbaliwan',
-'undeleteextrahelp' => "Ti pinagisubli dagiti amin a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken agtakla ti '''''{{int:undeletebtn}}'''''.
+'undeleteextrahelp' => "Ti panagisubli dagiti amin a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken agtakla ti '''''{{int:undeletebtn}}'''''.
 Ti agaramid ti napilian a pagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken agtakla ti '''''{{int:undeletebtn}}'''''.",
-'undeleterevisions' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} ti nailebben',
+'undeleterevisions' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}} ti nailebben',
 'undeletehistory' => 'No ipasublim daytoy a panid, amin dagiti pinagbaliwan ket maipasubli idiay pakasaritaan.
 Ket no adda baro a panid a kanagnagan na a naaramid ti napalabas a pinagikkat, dagiti naipasubli a pinagbaliwan ket agparang idiay napalabas a pakasaritaan.',
-'undeleterevdel' => 'Ti pinagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti pinagbaliwan ti papeles ket maikkatan ti bassit.
+'undeleterevdel' => 'Ti panagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti pinagbaliwan ti papeles ket maikkatan ti bassit.
 Iti kastoy a kaso, masapul nga ikkatem ti kur-it wenno ikkatem ti lemmeng dagiti kabarbaro a naikkat a pinagbaliwan.',
 'undeletehistorynoadmin' => 'Daytoy a panid ket naikkaten.
-Ti rason ti pinagikkat ket naipakita ti pinakabuklan dita baba, ken dagita detalye ti agar-aramat a nagpabaliw ditoy a panid sakbay a naikkat.
-Ti usto a testo ti nabaliwan a panagbaliw ket adda kadagiti administrador laeng.',
-'undelete-revision' => 'Naikkat ti pinagbaliwan a $1 (sipud $4, iti $5) ni $3:',
-'undeleterevision-missing' => 'Imbalido wenno napukaw a pinagbaliw.
-Addaan ka ngata ti madi a panilpo, wenno ti pinagbaliwan ket naipasubli wenno naikkat manipud idiay nailebbeng.',
+Ti rason ti panagikkat ket naipakita ti pinakabuklan dita baba, ken dagita dsalaysay ti agar-aramat a nagpabaliw ditoy a panid sakbay a naikkat.
+Ti husto a testo ti nabaliwan a panagbaliw ket adda kadagiti administrador laeng.',
+'undelete-revision' => 'Naikkat ti binaliwan a $1 (manipud idi $4, idi $5) babaen ni $3:',
+'undeleterevision-missing' => 'Imbalido wenno napukaw a panagbaliw.
+Addaan ka ngata ti madi a panilpo, wenno ti panagbaliw ket naipasubli wenno naikkat manipud idiay nailebbeng.',
 'undelete-nodiff' => 'Awan ti nasarakan a kallabes a binaliwan.',
 'undeletebtn' => 'Isubli',
 'undeletelink' => 'kitaen/isubli',
@@ -2263,9 +2268,9 @@ Addaan ka ngata ti madi a panilpo, wenno ti pinagbaliwan ket naipasubli wenno na
 'undeletereset' => 'Isubli',
 'undeleteinvert' => 'Baliktaden ti napili',
 'undeletecomment' => 'Rason:',
-'undeletedrevisions' => '{{PLURAL:$1|1 binaliwan|$1 dagiti binaliwan}} ti naisubli',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 binaliwan|$1 dagiti binaliwan}} ken {{PLURAL:$2|1 file|$2 dagiti papeles}} ti naisubli',
-'undeletedfiles' => '{{PLURAL:$1|1 a papeles|$1 a papeles}} ti naisubli',
+'undeletedrevisions' => '{{PLURAL:$1|1 a  binaliwan|dagiti $1 a binaliwan}} ti naisubli',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 a binaliwan|dagiti $1 a binaliwan}} ken {{PLURAL:$2|1 a papeles|dagiti $2 a papeles}} ti naisubli',
+'undeletedfiles' => '{{PLURAL:$1|1 a papeles|dagiti $1 a papeles}} ti naisubli',
 'cannotundelete' => 'Napaay ti panagikkat;
 adda ngata immuna a nagikkat ti panid.',
 'undeletedpage' => "'''Naisublin ti $1'''
@@ -2284,10 +2289,10 @@ Binsiren ti [[Special:Log/delete|listaan ti naik-ikkat]] para iti listaan dagiti
 Baka laeng ket naikkaten.',
 'undelete-error' => 'Ballaag ti panagisubli ti pinagikkat ti panid',
 'undelete-error-short' => 'Biddut ti panakaikkat ti papeles: $1',
-'undelete-error-long' => 'Adda nasarakan a biddut idi pinasubli ti pinagikkat ti papeles:
+'undelete-error-long' => 'Adda nasarakan a biddut idi pinasubli ti panagikkat ti papeles:
 
 $1',
-'undelete-show-file-confirm' => 'Sigurado ka a kayatmo ti mangkita ti naikkat a baliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
+'undelete-show-file-confirm' => 'Sigurado  a kayatmo ti mangkita ti naikkat a nabaliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
 'undelete-show-file-submit' => 'Wen',
 
 # Namespace form on various pages
@@ -2295,7 +2300,7 @@ $1',
 'invert' => 'Baliktaden ti napili',
 'tooltip-invert' => 'Ikur-it daytoy a kahon ti panagilemmeng kadagiti sinukatan a panid iti uneg ti napili a nagan ti lugar (ken ti nairaman a nagan ti lugar no naikur-it)',
 'namespace_association' => 'Nairaman a nagan ti lugar',
-'tooltip-namespace_association' => 'Ikur-it daytoy a kahon ti pinagiraman ti kapatangan wenno suheto ti nagan ti lugar a nairaman kadagiti napili a nagan ti lugar.',
+'tooltip-namespace_association' => 'Ikur-it daytoy a kahon ti panagiraman ti kapatangan wenno suheto ti nagan ti lugar a nairaman kadagiti napili a nagan ti lugar.',
 'blanknamespace' => '(Umuna)',
 
 # Contributions
@@ -2315,8 +2320,8 @@ $1',
 'sp-contributions-deleted' => 'dagiti naikkat nga inararamid ti agar-aramat',
 'sp-contributions-uploads' => 'dagiti pang-ipan',
 'sp-contributions-logs' => 'listaan',
-'sp-contributions-talk' => 'makipatang',
-'sp-contributions-userrights' => 'mang-iggem dagiti kaberngan ti agar-aramat',
+'sp-contributions-talk' => 'tungtungan',
+'sp-contributions-userrights' => 'panagtaripatu kadagiti kaberngan ti agar-aramat',
 'sp-contributions-blocked-notice' => 'Naserraan tatta daytoy nga agar-aramat.
 Ti naudi a listaan ti panakaserra ket adda dita baba ta usaren a reperensia:',
 'sp-contributions-blocked-notice-anon' => 'Daytoy nga IP a pagtaengan ket naserraan.
@@ -2333,14 +2338,14 @@ Ti naudi a listaan ti panakaserra ket adda dita baba ta usaren a reperensia:',
 'linkshere' => "Nakasilpo ti sumaganad a pampanid iti '''[[:$1]]''':",
 'nolinkshere' => "Awan ti pampanid a nakasilpo iti '''[[:$1]]'''.",
 'nolinkshere-ns' => "Awan dagiti panid a nakasilpo idiay '''[[:$1]]''' iti napili a nagan ti lugar.",
-'isredirect' => 'ibaw-ing ti panid',
+'isredirect' => 'baw-ing a panid',
 'istemplate' => 'mairaman',
 'isimage' => 'panilpo ti papeles',
 'whatlinkshere-prev' => '{{PLURAL:$1|kallabes|kallabes $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sumaruno|sumaruno $1}}',
 'whatlinkshere-links' => '← silsilpo',
 'whatlinkshere-hideredirs' => '$1 a panangibaw-ing',
-'whatlinkshere-hidetrans' => '$1 dagiti mairaman',
+'whatlinkshere-hidetrans' => '$1 a mairamraman',
 'whatlinkshere-hidelinks' => '$1 a pampanilpo',
 'whatlinkshere-hideimages' => '$1 a pampanilpo ti imahen',
 'whatlinkshere-filters' => 'Dagiti sagat',
@@ -2368,8 +2373,8 @@ Ikkan ti nainaganan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid
 ** Ab-abuso kadagiti sabsabali a pakabilangan
 ** Saan a maawat a nagan ti agar-aramat',
 'ipb-hardblock' => 'Iparit kadagiti nakastrek nga agar-aramat ti agpabaliw iti naggapo ditoy nga IP a pagtaengan',
-'ipbcreateaccount' => 'Serraan ti panagparnuay iti pakabilangan',
-'ipbemailban' => 'Serraan ti agar-aramat nga agipatulod ti e-surat',
+'ipbcreateaccount' => 'Pawilan ti panagpartuat iti pakabilangan',
+'ipbemailban' => 'Pawilan ti agar-aramat nga agipatulod ti e-surat',
 'ipbenableautoblock' => 'Automatiko ti serra ti naudi nga IP a pagtaengan nga inusar daytoy nga agar-aramat, ken dagiti sumaruno nga IP a pagtaengan a padasen da nga agpabaliw',
 'ipbsubmit' => 'Serraan daytoy nga agar-aramat',
 'ipbother' => 'Sabali nga oras:',
@@ -2378,15 +2383,15 @@ Ikkan ti nainaganan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid
 'ipbotherreason' => 'Sabali/nayon a rason:',
 'ipbhidename' => 'Ilemmeng ti nagan ti agar-aramat kadagiti listaan ken inurnos',
 'ipbwatchuser' => 'Bantayan ti panid ti agar-ramat ken panid ti tungtongan daytoy nga agar-aramat',
-'ipb-disableusertalk' => 'No naserran da iparit daytoy nga agar-aramat ti agbaliw kadagiti bukodda a kapatangan a panid',
+'ipb-disableusertalk' => 'Pawilan daytoy nga agar-aramat nga agurnos kadagiti bukodda a tungtungan a panid no naserraan',
 'ipb-change-block' => 'Serraan manen ti agar-aramat kadagitoy a disso',
 'ipb-confirm' => 'Pasingkedan ti serra',
 'badipaddress' => 'Imbalido nga IP a pagtaengan',
 'blockipsuccesssub' => 'Balligi ti panangserra',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ket naserraanen.<br />
 Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti serra.',
-'ipb-blockingself' => 'Mangrugrugi ka nga agserra kenka! Sigurado nga kayatmo nga aramiden daytoy?',
-'ipb-confirmhideuser' => 'Mangrugrugi ka ti mangserra ti agar-aramat nga addaan ti napabalin na nga "ilemmeng ti agar-aramat". Iddeppen na ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Sigurado ka a kasta ti kayatmo?',
+'ipb-blockingself' => 'Mangrugrugika nga agserra kenka! Sigurado nga kayatmo nga aramiden daytoy?',
+'ipb-confirmhideuser' => 'Mangrugrugika ti mangserra ti agar-aramat nga adda ti napabalinna nga "ilemmeng ti agar-aramat". Iddeppenna ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Sigurado ka a kasta ti kayatmo?',
 'ipb-edit-dropdown' => 'Urnosen dagiti rason ti panagserra',
 'ipb-unblock-addr' => 'Lukatan ti serra ni $1',
 'ipb-unblock' => 'Lukatan ti serra ti nagan ti agar-aramat wenno IP a pagtaengan',
@@ -2395,32 +2400,32 @@ Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti
 'unblockip' => 'Lukatan ti serra ti agar-aramat',
 'unblockiptext' => 'Usaren ti kinabuklan dita baba ti pinagisubli ti pinagserrek nga agsurat ti napalubos a naserran nga IP a pagtaengan wenno nagan ti agar-aramat.',
 'ipusubmit' => 'Ikkaten daytoy a serra',
-'unblocked' => 'Naikkat ti panagserra ni [[User:$1|$1]]',
+'unblocked' => 'Naikkat ti panakaserra ni [[User:$1|$1]]',
 'unblocked-range' => '$1 naikkaten ti serra na',
 'unblocked-id' => 'Naikkaten ti serra ni $1',
 'blocklist' => 'Dagiti naserraan nga agar-aramat',
 'ipblocklist' => 'Dagiti naserraan nga agar-aramat',
 'ipblocklist-legend' => 'Biruken ti naserraan nga agar-aramat',
 'blocklist-userblocks' => 'Ilemmeng dagiti serra ti pakabilangan',
-'blocklist-tempblocks' => 'Ilemmeng dagiti saan nga agnanayon a serra',
+'blocklist-tempblocks' => 'Ilemmeng dagiti temporario a serra',
 'blocklist-addressblocks' => 'Ilemmeng ti maysa a serra dagiti IP',
-'blocklist-rangeblocks' => 'Ilemming dagiti nasakup a serra',
+'blocklist-rangeblocks' => 'Ilemmeng dagiti nasakup a serra',
 'blocklist-timestamp' => 'Petsa ken oras',
 'blocklist-target' => 'Puntaan',
 'blocklist-expiry' => 'Agpaso',
-'blocklist-by' => 'Ti naserraan nga admin',
+'blocklist-by' => 'Ti nagserra nga admin',
 'blocklist-params' => 'Parametro ti serra',
 'blocklist-reason' => 'Rason',
 'ipblocklist-submit' => 'Biruken',
 'ipblocklist-localblock' => 'Serra a lokal',
-'ipblocklist-otherblocks' => 'Sabali {{PLURAL:$1|serra|dagiti serra}}',
+'ipblocklist-otherblocks' => 'Sabali {{PLURAL:$1|a serra|kadagiti serra}}',
 'infiniteblock' => "inggana't inggana",
 'expiringblock' => 'agpaso no $1 ti oras nga $2',
 'anononlyblock' => 'di am-ammo laeng',
 'noautoblockblock' => 'nabaldado ti auto a serra',
 'createaccountblock' => 'naserraan ti pannakapartuat ti pakabilangan',
 'emailblock' => 'naserraan ti e-surat',
-'blocklist-nousertalk' => 'saan na a mabalin nga urnosen ti kapatang na a panid',
+'blocklist-nousertalk' => 'saanna a mabalin nga urnosen ti bukod a tungtungan a panid',
 'ipblocklist-empty' => 'Awan nagyan ti listaan ti serra.',
 'ipblocklist-no-results' => 'Ti kiniddaw nga IP a pagtaengan wenno nagan ti agar-aramat ket saan a naserraan',
 'blocklink' => 'serraan',
@@ -2431,21 +2436,21 @@ Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti
 'autoblocker' => 'Na-auto a serra ngamin ket ti IP a pagtaengan ket damdama nga inusar ni "[[User:$1|$1]]".
 Ti rason nga inted ti $1\'s serra ket: "$2"',
 'blocklogpage' => 'Listaan ti naserraan',
-'blocklog-showlog' => 'Daytoy nga agar-aramat ket naserraan idin.
+'blocklog-showlog' => 'Daytoy nga agar-aramat ket dati a naserraan.
 Ti listaan ti serra ket naikabil dita baba tapno mausar a reperensia:',
-'blocklog-showsuppresslog' => 'Daytoy nga agar-aramat ket naserraan ken nailemmeng idin.
+'blocklog-showsuppresslog' => 'Daytoy nga agar-aramat ket dati a naserraan ken nailemmeng.
 Ti listaan ti napasardeng ket naikabil dita baba tapno mausar a reperensia:',
-'blocklogentry' => 'naserraan ni [[$1]] nga addaan ti oras ti panagpaso nga $2 $3',
-'reblock-logentry' => 'sinukatan ti panakaserra ni [[$1]] ti agtapos nga oras nga $2 $3',
-'blocklogtext' => 'Daytoy ket listaan ti agar-aramat kadagiti pinagserra ken panaglukat ti serra
+'blocklogentry' => 'naserraan ni [[$1]] nga adda ti oras a panagpaso iti $2 $3',
+'reblock-logentry' => 'sinukatan ti panakaserra para kenni [[$1]] nga adda ti oras a panagpaso iti  $2 $3',
+'blocklogtext' => 'Daytoy ket listaan ti agar-aramat kadagiti panagserra ken panaglukat ti serra
 Dagiti na-atomatiko a panakaserra ti IP a pagtaengan ket saan a nailista.
 Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagiti agdama a naiparit a pagpataray ken dagiti serra.',
 'unblocklogentry' => 'lukatan ti serra ni $1',
 'block-log-flags-anononly' => 'dagiti di am-ammo nga agar-aramat laeng',
-'block-log-flags-nocreate' => 'naisardeng ti pinagaramid iti pakabilangan',
+'block-log-flags-nocreate' => 'nabaldado ti panagpartuat ti pakabilangan',
 'block-log-flags-noautoblock' => 'naiddep ti auto-serra',
 'block-log-flags-noemail' => 'naserraan ti e-surat',
-'block-log-flags-nousertalk' => 'saan na a mabalin nga urnosen ti tungtunganna a panid',
+'block-log-flags-nousertalk' => 'saanna a mabalin nga urnosen ti bukod a tungtungan a panid',
 'block-log-flags-angry-autoblock' => 'napabalin ti napasayaat nga auto-serra',
 'block-log-flags-hiddenname' => 'nailemmeng ti nagan ti agar-aramat',
 'range_block_disabled' => 'Ti abilidad ti administrador nga agaramid ti naabutan a serra ket naiddep.',
@@ -2454,7 +2459,7 @@ Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagi
 'ipb_hide_invalid' => 'Saan a mapasardeng daytoy a pakabilangan; adda ngata adu unay nga inurnos na.',
 'ipb_already_blocked' => ' "$1" ket naserraan',
 'ipb-needreblock' => '$1 ket naseraan. Kayatmo a sukatan ti serra na?',
-'ipb-otherblocks-header' => 'Sabali {{PLURAL:$1|naserraan|dagiti naserraan}}',
+'ipb-otherblocks-header' => 'Sabali {{PLURAL:$1|a naserraan|kadagiti naserraan}}',
 'unblock-hideuser' => 'Saanmo a maisubli ti serra daytoy nga agar-aramat, nailemmengen ti nagan daytoy nga agar-aramat.',
 'ipb_cant_unblock' => 'Biddut: ID $1 ti serra a nabirukan. Baka nalukatan ti serranan.',
 'ipb_blocked_as_range' => 'Ballag: Ti IP a pagtaengan $1 ket saan a dagus a naserraan ken saan a malukatan ti serra na.
@@ -2463,14 +2468,14 @@ Ngem, naserran a kas paset ti naabutan $2, a mabalin a malukatan ti serra na.',
 'ip_range_toolarge' => 'Dagiti serra a nasakup a dakdakkel ngem /$1 ket saan a maipalubos.',
 'blockme' => 'Serraannak',
 'proxyblocker' => 'Proxy a panagserra',
-'proxyblocker-disabled' => 'Daytoy a pinagaramid ket nabaldado.',
+'proxyblocker-disabled' => 'Daytoy a panagaramid ket nabaldado.',
 'proxyblockreason' => 'Ti IP a pagtaengam ket naserraan ngamin ket daytoy ket nakalukat a proxy.
 Pangngaasi ta kontakem ti agit-ited ti serbisio ti Internet mo wenno teknikal a tapayaen ti kaurnusam ken ibagam kaniada ti nakaro a talinaay a parikut.',
 'proxyblocksuccess' => 'Nalpasen.',
 'sorbsreason' => 'Ti IP a pagtaengam ket nakalista a kasla "nalukatan a proxy" idiay DNSBL nga inusar ti {{SITNAME}}.',
 'sorbs_create_account_reason' => 'Ti IP a pagtaengam ket nakalista a kasla "nalukatan proxy" idiay DNSBL nga inusar ti {{SITNAME}}.
-Saan ka a makaaramid ti pakabilangan',
-'cant-block-while-blocked' => 'Saan mo a maserraan dagiti sabali nga agar-aramat no naserraan ka met.',
+Saanka a makaaramid ti pakabilangan',
+'cant-block-while-blocked' => 'Saanmo a maserraan dagiti sabali nga agar-aramat no naserraan ka met.',
 'cant-see-hidden-user' => 'Ti agar-aramat a kayatmo a serraan ket naserraan ken nailemmeng.
 Ket awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno mabaliwan ti serra ti agar-aramat.',
 'ipbblocked' => 'Saan mo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraan ka met.',
@@ -2481,7 +2486,7 @@ Ket awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno
 'unlockdb' => 'Lukatan ti database',
 'lockdbtext' => 'Ti panagserra ti database ket makaikkat ti abilidad kadagiti amin nga agar-aramat ti agurnos kadagiti panid, ti panagsukat dagiti kaykayat da, ti panagurnos dagiti bambantayan da, ken dagiti sabsabali pay a masapul ti panagsukat idiay database.
 Pangngaasi ta pasingkedam daytoy a kayatmo nga aramiden, ken luktam dayta database no malpas kan nga agsimpa.',
-'unlockdbtext' => 'Ti pinaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti pinagurnos kadagiti panid, ti pinagsukat dagiti kaykayat da, ti pinagurnos dagiti bambantaya da, ken dagiti amin a makasapul ti pinagsukat idiay database.
+'unlockdbtext' => 'Ti panaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti panagurnos kadagiti panid, ti panagsukat dagiti kaykayat da, ti panagurnos dagiti bambantayanda, ken dagiti amin a makasapul ti panagsukat idiay database.
 Pangngaasi ta pasingkedam a daytoy ti kayatmo nga aramiden.',
 'lockconfirm' => 'Wen, talaga a kayatko a balunetan ti database.',
 'unlockconfirm' => 'Wen, talaga a kayatko a balunetan ti database.',
@@ -2524,39 +2529,39 @@ Kayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti
 '''Ballaag!'''
 Mabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;
 pangngaasim ta pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
-'movepagetalktext' => "Ti mainaig a panid-tungtongan ket giddato a maiyalis a karamanna '''malaksid:'''
-*No addan sigud nga adda linaonna a panid-tungtongan iti babaen ti baro a nagan, wenno
+'movepagetalktext' => "Ti mainaig a tungtungan ti panid ket giddato a maiyalis a karamanna '''malaksid:'''
+*No addan sigud nga awan linaonna a tungtungan ti panid babaen ti baro a nagan, wenno
 *No ikkatem ti kur-itna ti kahon iti baba.
 
-Kadagitoy a kaso, masapul nga iyalisr wenno itiponmo a manual ti panid no kayatmo.",
+Kadagitoy a kaso, masapul nga iyalis wenno itiponmo a manual ti panid no kayatmo.",
 'movearticle' => 'Iyalis ti panid:',
 'moveuserpage-warning' => "'''Ballaag:''' Mangrugrugi ka nga agiyalis ti panid ti agar-aramat. Pangngaasi a laglapipen a ti panid ket isu laeng ti mabalin nga iyalis ken ti agar-aramat ket ''saan'' a managanan.",
 'movenologin' => 'Saan a nakastrek',
 'movenologintext' => 'Masapul a nakarehistroka nga agar-aramat ken [[Special:UserLogin|nakastrek]] tapno makaiyalis iti panid.',
-'movenotallowed' => 'Awanka iti pammalubos mo nga agiyalis iti pampanid.',
-'movenotallowedfile' => 'Awanka iti pammalubos mo nga agiyalis iti papeles.',
+'movenotallowed' => 'Awan ti pammalubosmo nga agiyalis kadagiti panid.',
+'movenotallowedfile' => 'Awan ti pammalubosmo nga agiyalis kadagiti papeles.',
 'cant-move-user-page' => 'Awan ti pammalubos mo nga agiyalis kadagiti panid ti agar-aramat (mabalin dagiti apo ti panid).',
 'cant-move-to-user-page' => 'Awan ti pammalubos mo nga agiyalis ti panid idiay panid ti agar-aramat (mabalin dagiti apo ti panid ti agar-aramat).',
 'newtitle' => 'Iti baro a titulo:',
 'move-watch' => 'Bantayan daytoy a panid',
 'movepagebtn' => 'Iyalis ti panid',
-'pagemovedsub' => 'Balligi ti pinangiyalis',
+'pagemovedsub' => 'Balligi ti panangiyalis',
 'movepage-moved' => 'Naiyalis ti \'\'\'"$1" iti "$2"\'\'\'',
-'movepage-moved-redirect' => 'Adda met baw-ing a naramiden.',
-'movepage-moved-noredirect' => 'Ti pinagaramid ti baw-ing ket napasardeng.',
-'articleexists' => 'Addan panid nga addaan iti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
-Pangngaasim ta mangpilika iti sabali a nagan.',
-'cantmove-titleprotected' => 'Saan mo a maiyalis ti panid ditoy nga lugar, ngamin ket ti baro a titulo ket nasalaknibanti pinnakaaramid na.',
+'movepage-moved-redirect' => 'Napartuaten ti maysa a baw-ing.',
+'movepage-moved-noredirect' => 'Ti panagaramid ti baw-ing ket napasardeng.',
+'articleexists' => 'Adda panid nga adda ti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
+Pangngaasim a mangpilika iti sabali a nagan.',
+'cantmove-titleprotected' => 'Saanmo a maiyalis ti panid iti daytoy a lokasion, ngamin ket ti baro a titulo ket nasalakniban para iti panakapartuat.',
 'talkexists' => "'''Sibaballigi a naiyalis ti panid, nupay kasta saan a maiyalis ti panid ti tungtongan gapu ta addan panid-tungtongan iti baro a titulo.
 Pangngaasim ta i-manualmo lattan a pagtiponem ida.'''",
 'movedto' => 'naiyalis iti',
 'movetalk' => 'Iyalis ti mainaig a panid ti tungtongan',
-'move-subpages' => 'Iyalis dagiti apo ti panid (pangato nga $1)',
-'move-talk-subpages' => 'Iyalis dagiti apo ti panid nga kapatangan a panid (pangato nga $1)',
-'movepage-page-exists' => 'Ti panid a $1 ket addaan ken saan a mautomatiko a suratan manen.',
+'move-subpages' => 'Iyalis dagiti apo ti panid (aginggana ti $1)',
+'move-talk-subpages' => 'Iyalis dagiti apo ti panid iti tungtungan ti panid (aginggana ti $1)',
+'movepage-page-exists' => 'Ti panid ti $1 ket addan ken saan a mautomatiko a suratan manen.',
 'movepage-page-moved' => 'Naiyalis ti panid a $1 iti $2.',
 'movepage-page-unmoved' => 'Saan a maiyalis ti panid $1 iti $2.',
-'movepage-max-pages' => 'Ti kangato ti $1 {{PLURAL:$1|panid|dagiti panid}} ket naiyalis ken awan ti automatiko a maiyalis.',
+'movepage-max-pages' => 'Ti kaadu iti $1 a {{PLURAL:$1|panid|pampanid}} ket naiyalis ken awanen ti automatiko a maiyalis.',
 'movelogpage' => 'Listaan ti naiyalis',
 'movelogpagetext' => 'Adda dita baba ti listaan dagiti naiyalis a pampanid.',
 'movesubpage' => '{{PLURAL:$1|Apo ti panid|Dagiti apo ti panid}}',
@@ -2571,12 +2576,12 @@ Kayatmo nga ikkaten  tapno makaiyalis ka?',
 'delete_and_move_confirm' => 'Wen, ikkatenen ti panid',
 'delete_and_move_reason' => 'Naikkat tapno mawayaan ti panaka-iyalis idiay "[[$1]]"',
 'selfmove' => 'Ti titulo ti taudan ken ti pangipanan ket agpadpada;
-saan mo a maiyalis ti panid ti isu met laeng a panid.',
+saanmo a maiyalis ti panid ti isu met laeng a panid.',
 'immobile-source-namespace' => 'Saan a maiyalis dagiti panid idiay nagan ti lugar  "$1"',
 'immobile-target-namespace' => 'Saan a maiyalis dagiti panid idiay nagan ti lugar "$1"',
 'immobile-target-namespace-iw' => 'Ti panilpo nga interwiki ket saan na mabalin nga iyalis.',
 'immobile-source-page' => 'Saan a mabalin nga iyalis daytoy a panid.',
-'immobile-target-page' => 'Saan a maiyalis dita a papanan na a titulo.',
+'immobile-target-page' => 'Saan a maiyalis dita a papananna a titulo.',
 'imagenocrossnamespace' => 'Saan a maiyalis ti papeles idiay saan a papeles a nagan ti lugar',
 'nonfile-cannot-move-to-file' => 'Saan a maiyalis ti saan a papeles idiay papeles a nagan a lugar',
 'imagetypemismatch' => 'Ti baro a pagpaatiddog ti papeles ket saan nga agpada ti kita na',
@@ -2584,29 +2589,29 @@ saan mo a maiyalis ti panid ti isu met laeng a panid.',
 'fix-double-redirects' => 'Agpabaro ti amin a baw-ing nga agtudtudo ti kasigud a titulo',
 'move-leave-redirect' => 'Mangibati ka ti baw-ing',
 'protectedpagemovewarning' => "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti  makaiyalis.
-Ti nakaudi a naikabil a listaan ket adda iti baba tapno pag reperensia:",
-'semiprotectedpagemovewarning' => "''Pakaammo:''' Nasaluadan daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis itoy.
-Ti nakaudi a naikabil a listaan ket adda iti baba tapno mausar a reperensia:",
+Ti kinaudi a naikabil ti listaan ket adda dita baba tapno mausar a reperensia:",
+'semiprotectedpagemovewarning' => "'''Pakaammo:''' Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis daytoy.
+Ti kinaudi a naikabil ti listaan ket adda iti baba tapno mausar a reperensia:",
 'move-over-sharedrepo' => '== Addaan ti papeles ==
-[[:$1]] addaan idiay pagbingayan a nagikabilan. Ti pinagiyalis ti papeles iti titulo nga itoy ket paawanen na ti pagbingayan a papeles.',
+[[:$1]] addaan idiay pagbingayan a nagikabilan. Ti panagiyalis ti papeles iti titulo nga itoy ket paawanen na ti pagbingayan a papeles.',
 'file-exists-sharedrepo' => 'Ti napilim a nagan ti papeles ket naususaren idiay pagbingayan a nagikabilan.
 Pangngaasi ta agpili ka ti sabali a nagan.',
 
 # Export
 'export' => 'Agipan dagiti panid',
-'exporttext' => 'Maipan mo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.
+'exporttext' => 'Maipanmo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.
 Daytoy ket mabalin a maikabil iti sabali a wiki nga agususar ti MediaWiki nga usaren ti [[Special:Import|pinagala ti panid]].
 
 Ti pinagipan ti panid, ikabil ti titulo dita kahon ti teksto dita baba, maysa a titulo iti maysa a linia, ken agpili ka no ti kayatmo ket ti agdama a pinagbaliw ken amin nga daan a pinagbalbaliw, nga addaan ti linia ti pakasaritaan ti pampanid, wenno ti agdama a pinagbaliw nga addaan ti pakaammo a maipapan ti kinaudi a pinagurnos.
 
-No iti kinaudi a kaso mabalin mo nga usaren ti panilpo, a kaspagarigan [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para iti panid "[[{{MediaWiki:Mainpage}}]]".',
+No iti kinaudi a kaso mabalinmo nga usaren ti panilpo, a kas pagarigan [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para iti panid "[[{{MediaWiki:Mainpage}}]]".',
 'exportall' => 'Ipan amin a pampanid',
-'exportcuronly' => 'Iraman laeng ti agdadama pinagbaliwan, saan a ti amin a pakasaritaan',
+'exportcuronly' => 'Iraman laeng ti kinaudi a panagbaliw, saan a ti napno a pakasaritaan',
 'exportnohistory' => "----
 '''Palagip:''' Ti pagipapan dagiti punno a pakasaritaan dagiti panid iti daytoy a kinabuklan ket nabaldado gapu dagiti pinakalaing ti pinagandar a rason.",
 'exportlistauthors' => 'Iraman ti amin a listaan kadagiti nagaramid iti tunggal a maysa a panid',
 'export-submit' => 'Agipan',
-'export-addcattext' => 'Nayunan dagiti panid a naggapu idiay kategoria:',
+'export-addcattext' => 'Agnayon kadagiti panid a naggapu idiay kategoria:',
 'export-addcat' => 'Inayon',
 'export-addnstext' => 'Nayunan dagiti panid a naggapu idiay nagan ti lugar:',
 'export-addns' => 'Inayon',
@@ -2617,10 +2622,10 @@ No iti kinaudi a kaso mabalin mo nga usaren ti panilpo, a kaspagarigan [[{{#Spec
 # Namespace 8 related
 'allmessages' => 'Dagiti mensahe ti sistema',
 'allmessagesname' => 'Nagan',
-'allmessagesdefault' => 'Naisigud a testo ti mensahe',
+'allmessagesdefault' => 'Kasisigud a testo ti mensahe',
 'allmessagescurrent' => 'Agdama a testo ti mensahe',
-'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema nga addaan idiay MediaWiki nagan ti lugar.
-Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [//translatewiki.net translatewiki.net] no kayatmo ti mangted kadagiti pinagpatarus ti MediaWiki.',
+'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema a magun-od idiay MediaWiki a nagan ti lugar.
+Pangngaasi a bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.',
 'allmessagesnotsupportedDB' => "Saan a mausar daytoy a panid ngamin ket ti '''\$wgUseDatabaseMessages''' ket nabaldado.",
 'allmessages-filter-legend' => 'Sagat',
 'allmessages-filter' => 'Sagaten ti naiduma a estado:',
@@ -2634,7 +2639,7 @@ Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Loca
 # Thumbnails
 'thumbnail-more' => 'Padakkelen',
 'filemissing' => 'Mapukpukaw ti papeles',
-'thumbnail_error' => 'Biddut ti panagaramid iti bassit nga imahen: $1',
+'thumbnail_error' => 'Biddut ti panagaramid ti bassit nga imahen: $1',
 'djvu_page_error' => 'Ti DjVu a panid ket saan a nasakup',
 'djvu_no_xml' => 'Saan a naala ti XML iti DjVu a papeles',
 'thumbnail-temp-create' => 'Saan a makaaramid ti temporario a bassit a papeles',
@@ -2649,7 +2654,7 @@ Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Loca
 'import' => 'Agala dagiti panid',
 'importinterwiki' => 'Agala ti transwiki',
 'import-interwiki-text' => 'Agpili ka ti wiki ken titulo ti panid nga alaem.
-Ti pinagbaliwan dagiti petsa ken dagiti nagan ti mannurat ket maibati a kinasigud.
+Dagit panagbaliw a petsa ken dagiti nagan ti mannurat ket maipreserba.
 Amin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pinagala]].',
 'import-interwiki-source' => 'Taudan ti wiki/panid:',
 'import-interwiki-history' => 'Kopiaen amin dagiti bersion ti pakasaritaan daytoy a panid',
@@ -2658,11 +2663,11 @@ Amin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pi
 'import-interwiki-namespace' => 'Pangipanan ti nagan ti lugar:',
 'import-upload-filename' => 'Nagan ti papeles:',
 'import-comment' => 'Komentario:',
-'importtext' => 'Pangngaasi ta ipanmo ti papeles a naggapu iti nagtaudan a wiki nga agusar ti [[Special:Export|agipan]].',
+'importtext' => 'Pangngaasi nga ipanmo ti papeles a naggapu iti nagtaudan a wiki nga agusar ti [[Special:Export|agipan]].',
 'importstart' => 'Agal-ala dagiti panid...',
-'import-revision-count' => '$1 {{PLURAL:$1|a pinagbaliwan|dagiti pinagbaliwan}}',
+'import-revision-count' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}',
 'importnopages' => 'Awan dagiti panid ti maala.',
-'imported-log-entries' => 'Naala $1 {{PLURAL:$1|nailista|dagiti nailista}}.',
+'imported-log-entries' => 'Naala ti $1 {{PLURAL:$1|a nailista|kadagiti nailista}}.',
 'importfailed' => 'Napaay ti panagala: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Di amammo a kita ti taudan ti innala',
 'importcantopen' => 'Saan a maluktan ti innala a papeles',
@@ -2680,23 +2685,23 @@ Paset laeng ti papeles ti napag-ipan.',
 Awan ti saan nga agnayon a polder.',
 'import-parse-failure' => 'Napaay ti pinagala ti XML parse',
 'import-noarticle' => 'Awan ti panid a maaala!',
-'import-nonewrevisions' => 'Amin a pinagbaliwan ket naala da idi.',
+'import-nonewrevisions' => 'Amin a panagbalbaliw ket dati a naala.',
 'xml-error-string' => '$1 iti linia $2, tukol $3 (byte $4): $5',
 'import-upload' => 'Ipan ti XML data',
 'import-token-mismatch' => 'Napukaw ti gimong ti data.
 Pangngaasi ta padasem manen.',
 'import-invalid-interwiki' => 'Saan a makaala dita naited a wiki.',
-'import-error-edit' => 'Ti panid a "$1" ket saan a naala ngamin ket saan mo a mabalin nga urnosen.',
-'import-error-create' => 'Ti panid a "$1" ket saan a naala ngamin ket saan mo a mabalin nga aramiden.',
-'import-error-interwiki' => 'Ti panid "$1" ket saan a naala ngamin ket ti nagan ket nailasin para iti ruar a panagsilpo (interwiki).',
-'import-error-special' => 'Ti panid "$1" ket saan a naala ngamin ket bukod ti  espesial a nagan a lugar a saan nga agpalubos ti pampanid.',
-'import-error-invalid' => 'Ti panid "$1" ket saan a naala ngamin ket ti nagan ket imbalido.',
+'import-error-edit' => 'Ti panid ti "$1" ket saan a naala ngamin ket saan mo a mabalin nga urnosen.',
+'import-error-create' => 'Ti panid ti "$1" ket saan a naala ngamin ket saan mo a mabalin nga aramiden.',
+'import-error-interwiki' => 'Ti panid ti "$1" ket saan a naala ngamin ket ti nagan ket nailasin para iti ruar a panagsilpo (interwiki).',
+'import-error-special' => 'Ti panid ti "$1" ket saan a naala ngamin ket bukod ti  espesial a nagan a lugar a saan nga agpalubos ti pampanid.',
+'import-error-invalid' => 'Ti panid ti "$1" ket saan a naala ngamin ket ti nagan ket imbalido.',
 
 # Import log
 'importlogpage' => 'Alaen ti listaan',
-'importlogpagetext' => 'Ti taripatuen a pinagala dagiti panid nga addaan ti pakasaritaan na nga urnosen kadagiti sabsabali a wiki.',
+'importlogpagetext' => 'Ti administratibo a panagala dagiti panid nga adda ti pakasaritaanna nga urnos kadagiti sabsabali a wiki.',
 'import-logentry-upload' => 'innala ti [[$1]] iti papeles a pinag-ipan',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}',
 'import-logentry-interwiki' => 'nai-transwiki ti $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} manipud iti $2',
 
@@ -2708,7 +2713,7 @@ Pangngaasi ta padasem manen.',
 'javascripttest-pagetext-unknownframework' => 'Di amamo a pagsubsubokan a tabas "$1".',
 'javascripttest-pagetext-frameworks' => 'Pangngaasi nga agpili ti maysa kadagiti sumaganad a pagsubokan a tabas: $1',
 'javascripttest-pagetext-skins' => 'Agpili ti kudil a pangipatarayan ti pagsubokan:',
-'javascripttest-qunit-intro' => 'Kitaen [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.',
+'javascripttest-qunit-intro' => 'Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.',
 'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
@@ -2719,11 +2724,11 @@ Pangngaasi ta padasem manen.',
 'tooltip-pt-preferences' => 'Dagiti kaykayatmo',
 'tooltip-pt-watchlist' => 'Listaan dagiti panid a sipsiputem ti panagsuksutda',
 'tooltip-pt-mycontris' => 'Listaan dagiti naaramidmo',
-'tooltip-pt-login' => 'Maisingasing ti inka koma panag-serrek; nupay kasta ket saan a maipapilit',
-'tooltip-pt-anonlogin' => 'Maisingasing ti inka koma panag-serrek; nupay kasta ket saan a maipapilit',
+'tooltip-pt-login' => 'Maisingasing ti inka panag-serrek; nupay kasta, daytoy ket saan a maipapilit',
+'tooltip-pt-anonlogin' => 'Maisingasing ti inka panag-serrek; nupay kasta, daytoy ket saan a maipapilit',
 'tooltip-pt-logout' => 'Rummuar',
-'tooltip-ca-talk' => 'Pagtutungtongan maipapan iti linaon ti panid',
-'tooltip-ca-edit' => 'Mabalinmo a balbaliwan daytoy a panid. Pangngaasim ta aramaten ti buton ti ipadas sakbay nga idulinmo ti panid.',
+'tooltip-ca-talk' => 'Pagtutungtongan a maipapan ti linaon ti panid',
+'tooltip-ca-edit' => 'Mabalinmo nga urnosen daytoy a panid. Pangngaasi nga aramatem ti buton ti panagipadas sakbay nga agidulin',
 'tooltip-ca-addsection' => 'Mangirugi ti baro a paset',
 'tooltip-ca-viewsource' => 'Nasalakniban daytoy a panid.
 Mabalinmo a kitaen ti taudanna.',
@@ -2736,24 +2741,24 @@ Mabalinmo a kitaen ti taudanna.',
 'tooltip-ca-watch' => 'Inayon daytoy a panid kadagiti bambantayam',
 'tooltip-ca-unwatch' => 'Ikkatem daytoy a panid kadagiti bambantayam',
 'tooltip-search' => 'Biruken idiay {{SITENAME}}',
-'tooltip-search-go' => 'Inka idiay panid no adda kapada na a nagan',
+'tooltip-search-go' => 'Inka idiay panid nga adda kastoy a naganna no adda',
 'tooltip-search-fulltext' => 'Birukem dagiti panid daytoy a testo',
 'tooltip-p-logo' => 'Sarungkaran ti umuna a panid',
 'tooltip-n-mainpage' => 'Sarungkaran ti umuna a panid',
 'tooltip-n-mainpage-description' => 'Sarungkaran ti umuna a panid',
-'tooltip-n-portal' => 'Maipapan iti gandat no ania ti maaramidam, no sadino ti pakasarak kadagiti bambanag',
+'tooltip-n-portal' => 'Maipapan ti gandat, ti aniaman a maaramidam, no sadino ti pagbirukam kadagiti banbanag',
 'tooltip-n-currentevents' => 'Agsapul iti lugar ti likud a pakaammo kadagiti agdama a paspasamak',
 'tooltip-n-recentchanges' => 'Listaan dagiti naudi a sinukatan iti wiki.',
 'tooltip-n-randompage' => 'Mangiparuar iti pugto a panid',
 'tooltip-n-help' => 'Ti lugar a pakasapulan.',
 'tooltip-t-whatlinkshere' => 'Listaan ti am-amin a pampanid ti wiki a nakasilpo ditoy',
 'tooltip-t-recentchangeslinked' => 'Kinaudian a sinukatan  dagiti panid a nakasilpo ditoy a panid',
-'tooltip-feed-rss' => 'RSS na pakan para iti daytoy a panid',
+'tooltip-feed-rss' => 'RSS a pakan para iti daytoy a panid',
 'tooltip-feed-atom' => 'Atom a pakan para itoy a panid',
 'tooltip-t-contributions' => 'Kitaen ti listaan dagiti naaramidan daytoy nga agar-aramat',
-'tooltip-t-emailuser' => 'Patulodan iti e-surat daytoy nga agar-aramat',
+'tooltip-t-emailuser' => 'Patulodan ti e-surat daytoy nga agar-aramat',
 'tooltip-t-upload' => 'Agipan iti papeles',
-'tooltip-t-specialpages' => 'Listaan ti am-amin nga espesial a pampanid',
+'tooltip-t-specialpages' => 'Listaan ti amin nga espesial a pampanid',
 'tooltip-t-print' => 'Maimaldit a bersion ti panid',
 'tooltip-t-permalink' => 'Permanente a silpo idiay binaliwan daytoy a panid',
 'tooltip-ca-nstab-main' => 'Kitaen ti naglaon a panid',
@@ -2768,13 +2773,13 @@ Mabalinmo a kitaen ti taudanna.',
 'tooltip-ca-nstab-category' => 'Kitaen ti panid ti kategoria',
 'tooltip-minoredit' => 'Markaan daytoy a kas bassit a panag-urnos',
 'tooltip-save' => 'Idulin dagiti sinukatam',
-'tooltip-preview' => 'Ipadas dagiti sinukatam, pangngaasim ta usarem daytoy sakbay nga idulinmo ti panid!',
+'tooltip-preview' => 'Ipadas dagiti sinukatam, pangngaasimnga usarem daytoy sakbay nga idulinmo ti panid!',
 'tooltip-diff' => 'Ipakita no ania dagiti sinukatan nga inaramidmo iti testo',
 'tooltip-compareselectedversions' => 'Kitaen ti naggidiatan dagiti dua a napili a bersion daytoy a panid.',
-'tooltip-watch' => 'Inayon daytoy a panid iti listaan dagiti bambantayam',
+'tooltip-watch' => 'Inayon daytoy a panid idiay listaan dagiti bambantayam',
 'tooltip-watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
 'tooltip-watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
-'tooltip-recreate' => 'Aramidem ti panid uray no naikkat idin.',
+'tooltip-recreate' => 'Aramidem manen ti panid urayno dati a naikkat.',
 'tooltip-upload' => 'Rugian ti agip-ipan',
 'tooltip-rollback' => '"Baliktaden"   isubli ti inurnos (dagiti inurnos) ti daytoy a panid ti kinaudi a nangaramid iti maysa a takla',
 'tooltip-undo' => '"Ibabawi" ipasubli daytoy nga urnos ken lukatanna ti kinabuklan ti urnos iti panagpadas. Agpabalin daytoy a mangikabil ti rason idiay pinakabuklan.',
@@ -2785,25 +2790,26 @@ Mabalinmo a kitaen ti taudanna.',
 'notacceptable' => 'Ti server ti wiki ket saan a makaited ti data iti kinabuklan a saan a mabasa ti kliente.',
 
 # Attribution
-'anonymous' => 'Di am-ammo nga {{PLURAL:$1|agar-aramat|dagit agar-aramat}} iti {{SITENAME}}',
+'anonymous' => 'Di am-ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}',
 'siteuser' => '{{SITENAME}} nga agar-aramat $1',
 'anonuser' => '{{SITENAME}} di amammo nga agar-aramat $1',
 'lastmodifiedatby' => 'Daytoy a panid ket naudi a binalbaliwan idi $2, $1 ni $3.',
 'othercontribs' => 'Naibasar iti obra ni $1.',
 'others' => 'dadduma pay',
-'siteusers' => '!{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1',
-'anonusers' => '{{SITENAME}} di am-ammo {{PLURAL:$2|agar-aramat|digiti agar-aramat}} $1',
+'siteusers' => '{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1',
+'anonusers' => '{{SITENAME}} di am-ammo {{PLURAL:$2|nga agar-aramat|a digiti agar-aramat}} $1',
 'creditspage' => 'Dagiti pagdaydayaw ti panid',
 'nocredits' => 'Awan dagiti pakaammo ti pammadayaw nga adda ditoy a panid.',
 
 # Spam protection
 'spamprotectiontitle' => 'Panagsalaknib a sagat  para ti spam',
-'spamprotectiontext' => 'Ti teksto a kayat mo nga idulin ket sinerraan ti sagat ti spam.
-Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
+'spamprotectiontext' => 'Ti testo a kayatmo nga idulin ket sinerraan ti sagat ti spam.
+Daytoy ket mabalin a gapuanan babaen ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'spamprotectionmatch' => 'Ti sumaganad a testo ti nangirugi ti sagat ti spam: $1',
 'spambot_username' => 'Panagdalus iti MediaWiki spam',
-'spam_reverting' => 'Ipasubli ti kinaudi a pinagbaliwan nga awan dagiti nagyanna a panilpo idiay $1',
-'spam_blanking' => 'Dagiti amin nga pinagbaliw ket adda panilpo na idiay $1, ipina-blanko',
+'spam_reverting' => 'Ipasubli ti kinaudi a panagbaliw nga awan dagiti linaon a panilpo idiay $1',
+'spam_blanking' => 'Dagiti amin a panagbaliw ket aglaon kadagiti panilpo idiay $1, iblanko',
+'spam_deleting' => 'Dagiti amin a panagbaliw ket naglaon kadagiti panilpo idiay $1, ik-ikkaten',
 
 # Info page
 'pageinfo-title' => 'Pakaammo para iti "$1"',
@@ -2811,7 +2817,7 @@ Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'pageinfo-header-watchlist' => 'Listaan ti bambantayan',
 'pageinfo-header-views' => 'Dagiti pangkitaan',
 'pageinfo-subjectpage' => 'Panid',
-'pageinfo-talkpage' => 'Pakipatangan a panid',
+'pageinfo-talkpage' => 'Tungtungan a panid',
 'pageinfo-watchers' => 'Bilang dagiti agbuybuya',
 'pageinfo-edits' => 'Bilang dagiti inurnos:',
 'pageinfo-authors' => 'Ti bilang dagiti sabsabali a mannurat',
@@ -2822,16 +2828,16 @@ Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'markaspatrolleddiff' => 'Markaan a kas napatruliaan',
 'markaspatrolledtext' => 'Markaan daytoy a panid a kas napatruliaan',
 'markedaspatrolled' => 'Markaan a kas napatruliaan',
-'markedaspatrolledtext' => 'Ti napili a pinagbaliw iti [[:$1]] ket namarkaan a kas napatrulian.',
-'rcpatroldisabled' => 'Nabaldado ti pinagpatrulia kadagiti kinaudian a pinagbaliw',
+'markedaspatrolledtext' => 'Ti napili a panagbaliw iti [[:$1]] ket namarkaan a kas napatrulian.',
+'rcpatroldisabled' => 'Nabaldado ti panagpatrulia kadagiti kinaudian a pinagbaliw',
 'rcpatroldisabledtext' => 'Dagiti langa a patrulia ti kinaudi a pinagbaliwan ket agdama a nabaldado',
 'markedaspatrollederror' => 'Madi a mamarkaan a kas napatruliaan',
-'markedaspatrollederrortext' => 'Masapul nga ibagam ti markaan a kas napatruliaan a pinagbaliwan.',
-'markedaspatrollederror-noautopatrol' => 'Saan mo a mabalin a markaan dagita sinukatam a kas napatruliaan.',
+'markedaspatrollederrortext' => 'Nasken a naganam ti maysa a rebision tapno mamarkaan a kas napatruliaan.',
+'markedaspatrollederror-noautopatrol' => 'Saanmo a mabalin a markaan dagita sinukatam a kas napatruliaan.',
 
 # Patrol log
 'patrol-log-page' => 'Listaan ti napatruliaan',
-'patrol-log-header' => 'Daytoy ket listaan dagiti napatruliaan a pinagbaliwan.',
+'patrol-log-header' => 'Daytoy ket listaan dagiti napatruliaan a panagbabaliw.',
 'log-show-hide-patrol' => '$1 listaan ti napatruliaan',
 
 # Image deletion
@@ -2850,8 +2856,8 @@ $1',
 'nextdiff' => 'Sumaruno a naurnos →',
 
 # Media information
-'mediawarning' => "'''Ballaag'': Daytoy a papeles ket adda nagyan na a dakes a kodigo.
-No usarem ket, baka makompromiso ti sistema.",
+'mediawarning' => "'''Ballaag'': Daytoy a papeles ket naglaon ti dakes a kodigo.
+No usarem daytoy, baka makompromiso ti sistema.",
 'imagemaxsize' => "Ti patingga a kadakkel ti papeles:<br />''(para dagiti pagpalpalawag ti papeles a panid)''",
 'thumbsize' => 'Rukod ti imahen:',
 'widthheightpage' => '$1 × $2, $3 a {{PLURAL:$3|panid|pampanid}}',
@@ -2862,18 +2868,18 @@ No usarem ket, baka makompromiso ti sistema.",
 'svg-long-desc' => 'SVG a papeles, babassit ngem $1 × $2 pixels, kadakkel ti papeles: $3',
 'show-big-image' => 'Sibubukel a resolusion',
 'show-big-image-preview' => 'Kadakkel na daytoy a pagpadas: $1.',
-'show-big-image-other' => 'Sabali a {{PLURAL:$2|resolusion|dagiti resolusion}}: $1.',
+'show-big-image-other' => 'Sabali  {{PLURAL:$2|a resolusion|kadagiti resolusion}}: $1.',
 'show-big-image-size' => '$1 × $2 dagiti piksel',
 'file-info-gif-looped' => 'nasiluan',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kuadro| dagiti kuadro}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}',
 'file-info-png-looped' => 'nasiluan',
-'file-info-png-repeat' => 'pinaayayam $1 {{PLURAL:$1|beses|beses}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kuadro| dagiti kuadro}}',
+'file-info-png-repeat' => 'pinaayayam ti $1 {{PLURAL:$1|a beses|a beses}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}',
 
 # Special:NewFiles
 'newimages' => 'Galeria dagiti kabarbaro a papeles',
 'imagelisttext' => "Adda dita baba ti listaan ti ''$1''' {{PLURAL:$1|a papeles|dagiti papeles}} a nailasin a kas $2.",
-'newimages-summary' => 'Daytoy nga espesial a panid ket ipakita na ti kinaudi a pinag-ipan kadagiti papeles.',
+'newimages-summary' => 'Daytoy nga espesial a panid ket ipakitana ti kinaudi a pinag-ipan kadagiti papeles.',
 'newimages-legend' => 'Sagat',
 'newimages-label' => 'Nagan ti papeles (wenno paset na) :',
 'showhidebots' => '($1 bots)',
@@ -2898,8 +2904,8 @@ Ania man a sumarsaruno a panpanilpo iti isu met la a linia ket maikonsidera kas
 
 # Metadata
 'metadata' => 'Metadata',
-'metadata-help' => 'Addaan daytoy a papeles iti nayon a pakaammo, a mabalin a nainayon manipud iti digital kamera wenno scanner a naaramat a pangpartuat wenno pang-digitize itoy.
-No ti papeles ket saan a nabalbaliwan manipud iti kasisigudna a kasasaad, sumagmamano a detalye ket mabalin a saan a sibubukel a mangipakita iti nabaliwan a papeles.',
+'metadata-help' => 'Daytoy a papeles ket naglaon ti naipatinayon a pakaammo, a mabalin a nainayon manipud ti digital a kamera wenno skanner a naaramat a pangpartuat wenno pang-digitize itoy.
+No ti papeles ket saan a nabalbaliwan manipud iti kasisigud a kasasaad, adda dagiti sumagmamano a salaysay a mabalin a saan a napno a maipakita ti nabaliwan a papeles.',
 'metadata-expand' => 'Ipakita dagiti napaatiddogan a salaysay',
 'metadata-collapse' => 'Ilemmeng dagiti napaatiddogan a salaysay',
 'metadata-fields' => 'Dagiti metadata a pagikabilana nakalista iti daytoy a mensahe ket mairaman iti maipakita a panid ti imahen no ti metadata a lamisaan ket maipabassit.
@@ -2924,7 +2930,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-bitspersample' => 'Bits tunggal maysa a  nagyan',
 'exif-compression' => 'Pekkelen a pamuspusan',
 'exif-photometricinterpretation' => 'Piksel a kabuklan',
-'exif-orientation' => 'Orientation',
+'exif-orientation' => 'Pagturongan',
 'exif-samplesperpixel' => 'Bilang ti nagnagyan',
 'exif-planarconfiguration' => 'Pinakaurnong ti datos',
 'exif-ycbcrsubsampling' => 'Subsampling ratio ti Y iti C',
@@ -3036,9 +3042,9 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-countrycodecreated' => 'Kodigo ti pagilian nga nakaalaan ti litrato',
 'exif-provinceorstatecreated' => 'Probinsia wenno estado nga nakaalaan ti litrato',
 'exif-citycreated' => 'Ti siudad nga nakaalaan ti litrato',
-'exif-sublocationcreated' => 'Sabali pay a lokasion ti ciudad a nakaalaan ti retrato',
+'exif-sublocationcreated' => 'Sabali pay a lokasion ti siudad a nakaalaan ti retrato',
 'exif-worldregiondest' => 'Paset ti lubong a naipakita',
-'exif-countrydest' => 'Naipakita nga pagilian',
+'exif-countrydest' => 'Naipakita a pagilian',
 'exif-countrycodedest' => 'Kodigo ti pagilian a naipakita',
 'exif-provinceorstatedest' => 'Probinsia wenno estado a naipakita',
 'exif-citydest' => 'Naipakita a siudad',
@@ -3048,12 +3054,12 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-headline' => 'Paulo',
 'exif-credit' => 'Pammadayaw/Nangted',
 'exif-source' => 'Taudan',
-'exif-editstatus' => 'Pinagurnos nga estado ti imahen',
+'exif-editstatus' => 'Panagurnos a kasasaad ti imahen',
 'exif-urgency' => 'Ganat',
 'exif-fixtureidentifier' => 'Nagan ti naikabit a banag',
 'exif-locationdest' => 'Lugar a naibaga',
 'exif-locationdestcode' => 'Kodigo ti lugar a naibaga',
-'exif-objectcycle' => 'Oras ti aldaw a maipanggepan iti daytoy a midia',
+'exif-objectcycle' => 'Oras ti aldaw a nairebbeng para iti daytoy a midia',
 'exif-contact' => 'Pakaammo ti pagdamagan',
 'exif-writer' => 'Mannurat',
 'exif-languagecode' => 'Pagsasao',
@@ -3068,7 +3074,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-serialnumber' => 'Agsasaruno a numero ti kamera',
 'exif-cameraownername' => 'Akinkukua ti kamera',
 'exif-label' => 'Etiketa',
-'exif-datetimemetadata' => 'Petsa ti kinaudi a binaliwan ti metadata',
+'exif-datetimemetadata' => 'Petsa ti kinaudi a panagbaliw ti metadata',
 'exif-nickname' => 'Di pormal a nagan ti imahen',
 'exif-rating' => 'Pategan (ti maysa kadagiti  5)',
 'exif-rightscertificate' => 'Paneknek ti panagtaripatu dagiti karbengan',
@@ -3079,8 +3085,8 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-originaldocumentid' => 'Naisangsangyan nga ID iti kinasigud a dokumento',
 'exif-licenseurl' => 'URL iti ti karbengan ti kopia a lisensia',
 'exif-morepermissionsurl' => 'Sabali a pakaammo ti lisensia',
-'exif-attributionurl' => 'No usaren manen daytoy nga obra, pangngaasi ta isilpo idiay',
-'exif-preferredattributionname' => 'No usaren manen daytoy nga obra, pangngaasi ta padayawen ni',
+'exif-attributionurl' => 'No usaren manen daytoy nga obra, pangngaasi nga agisilpo idiay',
+'exif-preferredattributionname' => 'No usaren manen daytoy nga obra, pangngaasi a padayawen ni',
 'exif-pngfilecomment' => 'Komentario ti PNG a papeles',
 'exif-disclaimer' => 'Dagiti karbengan ken rebbeng',
 'exif-contentwarning' => 'Ballaag ti nagyan',
@@ -3229,8 +3235,8 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-gpslongitude-w' => 'Abagatan a longitude',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nangatngato ngem ti baybay',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nababbaba ngem ti baybay',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|a metro|kadagiti metro}} a nangatngato ngem ti baybay',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|a metro|kadagiti metro}} a nababbaba ngem ti baybay',
 
 'exif-gpsstatus-a' => 'Agrukrukoden',
 'exif-gpsstatus-v' => 'Panag-rukod ken pannakabin ti pang-usar ti sabali',
@@ -3282,6 +3288,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-iimcategory-dis' => 'Dagiti disatro ken aksidente',
 'exif-iimcategory-fin' => 'Ekonomia ken negosio',
 'exif-iimcategory-edu' => 'Edukasion',
+'exif-iimcategory-evn' => 'Enbironmento',
 'exif-iimcategory-hth' => 'Salun-at',
 'exif-iimcategory-hum' => 'Kaykayat ti tattao',
 'exif-iimcategory-lab' => 'Trabaho',
@@ -3297,41 +3304,42 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-urgency-normal' => 'Kadawyan ($1)',
 'exif-urgency-low' => 'Nababa ($1)',
 'exif-urgency-high' => 'Nangato ($1)',
+'exif-urgency-other' => 'Inpalawag ti agar-aramat a prioridad ($1)',
 
 # External editor support
 'edit-externally' => 'Baliwan daytoy a papeles babaen ti akinruar nga aplikasion',
 'edit-externally-help' => '(Kitaen ti [//www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay a pakaammo).',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'am-amin',
+'watchlistall2' => 'amin',
 'namespacesall' => 'amin',
-'monthsall' => 'am-amin',
+'monthsall' => 'amin',
 'limitall' => 'amin',
 
 # E-mail address confirmation
 'confirmemail' => 'Pasingkedan ti e-surat a pagtaengam',
 'confirmemail_noemail' => 'Awan ti umisu nga e-surat a pagtaengam a naikabil idiay [[Special:Preferences|kaykayat ti agar-aramat]].',
-'confirmemail_text' => '{{SITNAME}} ket masapul na a pasingkedam ti e-surat a pagtaengam sakbay nga agusar ti -surat a langa.
-Ipabalin mo dita baba a buton ti pinagitulod ti pasingkedan a surat dita a pagtaengam.
-Ti surat ket addaan to ti panilpo nga adda nagyan na a kodigo;
-ikabil ti panilpo dita pagbasabasam ta mapasingkedam a ti e-surat a pagtaengam ket umisu.',
+'confirmemail_text' => 'Ti {{SITNAME}} ket masapulna a pasingkedam ti e-surat a pagtaengam sakbay nga agusar ti -surat a langa.
+Ipabalinmo dita baba a buton ti panagitulod ti pasingkedan a surat dita a pagtaengam.
+Ti surat ket mangiraman ti panilpo nga aglaon ti maysa a kodigo;
+ikabil ti panilpo dita pagbasabasam tapno mapasingkedam a ti e-surat a pagtaengam ket umisu.',
 'confirmemail_pending' => 'Ti pasingkedan a kodigo ket naipatulod kenkan:
 no kadamdama ka a nangaramid ti pakabilangam, aguray ka pay ti mano a minutos a sumangpet sakbay ka nga agpadas ti agkiddaw ti baro a kodigo.',
 'confirmemail_send' => 'Agipatulod ti pasingkedan a kodigo',
 'confirmemail_sent' => 'Naipatuloden ti pammasingked nga e-surat.',
 'confirmemail_oncreate' => 'Ti pakasingkedan a kodigo ket naipatulod dita e-surat a pagtaengam.
-Daytoy a kodigo ket saan a masapul ti sumrek, ngem masapul mo nga ited sakbay ka nga agpabalin kadagiti e-surat a langa ti wiki.',
-'confirmemail_sendfailed' => '{{SITENAME}} ket saan a makaipatulod ti pakasingkedan a surat.
-Pangngaasi ta kitaem ti e-surat a pagtaengam kadagiti maisu a kabalinan.
+Daytoy a kodigo ket saan a masapul ti sumrek, ngem masapulmo nga ited sakbay ka nga agpabalin kadagiti e-surat a langa ti wiki.',
+'confirmemail_sendfailed' => 'Ti {{SITENAME}} ket saan a makaipatulod ti pammasingke a surat.
+Pangngaasi a kitaem ti e-surat a pagtaengam para kadagiti imbalido a karakter.
 
 Insubli ti nangisurat: $1',
-'confirmemail_invalid' => 'Saan a mabalin a kodigo ti pammasingked.
-Nalabit a nagpason daytoy a kodigo.',
-'confirmemail_needlogin' => 'Masapulmo nga $1 tapno mapasingkedan ti e-surat a pagtaengam.',
+'confirmemail_invalid' => 'Imbalido a kodigo ti pammasingked.
+Mabalin a nagpaso daytoy a kodigo.',
+'confirmemail_needlogin' => 'Masapulmo ti $1 tapno mapasingkedan ti e-surat a pagtaengam.',
 'confirmemail_success' => 'Napasingkedanen ti e-surat a pagtaengam.
-Mabalinmon [[Special:UserLogin|sumrek]] ken naragsak a panag-wiki.',
+Mabalinmo tattan ti [[Special:UserLogin|sumrek]] ken nanamen ti wiki.',
 'confirmemail_loggedin' => 'Napasingkedanen ti e-surat a pagtaengam.',
-'confirmemail_error' => 'Adda banag a biddut iti panangidulin iti pammasingkedmo.',
+'confirmemail_error' => 'Adda banag a biddut ti panangidulin ti pammasingkedmo.',
 'confirmemail_subject' => 'Pammasingked ti e-surat a pagtaengan ti {{SITENAME}}',
 'confirmemail_body' => 'Addaan, baka sika, ti naggapu ti IP a pagtaengan $1,
 ket nagrehistro ti pakabilangan "$2" iti daytoy nga e-surat a pagtaengan idiay {{SITENAME}}
@@ -3341,12 +3349,12 @@ pinagpabalin ti e-surat a kita idiay {{SITENAME}}, lukatam daytoy a panilpo dita
 
 $3
 
-No *saanmo* nga inrehistro ti pakabilangam, surutem daytoy a panilpo
+No *saanmo* nga inrehistro ti pakabilangam, surotem daytoy a panilpo
 ta pasardengem ti pinakasingkedan ti e-surat a  pagtaengam:
 
 $5
 
-Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
+Daytoy a pammasingked a kodigo ket agpaso iti $4.',
 'confirmemail_body_changed' => 'Addaan, baka sika, ti naggapu ti IP a apagtaengam $1,
 ket nangsukat ti e-surat a pagtaengan ti pakabilangan "$2" iti daytoy a pagtaengan idiay {{SITENAME}}
 
@@ -3375,8 +3383,8 @@ ta pasardengem ti pinakasingkedan ti e-surat a pagtaengam:
 $5
 
 Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
-'confirmemail_invalidated' => 'Saan a napapasingked ti e-surat a pagtaengam',
-'invalidateemail' => 'Ukasen ti pasingkedan ti e-surat',
+'confirmemail_invalidated' => 'Naukas ti pammasingked ti e-surat a pagtaengam',
+'invalidateemail' => 'Ukasen ti pammasingked ti e-surat',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Nabaldado ti Interwiki pinagiraman]',
@@ -3385,16 +3393,16 @@ Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
 
 # Delete conflict
 'deletedwhileediting' => "'''Ballaag''': Naikkaten daytoy a panid kalpasan a rinugiam nga agurnos!",
-'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos nga adda rason:
+'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkatna daytoy a panid kalpasan ti panagrugim nga agurnos nga adda rason:
 : ''$2''
-Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
+Pangngaasi a pasingkedam nga agpayso a kayatmo a partuten manen daytoy a panid.",
 'confirmrecreate-noreason' => 'Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos. Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.',
 'recreate' => 'Partuaten manen',
 
 # action=purge
 'confirm_purge_button' => 'OK',
 'confirm-purge-top' => 'Dalusan ti cache daytoy a panid?',
-'confirm-purge-bottom' => 'Ti pinagpasadiwa ti panid ket ipalabas na ti cache ken pursaran na dagiti agdama a pinagbaliwan ti agparang.',
+'confirm-purge-bottom' => 'Ti panagpurga ti panid ket dalusanna ti cache ken pursaranna nga agparang dagiti kinaudi a panagbaliw.',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'OK',
@@ -3422,70 +3430,71 @@ Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
 
 # Auto-summaries
 'autosumm-blank' => 'Naikkat amin ti linaon ti panid',
-'autosumm-replace' => "Masukatan ti panid iti '$1'",
-'autoredircomment' => 'Maibawbaw-ing iti [[$1]]',
-'autosumm-new' => 'Inaramid ti panid iti "$1"',
+'autosumm-replace' => "Sinukatan ti linaon iti '$1'",
+'autoredircomment' => 'Naibaw-ing ti panid iti [[$1]]',
+'autosumm-new' => 'Pinartuat ti panid iti "$1"',
 
 # Live preview
 'livepreview-loading' => 'Maikarkarga…',
 'livepreview-ready' => 'Maikarkarga… Agsagana!',
-'livepreview-failed' => 'Madi a mabalin ti agdama a pagpadas! Padasem ti normal a pinagpadas.',
+'livepreview-failed' => 'Napaay ti agdama a panagipadas! 
+Padasem ti kadawyan a panagipadas.',
 'livepreview-error' => 'Napaay a sumilpo: $1 "$2". Padasem ti normal a pinagpadas',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|segundo|segundo}} ket mabalin a saan a maiparang itoy a listaan.',
-'lag-warn-high' => 'Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|segundo|segundo}} ket mabalin nga saan nga agparang ditoy nga listaan.',
+'lag-warn-normal' => 'Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan a maiparang itoy a listaan.',
+'lag-warn-high' => 'Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan nga agparang ditoy a listaan.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam iti {{PLURAL:$1|1 titulo|$1 dagiti titulo}}, di mairaman dagiti patungtungan a panid.',
-'watchlistedit-noitems' => 'Awan linaonna dagiti titulo ti listaan ti bambantayam.',
-'watchlistedit-normal-title' => 'Baliwan ti listaan ti bambantayan',
-'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo iti listaan ti bambantayam',
-'watchlistedit-normal-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba.
-Ti mangikkat ti titulo, ikur-it ti kaasideg na a kahon, ken agtakla ti "{{int:Watchlistedit-normal-submit}}".
-Mabalin mo met nga [[Special:EditWatchlist/raw|urnosen ti listaan a kilaw]].',
+'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam  {{PLURAL:$1|iti1 a titulo|kadagiti $1 a titulo}}, a di mairaman dagiti patungtungan a panid.',
+'watchlistedit-noitems' => 'Ti listaan ti banbantayam ket saan a naglaon kadagiti titulo.',
+'watchlistedit-normal-title' => 'Urnosem ti listaan ti bambantayan',
+'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo manipud ti listaan ti bambantayam',
+'watchlistedit-normal-explain' => 'Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba.
+Ti mangikkat ti titulo, ikur-it ti kaaripingna a kahon, ken agtakla ti "{{int:Watchlistedit-normal-submit}}".
+Mabalinmo pay nga [[Special:EditWatchlist/raw|urnosen ti kilaw a listaan]].',
 'watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
 'watchlistedit-normal-done' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} naikkat iti listaan ti bambantayam:',
-'watchlistedit-raw-title' => 'Urnosen ti kilaw a bambantayan',
-'watchlistedit-raw-legend' => 'Urnosen ti kilaw a bambantayan',
-'watchlistedit-raw-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba, ken mabaliwam no nayunam, ken ikkaten idiay listaan;
+'watchlistedit-raw-title' => 'Urnosen ti kilaw a listaan ti bambantayan',
+'watchlistedit-raw-legend' => 'Urnosen ti kilaw a listaan ti bambantayan',
+'watchlistedit-raw-explain' => 'Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba, ken mabaliwam nga urnosen babaen ti panagnayon ken panagkissay manipud ti listaan;
 maysa a titulo tunggal maysa a linia.
-No malpas ka, agtakla ti "{{int:Watchlistedit-raw-submit}}".
-Mabalin mo met nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
+No malpas ka, itakla ti "{{int:Watchlistedit-raw-submit}}".
+Mabalinmo pay nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
 'watchlistedit-raw-titles' => 'Dagiti titulo:',
 'watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
 'watchlistedit-raw-done' => 'Napabaro ti listaan ti bambantayam.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} nainayon:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} naikkat:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 a titulo ti|dagiti $1 a titulo ti}} nainayon:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 a titulo ti|dagiti $1 dagiti titulo ti}} naikkat:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Kitaen dagiti napatpateg a sinukatan',
-'watchlisttools-edit' => 'Kitaen ken baliwan ti listaan ti bambantayan',
-'watchlisttools-raw' => 'Urnosen ti kilaw a bambantayan',
+'watchlisttools-view' => 'Kitaen dagiti maitunos a sinukatan',
+'watchlisttools-edit' => 'Kitaen ken urnosen ti listaan ti bambantayan',
+'watchlisttools-raw' => 'Urnosen ti kilaw a listaan ti bambantayan',
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|patang]])',
 
 # Core parser functions
-'unknown_extension_tag' => 'Di ammo a pagpaatiddog a tag "$1"',
-'duplicate-defaultsort' => '\'\'\'Ballaag:\'\'\' Kinasigud a pinagilasin ti "$2" ket sukatan na ti immuna a kinasigud a pinagilasin "$1".',
+'unknown_extension_tag' => 'Di amammo a pagpaatiddog nga etiketa "$1"',
+'duplicate-defaultsort' => '\'\'\'Ballaag:\'\'\' Kinasigud a panagilasin ti "$2" ket sukatanna ti immuna a kinasigud a panagilasin "$1".',
 
 # Special:Version
 'version' => 'Bersion',
 'version-extensions' => 'Dagiti naikabil a pagpaatiddog',
 'version-specialpages' => 'Espesial a pampanid',
-'version-parserhooks' => 'Parser a kawit',
-'version-variables' => 'Sabsabali',
+'version-parserhooks' => 'Dagiti parser a kawit',
+'version-variables' => 'Nadumaduma a kita',
 'version-antispam' => 'Pawilan ti spam',
 'version-skins' => 'Dagiti Kudil',
 'version-other' => 'Sabali',
-'version-mediahandlers' => 'Agiggem kadagiti media',
+'version-mediahandlers' => 'Agtengtengngel kadagiti midia',
 'version-hooks' => 'Dagiti kawit',
-'version-extension-functions' => 'Pagpaatiddog nga opisio',
-'version-parser-extensiontags' => 'Dagiti pagpaatiddog nga etiketa a parser',
-'version-parser-function-hooks' => 'Parser nga opisio a kawit',
+'version-extension-functions' => 'Dagiti pagpaatiddog a pamay-an',
+'version-parser-extensiontags' => 'Dagiti parser a pagpaatiddog nga etiketa',
+'version-parser-function-hooks' => 'Parser a pamay-an dagiti kawit',
 'version-hook-name' => 'Nagan ti kawit',
-'version-hook-subscribedby' => 'Umanamong ni',
+'version-hook-subscribedby' => 'Umanamong babaen ti',
 'version-version' => '(Bersion $1)',
 'version-license' => 'Lisensia',
 'version-poweredby-credits' => "Daytoy a wiki ket pinaandar ti '''[//www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
@@ -3506,7 +3515,7 @@ Naka-awat ka kuman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 'filepath' => 'Dalanan ti papeles',
 'filepath-page' => 'Papeles:',
 'filepath-submit' => 'Inkan',
-'filepath-summary' => 'Daytoy nga espesiala panid ket agisubli ti kompleto a dalan ti papeles.
+'filepath-summary' => 'Daytoy nga espesial a panid ket agisubli ti kompleto a dalan ti papeles.
 Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti papeles ket mangrugi da a idiay nakairamanan da a programa.',
 
 # Special:FileDuplicateSearch
@@ -3516,8 +3525,8 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'fileduplicatesearch-filename' => 'Nagan ti papeles:',
 'fileduplicatesearch-submit' => 'Biruken',
 'fileduplicatesearch-info' => '$1 × $2 pixel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4',
-'fileduplicatesearch-result-1' => 'Awanan iti kapadpada na a duplikado ti papeles a "$1".',
-'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|$2 dagiti agpadpada a duplikado}}.',
+'fileduplicatesearch-result-1' => 'Awan ti kapadpadana a duplikado ti papeles a "$1".',
+'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|dagiti $2  nga agpadpada a duplikado}}.',
 'fileduplicatesearch-noresults' => 'Awan ti nagan ti papeles a "$1" ti nabirukan.',
 
 # Special:SpecialPages
@@ -3532,7 +3541,7 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'specialpages-group-changes' => 'Kaudian a sinukatan ken listaan',
 'specialpages-group-media' => 'Dagiti padamag ti media ken panag-ipan',
 'specialpages-group-users' => 'Dagiti agar-aramat ken karkarbengan',
-'specialpages-group-highuse' => 'Adu ti panaka-usar na a pampanid',
+'specialpages-group-highuse' => 'Adu ti panaka-usar a pampanid',
 'specialpages-group-pages' => 'Listaan dagiti panid',
 'specialpages-group-pagetools' => 'Dagiti ramramit ti panid',
 'specialpages-group-wiki' => 'Linaon ti wiki ken ramramit',
@@ -3540,8 +3549,8 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'specialpages-group-spam' => 'Ramramit kontra spam',
 
 # Special:BlankPage
-'blankpage' => 'Awan ti nagyan na a panid',
-'intentionallyblankpage' => 'Daytoy a panid  ket naikaro a blanko.',
+'blankpage' => 'Blanko a panid',
+'intentionallyblankpage' => 'Daytoy a panid  ket naigagara a blanko.',
 
 # External image whitelist
 'external_image_whitelist' => ' #Baybayan daytoy a linia a kastoy<pre>
@@ -3561,18 +3570,18 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'tags-intro' => 'Daytoy a panid ket ilista na dagiti etiketa nga usaren ti software nga agmarka ti panag-urnos, ken dagiti kayat da a saoen.',
 'tags-tag' => 'Nagan ti etiketa',
 'tags-display-header' => 'Tabas dagiti listaan ti panagsukat',
-'tags-description-header' => 'Amin a panagipalpalawag ti kayat na a saoen.',
+'tags-description-header' => 'Napno a panangipalpalawag iti kayatna a saoen.',
 'tags-hitcount-header' => 'Dagiti etiketa a sinukatan',
 'tags-edit' => 'urnosen',
-'tags-hitcount' => '$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|a sinukatan|kadagiti sinukatan}}',
 
 # Special:ComparePages
 'comparepages' => 'Ipada dagiti panid',
 'compare-selector' => 'Ipada dagiti panagbaliw ti panid',
 'compare-page1' => 'Panid 1',
 'compare-page2' => 'Panid 2',
-'compare-rev1' => 'Pinagbaliw 1',
-'compare-rev2' => 'Pinagbaliw 2',
+'compare-rev1' => 'Panagbaliw 1',
+'compare-rev2' => 'Panagbaliw 2',
 'compare-submit' => 'Ipada',
 'compare-invalid-title' => 'Ti titulo nga intedmo ket imbalido.',
 'compare-title-not-exists' => 'Awan met dayta titulo a nainaganam.',
@@ -3601,21 +3610,21 @@ Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.',
 'htmlform-selectorother-other' => 'Sabali',
 
 # SQLite database support
-'sqlite-has-fts' => '$1 adda ti suporta amin a teksto ti pinagbiruk',
-'sqlite-no-fts' => '$1 awan ti suporta amin a teksto ti pinagbiruk',
+'sqlite-has-fts' => '$1 adda ti suporta ti napno a teksto ti panagbiruk',
+'sqlite-no-fts' => '$1 awan ti suporta ti napno a teksto ti panagbiruk',
 
 # New logging system
-'logentry-delete-delete' => 'inikkat ni $1 daytoy panid  nga $3',
-'logentry-delete-restore' => 'insubli ni $1 daytoy panid nga $3',
-'logentry-delete-event' => '$1 pinagsukat ti pinagkita iti {{PLURAL:$5|listaan ti pasamak |$5 dagiti listaan ti pasamak }} iti $3: $4',
-'logentry-delete-revision' => '$1 pinagsukat ti pinagkita iti {{PLURAL:$5|pinagbaliw |$5 dagiti pinagbaliw}} iti panid $3: $4',
-'logentry-delete-event-legacy' => '$1 pinagsukat a pinagkita ti listaan dagiti pasamak idiay $3',
-'logentry-delete-revision-legacy' => '$1 pinagsukat a pinagkita dagiti pinagbaliw idiay panid $3',
-'logentry-suppress-delete' => '$1 napasardeng a panid $3',
-'logentry-suppress-event' => '$1 nasekreto pinagsukat ti pinagkita iti {{PLURAL:$5|listaan ti pasamak |$5 dagiti listaan ti pasamak }} iti $3: $4',
-'logentry-suppress-revision' => '$1 nasekreto pinagsukat ti pinagkita iti {{PLURAL:$5|pinagbaliw |$5 dagiti pinagbaliw}} iti panid $3: $4',
-'logentry-suppress-event-legacy' => '$1 nasekreto ti pinagsukat a pinagkita ti listaan dagiti pasamak idiay $3',
-'logentry-suppress-revision-legacy' => '$1 nasekreto ti pinagsukat a pinagkita dagiti pinagbaliw idiay panid $3',
+'logentry-delete-delete' => 'Inikkat ni $1 ti panid  ti $3',
+'logentry-delete-restore' => 'Insubli ni $1 ti panid ti $3',
+'logentry-delete-event' => 'Sinukatan ni $1  ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4',
+'logentry-delete-revision' => 'Sinukatan ni $1 ti panagkita  {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4',
+'logentry-delete-event-legacy' => 'Sinukatan ni $1  ti panagkita ti listaan dagiti pasamak idiay $3',
+'logentry-delete-revision-legacy' => 'Sinukatan ni $1 ti panagkita dagiti panagbaliw idiay panid $3',
+'logentry-suppress-delete' => 'Pinasardeng ni $1 ti panid ti $3',
+'logentry-suppress-event' => 'Sekreto a sinukatan ni $1 ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4',
+'logentry-suppress-revision' => 'Sekreto a sinukatan ni $1 ti panagkita {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4',
+'logentry-suppress-event-legacy' => 'Sekreto a sinukatan ni $1 ti panagkita ti listaan dagiti pasamak idiay $3',
+'logentry-suppress-revision-legacy' => 'Sekreto a sinukatan ni $1  ti panagkita dagiti panagbaliw idiay panid $3',
 'revdelete-content-hid' => 'nailemmeng ti nagyan na',
 'revdelete-summary-hid' => 'nailemmeng ti pakabuklan a naurnos',
 'revdelete-uname-hid' => 'nailemmeng ti nagan ti agar-aramat',
@@ -3624,21 +3633,21 @@ Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.',
 'revdelete-uname-unhid' => 'saan a nailemmeng ti nagan ti agar-aramat',
 'revdelete-restricted' => 'naipakat dagiti pammarit kadagiti administrador',
 'revdelete-unrestricted' => 'naikkat dagiti pammarit para kadagiti administrador',
-'logentry-move-move' => 'inyalis ni  $1 daytoy panid $3 idiay $4',
-'logentry-move-move-noredirect' => '$1 inyalis ti panid $3 idiay $4 nga awan ti naibati a baw-ing',
-'logentry-move-move_redir' => '$1 inyalis ti panid $3 idiay $4 nga adda baw-ing',
-'logentry-move-move_redir-noredirect' => '$1 iniyalis ti panid $3 idiay $4 nga inikkan ti baw-ing ngem saan a nagibati ti baw-ing',
-'logentry-patrol-patrol' => '$1 markaan ti pinagbaliw $4 ti panid  $3 a napatruliaan',
-'logentry-patrol-patrol-auto' => '$1 automatiko a markaan ti panagbaliw $4 ti panid $3 a napatruliaan',
-'logentry-newusers-newusers' => '$1 nakaaramid ti pakabilangan ti agar-aramat',
-'logentry-newusers-create' => '$1 nakaaramid ti pakabilangan ti agar-aramat',
-'logentry-newusers-create2' => '$1 nakaaramid ti pakabilangan ti agar-aramat $3',
-'logentry-newusers-autocreate' => 'Ti pakabilangan $1 ket  naaramid nga automatiko',
+'logentry-move-move' => 'Inyalis ni  $1 daytoy panid $3 idiay $4',
+'logentry-move-move-noredirect' => 'Inyalis ni $1  ti panid ti $3 idiay $4 a saan a nangibati ti baw-ing',
+'logentry-move-move_redir' => 'Inyalis ni $1 ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing',
+'logentry-move-move_redir-noredirect' => 'Inyalis ni $1 ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing a saan a nangibati ti baw-ing',
+'logentry-patrol-patrol' => 'Minarkaan ni $1 ti panagbaliw a $4 ti panid ti  $3 a napatruliaan',
+'logentry-patrol-patrol-auto' => 'Automatiko a minarkaan ni $1 ti panagbaliw a $4 ti panid ti $3 a napatruliaan',
+'logentry-newusers-newusers' => 'Nagpartuat ni $1 ti pakabilangan ti  agar-aramat',
+'logentry-newusers-create' => 'Nagpartuat ni $1 ti pakabilangan ti agar-aramat',
+'logentry-newusers-create2' => 'Nagpartuat ni $1 ti pakabilangan ti agar-aramat ti $3',
+'logentry-newusers-autocreate' => 'Ti pakabilangan ni $1 ket automatiko a napartuat',
 'newuserlog-byemail' => 'naipatulod ti kontrasenias ti e-surat',
 
 # Feedback
-'feedback-bugornote' => 'No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi a [$1 ireporta ti kiteb].
-Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket mainayon iti panid "[$3 $2], a mairaman ti nagan mo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.',
+'feedback-bugornote' => 'No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti kiteb].
+Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mainayon iti panid "[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.',
 'feedback-subject' => 'Suheto:',
 'feedback-message' => 'Mensahe:',
 'feedback-cancel' => 'Ukasen',
@@ -3649,17 +3658,17 @@ Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket m
 'feedback-error3' => 'Biddut: Awan ti sungbat manipud iti API',
 'feedback-thanks' => 'Agyaman! Ti panangparupaam ket naipablaak iti panid "[$2 $1]".',
 'feedback-close' => 'Nalpasen',
-'feedback-bugcheck' => 'Nasayaaten! Kitem tapno met saan a dagita adaanen a [$1 dagiti amammo a kiteb].',
+'feedback-bugcheck' => 'Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga amammo a kitkiteb].',
 'feedback-bugnew' => 'Kinitak. Ireporta ti baro a kiteb',
 
 # API errors
 'api-error-badaccess-groups' => 'Saan mo a mabalin ti agipan kadagiti papeles iti daytoy a wiki.',
 'api-error-badtoken' => 'Kinauneg a biddut: Dakes a tandaan.',
 'api-error-copyuploaddisabled' => 'Ti mangipan babaen ti URL ket nabaldado ditoy a server.',
-'api-error-duplicate' => 'Adda {{PLURAL:$1|ket [$2 sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addan ditoy a pagsaadan nga agpada ti nagyan da.',
-'api-error-duplicate-archive' => 'Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabalia papeles]}} nga adda ditoy a pagsaadan nga agpada ti nagyan da, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.',
+'api-error-duplicate' => 'Adda {{PLURAL:$1|ket [$2 sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addan ditoy a pagsaadan nga agpada ti nagyan da.',
+'api-error-duplicate-archive' => 'Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabali a papeles]}} nga adda ditoy a pagsaadan nga agpada ti nagyan da, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.',
 'api-error-duplicate-archive-popup-title' => 'Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}} a naikkaten.',
-'api-error-duplicate-popup-title' => 'Duplikado {{PLURAL:$1|papeles|dagiti papeles}}',
+'api-error-duplicate-popup-title' => 'Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}}.',
 'api-error-empty-file' => 'Ti papeles nga intedmo ket awan ti nagyan na.',
 'api-error-emptypage' => 'Agar-aramid ti baro, dagiti awan ti linaon na a panid ket saan a maipalubos.',
 'api-error-fetchfileerror' => 'Kinauneg a biddut: Addaan ti dakes a napasamak idi agalala ti papeles.',
@@ -3667,7 +3676,7 @@ Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket m
 'api-error-filename-tooshort' => 'Ti nagan daytoy a papeles ket bassit unay.',
 'api-error-filetype-banned' => 'Ti kita daytoy a papeles ket maiparit.',
 'api-error-filetype-missing' => 'Ti papeles ket agkurang ti pagpa-atiddog.',
-'api-error-hookaborted' => 'Ti pinagbabaro a pinadas mo ket napasardeng iti pangpa-atiddog a kawit.',
+'api-error-hookaborted' => 'Ti panagbabaro a pinadasmo ket napasardeng iti pangpa-atiddog a kawit.',
 'api-error-http' => 'Kinauneg a biddut: Saan a makaikabit idiay server.',
 'api-error-illegal-filename' => 'Ti nagan daytoy a papeles ket saan a maipalubos.',
 'api-error-internal-error' => 'Kinauneg a biddut: Addaan ti dakes a napasamak ti panagaramid ti panagipan mo iti daytoy a wiki.',
index 165fd07..024b453 100644 (file)
@@ -475,7 +475,7 @@ $1',
 'helppage' => 'Help:Efnisyfirlit',
 'mainpage' => 'Forsíða',
 'mainpage-description' => 'Forsíða',
-'policy-url' => 'Project:Stjórnarstefnur',
+'policy-url' => 'Project:Samþykktir',
 'portal' => 'Samfélagsgátt',
 'portal-url' => 'Project:Samfélagsgátt',
 'privacy' => 'Meðferð persónuupplýsinga',
@@ -647,7 +647,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
 'userlogout' => 'Útskrá',
 'notloggedin' => 'Ekki innskráð(ur)',
 'nologin' => "Ekki með aðgang? '''$1'''.",
-'nologinlink' => 'Stofnaðu til aðgangs',
+'nologinlink' => 'Stofnaðu aðgang',
 'createaccount' => 'Nýskrá',
 'gotaccount' => "Nú þegar með notandanafn? '''$1'''.",
 'gotaccountlink' => 'Skráðu þig inn',
@@ -1094,7 +1094,7 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGE
 'revdelete-hide-text' => 'Fela breytingatexta',
 'revdelete-hide-image' => 'Fela efni skráar',
 'revdelete-hide-name' => 'Fela aðgerð og mark',
-'revdelete-hide-comment' => 'Fela breytingaathugasemdir',
+'revdelete-hide-comment' => 'Fela breytingarágrip',
 'revdelete-hide-user' => 'Fela notandanafn/vistfang',
 'revdelete-hide-restricted' => 'Dylja gögn frá stjórnendum og öðrum',
 'revdelete-radio-same' => '(ekki breyta)',
index 5675427..4477f76 100644 (file)
@@ -269,7 +269,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Nascondi le modifiche verificate nelle ultime modifiche',
 'tog-newpageshidepatrolled' => "Nascondi le pagine verificate dall'elenco delle pagine più recenti",
 'tog-extendwatchlist' => "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima",
-'tog-usenewrc' => 'Utilizza le ultime modifiche avanzate (richiede JavaScript)',
+'tog-usenewrc' => 'Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali (richiede JavaScript)',
 'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione',
 'tog-showtoolbar' => 'Mostra barra degli strumenti di modifica (richiede JavaScript)',
 'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic (richiede JavaScript)',
@@ -620,6 +620,8 @@ Si prega di segnalare l\'accaduto a un [[Special:ListUsers/sysop|amministratore]
 'cannotdelete' => 'Non è stato possibile cancellare il file "$1".
 Potrebbe essere stato già cancellato da qualcun altro.',
 'cannotdelete-title' => 'Impossibile eliminare la pagina "$1"',
+'delete-hook-aborted' => "La cancellazione è stata annullata dall'hook.
+Non è stata restituita alcuna spiegazione.",
 'badtitle' => 'Titolo non corretto',
 'badtitletext' => 'Il titolo della pagina richiesta è vuoto, errato o con caratteri non ammessi oppure deriva da un errore nei collegamenti tra siti wiki diversi o versioni in lingue diverse dello stesso sito.',
 'perfcached' => "I dati che seguono sono estratti da una copia ''cache'' del database, e potrebbero non essere aggiornati. Un massimo di {{PLURAL:$1|un risultato è disponibile|$1 risultati sono disponibili}} in cache.",
@@ -652,6 +654,8 @@ La motivazione è la seguente: ''$2''.",
 L\'amministratore che lo ha bloccato ha fornito questa motivazione: "$3".',
 'invalidtitle-knownnamespace' => 'Titolo non valido con namespace "$2" e testo "$3"',
 'invalidtitle-unknownnamespace' => 'Titolo non valido con namespace sconosciuto "$1" e testo "$2"',
+'exception-nologin' => 'Accesso non effettuato',
+'exception-nologin-text' => "Questa pagina o azione richiede che tu abbia effettuato l'accesso su questo wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Errore di configurazione: antivirus sconosciuto: ''$1''",
@@ -1297,7 +1301,7 @@ Vedi l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi e dei blo
 'prefs-watchlist-days-max' => 'Massimo $1 {{PLURAL:$1|giorno|giorni}}',
 'prefs-watchlist-edits' => 'Numero di modifiche da mostrare con le funzioni avanzate:',
 'prefs-watchlist-edits-max' => 'Numero massimo: 1000',
-'prefs-watchlist-token' => 'Token Osservati speciali:',
+'prefs-watchlist-token' => 'Token osservati speciali:',
 'prefs-misc' => 'Varie',
 'prefs-resetpass' => 'Cambia password',
 'prefs-changeemail' => 'Modifica e-mail',
@@ -2951,6 +2955,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'spambot_username' => 'MediaWiki - sistema di rimozione spam',
 'spam_reverting' => "Ripristinata l'ultima versione priva di collegamenti a $1",
 'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
+'spam_deleting' => 'Pagina cancellata, tutte le versioni contenevano collegamenti a $1',
 
 # Info page
 'pageinfo-title' => 'Informazioni per "$1"',
@@ -3469,7 +3474,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
 'limitall' => 'tutti',
 
 # E-mail address confirmation
-'confirmemail' => 'Conferma indirizzo e-mail',
+'confirmemail' => 'Conferma indirizzo email',
 'confirmemail_noemail' => 'Non è stato indicato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]].',
 'confirmemail_text' => "{{SITENAME}} richiede la verifica dell'indirizzo e-mail prima di poter usare le relative funzioni. Premere il pulsante qui sotto per inviare una richiesta di conferma al proprio indirizzo; nel messaggio è presente un collegamento che contiene un codice. Visitare il collegamento con il proprio browser per confermare che l'indirizzo e-mail è valido.",
 'confirmemail_pending' => "Il codice di conferma è già stato spedito via posta elettronica; se l'account è stato
@@ -3656,7 +3661,7 @@ Si noti che è anche possibile [[Special:EditWatchlist|modificare la lista con l
 
 MediaWiki è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per maggiori dettagli.
 
-Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [//www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
+Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [http://www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
 'version-software' => 'Software installato',
 'version-software-product' => 'Prodotto',
 'version-software-version' => 'Versione',
@@ -3825,6 +3830,8 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'api-error-empty-file' => 'Il file selezionato era vuoto.',
 'api-error-emptypage' => 'La creazione di nuove pagine vuote non è consentita.',
 'api-error-fetchfileerror' => "Errore interno: c'è stato un problema durante il recupero del documento.",
+'api-error-fileexists-forbidden' => 'Un file di nome "$1" già esiste e non può essere sovrascritto.',
+'api-error-fileexists-shared-forbidden' => 'Un file di nome "$1" già esiste nel repository condiviso e non può essere sovrascritto.',
 'api-error-file-too-large' => 'Il file selezionato era troppo grande.',
 'api-error-filename-tooshort' => 'Il nome del file è troppo breve.',
 'api-error-filetype-banned' => 'Questo tipo di file non è accettato.',
@@ -3863,4 +3870,6 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'duration-centuries' => '$1 {{PLURAL:$1|secolo|secoli}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Impossibile acquisire blocchi sul server $1.',
 );
index a179754..cc2ca02 100644 (file)
@@ -478,10 +478,10 @@ $messages = array(
 'category_header' => 'カテゴリ「$1」にあるページ',
 'subcategories' => '下位カテゴリ',
 'category-media-header' => 'カテゴリ「$1」にあるメディア',
-'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\81¨ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cã\81²ã\81¨ã\81¤もありません。''",
+'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\82\84ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cä½\95もありません。''",
 'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
 'hidden-category-category' => '隠しカテゴリ',
-'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}を表示しています。}}',
+'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の {{PLURAL:$1|$1 下位カテゴリ}}を表示しています。}}',
 'category-subcat-count-limited' => 'このカテゴリには以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}が含まれています。',
 'category-article-count' => '{{PLURAL:$2|このカテゴリには以下のページのみが含まれています。|このカテゴリには $2 ページが含まれており、そのうち以下の {{PLURAL:$1|$1 ページ}}を表示しています。}}',
 'category-article-count-limited' => '現在のカテゴリには以下の{{PLURAL:$1|ページ|&#32;$1 ページ}}が含まれています。',
@@ -553,7 +553,7 @@ $messages = array(
 'delete' => '削除',
 'deletethispage' => 'このページを削除',
 'undelete_short' => '{{PLURAL:$1|$1 版}}を復帰',
-'viewdeleted_short' => '削除された$1件の編集を閲覧',
+'viewdeleted_short' => '{{PLURAL:$1|削除された $1 編集}}を閲覧',
 'protect' => '保護',
 'protect_change' => '設定変更',
 'protectthispage' => 'このページを保護',
@@ -625,8 +625,8 @@ $1',
 
 'ok' => 'OK',
 'retrievedfrom' => '「$1」から取得',
-'youhavenewmessages' => '$1が届いています($2)。',
-'newmessageslink' => '新しいメッセージ',
+'youhavenewmessages' => '$1があります($2)。',
+'newmessageslink' => '新メッセージ',
 'newmessagesdifflink' => '最終更新の差分',
 'youhavenewmessagesmulti' => '$1に新着メッセージがあります',
 'editsection' => '編集',
@@ -642,10 +642,10 @@ $1',
 'collapsible-expand' => '展開する',
 'thisisdeleted' => '$1を閲覧または復帰しますか?',
 'viewdeleted' => '$1を閲覧しますか?',
-'restorelink' => '削除された$1編集',
+'restorelink' => '{{PLURAL:$1|削除された $1 編集}}',
 'feedlinks' => 'フィード:',
-'feed-invalid' => 'フィード形式の指定が間違っています。',
-'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81«å¯¾å¿\9cã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'feed-invalid' => 'フィード形式の指定が正しくありません。',
+'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
 'site-rss-feed' => '$1のRSSフィード',
 'site-atom-feed' => '$1のAtomフィード',
 'page-rss-feed' => '「$1」のRSSフィード',
@@ -681,15 +681,15 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'databaseerror' => 'データベース エラー',
 'dberrortext' => 'データベースクエリーの構文エラーが発生しました。
 ソフトウェアにバグがある可能性があります。
-最後に実行を試みたクエリーは次の通りです
-関数「<tt>$2</tt>」内
-<blockquote><tt>$1</tt></blockquote>
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8d',
+最後に実行を試みたクエリー:
+<blockquote><tt>$1</tt></blockquote>
+(関数「<tt>$2</tt>」内)
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82',
 'dberrortextcl' => 'データベースクエリーの構文エラーが発生しました。
-最後に実行を試みたクエリーは以下の通りです
-関数「$2」内から
-"$1"
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8d',
+最後に実行を試みたクエリー:
+「$1」
+(関数「$2」内)。
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9f',
 'laggedslavemode' => "'''警告:'''ページに最新の編集が反映されていない可能性があります。",
 'readonly' => 'データベースがロックされています',
 'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
@@ -712,23 +712,23 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'filecopyerror' => 'ファイル「$1」を「$2」へ複製できませんでした。',
 'filerenameerror' => 'ファイル名を「$1」から「$2」へ変更できませんでした。',
 'filedeleteerror' => 'ファイル「$1」を削除できませんでした。',
-'directorycreateerror' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\80\8c$1ã\80\8dã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'directorycreateerror' => 'ディレクトリ「$1」を作成できませんでした。',
 'filenotfound' => 'ファイル「$1」が見つかりませんでした。',
-'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99',
+'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81«å¤±æ\95\97ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82',
 'unexpected' => '予期しない値「$1」=「$2」です。',
-'formerror' => 'エラー:フォームを送信できませんでした',
+'formerror' => 'エラー:フォームを送信できませんでした',
 'badarticleerror' => 'このページでは要求された操作を行えません。',
 'cannotdelete' => 'ページまたはファイル「$1」を削除できませんでした。
 他の人が既に削除した可能性があります。',
 'cannotdelete-title' => '「$1」というページを削除できません',
-'badtitle' => '不正なページ名',
+'badtitle' => '正しくないページ名',
 'badtitletext' => '要求されたページ名は、無効、空、正しくない言語間リンク/ウィキ間リンクのページ名、のいずれかです。
 ページ名に使用できない文字が1つ以上含まれている可能性があります。',
 'perfcached' => '以下のデータはキャッシュされており、最新ではない可能性があります。最大 $1 {{PLURAL:$1|件の結果}}がキャッシュされます。',
 'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery()に誤ったパラメーターが渡されました。<br />
+'wrong_wfQuery_params' => 'wfQuery()に正しくないパラメーターが渡されました<br />
 関数:$1<br />
 クエリー:$2',
 'viewsource' => 'ソースを表示',
@@ -747,8 +747,8 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'cascadeprotected' => 'このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}で読み込まれているため、編集できないように保護されています:
 $2',
 'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
-'customcssprotected' => 'ã\81\93ã\81®CSSã\83\9aã\83¼ã\82¸ã\81¯ä»\96ã\81®å\88©ç\94¨è\80\85ã\81®å\80\8b人設å®\9aã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bため、あなたには編集する権限がありません。',
-'customjsprotected' => '他の利用者の個人設定を含むため、このJavaScriptのページを編集する権限がありません。',
+'customcssprotected' => 'ã\81\93ã\81®CSSã\83\9aã\83¼ã\82¸ã\81¯ä»\96ã\81®å\88©ç\94¨è\80\85ã\81®å\80\8b人設å®\9aã\82\92å\90«ã\82\80ため、あなたには編集する権限がありません。',
+'customjsprotected' => 'このJavaScriptページは他の利用者の個人設定を含むため、あなたには編集する権限がありません。',
 'ns-specialprotected' => '特別ページは編集できません。',
 'titleprotected' => "[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
 理由は「''$2''」です。",
@@ -797,9 +797,9 @@ $2',
 他の名前を選んでください。',
 'loginerror' => 'ログインのエラー',
 'createaccounterror' => 'アカウントを作成できませんでした: $1',
-'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ましたが、ログインしていません。
+'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81¯ä½\9cæ\88\90ã\81\95ã\82\8cましたが、ログインしていません。
 {{SITENAME}}ではログインにCookieを使用します。
-Cookieを無効にしているようです。
+ご使用のブラウザではCookieが無効になっています。
 Cookieを有効にしてから、新しい利用者名とパスワードでログインしてください。',
 'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
 Cookieを無効にしているようです。
@@ -812,8 +812,8 @@ Cookieを有効にしていることを確認して、このページを再読
 'nosuchuser' => '「$1」という名前の利用者は見当たりません。
 利用者名では大文字と小文字を区別します。
 綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成]]してください。',
-'nosuchusershort' => 'ã\80\8c$1ã\80\8dã\81¨ã\81\84ã\81\86å\88©ç\94¨è\80\85ã\81¯è¦\8bå½\93ã\81\9fã\82\8aません。
-綴ã\82\8aã\81\8cæ­£ã\81\97ã\81\84ã\81\93ã\81¨ã\82\92å\86\8d度確認してください。',
+'nosuchusershort' => 'ã\80\8c$1ã\80\8dã\81¨ã\81\84ã\81\86å\90\8då\89\8dã\81®å\88©ç\94¨è\80\85ã\81¯å­\98å\9c¨ã\81\97ません。
+綴ã\82\8aã\82\92確認してください。',
 'nouserspecified' => '利用者名を指定してください。',
 'login-userblocked' => 'この利用者はブロックされています。ログインは拒否されます。',
 'wrongpassword' => 'パスワードが間違っています。 
@@ -836,9 +836,9 @@ Cookieを有効にしていることを確認して、このページを再読
 'noemailcreate' => '有効なメールアドレスを入力する必要があります',
 'passwordsent' => '新しいパスワードを「$1」に登録されたメールアドレスに送信しました。
 メールを受け取ったら、再度ログインしてください。',
-'blocked-mailpassword' => '使用しているIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
+'blocked-mailpassword' => 'ご使用中のIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
 'eauthentsent' => '指定されたメールアドレスにアドレス確認のためのメールを送信しました。
-その他のメールがこのアカウント宛に送信される前に、メールの指示に従って、このアカウントが本当にあなたのものか確認してください。',
+その他のメールがこのアカウント宛に送信される前に、メールの指示に従って、このアカウントが本当にあなたのものかご確認ください。',
 'throttled-mailpassword' => '新しいパスワードは過去 {{PLURAL:$1|$1 時間}}に送信済みです。
 悪用防止のため、パスワードの再発行は {{PLURAL:$1|$1 時間}}に 1 回のみです。',
 'mailerror' => 'メールの送信中にエラーが発生しました:$1',
@@ -869,7 +869,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
 
 # E-mail sending
-'php-mail-error-unknown' => 'PHPのmail()関数で不明なエラー',
+'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
 'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
 
 # Change password dialog
@@ -889,7 +889,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'resetpass-submit-loggedin' => 'パスワードを変更',
 'resetpass-submit-cancel' => '中止',
 'resetpass-wrong-oldpass' => '仮パスワードまたは現在のパスワードが正しくありません。
-既にパスワード変更したか、新しい仮パスワードを依頼した可能性があります。',
+パスワードを既に変更した、または新しい仮パスワードを依頼した可能性があります。',
 'resetpass-temp-password' => '仮パスワード:',
 
 # Special:PasswordReset
@@ -897,11 +897,11 @@ Cookieを有効にしていることを確認して、このページを再読
 'passwordreset-text' => 'このフォームに入力すると、アカウント詳細のリマインダーをメールでお送りします。',
 'passwordreset-legend' => 'パスワードの再設定',
 'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
-'passwordreset-pretext' => '{{PLURAL:$1||以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\86ã\81¡ã\81® 1 つを入力してください}}',
+'passwordreset-pretext' => '{{PLURAL:$1||ä¸\8bè¨\98ã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\84ã\81\9aã\82\8cã\81\8b 1 つを入力してください}}',
 'passwordreset-username' => '利用者名:',
 'passwordreset-domain' => 'ドメイン:',
 'passwordreset-capture' => '送信されるメールの内容を表示しますか?',
-'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä¸\80æ\99\82ç\9a\84ã\81ªパスワードを含む)をあなたも閲覧できます。',
+'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä»®パスワードを含む)をあなたも閲覧できます。',
 'passwordreset-email' => 'メールアドレス:',
 'passwordreset-emailtitle' => '{{SITENAME}}上のアカウントの詳細',
 'passwordreset-emailtext-ip' => 'どなたか(おそらくあなた、IP アドレス $1)が {{SITENAME}} ($4) での
@@ -910,7 +910,7 @@ Cookieを有効にしていることを確認して、このページを再読
 
 $2
 
-{{PLURAL:$3|この|これらの}}一時的なパスワードは {{PLURAL:$5|$5 日間}}で有効期限が切れます。
+{{PLURAL:$3|この仮パスワード|これらの仮パスワード}}は {{PLURAL:$5|$5 日間}}で有効期限が切れます。
 あなたはすぐにログインして新しいパスワードを設定する必要があります。
 これが他の誰かによる申請である場合、あるいはあなたが自分の元のパスワードを
 覚えていてそれを変更したくない場合には、このメッセージを無視して以前のパスワードを
@@ -921,16 +921,16 @@ $2
 
 $2
 
-{{PLURAL:$3|ã\81\93ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªパスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
+{{PLURAL:$3|ã\81\93ã\81®ä»®ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä»®パスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
 あなたは、すぐにログインして新しいパスワードを設定する必要があります。
 この申請が他の誰かによるものの場合、あるいはあなたが自分の元のパスワードを
 覚えていて、変更したくない場合は、このメッセージを無視して
 以前のパスワードを使い続けることができます。',
 'passwordreset-emailelement' => '利用者名:$1
 仮パスワード:$2',
-'passwordreset-emailsent' => '確èª\8dã\81®ã\83¡ã\83¼ã\83«ã\81\8cé\80\81ä¿¡ã\81\95ã\82\8cました。',
-'passwordreset-emailsent-capture' => '確認のメールが送信されました。以下に表示します。',
-'passwordreset-emailerror-capture' => '生成された確認メールを以下に表示していますが、利用者への送信には失敗しました: $1',
+'passwordreset-emailsent' => '確èª\8dã\83¡ã\83¼ã\83«ã\82\92ã\81\8aé\80\81ã\82\8aã\81\97ました。',
+'passwordreset-emailsent-capture' => '下記の内容の、確認メールをお送りしました。',
+'passwordreset-emailerror-capture' => '下記の内容の確認メールを生成しましたが、利用者への送信に失敗しました:$1',
 
 # Special:ChangeEmail
 'changeemail' => 'メールアドレスの変更',
@@ -974,12 +974,12 @@ $2
 'showlivepreview' => 'ライブプレビュー',
 'showdiff' => '差分を表示',
 'anoneditwarning' => "'''警告:'''ログインしていません。
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81使用中のIPアドレスがこのページの編集履歴に記録されます。",
-'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«ä½¿ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8c記録されます。''",
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\81\97ã\81\9få ´å\90\88ã\80\81ã\81\94使用中のIPアドレスがこのページの編集履歴に記録されます。",
+'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«記録されます。''",
 'missingsummary' => "'''注意:'''要約欄が空欄です。
 「{{int:savearticle}}」をもう一度クリックすると、編集は要約なしで保存されます。",
 'missingcommenttext' => '以下にコメントを入力してください。',
-'missingcommentheader' => "'''注意::'' このコメントに対する題名/見出しが空欄です。
+'missingcommentheader' => "'''注意:'''このコメントに対する題名/見出しが空欄です。
 「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
 'summary-preview' => '要約のプレビュー:',
 'subject-preview' => '題名/見出しのプレビュー:',
@@ -987,7 +987,7 @@ $2
 'blockedtext' => "'''この利用者名またはIPアドレスはブロックされています。'''
 
 ブロックは$1によって実施されました。
-ブロックの理由は「$2」です。
+ブロックの理由は ''$2'' です。
 
 * ブロック開始時期:$8
 * ブロック解除予定:$6
@@ -995,9 +995,9 @@ $2
 
 このブロックについて、$1もしくは他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]に問い合わせることができます。
 ただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。
-現在のIPアドレスは$3、このブロックIDは#$5です。
-問い合わせを行う際には、上記の情報を必ず書いてください。",
-'autoblockedtext' => "用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
\8f¾å\9c¨ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯$3ã\80\81ã\81\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯IDã\81¯#$5ã\81§ã\81\99ã\80\82
+お問い合わせの際には、上記の情報を必ず書いてください。",
+'autoblockedtext' => "ご使用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
 理由は次の通りです。
 
 :''$2''
@@ -1010,8 +1010,8 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 
 ただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、メール送信機能が使えないことに注意してください。
 
-現在用中のIPアドレスは$3 、このブロックIDは#$5です。
-問い合わせを行う際には、この情報を必ず書いてください。",
+現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
+お問い合わせの際には、この情報を必ず書いてください。",
 'blockednoreason' => '理由が設定されていません',
 'whitelistedittext' => 'このページを編集するには$1する必要があります。',
 'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
@@ -1040,10 +1040,10 @@ IP アドレスは複数の利用者で共有されている場合がありま
 [{{fullurl:{{FULLPAGENAME}}|action=edit}} このページを編集]</span>することができます。',
 'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索]]するか、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索]</span>することができます。',
 'userpage-userdoesnotexist' => '「$1」という利用者アカウントは登録されていません。
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ä½\9cæ\88\90/ç·¨é\9b\86ã\81\8cé\81©å\88\87ã\81\8bã\81©ã\81\86ã\81\8b確èª\8dã\81\97ã\81¦ください。',
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ä½\9cæ\88\90/ç·¨é\9b\86ã\81\8cé\81©å\88\87ã\81\8bã\81\94確èª\8dください。',
 'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
 'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
-参考のために最新のブロック記録を以下に表示します',
+参考のために最新のブロック記録を以下に表示します',
 'clearyourcache' => "'''注意:''' 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
 * '''Firefox / Safari:''' ''Shift'' を押しながら ''再読み込み'' をクリックする、もしくは ''Ctrl-F5'' か ''Ctrl-R'' を押してください (Macでは ''&#x2318;-R'' )
 * '''Google Chrome:''' ''Ctrl-Shift-R'' を押してください (Macでは ''&#x2318;-Shift-R'' )
@@ -1054,7 +1054,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'userjsyoucanpreview' => "'''ヒント:''' 「{{int:showpreview}}」ボタンを使うと、保存前に新しいスクリプトを試験できます。",
 'usercsspreview' => "'''利用者CSSをプレビューしています。'''
 '''まだ保存されていません!'''",
-'userjspreview' => "'''利用者JavaScriptを試験プレビューしています。'''
+'userjspreview' => "'''利用者JavaScriptを試験/プレビューしています。'''
 '''まだ保存されていません!'''",
 'sitecsspreview' => "'''ここでは、CSSをプレビューしているだけに過ぎません。'''
 '''まだ保存されていません!'''",
@@ -1077,10 +1077,10 @@ IP アドレスは複数の利用者で共有されている場合がありま
 
 '''この編集が問題ない場合はもう一度保存してください。'''
 それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
-'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
+'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
 ページ本文の破損を防ぐため、編集は反映されません。
 問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。",
-'edit_form_incomplete' => "'''一部の編集フォームの値がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
+'edit_form_incomplete' => "'''編集フォームの一部がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
 'editing' => '「$1」を編集中',
 'creating' => '「$1」を作成中',
 'editingsection' => '「$1」を編集中 (節単位)',
@@ -1093,7 +1093,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 上側のテキスト領域の内容'''だけ'''が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
 'yourtext' => '編集中の文章',
 'storedversion' => '保存された版',
-'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\82ã\81ªã\81\9fのブラウザーはUnicodeに未対応です。'''
+'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\94使ç\94¨ä¸­のブラウザーはUnicodeに未対応です。'''
 安全にページを編集する回避策を表示しています:編集ボックス内の非ASCII文字を16進数コードで表現しています。",
 'editingold' => "'''警告:このページの古い版を編集しています。'''
 保存すると、この版以降に追加されていた変更がすべて失われます。",
@@ -1116,7 +1116,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 参考として以下に最後の記録を表示します:",
 'semiprotectedpagewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが編集できます。
 参考として以下に最後の記録を表示します:",
-'cascadeprotectedwarning' => "'''警告:'''このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています",
+'cascadeprotectedwarning' => "'''警告:'''このページはカスケード保護されている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、管理者権限を持つ利用者のみが編集できるように保護されています",
 'titleprotectedwarning' => "'''警告:このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。'''
 参考として以下に最後の記録を表示します:",
 'templatesused' => 'このページで使用されている{{PLURAL:$1|テンプレート}}:',
@@ -1124,7 +1124,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'templatesusedsection' => 'この節で使用されている{{PLURAL:$1|テンプレート}}:',
 'template-protected' => '(保護)',
 'template-semiprotected' => '(半保護)',
-'hiddencategories' => 'このページは$1個の隠しカテゴリに属しています:',
+'hiddencategories' => 'このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:',
 'edittools' => '<!-- ここに書いたテキストは編集及びアップロードのフォームの下に表示されます。 -->',
 'nocreatetitle' => 'ページの作成が制限されています',
 'nocreatetext' => '{{SITENAME}}ではページの新規作成を制限しています。
@@ -1137,7 +1137,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'permissionserrorstext-withaction' => 'あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
 'recreate-moveddeleted-warn' => "'''警告:以前削除されたページを再作成しようとしています。'''
 
-このページの編集を続行するのが適切かどうか確認してください。
+このページの編集を続行するのが適切かどうかご確認ください。
 参考のため以下にこのページの削除と移動の記録を表示します:",
 'moveddeleted-notice' => 'このページは削除されています。
 参考のため、このページの削除と移動の記録を以下に表示します。',
@@ -1155,7 +1155,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''警告:'''このページでの高負荷なパーサー関数の呼び出し回数が多過ぎます。
 
-{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\81¯ $2 å\9b\9e}}以ä¸\8bにしてください({{PLURAL:$1|現在は $1 回}})。",
+{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\82\92 $2 å\9b\9e}}æ\9cªæº\80にしてください({{PLURAL:$1|現在は $1 回}})。",
 'expensive-parserfunction-category' => '高負荷な構文解析関数の呼び出しが多過ぎるページ',
 'post-expand-template-inclusion-warning' => "'''警告:'''テンプレートの読み込みサイズが大き過ぎます。
 いくつかのテンプレートは読み込まれません。",
@@ -1184,7 +1184,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'cantcreateaccounttitle' => 'アカウントを作成できません',
 'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
 
-$3が示した理由は ''$2'' です。",
+$3が示した理由:''$2''",
 
 # History pages
 'viewpagelogs' => 'このページに関する記録を閲覧',
@@ -1207,7 +1207,7 @@ $3が示した理由は ''$2'' です。",
 'history-show-deleted' => '削除済みのみ',
 'histfirst' => '最古',
 'histlast' => '最新',
-'historysize' => '$1バイト',
+'historysize' => '({{PLURAL:$1|$1バイト}})',
 'historyempty' => '(空)',
 
 # Revision feed
@@ -1251,11 +1251,11 @@ $3が示した理由は ''$2'' です。",
 'rev-delundel' => '表示/非表示',
 'rev-showdeleted' => '表示',
 'revisiondelete' => '版の削除と復帰',
-'revdelete-nooldid-title' => '不正な対象版',
+'revdelete-nooldid-title' => '無効な対象版',
 'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を非表示しようとしています。',
-'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません',
+'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\82\92æ\8c\87å®\9aã\81\97ていません',
 'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
-'revdelete-nologid-title' => '不正な記録項目',
+'revdelete-nologid-title' => '無効な記録項目',
 'revdelete-nologid-text' => 'この操作の対象となる記録の項目を指定していないか、あるいは指定した項目が存在しません。',
 'revdelete-no-file' => '指定されたファイルは存在しません。',
 'revdelete-show-file-confirm' => '本当にファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を閲覧しますか?',
@@ -1302,7 +1302,8 @@ $1",
 アクセス権限がありません。',
 'revdelete-modify-missing' => 'ID$1の項目の変更に失敗しました:データベースに見当たりません!',
 'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
-'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の利用者が変更したようです。',
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の誰かが変更したようです。
+記録を確認してください。',
 'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
 'revdelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
@@ -1356,10 +1357,10 @@ $1",
 'difference-multipage' => '(ページ間の差分)',
 'lineno' => '$1行:',
 'compareselectedversions' => '選択した版同士を比較',
-'showhideselectedversions' => '選択した版を表示もしくは非表示',
+'showhideselectedversions' => '選択した版を表示/非表示',
 'editundo' => '取り消し',
-'diff-multi' => '($2人の利用者による、間の$1版が非表示)',
-'diff-multi-manyusers' => '($2人以上の利用者による、間の$1版が非表示)',
+'diff-multi' => '({{PLURAL:$2|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-manyusers' => '({{PLURAL:$2|$2人を超える利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
 
 # Search results
 'searchresults' => '検索結果',
@@ -1374,13 +1375,13 @@ $1",
 'notextmatches' => 'どのページ本文とも一致しませんでした',
 'prevn' => '前の$1件',
 'nextn' => '次の$1件',
-'prevn-title' => '前の$1結果',
-'nextn-title' => '次の$1結果',
-'shown-title' => 'ページあたり$1件の結果を表示',
+'prevn-title' => '前の{{PLURAL:$1|$1結果}}',
+'nextn-title' => '次の{{PLURAL:$1|$1結果}}',
+'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
 'viewprevnext' => '($1{{int:pipe-separator}}$2)($3)を表示',
 'searchmenu-legend' => '検索オプション',
 'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
-'searchmenu-new' => "'''このウィキでページ「[[:$1|$1]]」を新規作成する'''",
+'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
 'searchhelp-url' => 'Help:目次',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
 'searchprofile-articles' => '本文ページ',
@@ -1393,8 +1394,8 @@ $1",
 'searchprofile-images-tooltip' => 'ファイルを検索',
 'searchprofile-everything-tooltip' => '全本文ページ(トークページ含む)を検索',
 'searchprofile-advanced-tooltip' => '特定の名前空間内を検索',
-'search-result-size' => '$1($2単語)',
-'search-result-category-size' => '$1件($2下位カテゴリ、$3ファイル)',
+'search-result-size' => '$1({{PLURAL:$2|$2単語}})',
+'search-result-category-size' => '{{PLURAL:$1|$1件}}({{PLURAL:$2|$2下位カテゴリ}}、{{PLURAL:$3|$3ファイル}})',
 'search-result-score' => '関連度:$1%',
 'search-redirect' => '($1からのリダイレクト)',
 'search-section' => '($1の節)',
@@ -1409,8 +1410,8 @@ $1",
 'searcheverything-enable' => 'すべての名前空間を検索',
 'searchrelated' => '関連',
 'searchall' => 'すべて',
-'showingresults' => "'''$2'''件目からの{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
-'showingresultsnum' => "'''$2'''件目からの{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
+'showingresults' => "'''$2'''件目以降の{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
+'showingresultsnum' => "'''$2'''件目以降の{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
 'showingresultsheader' => "「'''$4'''」に対する{{PLURAL:$5|'''$3'''件中の'''$1'''件の結果|'''$3'''件中の'''$1'''件目から'''$2'''件目の結果}}",
 'nonefound' => "'''注意''':既定では一部の名前空間のみを検索します。
 ''all:''を前に付けると、すべて(トークページやテンプレートなどを含む)を対象にできます。検索する名前空間を前に付けることもできます。",
@@ -1474,7 +1475,7 @@ $1",
 'columns' => '列数:',
 'searchresultshead' => '検索',
 'resultsperpage' => '1ページあたりの表示件数:',
-'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値(バイト):',
+'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値 (バイト):',
 'stub-threshold-disabled' => '無効',
 'recentchangesdays' => '最近の更新に表示する日数:',
 'recentchangesdays-max' => '(最大 $1 {{PLURAL:$1|日間}})',
@@ -1522,12 +1523,13 @@ $1",
 'yourrealname' => '本名:',
 'yourlanguage' => '使用言語:',
 'yourvariant' => 'コンテンツ言語変種:',
-'prefs-help-variant' => 'ã\81\82ã\81ªã\81\9fã\81\8cã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ã\81\84ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95',
+'prefs-help-variant' => 'ã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ç\94¨ã\81\97ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95ã\80\82',
 'yournick' => '新しい署名:',
 'prefs-help-signature' => 'トークページ上での発言には「<nowiki>~~~~</nowiki>」と付けて署名すべきです。これは自分の署名に時刻印を付けたものに変換されます。',
 'badsig' => '署名用のソースが正しくありません。
 HTMLタグを見直してください。',
-'badsiglength' => '署名が長すぎます。$1文字以下でなければなりません。',
+'badsiglength' => '署名が長すぎます。
+$1 {{PLURAL:$1|文字}}以下である必要があります。',
 'yourgender' => '性別:',
 'gender-unknown' => '未指定',
 'gender-male' => '男',
@@ -1712,10 +1714,10 @@ HTMLタグを見直してください。',
 'action-sendemail' => 'メールを送信',
 
 # Recent changes
-'nchanges' => '$1回の変更',
+'nchanges' => '$1{{PLURAL:$1|回の変更}}',
 'recentchanges' => '最近の更新',
 'recentchanges-legend' => '最近の更新のオプション',
-'recentchanges-summary' => 'このページで最近の更新を確認できます。',
+'recentchanges-summary' => 'このページでは、このウィキでの最近の更新を確認できます。',
 'recentchanges-feed-description' => 'このフィードでこのウィキの最近の更新を追跡できます。',
 'recentchanges-label-newpage' => 'この編集で新しいページが作成されました',
 'recentchanges-label-minor' => 'これは細部の編集です',
@@ -1739,10 +1741,10 @@ HTMLタグを見直してください。',
 'newpageletter' => '新',
 'boteditletter' => 'ボ',
 'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 人の利用者がウォッチしています]',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]',
 'rc_categories' => 'カテゴリを限定(「|」で区切る)',
 'rc_categories_any' => 'すべて',
-'rc-change-size-new' => '変更後は$1バイト',
+'rc-change-size-new' => '変更後は $1 {{PLURAL:$1|バイト}}',
 'newsectionsummary' => '/* $1 */ 新しい節',
 'rc-enhanced-expand' => '詳細を表示(JavaScript が必要)',
 'rc-enhanced-hide' => '詳細を非表示',
@@ -1755,7 +1757,7 @@ HTMLタグを見直してください。',
 'recentchangeslinked-title' => '「$1」と関連する変更',
 'recentchangeslinked-noresult' => '指定期間中に指定ページのリンク先に変更はありませんでした。',
 'recentchangeslinked-summary' => "これは、指定したページからリンクされている(または指定したカテゴリに含まれている)ページへの最近の変更の一覧です。
-[[Special:Watchlist|è\87ªå\88\86ã\81®ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯'''太å­\97'''ã\81§è¡¨ç¤ºã\81\95ã\82\8cã\81¦ã\81\84ます。",
+[[Special:Watchlist|è\87ªå\88\86ã\81®ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯'''太å­\97'''ã\81«ã\81ªã\82\8aます。",
 'recentchangeslinked-page' => 'ページ名:',
 'recentchangeslinked-to' => '代わりに、指定したページへのリンク元での変更を表示',
 
@@ -1766,8 +1768,8 @@ HTMLタグを見直してください。',
 'upload-tryagain' => '修正したファイル解説を投稿',
 'uploadnologin' => 'ログインしていません',
 'uploadnologintext' => 'ファイルをアップロードするには[[Special:UserLogin|ログイン]]する必要があります。',
-'upload_directory_missing' => 'アップロード先ディレクトリー($1)が見つからず、ウェブサーバーによって作成できませんでした。',
-'upload_directory_read_only' => 'アップロード先ディレクトリー($1)に、ウェブサーバーが書き込めません。',
+'upload_directory_missing' => 'アップロード先ディレクトリ($1)が見つからないため、ウェブサーバーによる作成ができませんでした。',
+'upload_directory_read_only' => 'アップロード先ディレクトリ($1)には、ウェブサーバーが書き込めません。',
 'uploaderror' => 'アップロードのエラー',
 'upload-recreate-warning' => "'''警告:その名前のファイルは、以前に削除または移動されています。'''
 
@@ -1818,15 +1820,15 @@ HTMLタグを見直してください。',
 'overwrite' => '既存のファイルへの上書きは許可されていません。',
 'unknown-error' => '不明なエラーが発生しました。',
 'tmp-create-error' => '一時ファイルを作成できませんでした。',
-'tmp-write-error' => '一時ファイルへの書き込みエラー',
-'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\81¯$1ã\83\90ã\82¤ã\83\88ã\82\88ã\82\8a大ã\81\8dã\81\8fã\81\97ã\81ªã\81\84ã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cã\81¦ã\81\84ます。
-このファイルは$2バイトです。',
+'tmp-write-error' => '一時ファイルへの書き込みエラーです。',
+'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\82\92 $1 ã\83\90ã\82¤ã\83\88以ä¸\8bã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。
+このファイルは $2 バイトです。',
 'largefileserver' => 'このファイルは、サーバー設定で許されている最大サイズより大きいです。',
 'emptyfile' => 'アップロードしたファイルは内容が空のようです。
 ファイル名の指定が間違っている可能性があります。
 本当にこのファイルをアップロードしたいのか、確認してください。',
 'windows-nonascii-filename' => 'このwikiではファイル名に特殊文字を使用できません。',
-'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\82\8bã\81¹ã\81\8dã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cã\82\82てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
+'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\81¦ã\81\84ã\81\84ã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cæ\8c\81てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
 [[$1|thumb]]",
 'filepageexists' => "このファイルのための説明ページは既に'''<tt>[[:$1]]</tt>'''に作成されていますが、現在、ファイルが存在していません。
 入力した概要は説明ページに反映されません。
@@ -1855,7 +1857,7 @@ HTMLタグを見直してください。',
 'uploadwarning' => 'アップロード警告',
 'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
 'savefile' => 'ファイルを保存',
-'uploadedimage' => '「[[$1]]」をアップロードしました',
+'uploadedimage' => '「[[$1]]」をアップロードしました',
 'overwroteimage' => '「[[$1]]」の新しい版をアップロードしました',
 'uploaddisabled' => 'アップロード機能は無効になっています。',
 'copyuploaddisabled' => 'URLからのアップロードは無効になっています。',
@@ -1895,7 +1897,7 @@ MGP # ペンタックス
 PICT # その他
  #</pre> <!-- この行はそのままにしておいてください -->',
 'upload-success-subj' => 'アップロード成功',
-'upload-success-msg' => '[$2] ã\81\8bã\82\89ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81«æ\88\90å\8a\9fしました。こちらで利用できます:[[:{{ns:file}}:$1]]',
+'upload-success-msg' => '[$2] ã\81\8bã\82\89ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89しました。こちらで利用できます:[[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'アップロードで発生した問題',
 'upload-failure-msg' => '[$2]からのアップロード中に問題が発生しました:
 
@@ -1903,7 +1905,7 @@ $1',
 'upload-warning-subj' => 'アップロードの警告',
 'upload-warning-msg' => '[$2] からアップロードしようとしたデータに問題があります。 [[Special:Upload/stash/$1|アップロードのフォーム]]に戻って問題を修正してください。',
 
-'upload-proto-error' => '不正なプロトコル',
+'upload-proto-error' => '無効なプロトコル',
 'upload-proto-error-text' => '遠隔アップロード機能では、URLが<code>http://</code>か<code>ftp://</code>で始まっている必要があります。',
 'upload-file-error' => '内部エラー',
 'upload-file-error-text' => '内部エラーのため、サーバー上の一時ファイル作成に失敗しました。
@@ -1934,11 +1936,11 @@ $1',
 'backend-fail-closetemp' => '一時ファイルを閉じることができませんでした。',
 'backend-fail-read' => 'ファイル $1 を読み込めませんでした。',
 'backend-fail-create' => 'ファイル $1 に書き込めませんでした。',
-'backend-fail-maxsize' => '{{PLURAL:$2|$2 バイト}}よりも大きいため、ファイル「$1」に書き込めませんでした。',
-'backend-fail-readonly' => 'ストレージバックエンド「$1」は現在読み取り専用です。理由:「$2」',
-'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81«ã\81\8aã\81\84ã\81¦ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
-'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\80\8c$1ã\80\8d',
-'backend-fail-internal' => 'ストレージバックエンド「$1」で原因不明のエラーが発生しました。',
+'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル $1 に書き込めませんでした。',
+'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
+'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81§ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99',
+'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\80\8c$1ã\80\8dã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'backend-fail-internal' => 'ストレージバックエンド「$1」内で不明なエラーが発生しました。',
 'backend-fail-contenttype' => '「$1」に保存するコンテンツの種類が判断できませんでした。',
 'backend-fail-batchsize' => 'ストレージバックエンドは $1 件のファイル{{PLURAL:$1|操作}}のバッチを与えられました; 上限は $2 件の{{PLURAL:$2|操作}}です。',
 
@@ -1947,7 +1949,7 @@ $1',
 'filejournal-fail-dbquery' => 'ストレージバックエンド「$1」のジャーナルデータベースを更新できません。',
 
 # Lock manager
-'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\82¢ã\83³ã\83­ã\83\83ã\82¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\83­ã\83\83ã\82¯è§£é\99¤ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
 'lockmanager-fail-closelock' => '「$1」用のロックファイルを閉じることができませんでした。',
 'lockmanager-fail-deletelock' => '「$1」用のロックファイルを削除できませんでした。',
 'lockmanager-fail-acquirelock' => '「$1」用のロックを取得できませんでした。',
@@ -1970,22 +1972,22 @@ $1',
 'uploadstash-summary' => 'このページでは、アップロードされた、もしくはアップロード中の、ウィキ上でまだ公開されていないファイルを表示します。これらのファイルは、アップロードした利用者以外閲覧できません。',
 'uploadstash-clear' => '未公開ファイルを消去',
 'uploadstash-nofiles' => '未公開ファイルはありません。',
-'uploadstash-badtoken' => '実行できませんでした。編集するための認証が無効になったことが原因である可能性があります。再度お試しください。',
+'uploadstash-badtoken' => '操作を実行できませんでした。編集するための認証の期限切れが原因である可能性があります。再度お試しください。',
 'uploadstash-errclear' => 'ファイルの消去に失敗しました。',
 'uploadstash-refresh' => 'ファイルの一覧を更新',
-'invalid-chunk-offset' => '不正なチャンクオフセット',
+'invalid-chunk-offset' => '無効なチャンクオフセット',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'アクセスが拒否されました',
 'img-auth-nopathinfo' => 'PATH_INFO が見つかりません。
 サーバーが、この情報を渡すように構成されていません。
 CGI ベースであるため、img_auth に対応できない可能性もあります。
-https://www.mediawiki.org/wiki/Manual:Image_Authorization を参照してください。',
-'img-auth-notindir' => '要求されたパスは、設定済みのアップロード用ディレクトリー内にありません。',
+https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください。',
+'img-auth-notindir' => '要求されたパスは、設定済みのアップロード先ディレクトリ内にありません。',
 'img-auth-badtitle' => '「$1」からは有効なページ名を構築できません。',
 'img-auth-nologinnWL' => 'ログインしておらず、さらに「$1」はホワイトリストに入っていません。',
 'img-auth-nofile' => 'ファイル「$1」は存在しません。',
-'img-auth-isdir' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\80\8c$1ã\80\8dã\81«ã\82¢ã\82¯ã\82»ã\82¹ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82
+'img-auth-isdir' => 'ディレクトリ「$1」にアクセスしようとしています。
 ファイルへのアクセスのみが許可されています。',
 'img-auth-streaming' => '「$1」を転送中。',
 'img-auth-public' => 'img_auth.phpの機能は、非公開ウィキからのファイルの出力です。
@@ -2037,7 +2039,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 # File description page
 'file-anchor-link' => 'ファイル',
 'filehist' => 'ファイルの履歴',
-'filehist-help' => '過去の版のファイルを表示するには、表示したい版の日付/時刻をクリックしてください。',
+'filehist-help' => '過去の版のファイルを表示するには、その版の日時をクリックしてください。',
 'filehist-deleteall' => 'すべて削除',
 'filehist-deleteone' => '削除',
 'filehist-revert' => '差し戻す',
@@ -2059,7 +2061,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 'nolinkstoimage' => 'このファイルへリンクしているページはありません。',
 'morelinkstoimage' => 'このファイルへの[[Special:WhatLinksHere/$1|リンク元を更に]]を表示する。',
 'linkstoimage-redirect' => '$1 (リダイレクト) $2',
-'duplicatesoffile' => '以下の$1ファイルが、このファイルと内容が同一です([[Special:FileDuplicateSearch/$2|詳細]]):',
+'duplicatesoffile' => '以下の $1 {{PLURAL:$1|ファイル}}が、このファイルと重複しています([[Special:FileDuplicateSearch/$2|詳細]]):',
 'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。',
 'sharedupload-desc-there' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。
 詳細は[$2 ファイル解説ページ]を参照してください。',
@@ -2084,7 +2086,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filerevert-comment' => '理由:',
 'filerevert-defaultcomment' => '$1$2の版へ差し戻し',
 'filerevert-submit' => '差し戻す',
-'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4  $2$3の版]に差し戻されました。",
+'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4 $2$3の版]に差し戻されました。",
 'filerevert-badversion' => 'このファイルに指定された時刻印を持つ過去の版はありません。',
 
 # File deletion
@@ -2103,14 +2105,14 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filedelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
 ** 重複ファイル',
-'filedelete-edit-reasonlist' => '削除理由を編集する',
+'filedelete-edit-reasonlist' => '削除理由を編集',
 'filedelete-maintenance' => 'メンテナンス中のため、ファイルの削除と復帰は一時的に無効化されています。',
 'filedelete-maintenance-title' => 'ファイルを削除できません',
 
 # MIME search
 'mimesearch' => 'MIMEタイプ検索',
-'mimesearch-summary' => '指定したMIMEタイプに合致するファイルを検索します。
-contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</tt>)。',
+'mimesearch-summary' => 'このページでは、ファイルをMIMEタイプで絞り込みます。
+contenttype/subtypeの形式で入力してください(例:<tt>image/jpeg</tt>)。',
 'mimetype' => 'MIMEタイプ:',
 'download' => 'ダウンロード',
 
@@ -2163,8 +2165,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 
 'doubleredirects' => '二重転送',
 'doubleredirectstext' => 'これは他のリダイレクトページへのリダイレクトの一覧です。
\90\84è¡\8cã\81«ã\81¯ã\80\81æ\9c\80å\88\9dã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81¨ã\80\81ã\81\9dã\81®è»¢é\80\81å\85\88ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\9dã\81®ã\81¾ã\81\9f転é\80\81å\85\88へのリンクが表示されています。多くの場合、最終の転送先が正しい転送先であり、最初のリダイレクトは直接最後の転送先に向けるべきです。
-<del>æ\89\93ã\81¡æ¶\88ã\81\97ç·\9a</del>ã\81®ã\81¯ã\81\84ã\81£ã\81\9fé \85ç\9b®ã\81¯æ\97¢ã\81«ä¿®æ­£ã\81\95ã\82\8cています。',
\90\84è¡\8cã\81«ã\81¯ã\80\81æ\9c\80å\88\9dã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\9dã\81®è»¢é\80\81å\85\88ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\95ã\82\89ã\81«ã\81\9dã\81®è»¢é\80\81å\85\88ã\80\81ã\81\9dã\82\8cã\81\9eã\82\8cへのリンクが表示されています。多くの場合、最終の転送先が正しい転送先であり、最初のリダイレクトは直接最後の転送先に向けるべきです。
+<del>æ\89\93ã\81¡æ¶\88ã\81\97ç·\9a</del>ã\81\8cå\85¥ã\81£ã\81\9fé \85ç\9b®ã\81¯æ\97¢ã\81«è§£æ±ºã\81\97ています。',
 'double-redirect-fixed-move' => '[[$1]]を移動しました。
 今後は[[$2]]に転送されます。',
 'double-redirect-fixed-maintenance' => '[[$1]]から[[$2]]への二重転送を修正します。',
@@ -2238,15 +2240,15 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'ancientpages' => '最古のページ',
 'move' => '移動',
 'movethispage' => 'このページを移動',
-'unusedimagestext' => '以下のファイルは存在していますが、どのページにも埋め込まれていません。
+'unusedimagestext' => '以下のファイルは、存在しますがどのページにも埋め込まれていません。
 ただし、他のウェブサイトがURLでファイルに直接リンクする場合があることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれている場合があります。',
 'unusedcategoriestext' => '以下のカテゴリはページが存在しますが、他のどのページおよびカテゴリでも使用されていません。',
 'notargettitle' => '対象が存在しません',
 'notargettext' => 'この機能の実行対象となるページまたは利用者が指定されていません。',
 'nopagetitle' => 'そのようなページはありません',
 'nopagetext' => '指定したページは存在しません。',
-'pager-newer-n' => '以後の$1件',
-'pager-older-n' => '以前の$1件',
+'pager-newer-n' => '{{PLURAL:$1|以後の$1件}}',
+'pager-older-n' => '{{PLURAL:$1|以前の$1件}}',
 'suppress' => '秘匿する',
 'querypage-disabled' => 'パフォーマンスに悪影響を与えるおそれがあるため、この特別ページは無効になっています。',
 
@@ -2255,7 +2257,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'booksources-search-legend' => '書籍情報源を検索',
 'booksources-go' => '検索',
 'booksources-text' => '以下は、新古本を販売している外部サイトへのリンクの一覧で、検索中の本について、更に詳しい情報が提供されているかもしれません:',
-'booksources-invalid-isbn' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fISBNç\95ªå\8f·ã\81¯æ\9c\89å\8a¹ã\81§ã\81¯ã\81ªã\81\84ã\82\88ã\81\86ã\81§ã\81\99ã\80\82å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bæ\83\85å ±æº\90ã\81\8bã\82\89å\86\99ã\81\97é\96\93é\81\95ã\81\88ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\81\8b。',
+'booksources-invalid-isbn' => 'æ\8c\87å®\9aã\81\97ã\81\9fISBNç\95ªå\8f·ã\81¯æ\9c\89å\8a¹ã\81§ã\81¯ã\81ªã\81\84ã\82\88ã\81\86ã\81§ã\81\99ã\80\82æ\83\85å ±æº\90ã\81\8bã\82\89å\86\99ã\81\97é\96\93é\81\95ã\81\88ã\81¦ã\81\84ã\81ªã\81\84ã\81\8b確èª\8dã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 
 # Special:Log
 'specialloguserlabel' => '実行者:',
@@ -2266,6 +2268,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 記録の種類、実行した利用者(大文字小文字は区別)、影響を受けたページ(大文字小文字は区別)による絞り込みができます。',
 'logempty' => '該当する記録はありません。',
 'log-title-wildcard' => 'この文字列で始まるページ名を検索',
+'showhideselectedlogentries' => '選択した記録の項目を表示/非表示',
 
 # Special:AllPages
 'allpages' => '全ページ',
@@ -2398,7 +2401,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'watchnologin' => 'ログインしていません',
 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:UserLogin|ログイン]]している必要があります。',
 'addwatch' => 'ウォッチリストに追加',
-'addedwatchtext' => "ページ 「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
+'addedwatchtext' => "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
 このページと付属のトークページに変更があった際には、ウォッチリストに表示されます。また、ウォッチリストに登録されているページは[[Special:RecentChanges|最近の更新の一覧]]に'''太字'''で表示され、見つけやすくなります。",
 'removewatch' => 'ウォッチリストから除去',
 'removedwatchtext' => 'ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]から除去しました。',
@@ -2409,13 +2412,13 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'notanarticle' => '記事ではありません',
 'notvisiblerev' => '別の利用者による最終版は削除されました',
 'watchnochange' => 'ウォッチリストに登録しているページで、指定期間内に編集されたものはありません。',
-'watchlist-details' => 'ウォッチリストには$1ページが登録されています(トークページは数えません)。',
+'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています(トークページを除く)。',
 'wlheader-enotif' => '* メール通知が有効になっています',
 'wlheader-showupdated' => "* 最後に訪問したあとに変更されたページは、'''太字'''で表示されます",
 'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
 'watchmethod-list' => 'ウォッチされているページ内の最近の更新を確認中',
-'watchlistcontains' => 'ウォッチリストには、$1ページが登録されています。',
-'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81«ã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\81å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82',
+'watchlistcontains' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています。',
+'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81«ã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81\82ã\82\8aã\81¾ã\81\9bã\82\93...',
 'wlnote' => "$3 $4 までの{{PLURAL:$2|'''$2'''時間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
 'wlshowlast' => '次の期間で表示:$1時間、$2日間、$3',
 'watchlist-options' => 'ウォッチリストのオプション',
@@ -2493,9 +2496,9 @@ $UNWATCHURL
 ** 著作権侵害
 ** 荒らし',
 'delete-edit-reasonlist' => '削除理由を編集',
-'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 このようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。',
-'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
 
@@ -2519,7 +2522,7 @@ $2による直前の版へ変更されました。',
 # Edit tokens
 'sessionfailure-title' => 'セッションの失敗',
 'sessionfailure' => 'ログインのセッションに問題が発生しました。
\82»ã\83\83ã\82·ã\83§ã\83³ä¹\97ã\81£å\8f\96ã\82\8aã\82\92é\98²ã\81\90ã\81\9fã\82\81ã\81«æ\93\8dä½\9cã\81¯å\8f\96ã\82\8aæ¶\88ã\81\95ã\82\8cました。
\82»ã\83\83ã\82·ã\83§ã\83³ä¹\97ã\81£å\8f\96ã\82\8aã\82\92é\98²ã\81\90ã\81\9fã\82\81ã\80\81æ\93\8dä½\9cã\82\92å\8f\96ã\82\8aæ¶\88ã\81\97ました。
 前のページへ戻って再度読み込んだ後に、もう一度試してください。',
 
 # Protect
@@ -2529,7 +2532,7 @@ $2による直前の版へ変更されました。',
 'protectedarticle' => '「[[$1]]」を保護しました',
 'modifiedarticleprotection' => '「[[$1]]」の保護レベルを変更しました',
 'unprotectedarticle' => '「[[$1]]」の保護を解除しました',
-'movedarticleprotection' => '保護の設定を「[[$2]]」から「[[$1]]」へ移動しました',
+'movedarticleprotection' => ' が保護の設定を「[[$2]]」から「[[$1]]」へ移動しました',
 'protect-title' => '「$1」の保護レベルを変更',
 'protect-title-notallowed' => '「$1」の保護レベルを表示',
 'prot_1movedto2' => '[[$1]] を [[$2]] へ移動',
@@ -2592,14 +2595,14 @@ $2による直前の版へ変更されました。',
 # Undelete
 'undelete' => '削除されたページを表示',
 'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は、[[:$1]]の削除された版です'''。",
+'undeletepagetitle' => "'''以下は、[[:$1|$1]]の削除された版です'''。",
 'viewdeletedpage' => '削除されたページを表示',
-'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|削除されたページ群}}は、保存版に残っているため復元できます。
+'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|&#32;$1 件の削除されたページ}}は、保存版に残っているため復元できます。
 保存版は定期的に消去される可能性があります。',
 'undelete-fieldset-title' => '削除された版の復元',
 'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
 特定の版を復帰する場合は、復帰する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
-'undeleterevisions' => '$1版が保存されています',
+'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
 'undeletehistory' => 'ページの復帰を行うと、すべての版が履歴に復帰します。
 削除されたあとに同じ名前で新しくページが作成されていた場合、復帰した版はそれに先行する履歴として現れます。',
 'undeleterevdel' => '復帰した結果、版指定削除されているページまたはファイルの版が最新となる場合、復帰は実行されません。
@@ -2617,11 +2620,11 @@ $2による直前の版へ変更されました。',
 'undeletereset' => 'リセット',
 'undeleteinvert' => '選択を反転',
 'undeletecomment' => '理由:',
-'undeletedrevisions' => '$1版を復元しました',
-'undeletedrevisions-files' => '$1版と$2ファイルを復元しました',
-'undeletedfiles' => '$1ファイルを復帰しました',
+'undeletedrevisions' => '{{PLURAL:$1|$1版}}を復元しました',
+'undeletedrevisions-files' => '{{PLURAL:$1|$1版}}と{{PLURAL:$2|$2ファイル}}を復元しました',
+'undeletedfiles' => '{{PLURAL:$1|$1ファイル}}を復帰しました',
 'cannotundelete' => '復帰に失敗しました。
-誰かが、既にこのページを復帰した可能性があります。',
+他の誰かがこのページを既に復帰した可能性があります。',
 'undeletedpage' => "'''$1を復元しました。'''
 
 最近の削除と復帰の記録については[[Special:Log/delete|削除記録]]を参照してください。",
@@ -2634,7 +2637,7 @@ $2による直前の版へ変更されました。',
 'undelete-filename-mismatch' => 'ファイルの時刻印$1の版を復帰できません:ファイル名が一致しません。',
 'undelete-bad-store-key' => 'ファイルの時刻印$1の版を復帰できません:削除前にファイルが失われています。',
 'undelete-cleanup-error' => '未使用の保存版のファイル「$1」の削除中にエラーが発生しました。',
-'undelete-missing-filearchive' => 'データベースに存在しないため、ID$1を持つファイルの保存版を復元できません。
+'undelete-missing-filearchive' => 'データベースに存在しないため、ID $1を持つファイルの保存版を復元できません。
 既に復帰されている可能性があります。',
 'undelete-error' => 'ページの復帰エラー',
 'undelete-error-short' => 'ファイルの復帰エラー:$1',
@@ -2647,7 +2650,7 @@ $1',
 # Namespace form on various pages
 'namespace' => '名前空間:',
 'invert' => '選択したものを除く',
-'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\81¾ã\81\99ã\80\82',
+'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8b',
 'namespace_association' => '対応付けられた名前空間',
 'tooltip-namespace_association' => '選択した名前空間に関連付けられているトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
 'blanknamespace' => '(標準)',
@@ -2662,7 +2665,7 @@ $1',
 'month' => 'これ以前の月:',
 'year' => 'これ以前の年:',
 
-'sp-contributions-newbies' => '新規利用者の投稿のみ表示',
+'sp-contributions-newbies' => '新しい利用者からの投稿のみ表示',
 'sp-contributions-newbies-sub' => '新規利用者のみ',
 'sp-contributions-newbies-title' => '新規利用者の投稿記録',
 'sp-contributions-blocklog' => 'ブロック記録',
@@ -2721,7 +2724,7 @@ $1',
 ** 威圧的な態度/嫌がらせ
 ** 複数アカウントの不正利用
 ** 不適切な利用者名',
-'ipb-hardblock' => 'ログインしている利用者によるこのIPアドレスからの編集を不許可',
+'ipb-hardblock' => 'ログイン利用者によるこのIPアドレスからの編集を不許可',
 'ipbcreateaccount' => 'アカウント作成を禁止',
 'ipbemailban' => 'メール送信を防止',
 'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスと、後に編集しようとしたIPアドレスを自動的にブロック',
@@ -2735,7 +2738,7 @@ $1',
 'ipb-disableusertalk' => 'この利用者がブロックされている間に自分のトークページを編集するのを不許可',
 'ipb-change-block' => 'これらの設定で、利用者を再びブロック',
 'ipb-confirm' => 'ブロックの確認',
-'badipaddress' => '不正なIPアドレス',
+'badipaddress' => '無効なIPアドレス',
 'blockipsuccesssub' => 'ブロックしました',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]をブロックしました。<br />
 [[Special:BlockList|ブロックの一覧]]を参照してください。',
@@ -2782,8 +2785,8 @@ $1',
 'change-blocklink' => '設定を変更',
 'contribslink' => '投稿記録',
 'emaillink' => 'メールを送信',
-'autoblocker' => '使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
-$1のブロックの理由は「$2」です。',
+'autoblocker' => "ご使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
+$1のブロックの理由は「''$2''」です。",
 'blocklogpage' => 'ブロック記録',
 'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
 参考のため、ブロックの記録を以下に示します:',
@@ -2803,28 +2806,27 @@ $1のブロックの理由は「$2」です。',
 'block-log-flags-angry-autoblock' => '拡張自動ブロック有効',
 'block-log-flags-hiddenname' => '利用者名の秘匿',
 'range_block_disabled' => '範囲ブロックを作成する管理者機能は無効化されています。',
-'ipb_expiry_invalid' => '有効期限が不正です。',
+'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
 'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
 'ipb_already_blocked' => '「$1」は既にブロックされています',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
-'ipb_cant_unblock' => 'エラー:ブロック ID $1 がありません。
-ブロックが既に解除されている可能性があります。',
+'ipb_cant_unblock' => 'エラー:ブロック ID $1 はありません。ブロックが既に解除されている可能性があります。',
 'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
 ただし、$2の範囲でブロックされており、こちらのブロックは別途解除できます。',
-'ip_range_invalid' => '不正なIP範囲です。',
+'ip_range_invalid' => 'IP範囲が無効です。',
 'ip_range_toolarge' => '/$1よりサイズの広い範囲ブロックは許可されていません。',
 'blockme' => '自分をブロック',
 'proxyblocker' => 'プロキシブロック係',
 'proxyblocker-disabled' => 'この機能は無効になっています。',
-'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
+'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
 使用中のインターネットサービスプロバイダー、または所属組織の技術担当者に連絡して、これが深刻なセキュリティ問題であることを伝えてください。',
 'proxyblocksuccess' => '完了。',
-'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
-'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
-アカウントは作成できません',
+'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
+'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
+アカウント作成はできません',
 'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
 'cant-see-hidden-user' => '投稿ブロックしようとした利用者は、既にブロックされ隠されています。
 hideuser権限を持っていないため、この利用者のブロックを閲覧または編集できません。',
@@ -2838,16 +2840,16 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 本当にデータベースをロックしていいかどうか確認し、メンテナンスが終了したらロックを解除してください。',
 'unlockdbtext' => 'データベースのロックを解除すると、すべての利用者がページの編集や、個人設定の変更、ウォッチリストの編集、その他データベースでの変更を要求する作業ができるようになります。
 本当にデータベースのロックを解除していいかどうか確認してください。',
-'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\99ã\82\8b。',
+'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\97ã\81¾ã\81\99。',
 'unlockconfirm' => '本当にデータベースのロックを解除します。',
 'lockbtn' => 'データベースをロック',
 'unlockbtn' => 'データベースのロックを解除',
 'locknoconfirm' => '確認ボックスにチェックが入っていません。',
 'lockdbsuccesssub' => 'データベースのロックに成功しました',
 'unlockdbsuccesssub' => 'データベースのロックを除去しました',
-'lockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cました。<br />
+'lockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\97ました。<br />
 メンテナンスが完了したら、忘れずに[[Special:UnlockDB|ロックを除去]]してください。',
-'unlockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®ã\83­ã\83\83ã\82¯ã\81¯è§£é\99¤ã\81\95ã\82\8cました。',
+'unlockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®ã\83­ã\83\83ã\82¯ã\82\92解é\99¤ã\81\97ました。',
 'lockfilenotwritable' => 'データベースのロック ファイルが書き込み禁止です。
 データベースをロックまたはロック解除するには、ウェブ サーバーがこれに書き込める必要があります。',
 'databasenotlocked' => 'データベースはロックされていません。',
@@ -2856,17 +2858,18 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 # Move page
 'move-page' => '「$1」の移動',
 'move-page-legend' => 'ページの移動',
-'movepagetext' => "下のフォームを利用すると、ページ名が変更され、その履歴も変更先へ移動します。
-古いページは変更先へのリダイレクトページとなります。
-変更前のページへのリダイレクトは自動的に修正できます。
-自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのはあなたの責任です。
+'movepagetext' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+移動元のページは移動先への転送ページになります。
+移動元のページへのリダイレクトを自動的に修正できます。
+[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
+リンクを正しく維持するのは移動した人の責任です。
 
 移動先が既に存在する場合は、そのページが空またはリダイレクトで、かつ過去の版を持たない場合を除いて移動'''できません'''。つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
 '''注意!'''
\82\88ã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84ã\80\81ä»\96ã\81®å¤\9aã\81\8fã\81®ã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨äº\88æ\9c\9fã\81\9bã\81¬結果が起こるかもしれません。ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
-'movepagetext-noredirectfixer' => "下のフォームを利用すると、ページ名が変更され、ページの履歴も変更先へ移動します。
-古いページは変更先への転送ページとなります。
\82\88ã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84ã\80\81ä»\96ã\81®å¤\9aã\81\8fã\81®ã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨äº\88æ\9c\9fã\81\97ã\81ªã\81\84結果が起こるかもしれません。ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
+'movepagetext-noredirectfixer' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+移動元のページは移動先への転送ページになります。
 自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
 つながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。
 
@@ -2874,15 +2877,15 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
 '''警告!'''
-å¤\9aã\81\8fé\96²è¦§ã\81\95ã\82\8cã\81\9fã\82\8aã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨ã\80\81äº\88æ\9c\9fã\81\9bã\81¬å¤§ã\81\8dã\81ªå¤\89å\8c\96ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93
+å¤\9aã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84å¤\9aã\81\8fã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨ã\80\81äº\88æ\9c\9fã\81\97ã\81ªã\81\84大ã\81\8dã\81ªå¤\89å\8c\96ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\81\93ã\81¨ã\81«ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84
 ページの移動に伴う影響をよく考えてから移動してください。",
-'movepagetalktext' => '関連付けられたトークページは、自動的に一緒に移動されます。ただしこれは、以下の場合を除きます:
-* ç©ºã\81§ã\81¯ã\81ªã\81\84ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\96°ã\81\97ã\81\84å\90\8då\89\8dã\81§存在する場合
+'movepagetalktext' => "関連付けられたトークページも一緒に、自動的に移動されます。ただし、'''以下の場合を除きます:'''
+* ç§»å\8b\95å\85\88ã\81«ã\80\81空ã\81§ã\81¯ã\81ªã\81\84ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8c存在する場合
 * 下のボックスのチェックを消した場合
 
-これらの場合、必要に応じて、トークページを移動または統合する必要があります。',
+これらの場合、必要に応じて、トークページを移動または統合する必要があります。",
 'movearticle' => '移動するページ:',
-'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81 ã\81\91が移動され、利用者名は''変更されない''点に注意してください。",
+'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\81\97ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81®ã\81¿が移動され、利用者名は''変更されない''点に注意してください。",
 'movenologin' => 'ログインしていません',
 'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
 'movenotallowed' => 'ページを移動する権限がありません。',
@@ -2898,8 +2901,8 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
 別の名前を選択してください。',
-'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
-'talkexists' => "'''ã\83\9aã\83¼ã\82¸è\87ªèº«ã\81¯ç\84¡äº\8bã\81«ç§»å\8b\95ã\81\95ã\82\8cましたが、トークページは移動先のページが存在したため移動できませんでした。
+'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
+'talkexists' => "'''ã\83\9aã\83¼ã\82¸è\87ªèº«ã\81¯ç§»å\8b\95ã\81§ã\81\8dましたが、トークページは移動先のページが存在したため移動できませんでした。
 手動で統合してください。'''",
 'movedto' => '移動先:',
 'movetalk' => '付随するトークページも移動',
@@ -2932,7 +2935,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'imagenocrossnamespace' => 'ファイルを、ファイル名前空間以外に移動させることはできません',
 'nonfile-cannot-move-to-file' => 'ファイルではないものを、ファイル名前空間に移動させることはできません',
 'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
-'imageinvalidfilename' => '対象ファイル名が不正です',
+'imageinvalidfilename' => '対象ファイル名が無効です',
 'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正',
 'move-leave-redirect' => '移動元にリダイレクトを作成する',
 'protectedpagemovewarning' => "'''警告:'''このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
@@ -2991,7 +2994,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'djvu_no_xml' => 'DjVuファイルのXMLデータを取得できません',
 'thumbnail-temp-create' => '一時的なサムネイルファイルを作成できません',
 'thumbnail-dest-create' => 'サムネイルを保存先に保存できません',
-'thumbnail_invalid_params' => 'サムネイル引数が不正です',
+'thumbnail_invalid_params' => 'サムネイル引数が無効です',
 'thumbnail_dest_directory' => '出力ディレクトリを作成できません',
 'thumbnail_image-type' => '対応していない画像形式です',
 'thumbnail_gd-library' => 'GDライブラリの構成が不完全です:関数$1が不足',
@@ -3013,18 +3016,18 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
 それをコンピューターに保存した後、こちらへアップロードしてください。',
 'importstart' => 'ページを取り込み中...',
-'import-revision-count' => '$1',
+'import-revision-count' => '$1{{PLURAL:$1|版}}',
 'importnopages' => '取り込むページがありません。',
 'imported-log-entries' => '$1 件の{{PLURAL:$1|記録項目}}を取り込みました。',
 'importfailed' => '取り込みに失敗しました:<nowiki>$1</nowiki>',
 'importunknownsource' => '取り込み元のタイプが不明です',
 'importcantopen' => '取り込みファイルが開けませんでした',
 'importbadinterwiki' => 'ウィキ間リンクが正しくありません',
-'importnotext' => '空かもしくは本文がありません',
+'importnotext' => '内容が空、または本文がありません',
 'importsuccess' => '取り込みが完了しました!',
 'importhistoryconflict' => '取り込み時にいくつかの版が競合しました(以前に同じページが取り込まれているかもしれません)',
 'importnosources' => 'ウィキ間移動の取り込み元が定義されていないため、履歴の直接アップロードは無効になっています。',
-'importnofile' => 'ファイルがアップロードされませんでした',
+'importnofile' => '取り込みファイルはアップロードされませんでした。',
 'importuploaderrorsize' => '取り込みファイルのアップロードに失敗しました。
 ファイルが、アップロードできるサイズを超えています。',
 'importuploaderrorpartial' => '取り込みファイルのアップロードに失敗しました。
@@ -3049,9 +3052,9 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'importlogpage' => '取り込み記録',
 'importlogpagetext' => '管理された他のウィキから編集履歴を伴ったページ取り込みです。',
 'import-logentry-upload' => 'ファイルのアップロードにより[[$1]]を取り込みました',
-'import-logentry-upload-detail' => '$1',
+'import-logentry-upload-detail' => '$1{{PLURAL:$1|版}}',
 'import-logentry-interwiki' => '$1をウィキ間移動しました',
-'import-logentry-interwiki-detail' => '$2の$1',
+'import-logentry-interwiki-detail' => '$2の$1{{PLURAL:$1|版}}',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript をテスト中',
@@ -3072,27 +3075,27 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-pt-preferences' => '個人設定',
 'tooltip-pt-watchlist' => '変更をウォッチしているページの一覧',
 'tooltip-pt-mycontris' => '自分の投稿の一覧',
-'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
-'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
+'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
+'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
 'tooltip-pt-logout' => 'ログアウト',
 'tooltip-ca-talk' => '本文ページについての議論',
-'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使用してください。',
-'tooltip-ca-addsection' => '新しい節を開始',
+'tooltip-ca-edit' => 'このページを編集できます。保存前にプレビューボタンを使用してください。',
+'tooltip-ca-addsection' => '新しい節を開始する',
 'tooltip-ca-viewsource' => 'このページは保護されています。
 ページのソースを閲覧できます。',
 'tooltip-ca-history' => 'このページの過去の版',
-'tooltip-ca-protect' => 'このページを保護',
-'tooltip-ca-unprotect' => 'このページの保護設定を変更',
-'tooltip-ca-delete' => 'このページを削除',
-'tooltip-ca-undelete' => '削除される前になされた編集を復元',
-'tooltip-ca-move' => 'このページを移動',
-'tooltip-ca-watch' => 'このページをウォッチリストに追加',
-'tooltip-ca-unwatch' => 'このページをウォッチリストから除去',
-'tooltip-search' => '{{SITENAME}}内を検索',
-'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\97ã\81¾ã\81\99',
-'tooltip-search-fulltext' => '入力された文字列が含まれるページを検索します',
-'tooltip-p-logo' => 'メインページに移動',
-'tooltip-n-mainpage' => 'メインページに移動',
+'tooltip-ca-protect' => 'このページを保護する',
+'tooltip-ca-unprotect' => 'このページの保護設定を変更する',
+'tooltip-ca-delete' => 'このページを削除する',
+'tooltip-ca-undelete' => '削除される前になされた編集を復元する',
+'tooltip-ca-move' => 'このページを移動する',
+'tooltip-ca-watch' => 'このページをウォッチリストに追加する',
+'tooltip-ca-unwatch' => 'このページをウォッチリストから除去する',
+'tooltip-search' => '{{SITENAME}}内を検索する',
+'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\99ã\82\8b',
+'tooltip-search-fulltext' => 'この文字列が含まれるページを探す',
+'tooltip-p-logo' => 'メインページに移動する',
+'tooltip-n-mainpage' => 'メインページに移動する',
 'tooltip-n-mainpage-description' => 'メインページに移動する',
 'tooltip-n-portal' => 'このプロジェクトについて、できること、情報を入手する場所',
 'tooltip-n-currentevents' => '最近の出来事の背景を知る',
@@ -3112,7 +3115,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-main' => '本文を閲覧',
 'tooltip-ca-nstab-user' => '利用者ページを表示',
 'tooltip-ca-nstab-media' => 'メディアページを表示',
-'tooltip-ca-nstab-special' => 'これは特別ページです。編集できません。',
+'tooltip-ca-nstab-special' => 'ã\81\93ã\82\8cã\81¯ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81§ã\81\99ã\80\82ç·¨é\9b\86ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
 'tooltip-ca-nstab-project' => 'プロジェクトページを表示',
 'tooltip-ca-nstab-image' => 'ファイルページを表示',
 'tooltip-ca-nstab-mediawiki' => 'システムメッセージを表示',
@@ -3120,18 +3123,18 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-help' => 'ヘルプページを表示',
 'tooltip-ca-nstab-category' => 'カテゴリページを閲覧',
 'tooltip-minoredit' => 'この編集に細部の変更の印を付ける',
-'tooltip-save' => '変更を保存',
+'tooltip-save' => '変更を保存する',
 'tooltip-preview' => '変更をプレビューで確認できます。保存前に使用してください!',
-'tooltip-diff' => '文章中で変更した箇所を表示',
-'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82',
+'tooltip-diff' => '文章中で変更した箇所を表示する',
+'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\99ã\82\8b',
 'tooltip-watch' => 'このページをウォッチリストに追加する',
-'tooltip-watchlistedit-normal-submit' => 'ã\82¿ã\82¤ã\83\88ã\83«ã\82\92å\89\8aé\99¤',
-'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新',
+'tooltip-watchlistedit-normal-submit' => 'ã\83\9aã\83¼ã\82¸ã\82\92é\99¤å\8e»ã\81\99ã\82\8b',
+'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新する',
 'tooltip-recreate' => '削除されていても、ページを再作成する',
-'tooltip-upload' => 'アップロードを開始',
+'tooltip-upload' => 'アップロードを開始する',
 'tooltip-rollback' => '「巻き戻し」は、このページの最後の編集者によるこのページへの編集を1クリックで差し戻します',
 'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューを付けて開きます。要約欄に取り消しの理由を追加できます。',
-'tooltip-preferences-save' => '設定を保存',
+'tooltip-preferences-save' => '設定を保存する',
 'tooltip-summary' => '短い要約を入力してください',
 
 # Stylesheets
@@ -3192,6 +3195,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'spambot_username' => 'MediaWikiスパム除去',
 'spam_reverting' => '$1へのリンクを含まない最新の版に差し戻し',
 'spam_blanking' => 'すべての版が$1へのリンクを含んでいます。白紙化します。',
+'spam_deleting' => 'すべての版が$1へのリンクを含んでいます。削除します。',
 
 # Info page
 'pageinfo-title' => '「$1」の情報',
@@ -3221,7 +3225,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'markaspatrolleddiff' => '巡回済みにする',
 'markaspatrolledtext' => 'このページを巡回済みにする',
 'markedaspatrolled' => '巡回済みにしました',
-'markedaspatrolledtext' => '選択された[[:$1|$1]]の版を巡回済みにしました。',
+'markedaspatrolledtext' => '[[:$1]]の、選択した版を巡回済みにしました。',
 'rcpatroldisabled' => '最近の更新の巡回は無効です',
 'rcpatroldisabledtext' => '最近の更新の巡回機能は現在無効になっています。',
 'markedaspatrollederror' => '巡回済みにできません',
@@ -3254,16 +3258,16 @@ $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 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4',
-'file-info-size-pages' => '$1×$2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4、$5 {{PLURAL:$5|ページ}}',
+'file-info-size' => '$1 × $2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4',
+'file-info-size-pages' => '$1 × $2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4、$5 {{PLURAL:$5|ページ}}',
 'file-nohires' => '高解像度版はありません。',
-'svg-long-desc' => 'SVG ファイル、$1×$2 ピクセル、ファイルサイズ:$3',
+'svg-long-desc' => 'SVG ファイル、$1 × $2 ピクセル、ファイルサイズ:$3',
 'show-big-image' => '高解像度での画像',
 'show-big-image-preview' => 'このプレビューのサイズ:$1。',
 'show-big-image-other' => 'その他の{{PLURAL:$2|解像度}}:$1。',
-'show-big-image-size' => '$1×$2 ピクセル',
+'show-big-image-size' => '$1 × $2 ピクセル',
 'file-info-gif-looped' => 'ループします',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|フレーム}}',
 'file-info-png-looped' => '繰り返し',
@@ -3272,7 +3276,7 @@ $1',
 
 # Special:NewFiles
 'newimages' => '新しいファイルのギャラリー',
-'imagelisttext' => "以下は、'''$1'''ファイルの$2で並べ替えた一覧です。",
+'imagelisttext' => "以下は、'''$1'''{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。",
 'newimages-summary' => 'この特別ページでは、最近アップロードされたファイルを表示します。',
 'newimages-legend' => '絞り込み',
 'newimages-label' => 'ファイル名(またはその一部):',
@@ -3285,8 +3289,8 @@ $1',
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'video-dims' => '$1、 $2 × $3',
 'seconds' => '{{PLURAL:$1|$1 秒}}',
-'minutes' => '{{PLURAL:$1|$1分}}',
-'hours' => '{{PLURAL:$1|$1時間}}',
+'minutes' => '{{PLURAL:$1|$1 分}}',
+'hours' => '{{PLURAL:$1|$1 時間}}',
 'days' => '{{PLURAL:$1|$1 日}}',
 'ago' => '$1前',
 
@@ -3303,20 +3307,20 @@ To disable showing a particular link, set it to 'disable', e.g.
 'variantname-zh-sg' => 'disable',
 Variants for Chinese language
 */
-'variantname-zh-hans' => '簡体',
-'variantname-zh-hant' => '繁体',
+'variantname-zh-hans' => '中国語(簡体)',
+'variantname-zh-hant' => '中国語(繁体)',
 'variantname-zh-cn' => '中国簡体',
 'variantname-zh-tw' => '台湾正体',
 'variantname-zh-hk' => '香港正体',
-'variantname-zh-mo' => 'マカオ',
+'variantname-zh-mo' => 'マカオ繁体',
 'variantname-zh-sg' => 'シンガポール簡体',
-'variantname-zh-my' => 'マレーシア',
-'variantname-zh' => '中',
+'variantname-zh-my' => 'マレーシア簡体',
+'variantname-zh' => '中国語',
 
 # Variants for Gan language
-'variantname-gan-hans' => 'hans',
-'variantname-gan-hant' => 'hant',
-'variantname-gan' => 'ã\82¬ã\82¬ã\82¦ã\82º語',
+'variantname-gan-hans' => 'カン語(簡体)',
+'variantname-gan-hant' => 'カン語(繁体)',
+'variantname-gan' => 'ã\82«ã\83³語',
 
 # Variants for Serbian language
 'variantname-sr-ec' => 'セルビア語 (キリル文字)',
@@ -3353,7 +3357,7 @@ Variants for Chinese language
 このファイルが元の状態から変更されている場合、いくつかの項目は、修正されたファイルを完全に反映していないかもしれません。',
 'metadata-expand' => '拡張項目を表示',
 'metadata-collapse' => '拡張項目を非表示',
-'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
+'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81§å\88\97æ\8c\99ã\81\97ã\81¦ã\81\84ã\82\8bç\94»å\83\8fメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
 他のものは既定では非表示です。
 * make
 * model
@@ -3380,8 +3384,8 @@ Variants for Chinese language
 'exif-planarconfiguration' => '画像データの並び',
 'exif-ycbcrsubsampling' => 'YCCの画素構成 (Cの間引き率)',
 'exif-ycbcrpositioning' => 'YCCの画素構成 (YとCの位置)',
-'exif-xresolution' => '画像の幅の解像度',
-'exif-yresolution' => '画像の高さの解像度',
+'exif-xresolution' => '水平方向の解像度',
+'exif-yresolution' => '垂直方向の解像度',
 'exif-stripoffsets' => '画像データのロケーション',
 'exif-rowsperstrip' => '1ストリップごとの行数',
 'exif-stripbytecounts' => 'ストリップの総バイト数',
@@ -3393,10 +3397,10 @@ Variants for Chinese language
 'exif-referenceblackwhite' => '参照黒色点値と参照白色点値',
 'exif-datetime' => 'ファイル変更日時',
 'exif-imagedescription' => '画像の説明',
-'exif-make' => '画像入力機器のメーカ名',
-'exif-model' => '画像入力機器のモデル名',
+'exif-make' => '撮影機器のメーカー名',
+'exif-model' => '撮影機器のモデル名',
 'exif-software' => '使用ソフトウェア名',
-'exif-artist' => '作者',
+'exif-artist' => '作者',
 'exif-copyright' => '撮影著作権者/編集著作権者',
 'exif-exifversion' => 'Exifバージョン',
 'exif-flashpixversion' => '対応フラッシュピックスバージョン',
@@ -3417,14 +3421,14 @@ Variants for Chinese language
 'exif-fnumber' => 'F値',
 'exif-exposureprogram' => '露出プログラム',
 'exif-spectralsensitivity' => 'スペクトル感度',
-'exif-isospeedratings' => 'ISOスピードレート',
+'exif-isospeedratings' => 'ISO 感度',
 'exif-shutterspeedvalue' => 'シャッタースピード',
 'exif-aperturevalue' => '絞り値',
 'exif-brightnessvalue' => '輝度値',
 'exif-exposurebiasvalue' => '露出補正値',
 'exif-maxaperturevalue' => 'レンズ最小F値',
 'exif-subjectdistance' => '被写体距離',
-'exif-meteringmode' => '測光方式',
+'exif-meteringmode' => '測光モード',
 'exif-lightsource' => '光源',
 'exif-flash' => 'フラッシュ',
 'exif-focallength' => 'レンズ焦点距離',
@@ -3442,7 +3446,7 @@ Variants for Chinese language
 'exif-exposuremode' => '露出モード',
 'exif-whitebalance' => 'ホワイトバランス',
 'exif-digitalzoomratio' => 'デジタルズーム倍率',
-'exif-focallengthin35mmfilm' => '35mm換算レンズ焦点距離',
+'exif-focallengthin35mmfilm' => '35mmフィルム換算焦点距離',
 'exif-scenecapturetype' => '撮影シーンタイプ',
 'exif-gaincontrol' => 'ゲイン制御',
 'exif-contrast' => '撮影コントラスト',
@@ -3458,24 +3462,24 @@ Variants for Chinese language
 'exif-gpslongitude' => '経度',
 'exif-gpsaltituderef' => '高度の基準',
 'exif-gpsaltitude' => '高度',
-'exif-gpstimestamp' => 'GPSæ\99\82é\96\93\8e\9få­\90æ\99\82è¨\88ã\81®æ\99\82é\96\93)',
+'exif-gpstimestamp' => 'GPSæ\97¥æ\99\82ï¼\88å\8e\9få­\90æ\99\82è¨\88ï¼\89',
 'exif-gpssatellites' => '測位に用いた衛星信号',
 'exif-gpsstatus' => 'GPS受信機の状態',
 'exif-gpsmeasuremode' => 'GPSの測位方法',
 'exif-gpsdop' => '測位の信頼性',
 'exif-gpsspeedref' => '速度の単位',
-'exif-gpsspeed' => '速度',
+'exif-gpsspeed' => 'GPS 受信機の速度',
 'exif-gpstrackref' => '進行方向の単位',
 'exif-gpstrack' => '進行方向',
 'exif-gpsimgdirectionref' => '撮影方向の基準',
-'exif-gpsimgdirection' => '撮影した画像の方向',
+'exif-gpsimgdirection' => '画像の方向',
 'exif-gpsmapdatum' => '測位に用いた地図データ',
-'exif-gpsdestlatituderef' => '目的地の北緯または南緯',
+'exif-gpsdestlatituderef' => '目的地の北緯/南緯',
 'exif-gpsdestlatitude' => '目的地の緯度',
-'exif-gpsdestlongituderef' => '目的地の東経または西経',
+'exif-gpsdestlongituderef' => '目的地の東経/西経',
 'exif-gpsdestlongitude' => '目的地の経度',
 'exif-gpsdestbearingref' => '目的地の方角の単位',
-'exif-gpsdestbearing' => '目的の方角',
+'exif-gpsdestbearing' => '目的の方角',
 'exif-gpsdestdistanceref' => '目的地までの距離の単位',
 'exif-gpsdestdistance' => '目的地までの距離',
 'exif-gpsprocessingmethod' => '測位方式の名称',
@@ -3484,18 +3488,18 @@ Variants for Chinese language
 'exif-gpsdifferential' => 'GPS補正測位',
 'exif-jpegfilecomment' => 'JPEGファイルのコメント',
 'exif-keywords' => 'キーワード',
-'exif-worldregioncreated' => 'この写真が撮られた大陸や地域',
-'exif-countrycreated' => 'この写真が撮られた国',
-'exif-countrycodecreated' => 'この写真が撮られた国の国名コード',
-'exif-provinceorstatecreated' => 'この写真が撮られた州や県',
-'exif-citycreated' => 'この写真が撮られた市町村',
-'exif-sublocationcreated' => 'この写真が撮られた町名や通りの名前',
-'exif-worldregiondest' => '写っている大陸地域',
+'exif-worldregioncreated' => '写真が撮影された大陸/地域',
+'exif-countrycreated' => '写真が撮影された国',
+'exif-countrycodecreated' => '写真が撮影された国のコード',
+'exif-provinceorstatecreated' => '写真が撮影された州/県',
+'exif-citycreated' => '写真が撮影された都市',
+'exif-sublocationcreated' => '写真が撮影された町や通りの名前',
+'exif-worldregiondest' => '写っている大陸/地域',
 'exif-countrydest' => '写っている国',
-'exif-countrycodedest' => '写っている国の国名コード',
-'exif-provinceorstatedest' => '写っている州県',
-'exif-citydest' => '写っている市町村',
-'exif-sublocationdest' => '写っている町や通りの名前',
+'exif-countrycodedest' => '写っている国のコード',
+'exif-provinceorstatedest' => '写っている州/県',
+'exif-citydest' => '写っている都市',
+'exif-sublocationdest' => '写っている町や通りの名前',
 'exif-objectname' => '短いタイトル',
 'exif-specialinstructions' => '取扱いに関する特記事項',
 'exif-headline' => '見出し',
@@ -3529,7 +3533,7 @@ Variants for Chinese language
 'exif-copyrightowner' => '著作権者',
 'exif-usageterms' => '使用条件',
 'exif-webstatement' => 'オンライン上の著作権文',
-'exif-originaldocumentid' => '元文書の一意な識別子',
+'exif-originaldocumentid' => '元文書の一意なID',
 'exif-licenseurl' => '著作権ライセンスのURL',
 'exif-morepermissionsurl' => '代替ライセンス情報',
 'exif-attributionurl' => 'この作品を再利用する際に、次のURLにリンクしてください',
@@ -3563,10 +3567,10 @@ Variants for Chinese language
 'exif-orientation-2' => '左右反転',
 'exif-orientation-3' => '180°回転',
 'exif-orientation-4' => '上下反転',
-'exif-orientation-5' => '反時計回りに90°回転 上下反転',
-'exif-orientation-6' => '90° 回転 CCW',
-'exif-orientation-7' => '時計回りに90°回転 上下反転',
-'exif-orientation-8' => '90° 回転 CW',
+'exif-orientation-5' => '反時計回りに90°回転上下反転',
+'exif-orientation-6' => '反時計回りに90°回転',
+'exif-orientation-7' => '時計回りに90°回転上下反転',
+'exif-orientation-8' => '時計回りに90°回転',
 
 'exif-planarconfiguration-1' => '点順次フォーマット',
 'exif-planarconfiguration-2' => '面順次フォーマット',
@@ -3783,7 +3787,7 @@ Variants for Chinese language
 'confirmemail_oncreate' => 'あなたのメールアドレスに確認用コードをメールでお送りしました。
 この確認をしなくてもログインはできますが、確認するまでウィキ内のメール関連の機能は無効化されます。',
 'confirmemail_sendfailed' => '{{SITENAME}}は確認メールを送信できませんでした。
\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81«ä¸\8dæ­£ã\81ªæ\96\87å­\97ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\81\8bã\81©ã\81\86ã\81\8b確èª\8dã\81\97ã\81¦ください。
\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\84¡å\8a¹ã\81ªæ\96\87å­\97ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\81ªã\81\84ã\81\8bã\81\94確èª\8dください。
 
 メールサーバーからの返答:$1',
 'confirmemail_invalid' => '確認用コードが正しくありません。
@@ -3854,7 +3858,7 @@ $5
 
 # action=purge
 'confirm_purge_button' => 'OK',
-'confirm-purge-top' => 'ã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\81¾ã\81\99ã\80\82ã\82\88ã\82\8dã\81\97ã\81\84ã\81§すか?',
+'confirm-purge-top' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\81¾すか?',
 'confirm-purge-bottom' => 'ページをパージすると、キャッシュが破棄され、強制的に最新の版が表示されます。',
 
 # action=watch/unwatch
@@ -3900,6 +3904,11 @@ $5
 'size-kilobytes' => '$1キロバイト',
 'size-megabytes' => '$1メガバイト',
 'size-gigabytes' => '$1ギガバイト',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
 
 # Live preview
 'livepreview-loading' => '読み込み中...',
@@ -3910,30 +3919,30 @@ $5
 通常のプレビューを試してください。',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'ウォッチリストには、$1件のページ名が含まれています(トークページは除く)。',
-'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\83\9aã\83¼ã\82¸å\90\8dã\81\8c\81¤ã\82\82ã\81\82ã\82\8aません。',
+'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています(トークページを除く)。',
+'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\81©ã\81®ã\83\9aã\83¼ã\82¸ã\82\82ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ません。',
 'watchlistedit-normal-title' => 'ウォッチリストの編集',
 'watchlistedit-normal-legend' => 'ウォッチリストからページ名を除去',
 'watchlistedit-normal-explain' => 'ウォッチリストに入っているページ名を以下に表示しています。
-ページを除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
+ページを除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
 また、[[Special:EditWatchlist/raw|ウォッチリストをそのまま編集]]も使用できます。',
 'watchlistedit-normal-submit' => 'ページを除去',
-'watchlistedit-normal-done' => 'ウォッチリストから $1 {{PLURAL:$1|件}}を削除しました:',
+'watchlistedit-normal-done' => 'ウォッチリストから {{PLURAL:$1|$1 件のページ}}を削除しました:',
 'watchlistedit-raw-title' => 'ウォッチリストをそのまま編集',
 'watchlistedit-raw-legend' => 'ウォッチリストをそのまま編集',
-'watchlistedit-raw-explain' => 'ウォッチリストに含まれるページ名を以下に表示しています。この一覧で追加または除去ができます。
+'watchlistedit-raw-explain' => '以下に、ウォッチリストに含まれるページ名を列挙しています。この一覧で追加や除去ができます。
 1行に1ページ名です。
 完了したら、「{{int:Watchlistedit-raw-submit}}」をクリックしてください。
 [[Special:EditWatchlist|標準の編集ページ]]も使用できます。',
 'watchlistedit-raw-titles' => 'ページ名:',
 'watchlistedit-raw-submit' => 'ウォッチリストを更新',
 'watchlistedit-raw-done' => 'ウォッチリストを更新しました。',
-'watchlistedit-raw-added' => '$1のページ名が追加されました:',
-'watchlistedit-raw-removed' => '$1件のページ名が除去されました:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|$1 件のページ}}を追加しました:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|$1 件のページ}}を除去しました:',
 
 # Watchlist editing tools
 'watchlisttools-view' => '関連する変更を閲覧',
@@ -4025,19 +4034,19 @@ $5
 'version-license' => 'ライセンス',
 'version-poweredby-credits' => "このウィキは、'''[//www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)で動作しています。",
 'version-poweredby-others' => 'その他',
-'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約にもとづき、このライブラリの再配布や改変ができます。
+'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約に基づき、このライブラリを再配布および改変できます。
 
 MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧ください。
 
-あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
+あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the 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-product' => '製品',
 'version-software-version' => 'バージョン',
 'version-entrypoints' => 'エントリーポイントの URL',
 'version-entrypoints-header-entrypoint' => 'エントリーポイント',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 記事のパス]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath スクリプトパス]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath/ja 記事のパス]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:FilePath
 'filepath' => 'ファイルパス',
@@ -4052,17 +4061,16 @@ MediaWikiは、有用であることを期待して配布されていますが
 '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' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯$2件ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¨é\87\8dè¤\87ã\81\97ã\81¦ã\81\84ます。',
+'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81«ã\81¯ {{PLURAL:$2|$2 ä»¶ã\81®é\87\8dè¤\87ã\83\95ã\82¡ã\82¤ã\83«}}ã\81\8cã\81\82ã\82\8aます。',
 'fileduplicatesearch-noresults' => '「$1」という名前のファイルはありません。',
 
 # Special:SpecialPages
 'specialpages' => '特別ページ',
 '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' => 'ログイン/利用者登録',
@@ -4081,14 +4089,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'intentionallyblankpage' => 'このページは意図的に白紙にされています。',
 
 # External image whitelist
-'external_image_whitelist' => '  #ã\81\93ã\81®è¡\8cã\81¯ã\81\9dのままにしておいてください<pre>
+'external_image_whitelist' => '  #ã\81\93ã\81®è¡\8cã\81¯ã\81\93のままにしておいてください<pre>
 #この下に正規表現(//の間に入る記述)を置いてください
 #外部の(ホットリンクされている)画像の URL と一致するか検査されます
 #一致する場合は画像として、一致しない場合は画像へのリンクとして表示されます
 #行の頭に # を付けるとコメントとして扱われます
 #大文字と小文字は区別されません
 
-#æ­£è¦\8f表ç\8f¾ã\81¯ã\81\99ã\81¹ã\81¦ã\81\93ã\81®è¡\8cã\81®ä¸\8aã\81«ç½®ã\81\84ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\81\93ã\81®è¡\8cã\82\92å¤\89æ\9b´ã\81\97ã\81ªã\81\84ã\81§ください</pre>',
+#æ­£è¦\8f表ç\8f¾ã\81¯ã\81\99ã\81¹ã\81¦ã\81\93ã\81®è¡\8cã\81®ä¸\8aã\81«ç½®ã\81\84ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\81\93ã\81®è¡\8cã\81¯ã\81\93ã\81®ã\81¾ã\81¾ã\81«ã\81\97ã\81¦ã\81\8aã\81\84ã\81¦ください</pre>',
 
 # Special:Tags
 'tags' => '有効な変更タグ',
@@ -4116,22 +4124,22 @@ MediaWikiは、有用であることを期待して配布されていますが
 'compare-revision-not-exists' => '指定された版は存在しません。',
 
 # Database error messages
-'dberr-header' => '問題発生中です',
+'dberr-header' => 'このウィキには問題があります',
 'dberr-problems' => '申し訳ありません!
 このウェブサイトに技術的な問題が発生しています。',
 'dberr-again' => '数分間待った後、もう一度読み込んでください。',
-'dberr-info' => '(データベースサーバー:$1に接続できませんでした。)',
+'dberr-info' => '(データベースサーバーに接続できませんでした:$1)',
 'dberr-usegoogle' => '元に戻るまで、Googleを利用して検索できます。',
 'dberr-outofdate' => 'それらが収集した内容は古い可能性があることに注意してください。',
 'dberr-cachederror' => 'これは要求されたページをキャッシュした複製であり、古くなっている可能性があります。',
 
 # HTML forms
 'htmlform-invalid-input' => '入力に何らかの問題があります',
-'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8cæ\9c\89å\8a¹ã\81ªã\82\82ã\81®ではありません。',
-'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c整数ではありません。',
-'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cた値は数値ではありません。',
-'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最小値未満です',
-'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最大値を超えています',
+'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯æ\9c\89å\8a¹ã\81ªé\81¸æ\8a\9eè\82¢ではありません。',
+'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯整数ではありません。',
+'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\97た値は数値ではありません。',
+'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最小値未満です',
+'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最大値を超えています',
 'htmlform-required' => 'この値は必要です',
 'htmlform-submit' => '送信',
 'htmlform-reset' => '変更を取り消す',
@@ -4171,7 +4179,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'logentry-newusers-create' => '$1 が利用者アカウントを作成しました',
 'logentry-newusers-create2' => '$1 が利用者アカウント「$3」を作成しました',
 'logentry-newusers-autocreate' => 'アカウント「$1」が自動的に作成されました',
-'newuserlog-byemail' => 'パスワードをメールで送信しました',
+'newuserlog-byemail' => 'パスワードをメールでお送りしました',
 
 # Feedback
 'feedback-bugornote' => '技術的な問題の詳細を説明なさる準備ができている場合は[$1 バグを報告]してください。
@@ -4186,17 +4194,17 @@ MediaWikiは、有用であることを期待して配布されていますが
 'feedback-error3' => 'エラー:APIからの応答がありません',
 'feedback-thanks' => 'ありがとうございます。フィードバックを「[$2 $1]」のページに投稿しました。',
 'feedback-close' => '完了',
-'feedback-bugcheck' => 'Great! [$1 既出のバグ]に既に含まれていないか確認してください。',
+'feedback-bugcheck' => 'Great! [$1 既出のバグ]に既に含まれていないかご確認ください。',
 'feedback-bugnew' => 'チェックしました。バグを報告します。',
 
 # API errors
 'api-error-badaccess-groups' => 'このウィキへのファイルのアップロードが許可されていません。',
-'api-error-badtoken' => '内部エラー:トークンが不正です。',
+'api-error-badtoken' => '内部エラー:トークンが正しくありません。',
 'api-error-copyuploaddisabled' => 'URLによるアップロードはこのサーバーでは無効になっています。',
 'api-error-duplicate' => '当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}存在しています。',
-'api-error-duplicate-archive' => '同じ内容で既に削除済みの{{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-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}です。',
 'api-error-empty-file' => '送信されたファイルは空でした。',
 'api-error-emptypage' => '内容がないページの新規作成は許可されていません。',
 'api-error-fetchfileerror' => '内部エラー:ファイルの取得中に問題が発生しました。',
index 2f6704b..e3e527f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Jutish (Jysk)
+/** Jutish (jysk)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 4bb059b..2aa66fb 100644 (file)
@@ -868,6 +868,7 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
 
 # Diffs
 'history-title' => 'Sajarah revisi saka "$1"',
+'difference-title' => '$1: Bèntenipun revisi',
 'lineno' => 'Larikan $1:',
 'compareselectedversions' => 'Bandhingna vèrsi kapilih',
 'showhideselectedversions' => 'Tampilaké/dhelikaké révisi kapilih',
index c8a0c2c..f11e38f 100644 (file)
@@ -156,7 +156,7 @@ $messages = array(
 'tog-hidepatrolled' => 'დამალეთ შესწორებული რედაქტირებები ბოლო ცვლილებებში',
 'tog-newpageshidepatrolled' => 'დამალეთ შემოწმებული გვერდები ახალი გვერდების სიიდან',
 'tog-extendwatchlist' => 'გავრცობილი კონტროლის სია ყველა დაკავშირებული ცვლილების ჩვენების ჩათვლით',
-'tog-usenewrc' => 'á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\94 á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83£á\83\99á\83\94á\83\97á\83\94á\83¡á\83\98 á\83¡á\83\98á\83\90 (ჯავასკრიპტი)',
+'tog-usenewrc' => 'á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90 á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83¡á\83\98á\83\98á\83¡ á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90á\83¯á\83\92á\83£á\83¤á\83\94á\83\91á\83\90 (á\83¡á\83\90á\83­á\83\98á\83 á\83\9dá\83\90 ჯავასკრიპტი)',
 'tog-numberheadings' => 'ავტომატურად დანომრე ქვესათაურები',
 'tog-showtoolbar' => 'რედაქტირების ინსტრუმენტების ჩვენება (ჯავასკრიპტი)',
 'tog-editondblclick' => 'გვერდების რედაქტირება ორმაგი დაწკაპუნებით (ჯავასკრიპტი)',
@@ -546,6 +546,8 @@ $2',
 ადმინისტრატორი რომელმაც ის დაბლოკა მიუთითა შემდეგი მიზეზი: "$3".',
 'invalidtitle-knownnamespace' => 'დაუშვებელი სათაური სახელთა სივრცე "$2" და ტექსტი "$3"-თან',
 'invalidtitle-unknownnamespace' => 'დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი "$2"-ით',
+'exception-nologin' => 'შესვლა არ განხორციელდა',
+'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა სისტემაში შესვლა.',
 
 # Virus scanner
 'virus-badscanner' => "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
@@ -2897,6 +2899,7 @@ $1',
 'spambot_username' => 'სპამის გასუფთავება',
 'spam_reverting' => 'დაბრუნება ბოლო ვერსიასთან, რომელიც არ შეიცავს ბმულს $1-თან',
 'spam_blanking' => 'ყველა გვერდი შეიცავს ბმულს $1-გვერდზე. გასუფთავება',
+'spam_deleting' => 'ყველა ვერსია შეიცავდა ბმულს $1-ზე, მიმდინარეობს წაშლა',
 
 # Info page
 'pageinfo-title' => 'ინფორმაცია „$1“-თვის',
@@ -3883,4 +3886,6 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'duration-centuries' => '$1 {{PLURAL:$1|საუკუნე|საუკუნე}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ათასწლეული|ათასწლეული}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'ვერ მოხერხდა ბლოკირების მიღება სერვერზე $1.',
 );
index d68e560..04f8a7c 100644 (file)
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'ТехьэпIэхэр щIэтхъэн:',
-'tog-justify' => 'БгъуагъкIэ напэкIуэцIыр зэгъэзэхуэн',
-'tog-hideminor' => 'ГъэпщкIун: кIуэдкIэ зыхэмылэжьыхьа, щIэуэ яхъуэжа тхылъым',
-'tog-hidepatrolled' => 'ГъэпшкIун гъэтэрэзыгъуэ щIэлъыплъахэм я тхылъ гъэтэрэзыгъуэщIэхэр',
-'tog-newpageshidepatrolled' => 'Ð\93Ñ\8aÑ\8dпÑ\88кIÑ\83н Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86I Ñ\89\8dлÑ\8aÑ\8bплÑ\8aаÑ\85Ñ\8dм Ñ\8f Ñ\82Ñ\85Ñ\8bлÑ\8a Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86I-Ñ\89\8dÑ\85Ñ\8dÑ\80',
+'tog-underline' => 'ТехьэпӀэхэр щӀэтхъэн:',
+'tog-justify' => 'БгъуагъкӀэ напэкӀуэцӀыр зэгъэзэхуэн',
+'tog-hideminor' => 'Гъэтэрэзыгъуэ цӀыкӀухэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
+'tog-hidepatrolled' => 'Гъэтэрэзыгъуэ зыщӀэлъыплъахэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
+'tog-newpageshidepatrolled' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80 Ð·Ñ\8bÑ\89Ó\80Ñ\8dлÑ\8aÑ\8bплÑ\8aаÑ\85Ñ\8dÑ\80 Ð³Ñ\8aÑ\8dпÑ\88кÓ\80Ñ\83н, Ð½Ð°Ð¿Ñ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80 Ñ\89Ó\80Ñ\8dÑ\85Ñ\8dм Ñ\8f Ñ\82Ñ\85Ñ\8bлÑ\8aÑ\8bм',
 'tog-extendwatchlist' => 'ЩӀэлъыплъыгъуэм и тхылъышхуэ, яужырэй къуэдейхэм нэмыщӀу зэхъуэкӀыгъуэ псори хэту',
 'tog-usenewrc' => 'Гъэтэрэзыгъуэ щӀэхэм я тхылъ нэхъыфӀыр къэгъэсэбэпын (JavaScript хуэныкъуэ)',
 'tog-numberheadings' => 'Псалъащхьэхэм автоматику номер ятын',
@@ -143,6 +143,7 @@ $messages = array(
 'listingcontinuesabbrev' => '(кӀэлъыкуэгъуэ)',
 'index-category' => 'Индекс зырат напэкӀуэцӀхэр',
 'noindex-category' => 'НапэкӀуэцӀ индекс зыхуэмыныкуъэхэр',
+'broken-file-category' => 'Файл техьэпӀэхэр здэмылажэ напэкӀуэцӀхэр',
 
 'about' => 'И гугъу',
 'article' => 'Тхыгъэ',
@@ -199,7 +200,7 @@ $messages = array(
 'print' => 'КъыдэгъэкӀын',
 'view' => 'Еплъын',
 'edit' => 'Гъэтэрэзын',
-'create' => 'ЩIын',
+'create' => 'ЩӀын',
 'editthispage' => 'Мы напэкIуэцIыр гъэтэрэзын',
 'create-this-page' => 'Мыбы и напэкӀуэцӀ щӀын',
 'delete' => 'Ихын',
@@ -225,7 +226,7 @@ $messages = array(
 'projectpage' => 'Проэктым и напэкӀуэцӀым еплъын',
 'imagepage' => 'Файлым и напэкIуэцIым еплъын',
 'mediawikipage' => 'Тхыгъэм и напэкIуэцIым еплъын',
-'templatepage' => 'ШаблонÑ\8bм Ð¸ Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86\8bм Ñ\85Ñ\8dплÑ\8aÑ\8dн',
+'templatepage' => 'ЩапÑ\85Ñ\8aÑ\8dм Ð¸ Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86\8bм ÐµÐ¿Ð»Ñ\8aÑ\8bн',
 'viewhelppage' => 'ЩIэупщIэм и напэкIуэцI',
 'categorypage' => 'Категорием и напэкIуэцIым хэплъэн',
 'viewtalkpage' => 'Тепсэлъыхьыгъуэм еплъын',
@@ -302,6 +303,8 @@ $1',
 'page-rss-feed' => '$1 — RSS-тыныгъэ',
 'page-atom-feed' => '$1 — Atom-тыныгъэ',
 'red-link-title' => '$1 (апхуэдэ напэкӀуэцӀ щыӀэкъым)',
+'sort-descending' => 'Нэхъ цӀыкӀумкӀэ/жьымкӀэ екӀуэкӀыу зэгъэзэхуэн',
+'sort-ascending' => 'Нэхъ инымкӀэ/щӀэмкӀэ екӀуэкӀыу зэгъэзэхуэн',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Тхыгъэ',
@@ -309,9 +312,9 @@ $1',
 'nstab-media' => 'Медиэ напэкӀуэцӀ',
 'nstab-special' => 'Лэжыгъэ напэкӀуэцӀ',
 'nstab-project' => 'Проэктым теухуауэ',
-'nstab-image' => 'Файл',
+'nstab-image' => 'ТеплÑ\8aÑ\8d',
 'nstab-mediawiki' => 'Тхыгъэ',
-'nstab-template' => 'Шаблон',
+'nstab-template' => 'ЩапÑ\85Ñ\8aÑ\8d',
 'nstab-help' => 'ДэIэпыкъуэгъу',
 'nstab-category' => 'Категориэ',
 
@@ -367,6 +370,7 @@ $1',
 'badarticleerror' => 'А лэжьыгъэр мы напэкӀуэцӀым егъэкӀуэкӀыфынукъым.',
 'cannotdelete' => 'НапэкӀуэцӀыр иэ файл «$1»-р ихыфкъым.
 НэмыщӀ гуэрэм ирихагъэнкӀ хъун.',
+'cannotdelete-title' => 'НапэкӀуэцӀ «$1» ипх хъунукъым',
 'badtitle' => 'ЦӀэр хъунукъым',
 'badtitletext' => 'УзщӀэупщӀэ напэкӀуэцӀым и цӀэр тэрэзкъым, нэщӀ, мытэрэзу интервикир иэ бзэ-зэхуэкур щытщ. И цӀэм дэмыгъэ емыкӀуэалъэ хэтынкӀи хъун.',
 'perfcached' => 'Мы Ӏохугъуэхэр кэшым къыхахэ, яужырей зэхъуэкӀыгъуэхэр химыубыдэнкӀи мэхъу. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -377,11 +381,13 @@ $1',
 Функциэ: $1<br />
 ЩӀэлъэуэгъуэ: $2',
 'viewsource' => 'Хэплъэн',
+'viewsource-title' => 'НапэкӀуэцӀ $1 и япэрей тхыгъэ щытыкӀэм ухуоплъэщ',
 'actionthrottled' => 'ЩӀэхыгъэм убыдыгъэ иӀэ',
 'actionthrottledtext' => 'Анти-спамым пэщытыным шъхьэкӀэ, зэманыгъуэ кӀэщӀым уигугъэр куэду и къэгъэсэбэпыныр теубыдауэ щытщ. 
 Дэкъикъэ зытӀущ тегъэкӀи, иджыри зэ щӀыж.',
 'protectedpagetext' => 'Мы напэкӀуэцӀыр и гъэтэрэзыным теубыдауэ щытщ',
 'viewsourcetext' => 'Мы напэкӀуэцӀым и нэхъыщхьэ тхылъыр мыбдежьым уэплъыфыну, и копиэри ипхыфыну:',
+'viewyourtext' => "Мы напэкӀуэцӀым '''уи гъэтэрызыгъуэхэм''' я тхылъым уеплъыфынущ, тхылъым и копиэри пщӀыфынущ:",
 'protectedinterface' => 'Мы напэкӀуэцӀым интерфейс тхылъ хэтщ, программэтыныгъэм еуэ. Хьэуэйн имыӀэн щхьэкӀэ, и гъэтэрэзыныр теубыдауэ щытщ.',
 'editinginterface' => "'''Гу лъытэ:''' Бгъэтэрэз напэкӀуэцӀым интерфэйс тхылъ хэтщ, программэтыгъэм еуэ.
 И зэхъуэкӀыгъуэм интерфэйсым и сурэтым хэуэну адрей цӀыхухэтхэм щхьэкӀэ.
@@ -533,8 +539,8 @@ $2',
 'headline_tip' => 'ТІуанэ щхьэгъэ псалъащхьэ',
 'nowiki_sample' => 'Формациэ мыщӀа тхыгъэр мыбдеж игъэувэ',
 'nowiki_tip' => 'Вики-форматыр Iухын',
-'image_tip' => 'Файл кӀуэцӀылъу',
-'media_tip' => 'ФайлÑ\8bм и техьэпӀэ',
+'image_tip' => 'ТеплÑ\8aÑ\8d кӀуэцӀылъу',
+'media_tip' => 'ТеплÑ\8aÑ\8dм и техьэпӀэ',
 'sig_tip' => 'Уи ӀэпэщӀэдзымрэ зэман щытехуэмрэ',
 'hr_tip' => 'ЩӀэтхъэгъуэ щӀыхь (куэдрэ къэвмыгъэмэбэп)',
 
@@ -613,10 +619,10 @@ $2',
 'blocked-notice-logextract' => 'Мы цӀыхухэтыр иджыпсту теубыдауэ щытщ.
 ИщӀагъымкӀэ теубыдыгъэ тхылъым и яужырей итхэгъуэр гъэлъэгъуа:',
 'clearyourcache' => "'''Къэохугъуэ:'''Итха яуж зэхъуэкӀыгъу хъуар къэнэн щхьэкӀэ, уи браузэрым и кэшыр гъэкъэбзэн хуэй: '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari''': ''Cmd+Shift+R'', '''Konqueror''': ''F5'', '''Opera''': ''Tools→Preferences''-мкӀэ уикӀын хуэй.",
-'usercssyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и CSS-Ñ\84айлÑ\8bм еплъын щхьэкӀэ итхэным ипэкӀэ.",
-'userjsyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и JS-Ñ\84айл щӀэм еплъыным щхьэкӀэ итхэным ипэкӀэ.",
-'usercsspreview' => 'Уигу игъэлъ, мыр иджыри уи CSS-файлым и пыухыкӀа еплъыгъуэкъым , ар иджыри хъумакъым.',
-'userjspreview' => "'''Ð\97Ñ\8bÑ\89Ñ\83мгÑ\8aÑ\8dгÑ\8aÑ\83пÑ\88Ñ\8d, Ð¼Ñ\8bÑ\80 Ñ\8fпÑ\8d-еплÑ\8a ÐºÑ\8aÑ\83Ñ\8dдей Ñ\83и javascript-Ñ\84айлÑ\8bм, иджыри итхауэ щыткъым!'''",
+'usercssyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и CSS-Ñ\82еплÑ\8aÑ\8dм еплъын щхьэкӀэ итхэным ипэкӀэ.",
+'userjsyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и JS-Ñ\82еплÑ\8aÑ\8d щӀэм еплъыным щхьэкӀэ итхэным ипэкӀэ.",
+'usercsspreview' => "'''Гу лъытэ, мыр япэ-еплъ къуэдейщ уи CSS-теплъэм, иджыри итхауэ щыткъым!'''",
+'userjspreview' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d, Ð¼Ñ\8bÑ\80 Ñ\8fпÑ\8d-еплÑ\8a ÐºÑ\8aÑ\83Ñ\8dдейÑ\89 Ñ\83и javascript-Ñ\82еплÑ\8aÑ\8dм, иджыри итхауэ щыткъым!'''",
 'sitecsspreview' => "'''Зыщумгъэгъупшэ, мыр япэ-еплъ къуэдеуэ щытщ мы CSS-м.'''
 '''Иджыри итхауэ щыткъым!'''",
 'sitejspreview' => "'''Зыщумгъэгъупшэ, мыр япэ-еплъ къуэдеуэ щытщ мы JavaScript-кодым.'''
@@ -625,6 +631,7 @@ $2',
 'updated' => '(КъэгъэщӀырыщӀащ)',
 'note' => "'''Гулъытыгъуэ:'''",
 'previewnote' => "'''Мыр япэ-еплъ къуэдей, тхылъыр иджыри итхакъым!'''",
+'continue-editing' => 'Гъэтэрэзыгъуэм тегъэзэжьын',
 'previewconflict' => 'Мы япэ-еплъым тхылъыр редакторым и ищхьэ лъэныкъуэм дежь егъэлъыгъуэ зэрщытыным хуэду, иптхэн уигугъэ хъумэ.',
 'session_fail_preview' => "'''Хэукъуэгъуэ къыхэкӀа, серверым у гъэтэрэзыгъуэр къиштэфакъым сессиэм и идентификациэр фӀэкӀуэдри.
 Иджыри зэ щӀыжьи еплъ.
@@ -675,9 +682,9 @@ $2',
 'cascadeprotectedwarning' => "'''Гу лъытэ:''' Мы напэкӀуэцӀыр згъэтэрэзыфынухэр «Тхьэмадэхэр» щыщ гупым хэтхэра, {{PLURAL:$1|напэкӀуэцӀ къыкӀэлъыкӀуэм щхьэкӀэ|напэкӀуэцӀ къыкӀэлъыкӀуэхэм щхьэкӀэ}} каскад хъунэныгъэ зэрателъым теухуауэ:",
 'titleprotectedwarning' => "'''Гу лъытэ. Мы напэкӀуэцӀыр зэхъуэкӀыныгъэхэм щхьэкӀэ ятеубыдауэ щытщ, зэзхъуэкӀыфынухэр [[Special:ListGroupRights|абым теухуа пӀалъэ]] зиӀэ цӀыхухэтхэм.''' 
 ИщӀагъымкӀэ тхыдэтхылъым и яужырей тхыгъэр итщ:",
-'templatesused' => '{{PLURAL:$1|Шаблон|Шаблонхэр}} напэкӀуэцӀым и версиэ екӀуэкӀым хэтхэр:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонхэр}} напэкӀуэцӀым и япэ-еплъым хэтхэр:',
-'templatesusedsection' => 'Ð\9cÑ\8b Ð»Ñ\8aÑ\8dнÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83м {{PLURAL:$1|Шаблон ÐºÑ\8aагÑ\8aÑ\8dÑ\89Ñ\85Ñ\8cÑ\8dпаÑ\80|Шаблон ÐºÑ\8aагъэщхьэпахэр}}:',
+'templatesused' => 'НапэкӀуэцӀым и версиэ екӀуэкӀым {{PLURAL:$1|щапхъэ|щапхъэ}} хэтхахэр:',
+'templatesusedpreview' => 'НапэкӀуэцӀым и япэ-еплъым {{PLURAL:$1|щапхъэ|щапхъэ}} хэтхахэр:',
+'templatesusedsection' => 'Ð\9cÑ\8b ÐºÑ\8aÑ\83дамÑ\8dм {{PLURAL:$1|Ñ\89апÑ\85Ñ\8aÑ\8d ÐºÑ\8aÑ\8dгÑ\8aÑ\8dÑ\89Ñ\85Ñ\8cÑ\8dпаÑ\80\89апÑ\85Ñ\8aÑ\8d ÐºÑ\8aÑ\8dгъэщхьэпахэр}}:',
 'template-protected' => '(теубыдащ)',
 'template-semiprotected' => '(иныкъуэр теубыдащ)',
 'hiddencategories' => 'Мы напэкӀуэцӀыр зхэхьэр $1 {{PLURAL:$1|1 категориэ зэхуэща|$1 категориэ зэхуэщахэр}}:',
@@ -705,21 +712,28 @@ $2',
 'edit-no-change' => 'Уи гъэтэрэзыгъуэр хахыжащ, тхыгъэм зэхъуэкӀыгъуэ зэрхэмыхьэм щхьэкӀэ.',
 'edit-already-exists' => 'НапэкӀуэцӀыщӀэ щӀыфынукъым.
 ЩыӀэщ апхуэдэ.',
+'defaultmessagetext' => 'КъыхигъэкӀа тхыгъэхэр',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Гу лъытэ. Мы напэкӀуэцӀым ресурсышхуэ хэзылъхьэ функциэ куэд хэлъщ.
 
 Хэлъхьэгъуэ хэтыфынур здынэгъэсар $2 {{PLURAL:$2|хэлъхьэгъу|хэлъхьэгъуэху}}, мыбдежым хуэныкъу щӀын хуэйр {{PLURAL:$1|$1 хэлъхьэгъуэ|$1 хэлъхьэгъу}}.',
 'expensive-parserfunction-category' => 'Ресурсышхуэ хэзылъхьэ функциэ куэду зыхэлъ напэкӀуэцӀхэр',
-'post-expand-template-inclusion-warning' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d:''' Ñ\88аблон хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытщ.
¨Ð°Ð±Ð»Ð¾Ð½Ñ\85Ñ\8dм Ñ\8fÑ\89Ñ\8bÑ\89 Ð³Ñ\83Ñ\8dÑ\80Ñ\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8dгÑ\8aÑ\8dкÓ\80Ñ\8bжаÑ\83Ñ\8d ÐºÑ\8aÑ\8dнÑ\8dнÑ\83Ñ\85Ñ\8dщ.",
-'post-expand-template-inclusion-category' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80Ñ\85Ñ\8dÑ\80, Ñ\88аблон я хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытхэр',
-'post-expand-template-argument-warning' => "'''Гу лъытэ:''' Мы напэкӀуэцӀым шаблоным и зы аргумент хэт, зэгъэзэнщӀэным щхьэкӀэ иныщу щыту.
+'post-expand-template-inclusion-warning' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d:''' Ñ\89апÑ\85Ñ\8aÑ\8d хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытщ.
©Ð°Ð¿Ñ\85Ñ\8aÑ\8dÑ\85Ñ\8dм Ñ\8fÑ\89Ñ\8bÑ\89 Ð³Ñ\83Ñ\8dÑ\80Ñ\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8dмÑ\8bÑ\82Ñ\85аÑ\83Ñ\8d ÐºÑ\8aÑ\8dнÑ\8dнÑ\83щ.",
+'post-expand-template-inclusion-category' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80Ñ\85Ñ\8dÑ\80, Ñ\89апÑ\85Ñ\8aÑ\8d я хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытхэр',
+'post-expand-template-argument-warning' => "'''Гу лъытэ!''' мы напэкӀуэцӀым зы щапхъэ, мынэхъмащӀэу хэтщ, и аргумент зэгъэзэнщӀэныр иныщэу щыту.
 Апхуэдэ аргументхэм гулъытэгъуэ ирамтауэ щытщ.",
-'post-expand-template-argument-category' => 'Шаблонхэм я аргументхэр хэзмыубыда напэкӀуэцӀхэр',
-'parser-template-loop-warning' => 'Ð¥Ñ\8dÑ\83кÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83Ñ\8d ÐºÑ\8aÑ\8bÑ\85Ñ\8dкÓ\80аÑ\89 Ñ\88аблонхэм: [[$1]]',
-'parser-template-recursion-depth-warning' => 'ШаблонÑ\8bм Ð¸ Ñ\80екÑ\83Ñ\80Ñ\81иÑ\8d Ð·Ñ\8dÑ\84Ó\80Ñ\8dкÓ\80Ñ\8bгÑ\8aÑ\83Ñ\8dр къегъэхъуауэ щытщ (1$)',
+'post-expand-template-argument-category' => 'ЩапÑ\85Ñ\8aÑ\8dхэм я аргументхэр хэзмыубыда напэкӀуэцӀхэр',
+'parser-template-loop-warning' => 'Ð¥Ñ\8dÑ\83кÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83Ñ\8d ÐºÑ\8aÑ\8bÑ\85Ñ\8dкÓ\80аÑ\89 Ñ\89апÑ\85Ñ\8aÑ\8dхэм: [[$1]]',
+'parser-template-recursion-depth-warning' => 'ЩапÑ\85Ñ\8aÑ\8d Ñ\80екÑ\83Ñ\80Ñ\81иÑ\8dм Ð¸ ÐºÑ\83Ñ\83агÑ\8aÑ\8bр къегъэхъуауэ щытщ (1$)',
 'language-converter-depth-warning' => 'Бзэ гъэзанщӀэгъуэм и зэфӀэкӀыгъуэр къегъэхъуауэ щытщ (1$)',
+'node-count-exceeded-category' => 'ЗэпхырыкӀыгъуэхэм я бжыгъэр къехъу здэщыт напэкӀуэцӀхэр',
+'node-count-exceeded-warning' => 'НапэкӀуэцӀым зэпхырыкӀыгъуэ хэтым я бжыгъэр къехъу щытщ',
+'expansion-depth-exceeded-category' => 'НапэкӀуэцӀым и зыубгъуэн Ӏувагъыр къехъу щытщ',
+'expansion-depth-exceeded-warning' => 'НапэкӀуэцӀып и зэфӀэгъэкӀыгъуэр къегъэхъуауэ щытщ',
+'parser-unstrip-loop-warning' => 'Зэрыдзэгъуэ зэхуэмыщӀа къыхэкӀащ',
+'parser-unstrip-recursion-limit' => 'Рекурсым и зэфӀэгъэкӀыгъуэр къегъэхъуауэ щытщ ($1)',
 
 # "Undo" feature
 'undo-success' => 'Гъэтэрэзыгъуэр хахыжьыфынущ. Версиэхэм я зэгъэпшыгъуэ егъэкӀуэкӀ, узхуэныкъуэхэрамэ пщӀам еплъи «НапэкӀуэцӀыр итхэн»-ым текъузэ, зэхъуэкӀыгъуэхэр хэхьэным щхьэкӀэ.',
@@ -864,6 +878,9 @@ $1",
 'suppressionlogtext' => 'ИщӀагъымкӀэ гъэлъэгъуауэ щыт яужырей ихыгъуэхэмрэ теубыдэгъуэхэмрэ я тхылъ, тхьэмадэхэм ямгъэлъэгъуа хъыбархэр хэтху.
 Еплъ [[Special:IPBlockList|IP-теубыдыгъуэхэм я тхылъ]], екӀуэкӀ теубыдэгъуэхэр лъагъун щхьэкӀэ.',
 
+# History merging
+'mergehistory' => 'Гъэтэрэзыгъуэхэм я тхыдэ зыуэ зэхэгъэхьа',
+
 # Merge log
 'revertmerge' => 'Зыхэдзын',
 
@@ -895,12 +912,17 @@ $1",
 'search-interwiki-more' => '(иджыри)',
 'search-mwsuggest-enabled' => 'чэнджэш иӀэу',
 'search-mwsuggest-disabled' => 'чэнджэщыншэу',
-'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, шаблонхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
+'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, щапхъэхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
+'search-nonefound' => 'Узлъыхъуэм техуэу щыӀэкъым.',
 'powersearch' => 'Убгъуауэ лъыхъу',
 'powersearch-legend' => 'Убгъуауэ лъыхъу',
 'powersearch-ns' => 'ЦIэзэхэтыгъуэм щылъыхъуэн',
 'powersearch-redir' => 'ЕгъэзэкӀахэри гъэлъэгъуэн',
 'powersearch-field' => 'Лъыхъуэн',
+'powersearch-togglelabel' => 'Къыхэхын:',
+'powersearch-toggleall' => 'Псори',
+'powersearch-togglenone' => 'Зыри/пари',
+'search-external' => 'ХэкӀауэ лъыхъуэн',
 
 # Preferences page
 'preferences' => 'Зэгъэзэхуэпхъэхэр',
index 17f4000..50b14bb 100644 (file)
@@ -1062,7 +1062,7 @@ Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
 'booksources-go' => 'So',
 
 # Special:Log
-'specialloguserlabel' => 'Karber:',
+'specialloguserlabel' => 'Kerdoğ:',
 'speciallogtitlelabel' => 'Sernuste:',
 'log' => 'Qeydi',
 
@@ -1224,7 +1224,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 # Contributions
 'contributions' => 'İştırakê karberi',
 'contributions-title' => '$1 de iştırakê karberi',
-'mycontris' => 'İştıraxê mı',
+'mycontris' => 'İştıraqê mı',
 'contribsub2' => 'Serba $1 ($2)',
 'uctop' => '(ser)',
 'month' => 'Asme ra (u ravêr):',
index 93ff9dd..6e412ea 100644 (file)
@@ -1021,7 +1021,7 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 Бет мәтіні бүлінбеу үшін өңдемеңіз тайдырылады.
 Бұл кей уақытта қатесі толған веб-негізінде тіркелуі жоқ прокси-серверді пайдаланған болуы мүмкін.'''",
 'editing' => 'Өңделуде: $1',
-'creating' => 'Ð\91астау: $1',
+'creating' => 'Ð\96аңадан Ð±астау: $1',
 'editingsection' => 'Өңделуде: $1 (бөлімі)',
 'editingcomment' => 'Өңделуде: $1 (жаңа бөлім)',
 'editconflict' => 'Өңдемелер қақтығысы: $1',
@@ -1460,9 +1460,9 @@ $3 келтірілген себебі: ''$2''",
 'right-suppressredirect' => 'Тиісті атауға бетті жылжытқанда айдағышты жасамау',
 'right-upload' => 'Файлдарды жүктеу',
 'right-reupload' => 'Бар файл үстіне жазу',
-'right-reupload-own' => 'Өзі қотарып берген файл үстіне жазу',
+'right-reupload-own' => 'Өзі жүктеген файл үстіне жазу',
 'right-reupload-shared' => 'Таспа ортақ қоймасындағы файлдарды жергіліктілермен асыру',
-'right-upload_by_url' => 'Файлды URL мекенжайынан қотарып беру',
+'right-upload_by_url' => 'Файлды URL мекенжайдан жүктеу',
 'right-purge' => 'Бетті торап бүркемесінен құптаусыз тазарту',
 'right-autoconfirmed' => 'Жартылай қорғалған беттерді өңдеу',
 'right-bot' => 'Өздіктік үдеріс деп есептелу',
@@ -1492,7 +1492,7 @@ $3 келтірілген себебі: ''$2''",
 'right-markbotedits' => 'Шегіндірлген өңдемелерді боттардікі деп белгілеу',
 'right-noratelimit' => 'Еселік шектелімдері ықпал етпейді',
 'right-import' => 'Басқа уикилерден беттерді сырттан алу',
-'right-importupload' => 'Файл қотарып беруімен беттерді сырттан алу',
+'right-importupload' => 'Файлдарды жүктеу арқылы беттерді сырттан алу',
 'right-patrol' => 'Басқарардың өңдемелерін зерттелді деп белгілеу',
 'right-autopatrol' => 'Өз өңдемелерін зерттелді деп өздіктік белгілеу',
 'right-patrolmarks' => 'Жуықтағы өзгерістердегі зерттеу белгілерін көру',
@@ -1571,10 +1571,10 @@ $3 келтірілген себебі: ''$2''",
 'reuploaddesc' => 'Жүктеу пішініне қайта келу.',
 'upload-tryagain' => 'Файл сипаттамасының өзгерістерін жөнелту',
 'uploadnologin' => 'Кірмегенсіз',
-'uploadnologintext' => 'Файлдарды қотарып беру үшін [[{{#special:Userlogin}}|кіруіңіз]] жөн.',
+'uploadnologintext' => 'Файлдарды жүктеу үшін  [[Special:UserLogin|кіруіңіз]] жөн.',
 'upload_directory_missing' => 'Қотарып бермек қалтасы ($1) жетіспейді және веб-сервер жарата алмайды.',
 'upload_directory_read_only' => 'Қотарып бермек қалтасына ($1) веб-сервер жаза алмайды.',
-'uploaderror' => 'Қотарып беру қатесі',
+'uploaderror' => 'Жүктеу қатесі',
 'uploadtext' => "Төмендегі пішінді файлдарды қотарып беру үшін қолданыңыз.
 Алдында қотарылып берілген файлдарды қарау не іздеу үшін [[{{#special:FileList}}|қотарып берілген файлдар тізіміне]] барыңыз, тағы да қотарып беруі мен жоюы  [[{{#special:Log}}/upload|қотарып беру журналына]] жазылып алынады.
 
@@ -1634,7 +1634,7 @@ $3 келтірілген себебі: ''$2''",
 'uploadwarning' => 'Қотарып беру жөнінде құлақтандыру',
 'savefile' => 'Файлды сақтау',
 'uploadedimage' => '«[[$1]]» файлын жүктеді',
-'overwroteimage' => '«[[$1]]» файлынның жаңа нұсқасын қотарып берді',
+'overwroteimage' => '«[[$1]]» деген файлдың жаңа нұсқасын жүктеді',
 'uploaddisabled' => 'Қотарып беру өшірілген',
 'copyuploaddisabled' => 'URL арқылы жүктеу өшірілген.',
 'uploaddisabledtext' => '{{SITENAME}} жобасында файл қотарып беруі өшірілген.',
@@ -1756,7 +1756,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'mimesearch-summary' => 'Бұл бетте файлдарды MIME түрімен сүзгілеуі қосылған.
 Кірісі: мағлұмат_түрі/түр_тарауы, мысалы <tt>image/jpeg</tt>.',
 'mimetype' => 'MIME түрі:',
-'download' => 'қотарып алу',
+'download' => 'жүктеп алу',
 
 # Unwatched pages
 'unwatchedpages' => 'Бақыланылмаған беттер',
@@ -2128,7 +2128,7 @@ $2 соңғы нұсқасына өзгертті.',
 'restriction-edit' => 'Өңдеуге',
 'restriction-move' => 'Жылжытуға',
 'restriction-create' => 'Бастауға',
-'restriction-upload' => 'Қотарып беруге',
+'restriction-upload' => 'Жүктеу',
 
 # Restriction levels
 'restriction-level-sysop' => 'толықтай қорғалған',
@@ -2474,20 +2474,20 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
 'importsuccess' => 'Сырттан алу аяқталды!',
 'importhistoryconflict' => 'Тарихында қақтығысты түзету бар (бұл бет алдында сырттан алынған сияқты)',
 'importnosources' => 'Уики-апару үшін сырттан алынатын еш қайнар көзі анықталмаған, және тарихын тікелей қотарып беруі өшірілген.',
-'importnofile' => 'Сырттан алынған файл қотарып берілген жоқ.',
-'importuploaderrorsize' => 'Сырттан алынған файлдың қотарып берілуі сәтсіз өтті. Файл мөлшері қотарып берілуге руқсат етілгеннен асады.',
-'importuploaderrorpartial' => 'Сырттан алынған файлдың қотарып берілуі сәтсіз өтті. Осы файлдың тек бөліктері қотарылып берілді.',
-'importuploaderrortemp' => 'Сырттан алынған файлдың қотарып берілуі сәтсіз өтті. Уақытша қалта табылмады.',
+'importnofile' => 'Сырттан алынған файл жүктелген жоқ.',
+'importuploaderrorsize' => 'Сырттан алынған файлдың жүктелуі сәтсіз өтті. Файл мөлшері рұқсат етілгеннен мөлшерден асады.',
+'importuploaderrorpartial' => 'Сырттан алынған файлдың жүктелуі сәтсіз өтті. Осы файлдың тек бөліктері жүктелді.',
+'importuploaderrortemp' => 'Сырттан алынған файлдың жүктелуі сәтсіз өтті. Уақытша қалта табылмады.',
 'import-parse-failure' => 'Сырттан алынған XML файл құрылымын талдатқанда сәтсіздік болды',
 'import-noarticle' => 'Сырттан алынатын еш бет жоқ!',
 'import-nonewrevisions' => 'Барлық түзетулері алдында сырттан алынған.',
 'xml-error-string' => '$1 нөмір $2 жолда, баған $3 (байт $4): $5',
-'import-upload' => 'XML деректерін қотарып беру',
+'import-upload' => 'XML деректерін жүктеу',
 
 # Import log
 'importlogpage' => 'Сырттан алу журналы',
 'importlogpagetext' => 'Беттерді түзету тарихымен бірге сыртқы уикилерден әкімші ретінде алу.',
-'import-logentry-upload' => '«[[$1]]» дегенді файл қотарып беру арқылы сырттан алды',
+'import-logentry-upload' => '«[[$1]]» дегенді файл жүктеу арқылы сырттан алды',
 'import-logentry-upload-detail' => '$1 түзету',
 'import-logentry-interwiki' => 'уики-апарылған $1',
 'import-logentry-interwiki-detail' => '$2 дегеннен $1 түзету',
@@ -2531,7 +2531,7 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
 'tooltip-feed-atom' => 'Бұл беттің Atom арнасы',
 'tooltip-t-contributions' => 'Осы қатысушының үлес тізімін қарау',
 'tooltip-t-emailuser' => 'Осы қатысушыға хат жөнелту',
-'tooltip-t-upload' => 'Файлдарды қотарып беру',
+'tooltip-t-upload' => 'Файлдарды жүктеу',
 'tooltip-t-specialpages' => 'Барлық арнайы беттер тізімі',
 'tooltip-t-print' => 'Бұл беттің басып шығарышқа арналған нұсқасы',
 'tooltip-t-permalink' => 'Мына беттің осы нұсқасының тұрақты сілтемесі',
@@ -2552,7 +2552,7 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
 'tooltip-compareselectedversions' => 'Беттің екі бөлектенген нұсқасы айырмасын қарау.',
 'tooltip-watch' => 'Бұл бетті бақылау тізіміңізге үстеу',
 'tooltip-recreate' => 'Бет жойылғанына қарамастан қайта бастау',
-'tooltip-upload' => 'Қотарып беруді бастау',
+'tooltip-upload' => 'Жүктеуді бастау',
 'tooltip-rollback' => '"Шегіндіру" сілтемесін бір рет басу арқылы соңға редактордың барлық қатар өңдемелерін өшіру',
 'tooltip-summary' => 'Қысқаша сипаттамасын жазыңыз',
 
@@ -2654,7 +2654,7 @@ $1',
 # Special:NewFiles
 'newimages' => 'Жаңа файлдар көрмесі',
 'imagelisttext' => "Төменде $2 сұрыпталған '''$1''' файл тізімі.",
-'newimages-summary' => 'Ð\91ұл Ð°Ñ\80найÑ\8b Ð±ÐµÑ\82Ñ\96нде Ñ\81оңÒ\93Ñ\8b Ò\9bоÑ\82аÑ\80Ñ\8bп Ð±ÐµÑ\80Ñ\96лген файлдар көрсетіледі',
+'newimages-summary' => 'Ð\91ұл Ð°Ñ\80найÑ\8b Ð±ÐµÑ\82Ñ\82е Ñ\81оңÒ\93Ñ\8b Ð¶Ò¯ÐºÑ\82елген файлдар көрсетіледі',
 'newimages-legend' => 'Сүзгі',
 'showhidebots' => '(боттарды $1)',
 'noimages' => 'Көретін ештеңе жоқ.',
@@ -3171,7 +3171,7 @@ $5
 'specialpages-group-other' => 'Тағы басқа арнайы беттер',
 'specialpages-group-login' => 'Кіру / тіркелу',
 'specialpages-group-changes' => 'Жуықтағы өзгерістер мен журналдар',
-'specialpages-group-media' => 'Таспа баянаттары және қотарып берілгендер',
+'specialpages-group-media' => 'Таспа баянаттары және жүктелгендер',
 'specialpages-group-users' => 'Қатысушылар және олардың құқықтары',
 'specialpages-group-highuse' => 'Өте көп қолданылған беттер',
 'specialpages-group-pages' => 'Беттер тізімі',
@@ -3185,9 +3185,17 @@ $5
 'intentionallyblankpage' => 'Бұл бет әдейі бос қалдырылған',
 
 # New logging system
+'logentry-delete-delete' => '$1 $3 деген бетті жойды',
 'revdelete-restricted' => 'әкімшілерге тиымдар қолдады',
 'revdelete-unrestricted' => 'әкімшілерден тиымдарды аластады',
+'logentry-move-move' => '$1 $3 бетін $4 бетіне жылжытты',
 'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне жылжытты (айдатқыш қалдырылмады)',
+'logentry-move-move_redir' => '$1 $3 бетін $4 деген айдатқыш үстіне жылжытты',
 'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне жылжытты (айдатқыш қалдырылмады)',
+'logentry-newusers-newusers' => '$1 жаңадан аккаунт тіркеді',
+'logentry-newusers-create' => '$1 жаңадан аккаунт тіркеді',
+'logentry-newusers-create2' => '$1 $3 деген аккаунт тіркеді',
+'logentry-newusers-autocreate' => '$1 аккаунты автоматты түрде тіркелді',
+'newuserlog-byemail' => 'Құпия сөз e-mail арқылы жіберілді',
 
 );
index 4b4cf76..abcac3d 100644 (file)
@@ -340,24 +340,24 @@ $messages = array(
 'tog-underline' => '링크에 밑줄 표시하기:',
 'tog-justify' => '문단 정렬하기',
 'tog-hideminor' => '사소한 편집을 최근 바뀜에서 숨기기',
-'tog-hidepatrolled' => '최근 바뀜에서 검토ë\90\9c í\8e¸ì§\91ì\9d\84 ì\88¨ê¸°ê¸°',
-'tog-newpageshidepatrolled' => '새 문서 목록에서 검토ë\90\9c ë¬¸ì\84\9c를 ì\88¨ê¸°ê¸°',
+'tog-hidepatrolled' => '최근 바뀜에서 검토í\95\9c í\8e¸ì§\91ì\9d\84 ì\88¨ê¸°ê¸°',
+'tog-newpageshidepatrolled' => '새 문서 목록에서 검토í\95\9c ë¬¸ì\84\9c를 ì\88¨ê¸°ê¸°',
 'tog-extendwatchlist' => '주시문서 목록에서 가장 최근의 편집만이 아닌 모든 편집을 보기',
-'tog-usenewrc' => '향상된 최근 바뀜 (자바스크립트)',
+'tog-usenewrc' => '최근 바뀜 및 주시 문서 목록에서 문서별 그룹 바뀜 (자바스크립트 필요)',
 'tog-numberheadings' => '머릿글 번호 매기기',
-'tog-showtoolbar' => '편집창에 툴바 보이기 (자바스크립트)',
-'tog-editondblclick' => '더블클릭으로 문서 편집하기 (자바스크립트)',
+'tog-showtoolbar' => '편집창에 툴바 보이기 (자바스크립트 필요)',
+'tog-editondblclick' => '더블 클릭으로 문서 편집하기 (자바스크립트 필요)',
 'tog-editsection' => '[편집] 링크로 부분 편집하기',
-'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 부분 편집하기 (자바스크립트)',
+'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 부분 편집하기 (자바스크립트 필요)',
 'tog-showtoc' => '문서의 차례 보여주기 (머릿글이 4개 이상인 경우)',
 'tog-rememberpassword' => '이 브라우저에서 로그인 상태를 저장하기 (최대 $1일)',
 'tog-watchcreations' => '내가 처음 만드는 문서를 주시문서 목록에 추가',
 'tog-watchdefault' => '내가 편집하는 문서를 주시문서 목록에 추가',
 'tog-watchmoves' => '내가 이동하는 문서를 주시문서 목록에 추가',
 'tog-watchdeletion' => '내가 삭제하는 문서를 주시문서 목록에 추가',
-'tog-minordefault' => '‘사소한 편집’을 기본적으로 선택하기',
-'tog-previewontop' => '편집ì\83\81ì\9e\90 ì\95\9eì\97\90 ë¯¸ë¦¬ë³´ê¸° ë³´ì\9d´ê¸°',
-'tog-previewonfirst' => '처음 편집할 때 미리보기 보기',
+'tog-minordefault' => '사소한 편집을 기본적으로 선택하기',
+'tog-previewontop' => '편집 ì\83\81ì\9e\90 ì\95\9eì\97\90 ë¯¸ë¦¬ ë³´ê¸° ë³´ê¸°',
+'tog-previewonfirst' => '처음 편집할 때 미리 보기 보기',
 'tog-nocache' => '브라우저의 문서 캐시 끄기',
 'tog-enotifwatchlistpages' => '주시문서가 바뀌면 이메일로 알림',
 'tog-enotifusertalkpages' => '내 토론 문서가 바뀌면 이메일로 알림',
@@ -366,17 +366,17 @@ $messages = array(
 'tog-shownumberswatching' => '주시 사용자 수 보기',
 'tog-oldsig' => '현재 서명:',
 'tog-fancysig' => '서명을 위키텍스트로 취급 (자동으로 링크를 걸지 않음)',
-'tog-externaleditor' => '외부 편집기를 기본 편집기로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요, [//www.mediawiki.org/wiki/Manual:External_editors 자세한 정보 보기])',
-'tog-externaldiff' => '외부 비교 도구를 기본 도구로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요, [//www.mediawiki.org/wiki/Manual:External_editors 자세한 설명 보기])',
+'tog-externaleditor' => '외부 편집기를 기본 편집기로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요. [//www.mediawiki.org/wiki/Manual:External_editors 자세한 정보 보기])',
+'tog-externaldiff' => '외부 비교 도구를 기본 도구로 사용 (숙련자용. 컴퓨터에 특별한 설정이 필요. [//www.mediawiki.org/wiki/Manual:External_editors 자세한 설명 보기])',
 'tog-showjumplinks' => '접근성을 위한 "이동" 링크 쓰기 (일부 스킨에서만 작동)',
-'tog-uselivepreview' => '실시간 미리 보기 사용하기 (자바스크립트 사용, 시험 중)',
+'tog-uselivepreview' => '실시간 미리 보기 사용하기 (자바스크립트 필요) (시험 기능)',
 'tog-forceeditsummary' => '편집 요약을 쓰지 않았을 때 알려주기',
 'tog-watchlisthideown' => '주시문서 목록에서 내 편집을 숨기기',
 'tog-watchlisthidebots' => '주시문서 목록에서 봇 편집을 숨기기',
 'tog-watchlisthideminor' => '주시문서 목록에서 사소한 편집을 숨기기',
 'tog-watchlisthideliu' => '주시문서 목록에서 로그인한 사용자의 편집을 숨기기',
-'tog-watchlisthideanons' => '주시문서 목록에서 비등록 사용자의 편집을 숨기기',
-'tog-watchlisthidepatrolled' => '주시문서 목록에서 검토ë\90\9c í\8e¸ì§\91ì\9d\84 ì\88¨ê¸°ê¸°',
+'tog-watchlisthideanons' => '주시문서 목록에서 익명 사용자의 편집을 숨기기',
+'tog-watchlisthidepatrolled' => '주시문서 목록에서 검토í\95\9c í\8e¸ì§\91ì\9d\84 ì\88¨ê¸°ê¸°',
 'tog-nolangconversion' => '변형 변환을 비활성화',
 'tog-ccmeonemails' => '이메일을 보낼 때 내 이메일로 복사본을 보내기',
 'tog-diffonly' => '편집 차이를 비교할 때 문서 내용을 보지 않기',
@@ -449,19 +449,19 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|분류}}',
-'category_header' => '‘$1’ 분류에 속하는 문서',
+'category_header' => '"$1" 분류에 속하는 문서',
 'subcategories' => '하위 분류',
-'category-media-header' => '‘$1’ 분류에 속하는 자료',
+'category-media-header' => '"$1" 분류에 속하는 자료',
 'category-empty' => '이 분류에 속하는 문서나 자료가 없습니다.',
 'hidden-categories' => '{{PLURAL:$1|숨은 분류}}',
 'hidden-category-category' => '숨은 분류',
-'category-subcat-count' => '{{PLURAL:$2|이 분류에는 하위 분류 1 개만이 속해 있습니다.|다음은 이 분류에 속하는 하위 분류 $2 개 가운데 $1 개입니다.}}',
-'category-subcat-count-limited' => '이 분류에 하위분류가 $1개 있습니다.',
-'category-article-count' => '{{PLURAL:$2|이 분류에는 문서 1 개만이 속해 있습니다.|다음은 이 분류에 속하는 문서 $2 개 가운데 $1 개입니다.}}',
-'category-article-count-limited' => '이 분류에 문서가 $1개 있습니다.',
-'category-file-count' => '{{PLURAL:$2|이 분류에는 파일 1 개만이 속해 있습니다.|다음은 이 분류에 속하는 파일 $2 개 가운데 $1 개입니다.}}',
-'category-file-count-limited' => '이 분류에 파일이 $1개 있습니다.',
-'listingcontinuesabbrev' => ' (계속)',
+'category-subcat-count' => '{{PLURAL:$2|이 분류에는 하위 분류 1개만이 속해 있습니다.|다음은 이 분류에 속하는 하위 분류 $2개 가운데 $1개입니다.}}',
+'category-subcat-count-limited' => '이 분류에 하위 분류 $1개가 있습니다.',
+'category-article-count' => '{{PLURAL:$2|이 분류에는 문서 1개만이 속해 있습니다.|다음은 이 분류에 속하는 문서 $2개 가운데 $1개입니다.}}',
+'category-article-count-limited' => '이 분류에 문서 $1개가 있습니다.',
+'category-file-count' => '{{PLURAL:$2|이 분류에는 파일 1개만이 속해 있습니다.|다음은 이 분류에 속하는 파일 $2개 가운데 $1개입니다.}}',
+'category-file-count-limited' => '이 분류에 파일 $1개가 있습니다.',
+'listingcontinuesabbrev' => '(계속)',
 'index-category' => '색인된 문서',
 'noindex-category' => '색인에서 제외되는 문서',
 'broken-file-category' => '잘못된 파일 링크가 포함된 문서',
@@ -545,7 +545,7 @@ $messages = array(
 'toolbox' => '도구모음',
 'userpage' => '사용자 문서 보기',
 'projectpage' => '프로젝트 문서 보기',
-'imagepage' => '자료 문서 보기',
+'imagepage' => '파일 문서 보기',
 'mediawikipage' => '메시지 문서 보기',
 'templatepage' => '틀 문서 보기',
 'viewhelppage' => '도움말 문서 보기',
@@ -554,7 +554,7 @@ $messages = array(
 'otherlanguages' => '다른 언어',
 'redirectedfrom' => '($1에서 넘어옴)',
 'redirectpagesub' => '넘겨주기 문서',
-'lastmodifiedat' => '이 문서는 $1 $2 에 마지막으로 바뀌었습니다.',
+'lastmodifiedat' => '이 문서는 $1 $2에 마지막으로 바뀌었습니다.',
 'viewcount' => '이 문서는 $1번 읽혔습니다.',
 'protectedpage' => '보호된 문서',
 'jumpto' => '이동:',
@@ -594,10 +594,11 @@ $1',
 'badaccess-groups' => '요청한 동작은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1.',
 
 'versionrequired' => '미디어위키 $1 버전 필요',
-'versionrequiredtext' => '이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다. [[Special:Version|설치된 미디어위키 버전]]을 확인해주세요.',
+'versionrequiredtext' => '이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.
+[[Special:Version|설치된 미디어위키 버전]]을 참고하세요.',
 
 'ok' => '확인',
-'retrievedfrom' => '원본 주소 ‘$1’',
+'retrievedfrom' => '원본 주소 "$1"',
 'youhavenewmessages' => '다른 사용자가 $1란에 글을 남겼습니다. ($2)',
 'newmessageslink' => '사용자 토론',
 'newmessagesdifflink' => '바뀐 내용 비교',
@@ -615,13 +616,13 @@ $1',
 'collapsible-expand' => '보이기',
 'thisisdeleted' => '$1을 보거나 되살리겠습니까?',
 'viewdeleted' => '$1을 보겠습니까?',
-'restorelink' => '삭제된 편집 $1 개',
+'restorelink' => '삭제된 편집 $1개',
 'feedlinks' => '피드:',
 'feed-invalid' => '잘못된 구독 피드 방식입니다.',
 'feed-unavailable' => '피드 서비스는 제공하지 않습니다',
 'site-rss-feed' => '$1 RSS 피드',
 'site-atom-feed' => '$1 Atom 피드',
-'page-rss-feed' => '‘$1’ RSS 피드',
+'page-rss-feed' => '"$1" RSS 피드',
 'page-atom-feed' => '"$1" Atom 피드',
 'red-link-title' => '$1 (없는 문서)',
 'sort-descending' => '내림차순 정렬',
@@ -644,7 +645,7 @@ $1',
 'nosuchactiontext' => 'URL로 요청한 동작이 잘못되었습니다.
 당신은 URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니다.
 이것은 {{SITENAME}}의 버그일 수도 있습니다.',
-'nosuchspecialpage' => '해당하는 특수기능이 없습니다.',
+'nosuchspecialpage' => '해당하는 특수 문서가 없습니다.',
 'nospecialpagetext' => '<strong>요청한 특수 문서가 존재하지 않습니다.</strong>
 
 특수 문서의 목록은 [[Special:SpecialPages|여기]]에서 볼 수 있습니다.',
@@ -669,7 +670,7 @@ $1',
 'readonlytext' => '데이터베이스가 잠겨 있어서 문서를 편집할 수 없습니다. 데이터베이스 관리가 끝난 후에는 정상으로 돌아올 것입니다.
 
 관리자가 데이터베이스를 잠글 때 남긴 메시지는 다음과 같습니다: $1',
-'missing-article' => '데이터베이스에서 ‘$1’ 문서$2를 찾지 못했습니다.
+'missing-article' => '데이터베이스에서 "$1" 문서의 $2 텍스트를 찾지 못했습니다.
 
 삭제된 문서의 역사/비교 문서를 보려고 시도할 때 이러한 문제가 발생할 수 있습니다.
 
@@ -679,25 +680,32 @@ $1',
 'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 갱신하는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
 'internalerror' => '내부 오류',
 'internalerror_info' => '내부 오류: $1',
-'fileappenderrorread' => '‘$1’ 파일을 읽을 수 없습니다. 해당 파일에 내용을 덧붙일 수 없습니다.',
-'fileappenderror' => '‘$1’ 파일을 ‘$2’에 덧붙일 수 없습니다.',
-'filecopyerror' => '‘$1’ 파일을 ‘$2’(으)로 복사할 수 없습니다.',
-'filerenameerror' => '‘$1’ 파일을 ‘$2’(으)로 옮길 수 없습니다.',
-'filedeleteerror' => '‘$1’ 파일을 삭제할 수 없습니다.',
-'directorycreateerror' => '‘$1’ 디렉토리를 만들 수 없습니다.',
-'filenotfound' => '‘$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' => '"$1" 문서나 파일을 삭제할 수 없습니다. 이미 삭제되었을 수도 있습니다.',
+'cannotdelete' => '"$1" 문서나 파일을 삭제할 수 없습니다.
+이미 삭제되었을 수도 있습니다.',
 'cannotdelete-title' => '"$1" 문서를 삭제할 수 없습니다.',
+'delete-hook-aborted' => '훅에 의해 삭제가 중단되었습니다.
+아무런 설명도 주어지지 않았습니다.',
 'badtitle' => '잘못된 제목',
-'badtitletext' => '문서 제목이 잘못되었거나 비어있습니다.',
-'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|$1개의 결과}}가 있습니다.',
-'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 갱신되었습니다.  캐시에 최대 {{PLURAL:$4|$4개의 결과}}가 있습니다.',
-'querypage-no-updates' => '이 문서의 갱신이 현재 비활성화되어 있습니다. 자료가 잠시 갱신되지 않을 것입니다.',
-'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />함수: $1<br />쿼리: $2',
+'badtitletext' => '문서 제목이 잘못되었거나 비어있습니다. 또는 잘못된 인터위키 제목으로 링크했습니다.
+문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.',
+'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 $1개}}가 있습니다.',
+'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 새로 고쳐졌습니다.  캐시에 최대 {{PLURAL:$4|결과 $4개}}가 있습니다.',
+'querypage-no-updates' => '이 문서의 갱신이 현재 비활성화되어 있습니다.
+자료가 잠시 새로 고치지 않을 것입니다.',
+'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />
+함수: $1<br />
+쿼리: $2',
 'viewsource' => '내용 보기',
 'viewsource-title' => '$1 문서 내용 보기',
 'actionthrottled' => '동작 중지',
@@ -707,24 +715,28 @@ $1',
 'viewsourcetext' => '문서의 원본을 보거나 복사할 수 있습니다:',
 'viewyourtext' => "당신은 이 문서에 남긴 '''당신의 편집''' 내용을 보거나 복사할 수 있습니다:",
 'protectedinterface' => '이 문서는 소프트웨어 인터페이스에 쓰이는 문서로, 잠겨 있습니다.',
-'editinginterface' => "'''경고''': 소프트웨어에서 사용하는 메시지 문서를 고치고 있습니다. 이것은 모든 사용자에게 영향을 끼칩니다. 번역되지 않은 메시지를 번역하려는 경우에는, [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]에 참여하면 메시지 번역을 미디어위키에 직접 반영할 수 있습니다.",
+'editinginterface' => "'''경고''': 소프트웨어에서 사용하는 메시지 문서를 고치고 있습니다.
+이는 모든 사용자에게 영향을 끼칩니다.
+번역되지 않은 메시지를 번역하려는 경우에는 [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]에 참여하면 메시지 번역을 미디어위키에 직접 반영할 수 있습니다.",
 'sqlhidden' => '(SQL 쿼리 숨겨짐)',
-'cascadeprotected' => '이 문서는 연쇄보호가 걸린 {{PLURAL:$1|문서}}에 포함되어 있어 함께 보호됩니다. 연쇄 보호된 문서:
+'cascadeprotected' => '이 문서는 연쇄 보호가 걸린 {{PLURAL:$1|문서}}에 포함되어 있어 함께 보호됩니다. 연쇄 보호된 문서:
 $2',
-'namespaceprotected' => "'''$1''' 네임스페이스를 편집할 수 있는 권한이 없습니다.",
+'namespaceprotected' => "'''$1''' 이름공간을 편집할 수 있는 권한이 없습니다.",
 'customcssprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 당신은 이 CSS 문서를 편집할 수 없습니다.',
 'customjsprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 당신은 이 자바스크립트 문서를 편집할 수 없습니다.',
-'ns-specialprotected' => '{{ns:special}} ë\84¤ì\9e\84ì\8a¤í\8e\98ì\9d´ì\8a¤ì\9d\98 ë¬¸ì\84\9cë\8a\94 í\8e¸ì§\91í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.',
-'titleprotected' => '[[User:$1|$1]] 사용자가 문서 생성을 금지했습니다.
-이유는 다음과 같습니다. ‘$2’',
-'filereadonlyerror' => '‘$2’ 파일 저장소가 읽기 전용이기 때문에 ‘$1’ 파일을 변경할 수 없습니다.
+'ns-specialprotected' => 'í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8e¸ì§\91í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.',
+'titleprotected' => '[[User:$1|$1]] 사용자가 문서 만들기를 금지했습니다.
+이유는 다음과 같습니다. "$2"',
+'filereadonlyerror' => '"$2" 파일 저장소가 읽기 전용이기 때문에 "$1" 파일을 변경할 수 없습니다.
 
-저장소 관리자가 파일 저장소를 잠근 이유에 대해 "\'\'$3\'\'"이라는 설명을 남겼습니다.',
-'invalidtitle-knownnamespace' => '제목 오류: 이름공간 "$2"와 텍스트 "$3"',
-'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 이름공간 번호 "$1"과, 텍스트 "$2"',
+저장소 관리자가 파일 저장소를 잠근 이유에 대한 설명을 남겼습니다: "$3".',
+'invalidtitle-knownnamespace' => '제목 오류: "$2" 이름공간과 "$3" 텍스트',
+'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 $1 이름공간 번호와, "$2" 텍스트',
+'exception-nologin' => '로그인하지 않음',
+'exception-nologin-text' => '이 문서나 행동은 이 위키에 로그인을 해야 합니다.',
 
 # Virus scanner
-'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: ''$1''",
+'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
 'virus-scanfailed' => '검사 실패 (코드 $1)',
 'virus-unknownscanner' => '알려지지 않은 백신:',
 
@@ -738,11 +750,11 @@ $2',
 [[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
 'yourname' => '계정 이름:',
 'yourpassword' => '비밀번호:',
-'yourpasswordagain' => '비밀번호 입력:',
+'yourpasswordagain' => '비밀번호 다시 입력:',
 'remembermypassword' => '이 컴퓨터에서 로그인 상태를 저장하기 (최대 $1일)',
-'securelogin-stick-https' => '로그인 후에도 HTTPS 연결 상태를 유지합니다.',
-'yourdomainname' => '도메인 이름',
-'externaldberror' => '외부 인증 데이터베이스에 오류가 있거나, 외부 계정을 갱신할 권한이 없습니다.',
+'securelogin-stick-https' => '로그인 후에도 HTTPS 연결 상태를 유지합니다',
+'yourdomainname' => '도메인 이름:',
+'externaldberror' => '외부 인증 데이터베이스에 오류가 있거나 외부 계정을 갱신할 권한이 없습니다.',
 'login' => '로그인',
 'nav-login-createaccount' => '로그인 / 계정 만들기',
 'loginprompt' => '{{SITENAME}}에 로그인하려면 쿠키를 사용할 수 있어야 합니다.',
@@ -763,22 +775,29 @@ $2',
 'userexists' => '입력하신 사용자 이름이 이미 등록되어 있습니다.
 다른 이름을 선택해주십시오.',
 'loginerror' => '로그인 오류',
-'createaccounterror' => '계정을 생성하지 못했습니다: $1',
-'nocookiesnew' => '사용자 계정을 만들었지만, 아직 로그인하지 않았습니다. {{SITENAME}}에서는 로그인 정보를 저장하기 위해 쿠키를 사용합니다. 지금 사용하는 웹 브라우저는 쿠키를 사용하지 않도록 설정되어 있습니다. 로그인하기 전에 웹 브라우저에서 쿠키를 사용하도록 설정해주세요.',
-'nocookieslogin' => '{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다. 당신의 웹 브라우저에서 쿠키가 비활성되어 있습니다. 쿠키 사용을 활성화한 다음 로그인해 주세요.',
-'nocookiesfornew' => '요청의 출처를 확인할 수 없기 때문에 사용자 계정이 생성되지 않았습니다.
+'createaccounterror' => '계정을 만들지 못했습니다: $1',
+'nocookiesnew' => '사용자 계정을 만들었지만, 아직 로그인하지 않았습니다.
+{{SITENAME}}에서는 로그인 정보를 저장하기 위해 쿠키를 사용합니다.
+지금 사용하는 웹 브라우저는 쿠키를 사용하지 않도록 설정되어 있습니다.
+로그인하기 전에 웹 브라우저에서 쿠키를 사용하도록 설정해주세요.',
+'nocookieslogin' => '{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다.
+당신의 웹 브라우저에서 쿠키가 비활성되어 있습니다.
+쿠키 사용을 활성화한 다음 로그인해 주세요.',
+'nocookiesfornew' => '요청의 출처를 확인할 수 없기 때문에 사용자 계정이 만들어지지 않았습니다.
 쿠키를 허용한 것을 확인한 후에 다시 시도해 보십시오.',
 'noname' => '사용자 이름이 올바르지 않습니다.',
 'loginsuccesstitle' => '로그인 성공',
-'loginsuccess' => "'''{{SITENAME}}에 ‘$1’ 계정으로 로그인했습니다.'''",
+'loginsuccess' => "'''{{SITENAME}}에 \"\$1\" 계정으로 로그인했습니다.'''",
 'nosuchuser' => '"$1" 사용자가 존재하지 않습니다.
 사용자 이름은 대소문자를 구별합니다. 철자가 맞는지 확인해주세요.
 [[Special:UserLogin/signup|새 계정을 만들 수도 있습니다]].',
-'nosuchusershort' => '이름이 ‘$1’인 사용자는 없습니다. 철자가 맞는지 확인해 주세요.',
+'nosuchusershort' => '이름이 ‘$1’인 사용자는 없습니다.
+철자가 맞는지 확인해 주세요.',
 'nouserspecified' => '사용자 이름을 입력하지 않았습니다.',
 'login-userblocked' => '이 사용자는 차단되었습니다. 로그인할 수 없습니다.',
-'wrongpassword' => '입력한 비밀번호가 다릅니다. 다시 시도해 주세요.',
-'wrongpasswordempty' => '비밀번호를 쓰지 않았습니다.
+'wrongpassword' => '입력한 비밀번호가 다릅니다.
+다시 시도해 주세요.',
+'wrongpasswordempty' => '비밀번호를 입력하지 않았습니다.
 다시 시도해 주세요.',
 'passwordtooshort' => '비밀번호는 $1 문자 이상이어야 합니다.',
 'password-name-match' => '비밀번호는 사용자 이름과 반드시 달라야 합니다.',
@@ -786,61 +805,69 @@ $2',
 'mailmypassword' => '새 비밀번호를 이메일로 보내기',
 'passwordremindertitle' => '{{SITENAME}}의 새 임시 비밀번호',
 'passwordremindertext' => '$1 IP 주소에서 누군가가 아마 자신이 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.
-‘$2’ 사용자의 임시 비밀번호는 ‘$3’로 설정되었습니다. 이것이 자신이 의도한 바라면 지금 로그인하여 새로운 비밀번호를 만드십시오.
-당신의 임시 비밀번호는 $5일 후에 무효화됩니다.
-
-이 요청을 다른 사람이 했거나 이전 비밀번호를 기억해 내서 바꿀 필요가 없으면 이 메시지를 무시하고 이전 비밀번호를 계속 사용할 수 있습니다.',
-'noemail' => '‘$1’ 사용자는 이메일 주소를 등록하지 않았습니다.',
-'noemailcreate' => '바른 이메일 주소를 써야 합니다.',
-'passwordsent' => '‘$1’ 계정의 새로운 비밀번호를 이메일로 보냈습니다. 비밀번호를 받고 다시 로그인해 주세요.',
+"$2" 사용자의 임시 비밀번호는 "$3"로 설정되었습니다. 이것이 자신이 의도한 바라면
+지금 로그인하여 새로운 비밀번호를 만드세요.
+당신의 임시 비밀번호는 $5일 후에 만료됩니다.
+
+이 요청을 다른 사람이 했거나 이전 비밀번호를 기억해 내서 바꿀 필요가 없으면
+이 메시지를 무시하고 이전 비밀번호를 계속 사용할 수 있습니다.',
+'noemail' => '"$1" 사용자는 이메일 주소를 등록하지 않았습니다.',
+'noemailcreate' => '바른 이메일 주소를 제공해야 합니다.',
+'passwordsent' => '"$1" 계정의 새로운 비밀번호를 이메일로 보냈습니다.
+비밀번호를 받고 다시 로그인해 주세요.',
 'blocked-mailpassword' => '당신의 IP 주소는 편집을 할 수 없게 차단되어 있어서 악용하지 못하도록 비밀번호 되살리기 기능 사용이 금지됩니다.',
-'eauthentsent' => '확인 이메일을 보냈습니다. 이메일 내용의 지시대로 계정 확인 절차를 실행해 주십시오.',
-'throttled-mailpassword' => '비밀번호 확인 이메일을 이미 최근 $1 시간 안에 보냈습니다. 악용을 방지하기 위해 비밀번호 확인 메일은 $1 시간마다 오직 하나씩만 보낼 수 있습니다.',
+'eauthentsent' => '입력한 이메일로 확인 이메일을 보냈습니다.
+게정에서 다른 이메일로 보내기 전에 이메일 내용의 지시대로 계정 확인 절차를 실행해 주십시오.',
+'throttled-mailpassword' => '비밀번호 확인 이메일을 이미 최근 $1시간 안에 보냈습니다.
+악용을 방지하기 위해 비밀번호 확인 메일은 $1시간마다 오직 하나씩만 보낼 수 있습니다.',
 'mailerror' => '메일 보내기 오류: $1',
-'acct_creation_throttle_hit' => '당신의 IP 주소를 이용한 방문자가 이전에 이미 계정을 $1개 생성하여, 계정 생성 한도를 초과하였습니다.
+'acct_creation_throttle_hit' => '당신의 IP 주소를 이용한 방문자가 이전에 이미 계정을 $1개 만들어, 계정 만들기 한도를 초과하였습니다.
 따라서 지금은 이 IP 주소로는 더 이상 계정을 만들 수 없습니다.',
 'emailauthenticated' => '당신의 이메일 주소는 $2 $3에 인증되었습니다.',
-'emailnotauthenticated' => '이메일 주소를 인증하지 않았습니다. 이메일 확인 절차를 거치지 않으면 다음 이메일 기능을 사용할 수 없습니다.',
-'noemailprefs' => '이 기능을 사용하기 위해서는 환경설정에서 이메일 주소를 설정해야 합니다.',
+'emailnotauthenticated' => '이메일 주소를 인증하지 않았습니다.
+이메일 확인 절차를 거치지 않으면 다음 이메일 기능을 사용할 수 없습니다.',
+'noemailprefs' => '이 기능을 사용하기 위해서는 사용자 환경 설정에서 이메일 주소를 설정해야 합니다.',
 'emailconfirmlink' => '이메일 주소 확인',
 'invalidemailaddress' => '이메일 주소의 형식이 잘못되어 인식할 수 없습니다.
 정상적인 형식의 이메일을 입력하거나 칸을 비워 주세요.',
 'cannotchangeemail' => '이 위키에서는 계정의 이메일 주소를 바꿀 수 없습니다.',
 'emaildisabled' => '이 사이트에서는 이메일을 보낼 수 없습니다.',
 'accountcreated' => '계정 만들어짐',
-'accountcreatedtext' => '‘$1’ 사용자 계정이 만들어졌습니다.',
+'accountcreatedtext' => '"$1" 사용자 계정이 만들어졌습니다.',
 'createaccount-title' => '{{SITENAME}} 계정 만들기',
-'createaccount-text' => '누군가가 {{SITENAME}} ($4)에서 계정 이름 ‘$2’, 비밀번호 ‘$3’로 당신의 이메일 주소가 등록된 계정을 만들었습니다. 지금 로그인하여 비밀번호를 바꾸십시오.
+'createaccount-text' => '누군가가 {{SITENAME}} ($4)에서 계정 이름 ‘$2’, 비밀번호 ‘$3’로 당신의 이메일 주소가 등록된 계정을 만들었습니다. 
+지금 로그인하여 비밀번호를 바꾸십시오.
 
 실수로 계정을 잘못 만들었다면 이 메시지는 무시해도 됩니다.',
-'usernamehasherror' => 'ê³\84ì \95 ì\9d´ë¦\84ì\97\90ë\8a\94 í\95´ì\8b\9c ë¬¸ì\9e\90ê°\80 ë\93¤ì\96´ê°\80ì\84\9cë\8a\94 ì\95\88 ë\90©니다.',
+'usernamehasherror' => 'ê³\84ì \95 ì\9d´ë¦\84ì\97\90ë\8a\94 í\95´ì\8b\9c ë¬¸ì\9e\90ê°\80 ë\93¤ì\96´ê°\88 ì\88\98 ì\97\86ì\8aµ니다.',
 'login-throttled' => '로그인에 연속으로 실패하였습니다.
 잠시 후에 다시 시도해주세요.',
 'login-abort-generic' => '로그인에 실패했습니다 - 중지됨',
 'loginlanguagelabel' => '언어: $1',
-'suspicious-userlogout' => 'ë¸\8cë\9d¼ì\9a°ì \80ì\9d\98 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
+'suspicious-userlogout' => 'ë¸\8cë\9d¼ì\9a°ì \80ì\97\90 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
 
 # E-mail sending
 'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
-'user-mail-no-addy' => '받는 이의 이메일 주소가 없다면 이메일을 보낼 수 없습니다.',
+'user-mail-no-addy' => '받는이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.',
 
 # Change password dialog
 'resetpass' => '비밀번호 바꾸기',
-'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다. 로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
+'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다.
+로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
 'resetpass_text' => '<!-- 여기에 텍스트를 추가하세요 -->',
-'resetpass_header' => 'ë¹\84ë°\80ë²\88í\98¸ ë³\80ê²½',
+'resetpass_header' => 'ë¹\84ë°\80ë²\88í\98¸ ë°\94꾸기',
 'oldpassword' => '이전 비밀번호:',
 'newpassword' => '새 비밀번호:',
 'retypenew' => '새 비밀번호 재입력:',
 'resetpass_submit' => '비밀번호를 설정하고 로그인하기',
-'resetpass_success' => '비밀번호를 변경했습니다!
-이제...사용하십시오.',
-'resetpass_forbidden' => '비밀번호 변경 불가',
+'resetpass_success' => '비밀번호를 성공적으로 바꿨습니다!
+이제 로그인을 합니다...',
+'resetpass_forbidden' => '비밀번호를 바꿀 수 없음',
 'resetpass-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
-'resetpass-submit-loggedin' => 'ë¹\84ë°\80ë²\88í\98¸ ë³\80ê²½',
+'resetpass-submit-loggedin' => 'ë¹\84ë°\80ë²\88í\98¸ ë°\94꾸기',
 'resetpass-submit-cancel' => '취소',
 'resetpass-wrong-oldpass' => '비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.
\8b¹ì\8b ì\9d\80 ì\9d´ë¯¸ ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\84±ê³µì \81ì\9c¼ë¡\9c ë³\80ê²½í\95\98ì\98\80거나 새 임시 비밀번호를 발급받았을 수 있습니다.',
\8b¹ì\8b ì\9d\80 ì\9d´ë¯¸ ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\84±ê³µì \81ì\9c¼ë¡\9c ë°\94꾸ì\97\88거나 새 임시 비밀번호를 발급받았을 수 있습니다.',
 'resetpass-temp-password' => '임시 비밀번호:',
 
 # Special:PasswordReset
@@ -848,25 +875,29 @@ $2',
 'passwordreset-text' => '이메일을 통해 계정 정보를 받을 수 있습니다. 아래의 칸을 채워주세요.',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
-'passwordreset-pretext' => '{{PLURAL:$1||ì\95\84ë\9e\98ì\97\90 í\95\9c ê°\80ì§\80 ì \95보를 ì\9e\85ë ¥í\95´ì£¼ì\8b­ì\8b\9cì\98¤}}',
+'passwordreset-pretext' => '{{PLURAL:$1||ì\95\84ë\9e\98ì\97\90 í\95\9c ê°\80ì§\80 ì \95보를 ì\9e\85ë ¥í\95\98ì\84¸ì\9a\94}}',
 'passwordreset-username' => '계정 이름:',
 'passwordreset-domain' => '도메인:',
 'passwordreset-capture' => '발송 결과 이메일을 보시겠습니까?',
 'passwordreset-capture-help' => '이 상자에 체크하면 이메일이 발송된 즉시 임시 비밀번호가 담긴 이메일을 볼 수 있습니다.',
 'passwordreset-email' => '이메일 주소:',
 'passwordreset-emailtitle' => '{{SITENAME}} 계정 상세 정보',
-'passwordreset-emailtext-ip' => 'IP 주소 $1을 사용하는 누군가(아마도 당신이), {{SITENAME}} ($4)의 비밀번호 찾기를 요청하였습니다. 이 이메일 주소와 연관된 계정의 목록입니다:
+'passwordreset-emailtext-ip' => 'IP 주소 $1을 사용하는 누군가(아마도 당신이), {{SITENAME}} ($4)의 비밀번호 찾기를 요청하였습니다.
+이 이메일 주소와 연관된 계정의 목록입니다:
 
 $2
 
-이 {{PLURAL:$3|임시 비밀번호}}의 효력은 $5일 후 만료됩니다.
-이 비밀번호로 로그인한 후 비밀번호를 변경하십시오. 만약 당신이 아닌 다른 사람이 요청하였거나, 원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고 이전의 비밀번호를 계속 사용할 수 있습니다.',
-'passwordreset-emailtext-user' => '{{SITENAME}} ($4)의 사용자 $1이 비밀번호 찾기를 요청하였습니다. 이 이메일 주소와 연관된 계정의 목록입니다:
+이 {{PLURAL:$3|임시 비밀번호}}는 $5일 후에 만료됩니다.
+이 비밀번호로 로그인한 후 비밀번호를 바꾸십시오. 만약 당신이 아닌 다른 사람이 요청하였거나,
+원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고 이전의 비밀번호를 계속 사용할 수 있습니다.',
+'passwordreset-emailtext-user' => '{{SITENAME}} ($4)의 사용자 $1이 비밀번호 찾기를 요청하였습니다.
+이 이메일 주소와 연관된 계정의 목록입니다:
 
 $2
 
-이 {{PLURAL:$3|임시 비밀번호}}의 효력은 $5일 후 만료됩니다.
-이 비밀번호로 로그인한 후 비밀번호를 변경하십시오. 만약 당신이 아닌 다른 사람이 요청하였거나, 원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고 이전의 비밀번호를 계속 사용할 수 있습니다.',
+이 {{PLURAL:$3|임시 비밀번호}}는 $5일 후에 만료됩니다.
+이 비밀번호로 로그인한 후 비밀번호를 바꾸십시오. 만약 당신이 아닌 다른 사람이 요청하였거나,
+원래의 비밀번호를 기억해냈다면, 이 메시지를 무시하고 이전의 비밀번호를 계속 사용할 수 있습니다.',
 'passwordreset-emailelement' => '계정 이름: $1
 임시 비밀번호: $2',
 'passwordreset-emailsent' => '비밀번호 찾기 이메일을 보냈습니다.',
@@ -874,14 +905,14 @@ $2
 'passwordreset-emailerror-capture' => '비밀번호 찾기 이메일이 생성되어 아래에 표시되었지만 발송하는 데에는 실패했습니다: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'E-mail 주소 변경',
-'changeemail-header' => 'ê³\84ì \95 ë©\94ì\9d¼ ì£¼ì\86\8c ë³\80ê²½',
-'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c주ì\8b­ì\8b\9cì\98¤. ë³\80ê²½ ë\82´ì\9a©ì\9d\84 í\99\95ì\9d¸í\95\98기 ì\9c\84í\95´ ë\8b¹ì\8b ì\9d\98 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e\85ë ¥í\95´ì\95¼합니다.',
+'changeemail' => '이메일 주소 바꾸기',
+'changeemail-header' => 'ê³\84ì \95 ë©\94ì\9d¼ ì£¼ì\86\8c ë°\94꾸기',
+'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9a°ì\84¸ì\9a\94. ë³\80ê²½ ë\82´ì\9a©ì\9d\84 í\99\95ì\9d¸í\95\98기 ì\9c\84í\95´ ë\8b¹ì\8b ì\9d\98 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e\85ë ¥í\95´ì\95¼ 합니다.',
 'changeemail-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
 'changeemail-oldemail' => '현재 E-mail 주소 :',
 'changeemail-newemail' => '새 이메일 주소:',
 'changeemail-none' => '(없음)',
-'changeemail-submit' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c ë³\80ê²½',
+'changeemail-submit' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c ë°\94꾸기',
 'changeemail-cancel' => '취소',
 
 # Edit page toolbar
@@ -912,24 +943,28 @@ $2
 'showpreview' => '미리 보기',
 'showlivepreview' => '실시간 미리 보기',
 'showdiff' => '차이 보기',
-'anoneditwarning' => "'''주의''': 로그인하고 있지 않습니다. 당신의 IP 주소가 문서 역사에 남게 됩니다.",
+'anoneditwarning' => "'''주의''': 로그인하고 있지 않습니다.
+당신의 IP 주소가 문서 역사에 남게 됩니다.",
 'anonpreviewwarning' => "'''당신은 지금 로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서 역사에 남게 됩니다.'''",
-'missingsummary' => "'''알림:''' 편집 요약을 적지 않았습니다. 그대로 저장하면 편집 요약 없이 저장됩니다.",
+'missingsummary' => "'''알림:''' 편집 요약을 적지 않았습니다.
+이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
 'missingcommenttext' => '아래에 내용을 채워 넣어 주세요.',
 'missingcommentheader' => "'''알림:''' 글의 제목을 입력하지 않았습니다.
-다시 {{int:savearticle}} 버튼을 클릭하면 글이 제목 없이 저장됩니다.",
+다시 \"{{int:savearticle}}\" 버튼을 클릭하면 글이 제목 없이 저장됩니다.",
 'summary-preview' => '편집 요약 미리 보기:',
 'subject-preview' => '주제/제목 미리 보기:',
 'blockedtitle' => '차단됨',
 'blockedtext' => "'''당신의 계정 혹은 IP 주소가 차단되었습니다.'''
 
-차단한 사람은 $1이고, 차단한 이유는 다음과 같습니다: $2
+차단한 사람은 $1입니다.
+차단한 이유는 다음과 같습니다: $2
 
 * 차단이 시작된 시간: $8
 * 차단이 끝나는 시간: $6
 * 차단된 사용자: $7
 
-$1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다. [[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.
+$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.
+[[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.
 지금 당신의 IP 주소는 $3이고, 차단 ID는 #$5입니다.
 문의할 때에 이 정보를 같이 알려주세요.",
 'autoblockedtext' => "당신의 IP 주소는 $1이 차단한 사용자가 사용했던 IP이기 때문에 자동으로 차단되었습니다. 차단된 이유는 다음과 같습니다:
@@ -940,7 +975,7 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 * 차단이 끝나는 시간: $6
 * 차단된 사용자: $7
 
-$1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.
+$1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대해 문의할 수 있습니다.
 
 [[Special:Preferences|계정 환경 설정]]에 올바른 이메일 주소가 있어야만 '이메일 보내기' 기능을 사용할 수 있습니다. 또한 이메일 보내기 기능이 차단되어 있으면 이메일을 보낼 수 없습니다.
 
@@ -948,59 +983,75 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 문의할 때에 이 정보를 같이 알려주세요.",
 'blockednoreason' => '이유를 입력하지 않음',
 'whitelistedittext' => '문서를 편집하려면 $1해야 합니다.',
-'confirmedittext' => '문서를 고치려면 이메일 인증 절차가 필요합니다. [[Special:Preferences|사용자 환경 설정]]에서 이메일 주소를 입력하고 이메일 주소 인증을 해 주시기 바랍니다.',
-'nosuchsectiontitle' => '칸을 찾을 수 없음',
-'nosuchsectiontext' => '존재하지 않는 칸을 편집하려 했습니다.
-이 문서를 보는 동안 칸이 이동되었거나 삭제되었을 수 있습니다.',
+'confirmedittext' => '문서를 고치려면 이메일 인증 절차가 필요합니다.
+[[Special:Preferences|사용자 환경 설정]]에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.',
+'nosuchsectiontitle' => '문단을 찾을 수 없음',
+'nosuchsectiontext' => '존재하지 않는 문단을 편집하려 했습니다.
+이 문서를 보는 동안 문단이 이동되었거나 삭제되었을 수 있습니다.',
 'loginreqtitle' => '로그인 필요',
 'loginreqlink' => '로그인',
 'loginreqpagetext' => '다른 문서를 보기 위해서는 $1해야 합니다.',
 'accmailtitle' => '비밀번호를 보냈습니다.',
 'accmailtext' => '[[User talk:$1|$1]] 사용자의 비밀번호가 임의로 만들어져 $2로 전송되었습니다.
 
\83\88 ë¹\84ë°\80ë²\88í\98¸ë\8a\94 ë¡\9cê·¸ì\9d¸í\95\9c í\9b\84 [[Special:ChangePassword|ë³\80ê²½]]í\95  수 있습니다.',
\83\88 ë¹\84ë°\80ë²\88í\98¸ë\8a\94 ë¡\9cê·¸ì\9d¸í\95\9c í\9b\84 [[Special:ChangePassword|ë¹\84ë°\80ë²\88í\98¸ë¥¼ ë°\94ê¿\80]] 수 있습니다.',
 'newarticle' => '(새 문서)',
-'newarticletext' => "이 문서는 아직 만들어지지 않았습니다. 새 문서를 만들려면 아래의 상자에 문서 내용을 입력하면 됩니다(자세한 내용은 [[{{MediaWiki:Helppage}}|도움말]]을 읽어 주세요).
-만약 잘못 찾아온 문서라면, 웹 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
+'newarticletext' => "이 문서는 아직 만들어지지 않았습니다.
+새 문서를 만들려면 아래의 상자에 문서 내용을 입력하면 됩니다(자세한 내용은 [[{{MediaWiki:Helppage}}|도움말]]을 읽어 주세요).
+만약 잘못 찾아온 문서라면 웹 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
 'anontalkpagetext' => '----
-여기는 계정을 만들지 않았거나 사용하고 있지 않은 비등록 사용자를 위한 토론 문서입니다. 비등록 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다. IP 주소는 여러 사용자가 공유할 수 있습니다. 자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 비등록 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인 하여]] 나중에 다른 비등록 사용자에게 줄 혼란을 줄일 수 있습니다.',
+여기는 계정을 만들지 않았거나 사용하고 있지 않은 익명 사용자를 위한 토론 문서입니다.
+익명 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다.
+IP 주소는 여러 사용자가 공유할 수 있습니다.
+자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인 하여]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.',
 'noarticletext' => '이 문서가 존재하지 않습니다.
-이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나, 문서를 직접 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>할 수 있습니다.',
-'noarticletext-nopermission' => '‘{{FULLPAGENAME}}’ 문서가 존재하지 않습니다.
-이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span>',
-'userpage-userdoesnotexist' => '‘<nowiki>$1</nowiki>’ 계정은 등록되어 있지 않습니다. 이 문서를 만들거나 편집하려면 계정이 존재 하는지 확인해주세요.',
+이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나,
+이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나,
+문서를 직접 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>할 수 있습니다.',
+'noarticletext-nopermission' => '이 문서가 존재하지 않습니다.
+이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나,
+이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span>',
+'userpage-userdoesnotexist' => '‘$1’ 계정은 등록되어 있지 않습니다.
+이 문서를 만들거나 편집하려면 계정이 존재 하는지 확인해주세요.',
 'userpage-userdoesnotexist-view' => '"$1" 사용자 계정은 등록되지 않았습니다.',
 'blocked-notice-logextract' => '이 사용자는 현재 차단되어 있습니다.
 해당 사용자의 최근 차단 기록을 참고하십시오:',
-'clearyourcache' => "'''참고:''' 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 갱신해야 합니다.
+'clearyourcache' => "'''참고:''' 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
 * '''파이어폭스 / 사파리''': ''Shift'' 키를 누르면서 새로 고침을 클릭하거나, ''Ctrl-F5'' 또는 ''Ctrl-R'' 을 입력 (Mac에서는 ''⌘-R'')
 * '''구글 크롬''': ''Ctrl-Shift-R''키를 입력 (Mac에서는 ''⌘-Shift-R'')
 * '''인터넷 익스플로러''': ''Ctrl'' 키를 누르면서 새로 고침을 클릭하거나, ''Ctrl-F5''를 입력.
 * '''컨커러''': ''새로고침''을 클릭하거나 ''F5''를 입력
-* '''오페라''': 도구→설정에서 캐시를 비움",
-'usercssyoucanpreview' => "'''안내''': CSS 문서를 저장하기 전에 ‘{{int:showpreview}}’ 기능을 통해 작동을 확인해주세요.",
-'userjsyoucanpreview' => "'''안내''': JS 문서를 저장하기 전에 ‘{{int:showpreview}}’ 기능을 통해 작동을 확인해주세요.",
-'usercsspreview' => "'''이것은 사용자 CSS의 미리 보기이며, 아직 저장하지 않았다는 것을 주의해 주세요!'''",
-'userjspreview' => "'''이것은 자바스크립트 미리 보기로, 아직 저장하지 않았다는 것을 주의해 주세요!'''",
+* '''오페라''': ''도구→설정''에서 캐시를 비움",
+'usercssyoucanpreview' => "'''안내''': CSS 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
+'userjsyoucanpreview' => "'''안내''': 자바스크립트 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
+'usercsspreview' => "'''이것은 사용자 CSS의 미리 보기입니다.'''
+'''아직 저장하지 않았다는 것을 기억해두세요!'''",
+'userjspreview' => "'''이것은 자바스크립트 미리 보기입니다'''
+'''아직 저장하지 않았다는 것을 기억해두세요!'''",
 'sitecsspreview' => "'''이것은 이 CSS의 미리 보기일 뿐입니다.'''
-'''아직 저장하지 않았다는 것을 주의해 주세요!'''",
+'''아직 저장하지 않았다는 것을 기억해두세요!'''",
 'sitejspreview' => "'''이것은 이 자바스크립트 코드의 미리 보기일 뿐입니다.'''
-'''아직 저장하지 않았다는 것을 주의해 주세요!'''",
-'userinvalidcssjstitle' => "'''경고''': ‘$1’ 스킨은 없습니다.
+'''아직 저장하지 않았다는 것을 기억해두세요!'''",
+'userinvalidcssjstitle' => "'''경고''': \"\$1\" 스킨은 없습니다.
 .css와 .js 문서의 제목은 {{ns:user}}:Foo/vector.css 처럼 소문자로 써야 합니다. {{ns:user}}:Foo/Vector.css 와 같이 대문자로 쓸 경우 작동하지 않습니다.",
 'updated' => '(바뀜)',
-'note' => "'''주의:'''",
-'previewnote' => "'''이 화면은 미리 보기입니다'''. 편집한 내용은 아직 저장되지 않았습니다!",
+'note' => "'''참고:'''",
+'previewnote' => "'''이 화면은 미리 보기입니다.'''
+편집한 내용은 아직 저장되지 않았습니다!",
 'continue-editing' => '계속 편집하기',
-'previewconflict' => '이 미리 보기는 저장할 때의 모습, 즉 위쪽 편집창의 문서를 반영합니다.',
-'session_fail_preview' => "'''세션 데이터가 없어져 편집을 저장하지 못했습니다.
-다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인해 보십시오.'''",
+'previewconflict' => '이 미리 보기는 저장할 때의 모습으로 위쪽 편집창의 문서를 반영합니다.',
+'session_fail_preview' => "'''세션 데이터가 없어져 편집을 저장하지 못했습니다.'''
+다시 시도하세요.
+다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요.",
 'session_fail_preview_html' => "'''세션 데이터가 없어져 편집을 저장하지 못했습니다.'''
 
 {{SITENAME}}에서 HTML 입력을 허용하기 때문에, 자바스크립트 공격을 막기 위해 미리 보기는 숨겨져 있습니다.
 
-'''다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인을 해 보십시오.'''",
-'token_suffix_mismatch' => "'''저장하려는 내용의 문장 부호가 망가져 있습니다. 문서 보호를 위해 해당 내용을 저장하지 않습니다. 버그가 있는 익명 프록시 서비스 등을 사용할 때 이런 문제가 발생할 수 있습니다.'''",
+'''적합하게 편집을 시도했다면 다시 시도하세요'''
+다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요.",
+'token_suffix_mismatch' => "'''저장하려는 내용의 문장 부호가 망가져 있습니다.'''
+문서 보호를 위해 해당 내용을 저장하지 않습니다.
+버그가 있는 익명 프록시 서비스 등을 사용할 때 이런 문제가 발생할 수 있습니다.",
 'edit_form_incomplete' => "'''편집의 일부 내용이 서버에 전달되지 않았습니다. 당신의 편집이 손상되지 않았는지 확인하고 다시 시도해 주십시오.'''",
 'editing' => '$1 편집하기',
 'creating' => '$1 만들기',
@@ -1013,39 +1064,42 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 \"{{int:savearticle}}\"을 누르면 '''위쪽의 편집 내역만''' 저장됩니다.",
 'yourtext' => '당신의 편집',
 'storedversion' => '현재 문서',
-'nonunicodebrowser' => "'''주의: 당신의 웹 브라우저가 유니코드를 완벽하게 지원하지 않습니다. 몇몇 문자가 16진수 코드로 나타날 수 있습니다.'''",
-'editingold' => "'''경고:
-지금 옛날 버전의 문서를 고치고 있습니다.
-이것을 저장하면 최근에 편집된 부분이 사라질 수 있습니다.'''",
+'nonunicodebrowser' => "'''주의: 당신의 웹 브라우저가 유니코드를 완벽하게 지원하지 않습니다.'''
+아스키가 아닌 문자가 16진수 코드로 나타날 수 있습니다.",
+'editingold' => "'''경고: 지금 이전 버전의 문서를 고치고 있습니다.'''
+이것을 저장하면 최근에 편집된 부분이 사라질 수 있습니다.",
 'yourdiff' => '차이',
-'copyrightwarning' => "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.<br />
+'copyrightwarning' => "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요).
+만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.<br />
 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
 '''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
-'copyrightwarning2' => "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />
+'copyrightwarning2' => "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.
+만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />
 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 내용에 대해서는 $1 문서를 읽어 주세요).
 '''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
 'longpageerror' => "'''오류: 문서의 크기가 {{PLURAL:$1|$1킬로바이트}}로 최대 크기인 {{PLURAL:$2|$2킬로바이트}}보다 큽니다.'''
 저장할 수 없습니다.",
-'readonlywarning' => "'''주의: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.
-편집 내용을 복사 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.'''
+'readonlywarning' => "'''주의: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.'''
+편집 내용을 복사 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.
 
 잠근 관리자가 남긴 설명은 다음과 같습니다: $1",
 'protectedpagewarning' => "'''경고: 이 문서는 관리자만 편집할 수 있도록 보호되어 있습니다.'''
 이 문서의 최근 기록을 참고하십시오:",
-'semiprotectedpagewarning' => "'''ì\95\88ë\82´:''' 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.
+'semiprotectedpagewarning' => "'''참고:''' 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.
 이 문서의 최근 기록을 참고하십시오:",
 'cascadeprotectedwarning' => "'''주의''': 이 문서는 잠겨 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
-'titleprotectedwarning' => "'''경고: 이 문서는 잠겨 있어, 문서를 생성하려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.'''
+'titleprotectedwarning' => "'''경고: 이 문서는 잠겨 있어, 문서를 만드려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.'''
 아래 문서의 최근 기록을 참고하십시오:",
 'templatesused' => '이 문서에서 사용한 {{PLURAL:$1|틀}}:',
 'templatesusedpreview' => '이 미리 보기에서 사용하고 있는 {{PLURAL:$1|틀}}:',
-'templatesusedsection' => '이 에서 사용하고 있는 {{PLURAL:$1|틀}}:',
+'templatesusedsection' => '이 문단에서 사용하고 있는 {{PLURAL:$1|틀}}:',
 'template-protected' => '(보호됨)',
 'template-semiprotected' => '(준보호됨)',
-'hiddencategories' => '이 문서는 다음 숨은 분류 $1 개에 속해 있습니다:',
+'hiddencategories' => '이 문서는 다음 숨은 분류 $1개에 속해 있습니다:',
 'edittools' => '<!-- 이 문서는 편집 창과 파일 올리기 창에 출력됩니다. -->',
-'nocreatetitle' => '문서 생성 제한',
-'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 생성하는 것은 제한되어 있습니다. 이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들 수 있습니다]].',
+'nocreatetitle' => '문서 만들기 제한',
+'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 만드는 것은 제한되어 있습니다.
+이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들 수 있습니다]].',
 'nocreate-loggedin' => '새 문서를 만들 권한이 없습니다.',
 'sectioneditnotsupported-title' => '부분 편집 지원 안됨',
 'sectioneditnotsupported-text' => '이 문서에서는 문단 편집을 지원하지 않습니다.',
@@ -1056,14 +1110,15 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 
 이 문서를 계속 편집하는 것이 적합한 것인지 확인해주세요.
 편의를 위해 삭제와 이동 기록을 다음과 같이 제공합니다:",
-'moveddeleted-notice' => '이 문서는 삭제되었습니다. 이 문서의 삭제/이동 기록은 다음과 같습니다.',
+'moveddeleted-notice' => '이 문서는 삭제되었습니다.
+이 문서의 삭제 및 이동 기록은 다음과 같습니다.',
 'log-fulllog' => '전체 기록 보기',
 'edit-hook-aborted' => '훅에 의해 편집이 중단되었습니다.
 아무런 설명도 주어지지 않았습니다.',
 'edit-gone-missing' => '문서를 저장하지 못했습니다.
 문서가 삭제된 것 같습니다.',
 'edit-conflict' => '편집 충돌.',
-'edit-no-change' => '문서에 아무런 변화가 없기 때문에, 당신의 편집은 무시되었습니다.',
+'edit-no-change' => '문서에 아무런 변화가 없기 때문에 당신의 편집은 무시되었습니다.',
 'edit-already-exists' => '새 문서를 만들 수 없습니다.
 그 문서는 이미 존재합니다.',
 'defaultmessagetext' => '기본 메세지 내용',
@@ -1073,8 +1128,8 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 
 $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'expensive-parserfunction-category' => '느린 파서 함수 호출을 너무 많이 하는 문서',
-'post-expand-template-inclusion-warning' => '경고: 틀 포함 크기가 너무 큽니다.
-일부 틀은 포함되지 않을 수 있습니다.',
+'post-expand-template-inclusion-warning' => "'''경고:''' 틀 포함 크기가 너무 큽니다.
+일부 틀은 포함되지 않을 수 있습니다.",
 'post-expand-template-inclusion-category' => '사용한 틀의 크기가 지나치게 큰 문서의 목록',
 'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개 후 크기가 너무 큰 틀 변수가 하나 이상 포함되어 있습니다.
 이 변수들은 생략되었습니다.",
@@ -1086,13 +1141,14 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'node-count-exceeded-warning' => '페이지가 노드 수를 초과하였습니다.',
 'expansion-depth-exceeded-category' => '페이지가 확장 깊이를 초과하였습니다.',
 'expansion-depth-exceeded-warning' => '페이지가 확장 깊이를 초과하였습니다',
-'parser-unstrip-loop-warning' => 'ì\8a¤í\8a¸ë¦½í\95\98ì§\80 ì\95\8aë\8a\94 ë°\98ë³µì\9d´ ê°\90ì§\80ë\90¨',
+'parser-unstrip-loop-warning' => 'ì\8a¤í\8a¸ë¦½í\95\98ì§\80 ì\95\8aë\8a\94 ë°\98ë³µì\9d´ ê°\90ì§\80ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤',
 'parser-unstrip-recursion-limit' => '스트립하지 않는 재귀 한도가 초과됨 ($1)',
 
 # "Undo" feature
-'undo-success' => '이 편집을 되돌리려면 아래의 변경되는 사항을 확인한 후 저장해주세요.',
+'undo-success' => '편집을 되돌릴 수 있습니다.
+편집 되돌리기를 완료하려면 이 편집을 되돌리려면 아래의 변경되는 사항을 확인한 후 저장해주세요.',
 'undo-failure' => '중간의 다른 편집과 충돌하여 이 편집을 되돌릴 수 없습니다.',
-'undo-norev' => '문서가 없거나 삭제되었기 때문에, 편집을 되돌릴 수 없습니다.',
+'undo-norev' => '문서가 없거나 삭제되었기 때문에 편집을 되돌릴 수 없습니다.',
 'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|토론]]) 의 $1판 편집을 되돌림',
 
 # Account creation failure
@@ -1107,7 +1163,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'currentrev' => '최신판',
 'currentrev-asof' => '$1 기준 최신판',
 'revisionasof' => '$1 판',
-'revision-info' => '$2 사용자의 $1 버전',
+'revision-info' => '$2 사용자의 $1 ',
 'previousrevision' => '← 이전 판',
 'nextrevision' => '다음 판 →',
 'currentrevisionlink' => '최신판',
@@ -1117,9 +1173,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'page_first' => '처음',
 'page_last' => '마지막',
 'histlegend' => "비교하려는 판을 선택한 다음 엔터나 아래의 버튼을 누르세요.<br />
-설명: '''({{int:cur}})''' = 최신 판과 비교,
-'''({{int:last}})''' = 이전 판과 비교, '''{{int:minoreditletter}}'''= 사소한 편집",
-'history-fieldset-title' => '문서의 변경 내력 찾기',
+설명: '''({{int:cur}})''' = 최신 판과 비교, '''({{int:last}})''' = 이전 판과 비교, '''{{int:minoreditletter}}'''= 사소한 편집",
+'history-fieldset-title' => '문서의 바뀐 내력 찾기',
 'history-show-deleted' => '삭제된 것만',
 'histfirst' => '초기',
 'histlast' => '최신',
@@ -1137,8 +1192,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 # Revision deletion
 'rev-deleted-comment' => '(편집 요약 삭제됨)',
 'rev-deleted-user' => '(계정 이름 삭제됨)',
-'rev-deleted-event' => '(로그 삭제됨)',
-'rev-deleted-user-contribs' => '[계정 이름/IP 주소 삭제됨 -  기여 목록에서 숨겨짐]',
+'rev-deleted-event' => '(기록 동작 삭제됨)',
+'rev-deleted-user-contribs' => '[계정 이름 또는 IP 주소 삭제됨 -  기여 목록에서 숨겨짐]',
 'rev-deleted-text-permission' => "해당 편집이 문서 역사에서 '''삭제'''되었습니다.
 자세한 사항은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 볼 수 있습니다.",
 'rev-deleted-text-unhide' => "해당 편집이 문서 역사에서 '''삭제'''되었습니다.
@@ -1148,24 +1203,24 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 자세한 사항은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 볼 수 있습니다.
 이 편집을 보기를 원하신다면 [$1 해당 편집]을 볼 수 있습니다.",
 'rev-deleted-text-view' => "이 문서의 편집은 역사에서 '''삭제'''되었습니다.
-삭제된 편집을 볼 수 있으며, [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
+삭제된 편집을 볼 수 있으며 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
 'rev-suppressed-text-view' => "이 문서의 편집은 역사에서 '''숨겨져''' 있습니다.
-숨겨진 편집을 볼 수 있으며, [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 자세한 내용을 볼 수 있습니다.",
+숨겨진 편집을 볼 수 있으며 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에서 자세한 내용을 볼 수 있습니다.",
 'rev-deleted-no-diff' => "특정 판이 문서 역사에서 '''삭제'''되었기 때문에 비교할 수 없습니다.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 자세한 내용을 볼 수 있습니다.",
 'rev-suppressed-no-diff' => "두 판 중 일부가 '''삭제'''되었기 때문에 문서 편집 내용을 비교할 수 없습니다.",
 'rev-deleted-unhide-diff' => "이 비교에 사용된 판 가운데 하나가 '''삭제'''되었습니다.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에 자세한 내용을 찾아볼 수 있습니다.
 계속 작업하고 싶다면 여전히 [$1 비교 보기]를 계속할 수 있습니다.",
-'rev-suppressed-unhide-diff' => "ì\9d´ ë¹\84êµ\90ì\97\90 ì\82¬ì\9a©ë\90\9c í\8c\90 ê°\80ì\9a´ë\8d° í\95\98ë\82\98ê°\80 '''ì\88¨ê¹\80'''ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.
+'rev-suppressed-unhide-diff' => "ì\9d´ ë¹\84êµ\90ì\97\90 ì\82¬ì\9a©ë\90\9c í\8c\90 ê°\80ì\9a´ë\8d° í\95\98ë\82\98ê°\80 '''ì\88¨ê²¨ì ¸''' ì\9e\88ì\8aµë\8b\88ë\8b¤.
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 숨김 기록]에 자세한 내용이 있을 수 있습니다.
 계속 작업하고 싶다면 [$1 해당 편집]을 볼 수도 있습니다.",
 'rev-deleted-diff-view' => "비교 대상 중 어느 한 판이 '''삭제'''되었습니다.
-삭제된 판과 다른 판의 비교를 할 수 있습니다; ì\9e\90ì\84¸í\95\9c ê²\83ì\9d\80 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ì\82­ì \9c ê¸°ë¡\9d\9d\84 ì°¸ê³ í\95\98ì\8b­ì\8b\9cì\98¤.",
+삭제된 판과 다른 판의 비교를 할 수 있습니다. ì\9e\90ì\84¸í\95\9c ë\82´ì\9a©ì\9d\80 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ì\82­ì \9c ê¸°ë¡\9d\97\90ì\84\9c ì°¾ì\95\84ë³¼ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.",
 'rev-suppressed-diff-view' => "비교하려는 판 중 일부가 '''숨겨져''' 있습니다.
-숨겨진 판과 이 판의 편집 비교가 가능합니다. 자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 해당 숨김 기록]에서 볼 수 있습니다.",
+숨겨진 판과 이 판의 편집 비교를 할 수 있습니다. 자세한 내용은 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 해당 숨김 기록]에서 찾아볼 수 있습니다.",
 'rev-delundel' => '보이기/숨기기',
-'rev-showdeleted' => '표시',
+'rev-showdeleted' => '보이기',
 'revisiondelete' => '판 삭제/복구',
 'revdelete-nooldid-title' => '대상 판이 잘못되었습니다.',
 'revdelete-nooldid-text' => '이 기능을 수행할 특정 판을 제시하지 않았거나 해당 판이 없습니다. 또는 현재 판을 숨기려 하고 있을 수도 있습니다.',
@@ -1176,18 +1231,19 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'revdelete-no-file' => '해당 파일이 존재하지 않습니다.',
 'revdelete-show-file-confirm' => '정말 "<nowiki>$1</nowiki>" 파일의 삭제된 $2 $3 버전을 보시겠습니까?',
 'revdelete-show-file-submit' => '예',
-'revdelete-selected' => "'''[[:$1]]의 {{PLURAL:$2|선택ë\90\9c í\8c\90}}:'''",
-'logdelete-selected' => "{{PLURAL:$1}}'''선택한 로그:'''",
+'revdelete-selected' => "'''[[:$1]]의 {{PLURAL:$2|선택í\95\9c í\8c\90}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|선택한 기록}}:'''",
 'revdelete-text' => "'''삭제된 판과 기록은 문서 역사와 기록에 계속 나타나지만, 내용은 공개되지 않을 것입니다.'''
 {{SITENAME}}의 다른 관리자는 다른 제한이 설정되어 있지 않는 한, 숨겨진 내용을 볼 수 있고, 같은 도구를 이용해 복구할 수 있습니다.",
 'revdelete-confirm' => '이 작업을 수행하는 것의 결과를 알고 있으며, [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지 확인해주세요.',
 'revdelete-suppress-text' => "숨기기는 '''다음 경우에만''' 사용되어야 합니다:
+* 잠재적인 비방 정보
 * 부적절한 개인 정보
 *: 집 주소, 전화번호, 주민등록번호 등",
 'revdelete-legend' => '보이기 제한을 설정',
 'revdelete-hide-text' => '판의 내용을 숨기기',
 'revdelete-hide-image' => '파일을 숨기기',
-'revdelete-hide-name' => '로그 내용과 대상을 숨기기',
+'revdelete-hide-name' => '기록 내용과 대상을 숨기기',
 'revdelete-hide-comment' => '편집 요약을 숨기기',
 'revdelete-hide-user' => '편집자의 계정 이름/IP를 숨기기',
 'revdelete-hide-restricted' => '관리자도 보지 못하게 숨기기',
@@ -1198,13 +1254,13 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'revdelete-unsuppress' => '복구된 판에 대한 제한을 해제',
 'revdelete-log' => '이유:',
 'revdelete-submit' => '선택한 {{PLURAL:$1|판}}에 적용',
-'revdelete-success' => "'''í\8c\90ì\9d\98 ë³´ì\9d´ê¸° ì\84¤ì \95ì\9d´ ì\84±ê³µì \81ì\9c¼ë¡\9c ë³\80ê²½ë\90\98었습니다.'''",
+'revdelete-success' => "'''í\8c\90ì\9d\98 ë³´ì\9d´ê¸° ì\84¤ì \95ì\9d\84 ì\84±ê³µì \81ì\9c¼ë¡\9c ë°\94꾸었습니다.'''",
 'revdelete-failure' => "'''특정 판 보기 설정을 바꾸지 못했습니다:'''
 $1",
-'logdelete-success' => "'''로그의 보이기 설정이 성공적으로 변경되었습니다.'''",
-'logdelete-failure' => "'''로그 보이기 설정을 바꾸지 못했습니다:'''
+'logdelete-success' => "'''기록 보이기 설정을 성공적으로 바꾸었습니다.'''",
+'logdelete-failure' => "'''기록 보이기 설정을 바꾸지 못했습니다:'''
 $1",
-'revdel-restore' => 'ë³´ì\9d´ê¸° ì\84¤ì \95 ë³\80ê²½',
+'revdel-restore' => 'ë³´ì\9d´ê¸° ì\84¤ì \95 ë°\94꾸기',
 'revdel-restore-deleted' => '삭제된 판',
 'revdel-restore-visible' => '공개된 판',
 'pagehist' => '문서 역사',
@@ -1217,12 +1273,13 @@ $1",
 여기에 접근할 수 없습니다.',
 'revdelete-modify-missing' => '판 ID $1을 수정하는 중 오류 발생: 데이터베이스에 존재하지 않습니다!',
 'revdelete-no-change' => "'''경고:''' $1 $2에 해당하는 항목은 이미 같은 보이기 설정이 설정되어 있습니다.",
-'revdelete-concurrent-change' => '$1 $2에 수정된 항목을 ê°±ì\8b í\95\98ë©´ì\84\9c ì\98¤ë¥\98 ë°\9cì\83\9d: ì\9d´ë\9f° í\98\84ì\83\81ì\9d\80 ë\8b¹ì\8b ì\9d´ ë¬¸ì\84\9c를 í\8e¸ì§\91í\95\98ê³  ì\9e\88ì\9d\84 ë\95\8c ë\8b¤ë¥¸ ì\82¬ë\9e\8cì\9d´ ë¬¸ì\84\9c를 í\8e¸ì§\91í\96\88기 ë\95\8c문ì\97\90 ë°\9cì\83\9dí\95©ë\8b\88ë\8b¤.
-관련 로그를 확인해 보세요.',
+'revdelete-concurrent-change' => '$1 $2에 수정된 항목을 ì\83\88ë¡\9c ê³ ì¹\98ë©´ì\84\9c ì\98¤ë¥\98 ë°\9cì\83\9d: ì\9d´ë\9f° í\98\84ì\83\81ì\9d\80 ë\8b¹ì\8b ì\9d´ ë¬¸ì\84\9c를 í\8e¸ì§\91í\95\98ê³  ì\9e\88ì\9d\84 ë\95\8c ë\8b¤ë¥¸ ì\82¬ë\9e\8cì\9d´ ë¬¸ì\84\9c를 í\8e¸ì§\91í\96\88기 ë\95\8c문ì\97\90 ë°\9cì\83\9dí\95©ë\8b\88ë\8b¤.
+관련 기록을 확인해 보세요.',
 'revdelete-only-restricted' => '$1 $2 버전 숨기기 오류: 다른 숨기기 설정을 같이 설정하지 않고 관리자가 보지 못하도록 특정 판을 숨길 수 없습니다.',
 'revdelete-reason-dropdown' => '*일반적인 삭제 이유
 ** 저작권 침해
-** 부적절한 개인 정보',
+** 부적절한 개인 정보
+** 잠재적인 비방 정보',
 'revdelete-otherreason' => '다른 이유/부가적인 이유',
 'revdelete-reasonotherlist' => '다른 이유',
 'revdelete-edit-reasonlist' => '삭제 이유 편집',
@@ -1230,8 +1287,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => '숨기기 기록',
-'suppressionlogtext' => '다음은 관리자로부터 숨겨진 내용에 관한 삭제, 차단 기록입니다.
-현재 차단된 사용자 목록을 보시려면 [[Special:BlockList|차단된 사용자 목록]]을 참조하십시오.',
+'suppressionlogtext' => '다음은 관리자로부터 숨겨진 내용에 관한 삭제 차단 기록입니다.
+현재 차단된 사용자 목록을 보려면 [[Special:BlockList|차단된 사용자 목록]]을 참고하세요.',
 
 # History merging
 'mergehistory' => '문서 역사 합치기',
@@ -1247,7 +1304,7 @@ $1",
 'mergehistory-go' => '합칠 수 있는 편집 보기',
 'mergehistory-submit' => '문서 역사 합치기',
 'mergehistory-empty' => '합칠 수 있는 판이 없습니다.',
-'mergehistory-success' => '[[:$1]] 문서의 $3개의 판이 [[:$2]]에 성공적으로 합쳐졌습니다.',
+'mergehistory-success' => '[[:$1]] 문서의 판 $3개가 [[:$2]]에 성공적으로 합쳐졌습니다.',
 'mergehistory-fail' => '문서 역사 합치기 명령을 수행할 수 없습니다. 문서와 시간 변수를 다시 확인하십시오.',
 'mergehistory-no-source' => '원본인 $1 문서가 존재하지 않습니다.',
 'mergehistory-no-destination' => '대상인 $1 문서가 존재하지 않습니다.',
@@ -1259,7 +1316,7 @@ $1",
 'mergehistory-reason' => '이유:',
 
 # Merge log
-'mergelog' => '합병 기록',
+'mergelog' => '병합 기록',
 'pagemerge-logentry' => '[[$1]]을 [[$2]]에 병합 ($3판이 위로 옮겨짐)',
 'revertmerge' => '병합 해제',
 'mergelogpagetext' => '다음은 한 문서의 역사를 다른 문서의 역사와 합친 최근 기록입니다.',
@@ -1267,21 +1324,21 @@ $1",
 # Diffs
 'history-title' => '"$1"  문서의 변경 내력',
 'difference-title' => '"$1"의 두 판 사이의 차이',
-'difference-title-multipage' => '문서 "$1"과 "$2" 간의 차이',
-'difference-multipage' => '(문서의 차이)',
+'difference-title-multipage' => '문서 "$1"(와)과 "$2" 사이의 차이',
+'difference-multipage' => '(문서 사이의 차이)',
 'lineno' => '$1번째 줄:',
-'compareselectedversions' => '선택된 판들을 비교하기',
+'compareselectedversions' => '선택한 판을 비교하기',
 'showhideselectedversions' => '선택한 판을 보이기/숨기기',
 'editundo' => '편집 취소',
 'diff-multi' => '({{PLURAL:$2|한 사용자의|사용자 $2명의}} 중간의 편집 $1개 숨겨짐)',
 'diff-multi-manyusers' => '({{PLURAL:$2|한 사용자의|사용자 $2명 이상의}} 중간의 편집 $1개 숨겨짐)',
 
 # Search results
-'searchresults' => '검색 결과',
-'searchresults-title' => '"$1"에 대한 검색 결과',
+'searchresults' => '찾기 결과',
+'searchresults-title' => '"$1"에 대한 찾기 결과',
 'searchresulttext' => '{{SITENAME}}의 찾기 기능에 대한 자세한 정보는 [[{{MediaWiki:Helppage}}|{{int:help}}]] 문서를 참고해주세요.',
-'searchsubtitle' => "'''[[:$1]]''' 문서를 검색하고 있습니다. ([[Special:Prefixindex/$1|이름이 ‘$1’ 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|‘$1’ 문서를 가리키는 문서 목록]])",
-'searchsubtitleinvalid' => "검색 단어 '''$1'''",
+'searchsubtitle' => "'''[[:$1]]''' 문서를 고 있습니다. ([[Special:Prefixindex/$1|이름이 ‘$1’ 접두어로 시작하는 문서 목록]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|‘$1’ 문서를 가리키는 문서 목록]])",
+'searchsubtitleinvalid' => "찾은 단어 '''$1'''",
 'toomanymatches' => '일치하는 결과가 너무 많습니다. 다른 검색어를 입력해주세요.',
 'titlematches' => '문서 제목 일치',
 'notitlematches' => '해당하는 제목 없음',
@@ -1291,29 +1348,29 @@ $1",
 'nextn' => '뒤로 $1개',
 'prevn-title' => '이전 결과 $1개',
 'nextn-title' => '다음 결과 $1개',
-'shown-title' => '쪽마다 결과 $1 개씩 보이기',
+'shown-title' => '쪽마다 결과 $1개씩 보이기',
 'viewprevnext' => '보기: ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => '검색 설정',
+'searchmenu-legend' => '찾기 설정',
 'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
-'searchmenu-new' => "'''ì\9d´ ì\9c\84í\82¤ì\97\90 \"[[:\$1]]\" ë¬¸ì\84\9c를 ë§\8cë\93\9cì\8b­ì\8b\9cì\98¤!'''",
+'searchmenu-new' => "'''ì\9d´ ì\9c\84í\82¤ì\97\90 \"[[:\$1]]\" ë¬¸ì\84\9c를 ë§\8cë\93\9cì\84¸ì\9a\94!'''",
 'searchhelp-url' => 'Help:목차',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾기]]',
 'searchprofile-articles' => '일반 문서',
 'searchprofile-project' => '도움말 및 프로젝트 문서',
 'searchprofile-images' => '멀티미디어',
-'searchprofile-everything' => '모든 문서 검색',
-'searchprofile-advanced' => '고급 검색',
+'searchprofile-everything' => '모든 문서 찾기',
+'searchprofile-advanced' => '고급 찾기',
 'searchprofile-articles-tooltip' => '$1에서 찾기',
 'searchprofile-project-tooltip' => '$1에서 찾기',
 'searchprofile-images-tooltip' => '파일 찾기',
 'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 찾기',
-'searchprofile-advanced-tooltip' => '다음 설정ë\90\9c ì\9d´ë¦\84ê³µê°\84ì\97\90ì\84\9c ì°¾ê¸°',
+'searchprofile-advanced-tooltip' => '다음 설정í\95\9c ì\9d´ë¦\84ê³µê°\84ì\97\90ì\84\9c ì°¾ê¸°',
 'search-result-size' => '$1 ($2 단어)',
 'search-result-category-size' => '문서 {{PLURAL:$1|1|$1}}개, 하위 분류 {{PLURAL:$2|1|$2}}개, 파일 {{PLURAL:$3|1|$3}}',
 'search-result-score' => '유사도: $1%',
 'search-redirect' => '($1에서 넘어옴)',
 'search-section' => '($1 문단)',
-'search-suggest' => '$1 문서를 찾고 계신가요?',
+'search-suggest' => '$1 문서를 찾고 있나요?',
 'search-interwiki-caption' => '자매 프로젝트',
 'search-interwiki-default' => '$1 결과:',
 'search-interwiki-more' => '(더 보기)',
@@ -1326,19 +1383,21 @@ $1",
 'searchall' => '모두',
 'showingresults' => '<strong>$2</strong>번 부터의 <strong>결과 $1개</strong>입니다.',
 'showingresultsnum' => "'''$2'''번 부터의 '''결과 $3개''' 입니다.",
-'showingresultsheader' => "'''$4''' 검색어에 대하여 '''$3'''개의 결과 중 {{PLURAL:$5|'''$1'''개|'''$1 - $2'''번째}}를 보여 주고 있습니다.",
-'nonefound' => "'''참고''': 몇개의 이름공간만 기본 검색 범위입니다. 토론이나 틀 등의 모든 자료를 검색하기 위해서는 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
-'search-nonefound' => '검색 결과가 없습니다.',
-'powersearch' => '찾기',
-'powersearch-legend' => '고급 검색',
+'showingresultsheader' => "'''$4''' 검색어에 대하여 결과 '''$3'''개 중 {{PLURAL:$5|'''$1'''개|'''$1 - $2'''번째}}를 보여 주고 있습니다.",
+'nonefound' => "'''참고''': 몇개의 이름공간만 기본 찾을 범위입니다. 토론이나 틀 등의 모든 자료를 찾하기 위해서는 접두어로 '''all:''' 어떤 이름공간을 위해서는 접두어로 그 이름공간을 쓸 수 있습니다.",
+'search-nonefound' => '찾은 결과가 없습니다.',
+'powersearch' => '고급 찾기',
+'powersearch-legend' => '고급 찾기',
 'powersearch-ns' => '다음의 이름공간에서 찾기:',
 'powersearch-redir' => '넘겨주기 목록',
-'powersearch-field' => '검색',
+'powersearch-field' => '찾기',
 'powersearch-togglelabel' => '확인:',
 'powersearch-toggleall' => '모두 선택',
 'powersearch-togglenone' => '모두 선택하지 않음',
-'search-external' => '외부 검색',
-'searchdisabled' => '{{SITENAME}} 검색 기능이 비활성화되어 있습니다. 기능이 작동하지 않는 동안에는 구글(Google)을 이용해 검색할 수 있습니다. 검색 엔진의 내용은 최근 것이 아닐 수 있다는 점을 주의해주세요.',
+'search-external' => '외부 찾기',
+'searchdisabled' => '{{SITENAME}} 찾기 기능이 비활성화되어 있습니다.
+기능이 작동하지 않는 동안에는 구글(Google)을 이용해 찾을 수 있습니다.
+검색 엔진의 내용은 최신이 아닐 수 있다는 점을 주의해주세요.',
 
 # Quickbar
 'qbsettings' => '빨리가기 맞춤',
@@ -1370,7 +1429,7 @@ $1",
 'prefs-watchlist-days-max' => '최대 $1{{PLURAL:$1|일}}',
 'prefs-watchlist-edits' => '주시문서 목록에서 볼 편집 수:',
 'prefs-watchlist-edits-max' => '최대 개수: 1000',
-'prefs-watchlist-token' => '주시문서 토큰:',
+'prefs-watchlist-token' => '주시문서 목록 토큰:',
 'prefs-misc' => '기타',
 'prefs-resetpass' => '비밀번호 바꾸기',
 'prefs-changeemail' => '이메일 주소 바꾸기',
@@ -1380,7 +1439,7 @@ $1",
 'saveprefs' => '저장',
 'resetprefs' => '저장하지 않은 설정 되돌리기',
 'restoreprefs' => '모두 기본 설정으로 되돌리기',
-'prefs-editing' => '편집상자',
+'prefs-editing' => '편집 상자',
 'prefs-edit-boxsize' => '편집 창의 크기',
 'rows' => '줄 수:',
 'columns' => '열 수:',
@@ -1389,10 +1448,10 @@ $1",
 'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 표시할 문서 크기 (바이트 수):',
 'stub-threshold-disabled' => '비활성화됨',
 'recentchangesdays' => '최근 바뀜에 표시할 날짜 수:',
-'recentchangesdays-max' => '(최대 $1일)',
+'recentchangesdays-max' => '최대 $1일',
 'recentchangescount' => '기본으로 표시할 편집 수:',
 'prefs-help-recentchangescount' => '이 설정은 최근 바뀜, 문서 역사와 기록에 적용됩니다.',
-'prefs-help-watchlist-token' => '아래에 비밀 값을 넣으면 주시문서에 대한 RSS 피드가 생성됩니다.
+'prefs-help-watchlist-token' => '아래에 비밀 값을 넣으면 주시문서 목록에 대한 RSS 피드가 생성됩니다.
 비밀 값을 알고 있는 사람이라면 누구나 피드를 읽을 수 있으므로 안전한 값을 입력해주세요.
 임의로 만들어진 다음 값을 사용할 수도 있습니다: $1',
 'savedprefs' => '설정을 저장했습니다.',
@@ -1414,15 +1473,15 @@ $1",
 'timezoneregion-indian' => '인도양',
 'timezoneregion-pacific' => '태평양',
 'allowemail' => '다른 사용자가 보낸 이메일을 받음',
-'prefs-searchoptions' => '검색 설정',
+'prefs-searchoptions' => '찾기 설정',
 'prefs-namespaces' => '이름공간',
-'defaultns' => '다음 이름공간에서 검색하기:',
+'defaultns' => '다음 이름공간에서 기:',
 'default' => '기본값',
 'prefs-files' => '파일',
 'prefs-custom-css' => '사용자 CSS',
 'prefs-custom-js' => '사용자 자바스크립트',
 'prefs-common-css-js' => '모든 스킨에 적용되는 공통 CSS/자바스크립트:',
-'prefs-reset-intro' => '이 사이트의 기본 값으로 환경 설정을 되돌릴 수 있습니다.
+'prefs-reset-intro' => '이 사이트의 기본값으로 환경 설정을 되돌릴 수 있습니다.
 복구할 수 없습니다.',
 'prefs-emailconfirm-label' => '이메일 인증:',
 'prefs-textboxsize' => '편집창의 크기',
@@ -1437,17 +1496,20 @@ $1",
 'prefs-help-variant' => '위키 내용을 표시할 때 사용할 언어 변종이나 철자 체계를 선택해주세요.',
 'yournick' => '새 서명:',
 'prefs-help-signature' => '토론 문서에 글을 쓴 후에는 마지막에 서명을 해야 합니다.  “<nowiki>~~~~</nowiki>” 기호를 추가하면 서명과 글 작성 시각이 자동으로 입력됩니다.',
-'badsig' => '서명이 잘못되었습니다. HTML 태그를 확인해주세요.',
+'badsig' => '서명이 잘못되었습니다.
+HTML 태그를 확인하세요.',
 'badsiglength' => '서명이 너무 깁니다.
 서명은 $1자보다 짧아야 합니다.',
 'yourgender' => '성별:',
 'gender-unknown' => '무응답',
 'gender-male' => '남성',
 'gender-female' => '여성',
-'prefs-help-gender' => '선택 사항: 소프트웨어에서 성별에 따른 언어 문제를 해결하기 위해 사용됩니다. 이 정보는 공개됩니다.',
+'prefs-help-gender' => '선택 사항: 소프트웨어에서 성별에 따른 언어 문제를 해결하기 위해 사용됩니다.
+이 정보는 공개됩니다.',
 'email' => '이메일',
-'prefs-help-realname' => '실명 기입은 자유입니다. 실명을 입력할 경우 문서 기여에 자신의 이름이 들어가게 됩니다.',
-'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호 변경을 위해 필요합니다.',
+'prefs-help-realname' => '실명 기입은 자유입니다.
+실명을 입력할 경우 문서 기여에 자신의 이름이 들어가게 됩니다.',
+'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호 바꾸기를 위해 필요합니다.',
 'prefs-help-email-others' => '당신은 자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.
 이 경우에도 당신의 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.',
 'prefs-help-email-required' => '이메일 주소가 필요합니다.',
@@ -1462,13 +1524,13 @@ $1",
 'prefs-advancedsearchoptions' => '고급 설정',
 'prefs-advancedwatchlist' => '고급 설정',
 'prefs-displayrc' => '보이기 설정',
-'prefs-displaysearchoptions' => '표시 설정',
+'prefs-displaysearchoptions' => '보이기 설정',
 'prefs-displaywatchlist' => '표시 설정',
 'prefs-diffs' => '차이',
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => '이메일 주소가 유효한 것으로 보입니다.',
-'email-address-validity-invalid' => 'ì\9c í\9a¨í\95\9c ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\9e\85ë ¥í\95´ì£¼ì\8b­ì\8b\9cì\98¤.',
+'email-address-validity-invalid' => 'ì\9c í\9a¨í\95\9c ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\9e\85ë ¥í\95´ì£¼ì\84¸ì\9a\94.',
 
 # User rights
 'userrights' => '사용자 권한 관리',
@@ -1519,17 +1581,17 @@ $1",
 # Rights
 'right-read' => '문서 읽기',
 'right-edit' => '문서 편집',
-'right-createpage' => '문서 생성 (토론 문서 제외)',
-'right-createtalk' => '토론 문서 생성',
+'right-createpage' => '문서 만들기 (토론 문서 제외)',
+'right-createtalk' => '토론 문서 만들기',
 'right-createaccount' => '새 계정 만들기',
 'right-minoredit' => '사소한 편집 사용 가능',
 'right-move' => '문서 이동',
 'right-move-subpages' => '문서와 하위 문서 이동하기',
 'right-move-rootuserpages' => '최상위 사용자 문서 이동',
-'right-movefile' => '파일 옮기기',
-'right-suppressredirect' => '문ì\84\9c ì\9d´ë\8f\99í\95  ë\95\8c ì\98\9bë\82  이름으로 된 넘겨주기를 남기지 않기',
+'right-movefile' => '파일 옮기기',
+'right-suppressredirect' => '문ì\84\9c ì\9d´ë\8f\99í\95  ë\95\8c ì\9d´ì \84 이름으로 된 넘겨주기를 남기지 않기',
 'right-upload' => '파일 올리기',
-'right-reupload' => 'ì\9d´ë¯¸ ì¡´ì\9e¬í\95\98ë\8a\94 í\8c\8cì\9d¼ì\9d\84 ë\8b¤ì\8b\9c ì\97\85ë¡\9cë\93\9c',
+'right-reupload' => 'ì\9d´ë¯¸ ì¡´ì\9e¬í\95\98ë\8a\94 í\8c\8cì\9d¼ì\9d\84 ë\8b¤ì\8b\9c ì\98¬ë¦¬ê¸°',
 'right-reupload-own' => '자신이 이미 올린 파일 덮어쓰기',
 'right-reupload-shared' => '공용의 파일을 무시하고 로컬에서 파일 올리기',
 'right-upload_by_url' => 'URL 주소에서 파일 올리기',
@@ -1544,7 +1606,7 @@ $1",
 'right-deleterevision' => '문서의 특정 판을 삭제 및 복구',
 'right-deletedhistory' => '삭제된 문서의 내용을 제외한 역사를 보기',
 'right-deletedtext' => '삭제된 문서의 내용과 편집상의 차이를 보기',
-'right-browsearchive' => '삭제된 문서 검색',
+'right-browsearchive' => '삭제된 문서 찾기',
 'right-undelete' => '삭제된 문서 복구',
 'right-suppressrevision' => '관리자도 보지 못하도록 숨겨진 판의 확인 및 복구',
 'right-suppressionlog' => '숨겨진 기록을 보기',
@@ -1557,18 +1619,18 @@ $1",
 'right-protect' => '보호 수준 변경 및 보호된 문서 편집',
 'right-editprotected' => '보호된 문서 편집 (연쇄적 보호 제외)',
 'right-editinterface' => '사용자 인터페이스를 편집',
-'right-editusercssjs' => '다른 사용자의 CSS와 JS 문서를 편집',
+'right-editusercssjs' => '다른 사용자의 CSS와 자바스크립트 문서를 편집',
 'right-editusercss' => '다른 사용자의 CSS 문서를 편집',
-'right-edituserjs' => '다른 사용자의 JS 문서를 편집',
+'right-edituserjs' => '다른 사용자의 자바스크립트 문서를 편집',
 'right-rollback' => '특정 문서를 편집한 마지막 사용자의 편집을 신속하게 되돌리기',
 'right-markbotedits' => '되돌리기를 봇의 편집으로 취급 가능',
 'right-noratelimit' => '편집이나 다른 행동 속도의 제한을 받지 않음',
 'right-import' => '다른 위키에서 문서 가져오기',
-'right-importupload' => 'í\8c\8cì\9d¼ ì\97\85ë¡\9cë\93\9c를 통해 문서 가져오기',
+'right-importupload' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°를 통해 문서 가져오기',
 'right-patrol' => '다른 사용자의 편집을 검토',
 'right-autopatrol' => '자신의 편집을 자동으로 검토',
 'right-patrolmarks' => '최근 바뀜에서 검토 표시를 보기',
-'right-unwatchedpages' => '주시되지 않 문서 목록 보기',
+'right-unwatchedpages' => '주시되지 않 문서 목록 보기',
 'right-mergehistory' => '문서의 역사를 합침',
 'right-userrights' => '모든 사용자의 권한 조정',
 'right-userrights-interwiki' => '다른 위키의 사용자 권한을 조정',
@@ -1580,15 +1642,15 @@ $1",
 # User rights log
 'rightslog' => '사용자 권한 기록',
 'rightslogtext' => '사용자 권한 조정 기록입니다.',
-'rightslogentry' => '$1ì\9d\98 ê¶\8cí\95\9cì\9d\84 $2ì\97\90ì\84\9c $3(ì\9c¼)ë¡\9c ë³\80ê²½',
-'rightslogentry-autopromote' => 'ì\82¬ì\9a©ì\9e\90ì\9d\98 ê¶\8cí\95\9cì\9d´ ì\9e\90ë\8f\99ì \81ì\9c¼ë¡\9c $2ì\97\90ì\84\9c $3ì\9c¼ë¡\9c ë³\80ê²½ë\90\98었습니다.',
+'rightslogentry' => '$1ì\9d\98 ê¶\8cí\95\9cì\9d\84 $2ì\97\90ì\84\9c $3(ì\9c¼)ë¡\9c ë°\94ê¿\88',
+'rightslogentry-autopromote' => 'ì\82¬ì\9a©ì\9e\90ì\9d\98 ê¶\8cí\95\9cì\9d´ ì\9e\90ë\8f\99ì \81ì\9c¼ë¡\9c $2ì\97\90ì\84\9c $3ì\9c¼ë¡\9c ë°\94ë\80\8c었습니다.',
 'rightsnone' => '(없음)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '이 문서를 읽기',
 'action-edit' => '문서 편집',
-'action-createpage' => '문서 생성',
-'action-createtalk' => '토론 문서 생성하기',
+'action-createpage' => '문서 만들기',
+'action-createtalk' => '토론 문서 만들기',
 'action-createaccount' => '새 계정 만들기',
 'action-minoredit' => '이 편집을 사소한 편집으로 표시하기',
 'action-move' => '이 문서 옮기기',
@@ -1614,7 +1676,7 @@ $1",
 'action-importupload' => '파일 올리기를 통해 문서를 가져올',
 'action-patrol' => '다른 사용자의 편집을 검토된 것으로 표시하기',
 'action-autopatrol' => '자신의 편집을 검토된 것으로 표시할',
-'action-unwatchedpages' => '주시되지 않 문서 목록 보기',
+'action-unwatchedpages' => '주시되지 않 문서 목록 보기',
 'action-mergehistory' => '이 문서의 역사 합치기',
 'action-userrights' => '모든 사용자의 권한을 조정',
 'action-userrights-interwiki' => '다른 위키의 사용자 권한을 조정',
@@ -1630,9 +1692,9 @@ $1",
 'recentchanges-label-newpage' => '새로운 문서',
 'recentchanges-label-minor' => '사소한 편집',
 'recentchanges-label-bot' => '봇의 편집',
-'recentchanges-label-unpatrolled' => '아직 검토ë\90\98ì§\80 ì\95\8aì\9d\80 í\8e¸ì§\91',
-'rcnote' => "다음은 $4 $5 까지의 '''$2'''일동안 바뀐 '''$1'''ê°\9cì\9d\98 ë¬¸ì\84\9cì\9e\85ë\8b\88ë\8b¤.",
-'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 '''$1'''ê°\9cì\9d\98 ë¬¸ì\84\9cì\9e\85ë\8b\88ë\8b¤.",
+'recentchanges-label-unpatrolled' => '아직 검토í\95\98ì§\80 ì\95\8aì\9d\80 í\8e¸ì§\91',
+'rcnote' => "다음은 $4 $5 까지의 '''$2'''일동안 바뀐 ë¬¸ì\84\9c '''$1'''ê°\9cì\9e\85ë\8b\88ë\8b¤.",
+'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 ë¬¸ì\84\9c '''$1'''ê°\9cì\9e\85ë\8b\88ë\8b¤.",
 'rclistfrom' => '$1 이래로 바뀐 문서',
 'rcshowhideminor' => '사소한 편집을 $1',
 'rcshowhidebots' => '봇을 $1',
@@ -1640,7 +1702,7 @@ $1",
 'rcshowhideanons' => '익명 사용자를 $1',
 'rcshowhidepatr' => '검토된 편집을 $1',
 'rcshowhidemine' => '내 편집을 $1',
-'rclinks' => 'ìµ\9cê·¼ $2ì\9d¼ê°\84ì\9d\98 $1ê°\9c ë³\80ê²½ 기록 보기<br />$3',
+'rclinks' => 'ìµ\9cê·¼ $2ì\9d¼ê°\84ì\9d\98 $1ê°\9c ë°\94ë\80\9c 기록 보기<br />$3',
 'diff' => '비교',
 'hist' => '역사',
 'hide' => '숨기기',
@@ -1649,19 +1711,19 @@ $1",
 'newpageletter' => '새글',
 'boteditletter' => '봇',
 'number_of_watching_users_pageview' => '[$1명이 주시하고 있음]',
-'rc_categories' => '다음 분류로 제한 (‘|’로 구분)',
+'rc_categories' => '다음 분류로 제한 ("|"로 구분)',
 'rc_categories_any' => '모두',
-'rc-change-size-new' => 'ë³\80ê²½ 후 $1 {{PLURAL:$1|바이트}}',
+'rc-change-size-new' => 'ë°\94ê¾¼ 후 $1 {{PLURAL:$1|바이트}}',
 'newsectionsummary' => '새 주제: /* $1 */',
-'rc-enhanced-expand' => 'ì\84¸ë¶\80 기록 보기 (자바스크립트 필요)',
-'rc-enhanced-hide' => 'ì\84¸ë¶\80기록 숨기기',
+'rc-enhanced-expand' => 'ì\9e\90ì\84¸í\95\9c 기록 보기 (자바스크립트 필요)',
+'rc-enhanced-hide' => 'ì\9e\90ì\84¸í\95\9c 기록 숨기기',
 'rc-old-title' => '처음에  "$1"라는 제목으로 만들어짐',
 
 # Recent changes linked
 'recentchangeslinked' => '가리키는 글의 바뀜',
 'recentchangeslinked-feed' => '가리키는 글의 바뀜',
 'recentchangeslinked-toolbox' => '가리키는 글의 바뀜',
-'recentchangeslinked-title' => '‘$1’ 문서에 관련된 문서 바뀜',
+'recentchangeslinked-title' => '"$1" 문서에 관련된 문서 바뀜',
 'recentchangeslinked-noresult' => '이 문서에서 링크하는 문서 중, 해당 기간에 바뀐 문서가 없습니다.',
 'recentchangeslinked-summary' => "여기를 가리키는 문서(분류일 경우 이 분류에 포함된 문서)에 대한 최근 바뀜이 나와 있습니다.
 [[Special:Watchlist|주시하는 문서]]는 '''굵은''' 글씨로 나타납니다.",
@@ -1682,7 +1744,7 @@ $1",
 
 이 문서의 최근 삭제 기록과 이동 기록을 참고하십시오:",
 'uploadtext' => "파일을 올리기 위해서는 아래의 양식을 채워주세요.
-[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 찾을 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 로그]]에서 볼 수 있습니다.
+[[Special:FileList|파일 목록]]에서 이전에 올라온 파일을 찾을 수 있습니다. [[Special:Log/upload|올리기 기록]]에는 파일이 올라온 기록이 남습니다. 삭제 기록은 [[Special:Log/delete|삭제 기록]]에서 볼 수 있습니다.
 
 문서에 파일을 넣으려면 아래 방법 중 하나를 사용하세요.
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' 파일의 온전한 모양을 사용하고자 할 때.
@@ -1702,18 +1764,21 @@ $1",
 'filestatus' => '저작권 상태:',
 'filesource' => '출처:',
 'uploadedfiles' => '파일 올리기',
-'ignorewarning' => '경고를 무시하고 저장합니다',
+'ignorewarning' => '경고를 무시하고 파일 저장',
 'ignorewarnings' => '모든 경고 무시하기',
 'minlength1' => '파일 이름은 적어도 1글자 이상이어야 합니다.',
-'illegalfilename' => '파일 이름 "$1"에는 문서 제목으로 허용되지 않는 글자가 포함되어 있습니다. 이름을 바꾸어 다시 시도해 주세요.',
+'illegalfilename' => '파일 이름 "$1"에는 문서 제목으로 허용되지 않는 글자가 포함되어 있습니다.
+이름을 바꾸어 다시 시도해 주세요.',
 'filename-toolong' => '파일 이름은 240바이트를 넘을 수 없습니다.',
-'badfilename' => '파일 이름이 ‘$1’(으)로 바뀌었습니다.',
+'badfilename' => '파일 이름이 "$1"로 바뀌었습니다.',
 'filetype-mime-mismatch' => '파일 확장자 ".$1"와 이 파일의 MIME($2)가 일치하지 않습니다.',
-'filetype-badmime' => '‘$1’ MIME을 가진 파일은 올릴 수 없습니다.',
+'filetype-badmime' => '"$1" MIME을 가진 파일은 올릴 수 없습니다.',
 'filetype-bad-ie-mime' => '인터넷 익스플로러가 잠재적으로 위험한 파일 형식으로 판단되어 사용이 금지된 "$1"로 인식할 수 있기 때문에 이 파일을 올릴 수 없습니다.',
-'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 추천하지 않습니다. 추천하는 {{PLURAL:\$3|파일 확장자}}는 \$2입니다.",
-'filetype-banned-type' => '{{PLURAL:$3$4}}\'\'\'".$1"\'\'\' 형식의 파일은 올릴 수 없습니다. $2 형식만 사용할 수 있습니다.',
-'filetype-missing' => '파일에 확장자(‘.jpg’ 등)가 없습니다.',
+'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 추천하지 않습니다.
+추천하는 {{PLURAL:\$3|파일 확장자}}는 \$2입니다.",
+'filetype-banned-type' => '{{PLURAL:$3$4}}\'\'\'".$1"\'\'\' 형식의 파일은 올릴 수 없습니다.
+$2 형식만 사용할 수 있습니다.',
+'filetype-missing' => '파일에 확장자(".jpg" 등)가 없습니다.',
 'empty-file' => '당신이 올린 파일이 비어 있습니다.',
 'file-too-large' => '올리려는 파일이 너무 큽니다.',
 'filename-tooshort' => '파일 이름이 너무 짧습니다.',
@@ -1723,16 +1788,16 @@ $1",
 'illegal-filename' => '이 파일 이름은 허용되지 않습니다.',
 'overwrite' => '기존 파일을 덮어쓰는 것은 허용되지 않습니다.',
 'unknown-error' => '알 수 없는 오류가 발생했습니다.',
-'tmp-create-error' => '임시 파일을 생성할 수 없습니다.',
+'tmp-create-error' => '임시 파일을 만들 수 없습니다.',
 'tmp-write-error' => '임시 파일을 작성하는 데 오류가 발생했습니다.',
-'large-file' => '파일 크기는 $1을 넘지 않는 것을 추천합니다. 이 파일의 크기는 $2입니다.',
+'large-file' => '파일 크기는 $1을 넘지 않는 것을 추천합니다.
+이 파일의 크기는 $2입니다.',
 'largefileserver' => '이 파일의 크기가 서버에서 허용된 설정보다 큽니다.',
 'emptyfile' => '올리려는 파일이 빈 파일입니다.
 파일 이름을 잘못 입력했을 수도 있습니다.
 올리려는 파일을 다시 한 번 확인해 주시기 바랍니다.',
 'windows-nonascii-filename' => '이 위키에서는 특수 문자가 포함된 파일 이름을 지원하지 않습니다.',
-'fileexists' => "같은 이름의 파일이 이미 있습니다.
-파일을 바꾸고 싶지 않다면 '''<tt>[[:$1]]</tt>''' 파일을 확인해 주세요.
+'fileexists' => "같은 이름의 파일이 이미 있습니다. 파일을 바꾸고 싶지 않다면 '''<tt>[[:$1]]</tt>''' 파일을 확인해 주세요.
 [[$1|thumb]]",
 'filepageexists' => "이 파일의 설명 문서가 '''<tt>[[:$1]]</tt>'''에 존재하지만, 이 이름을 가진 파일이 존재하지 않습니다.
 당신이 입력한 설명은 설명 문서에 반영되지 않을 것입니다.
@@ -1742,30 +1807,34 @@ $1",
 * 올리려는 파일 이름: '''<tt>[[:$1]]</tt>'''
 * 존재하는 파일 이름: '''<tt>[[:$2]]</tt>'''
 다른 이름으로 시도해 주세요.",
-'fileexists-thumbnail-yes' => "이 파일은 원본 그림이 아닌, 다른 그림의 크기를 줄인 섬네일 파일인 것 같습니다. [[$1|thumb]]
+'fileexists-thumbnail-yes' => "이 파일은 원본 그림이 아닌, 다른 그림의 크기를 줄인 섬네일 파일인 것 같습니다.
+[[$1|thumb]]
 '''<tt>[[:$1]]</tt>''' 파일을 확인해주세요.
 해당 파일이 현재 올리려는 파일과 같다면, 더 작은 크기의 그림을 올릴 필요는 없습니다.",
 'file-thumbnail-no' => "파일 이름이 '''<tt>$1</tt>'''으로 시작합니다.
 이 파일은 원본 그림이 아닌, 다른 그림의 크기를 줄인 섬네일 파일인 것 같습니다.
 더 해상도가 좋은 파일이 있다면 그 파일을 올려주세요. 아니면 올리려는 파일 이름을 바꾸어 주세요.",
 'fileexists-forbidden' => '같은 이름의 파일이 이미 있고, 덮어쓸 수 없습니다.
-그래도 파일을 올리시려면, 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다. [[File:$1|thumb|center|$1]]',
+그래도 파일을 올리시려면, 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다.
+[[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => '같은 이름의 파일이 이미 위키미디어 공용에 있습니다.
-파일을 업로드하길 원하신다면 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => '{{PLURAL:$1}}현재 올리고 있는 파일이 아래 파일과 중복됩니다:',
+파일을 업로드하길 원하신다면 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => '현재 올리고 있는 {{PLURAL:$1|파일}}이 아래 파일과 중복됩니다:',
 'file-deleted-duplicate' => '이 파일과 같은 파일 ([[:$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.',
 'uploadwarning' => '올리기 경고',
 'uploadwarning-text' => '아래의 파일 설명을 수정하고 다시 시도해 주세요.',
 'savefile' => '파일 저장',
-'uploadedimage' => '‘[[$1]]’ 파일을 올렸습니다.',
-'overwroteimage' => '‘[[$1]]’ 파일의 새 버전을 올렸습니다.',
+'uploadedimage' => '"[[$1]]" 파일을 올렸습니다.',
+'overwroteimage' => '"[[$1]]" 파일의 새 판을 올렸습니다.',
 'uploaddisabled' => '올리기 비활성화됨',
 'copyuploaddisabled' => 'URL로 파일 올리기가 비활성화되어 있습니다.',
 'uploadfromurl-queued' => '당신의 올리기 명령이 기록되었습니다.',
 'uploaddisabledtext' => '파일 올리기 기능이 비활성화되어 있습니다.',
 'php-uploaddisabledtext' => 'PHP 파일 올리기가 비활성화되었습니다. 파일 올리기 설정을 확인하십시오.',
 'uploadscripted' => '이 파일에는 HTML이나 다른 스크립트 코드가 포함되어 있어, 웹 브라우저에서 오류를 일으킬 수 있습니다.',
-'uploadvirus' => '파일이 바이러스를 포함하고 있습니다! 상세 설명: $1',
+'uploadvirus' => '파일이 바이러스를 포함하고 있습니다!
+자세한 설명: $1',
 'uploadjava' => '이 ZIP 파일은 자바의 .class 파일을 포함하고 있습니다.
 보안을 위한 제한을 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.',
 'upload-source' => '원본 파일',
@@ -1776,9 +1845,9 @@ $1",
 'upload-description' => '파일의 설명',
 'upload-options' => '올리기 설정',
 'watchthisupload' => '이 파일 주시하기',
-'filewasdeleted' => '같은 이름을 가진 파일이 올라온 적이 있었고, 그 후에 삭제되었습니다. 올리기 전에 $1을 확인해 주시기 바랍니다.',
-'filename-bad-prefix' => '올리려고 하는 파일 이름이 \'\'\'"$1"\'\'\'(으)로 시작합니다.
-"$1"은(는) 디지털 사진기가 자동으로 붙이는 의미없는 이름입니다.
+'filewasdeleted' => '같은 이름을 가진 파일이 올라온 적이 있었고 그 후에 삭제되었습니다.
+올리기 전에 $1을 확인해 주시기 바랍니다.',
+'filename-bad-prefix' => '올리려고 하는 파일 이름이 \'\'\'"$1"\'\'\'(으)로 시작합니다. "$1"은(는) 디지털 사진기가 자동으로 붙이는 의미없는 이름입니다.
 파일에 대해 알기 쉬운 이름을 골라주세요.',
 'filename-prefix-blacklist' => ' #<!-- 이 줄은 그대로 두십시오 --> <pre>
 # 문법은 다음과 같습니다:
@@ -1806,9 +1875,12 @@ $1',
 'upload-proto-error' => '잘못된 프로토콜',
 'upload-proto-error-text' => '파일을 URL로 올리려면 <code>http://</code>이나 <code>ftp://</code>로 시작해야 합니다.',
 'upload-file-error' => '내부 오류',
-'upload-file-error-text' => '서버에 임시 파일을 만드는 과정에서 내부 오류가 발생했습니다. [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
+'upload-file-error-text' => '서버에 임시 파일을 만드는 과정에서 내부 오류가 발생했습니다.
+[[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
 'upload-misc-error' => '알 수 없는 파일 올리기 오류',
-'upload-misc-error-text' => '파일을 올리는 중 알 수 없는 오류가 발생했습니다. URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세요. 문제가 계속되면 [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
+'upload-misc-error-text' => '파일을 올리는 중 알 수 없는 오류가 발생했습니다.
+URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세요.
+문제가 계속되면 [[Special:ListUsers/sysop|관리자]]에게 연락해주세요.',
 'upload-too-many-redirects' => 'URL이 너무 많은 넘겨주기에 연결되어 있습니다.',
 'upload-unknown-size' => '크기를 알 수 없음',
 'upload-http-error' => 'HTTP 오류 발생: $1',
@@ -1832,17 +1904,17 @@ $1',
 'backend-fail-read' => '$1 파일을 읽을 수 없습니다.',
 'backend-fail-create' => '$1 파일을 저장하지 못했습니다.',
 'backend-fail-maxsize' => '$2{{PLURAL:$2|바이트}}보다 커서 $1 파일을 저장하지 못했습니다.',
-'backend-fail-readonly' => '‘$1’ 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: “$2”',
+'backend-fail-readonly' => '"$1" 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: "$2"',
 'backend-fail-synced' => '파일 "$1"은 내부 저장 백엔드에 불안정한 상태로 있습니다.',
-'backend-fail-connect' => "'$1' 저장 백엔드에 접속하지 못했습니다.",
+'backend-fail-connect' => '"$1" 저장 백엔드에 접속하지 못했습니다.',
 'backend-fail-internal' => '"$1" 저장 백엔드에 알 수 없는 오류가 발생했습니다.',
 'backend-fail-contenttype' => '"$1"에 저장하기 위한 파일의 내용 유형을 판별하지 못했습니다.',
-'backend-fail-batchsize' => '저장 백엔드에서 $1개의 파일 {{PLURAL:$1|작업}}이 쌓여 있습니다; 한계는 $2개입니다.',
+'backend-fail-batchsize' => '저장 백엔드에서 파일 {{PLURAL:$1|작업}} $1개가 쌓여 있습니다; 한계는 $2개입니다.',
 'backend-fail-usable' => '파일 저장 권한이 없거나 저장 위치가 빠졌기 때문에 $1 파일을 저장할 수 없습니다.',
 
 # File journal errors
-'filejournal-fail-dbconnect' => '저장소 백엔드 ‘$1’에 대한 저널 데이터베이스에 연결할 수 없습니다.',
-'filejournal-fail-dbquery' => '저장소 백엔드 â\80\98$1â\80\99ì\97\90 ë\8c\80í\95\9c ì \80ë\84\90 ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ì\97\90ì\84\9c ê°±ì\8b í\95  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.',
+'filejournal-fail-dbconnect' => '저장소 백엔드 "$1"에 대한 저널 데이터베이스에 연결할 수 없습니다.',
+'filejournal-fail-dbquery' => '저장소 백엔드 "$1"ì\97\90 ë\8c\80í\95\9c ì \80ë\84\90 ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ì\97\90ì\84\9c ì\83\88ë¡\9c ê³ ì¹  ì\88\98 ì\97\86ì\8aµë\8b\88ë\8b¤.',
 
 # Lock manager
 'lockmanager-notlocked' => '‘$1’ 경로의 잠금을 풀 수 없습니다. 해당 경로는 잠겨 있지 않습니다.',
@@ -1937,7 +2009,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-current' => '최신',
 'filehist-datetime' => '날짜/시간',
 'filehist-thumb' => '섬네일',
-'filehist-thumbtext' => '$1 버전의 파일',
+'filehist-thumbtext' => '$1 의 파일',
 'filehist-nothumb' => '섬네일 없음',
 'filehist-user' => '사용자',
 'filehist-dimensions' => '크기',
@@ -1945,7 +2017,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-comment' => '내용',
 'filehist-missing' => '파일을 찾을 수 없음',
 'imagelinks' => '이 파일을 사용하는 문서',
-'linkstoimage' => '다음 $1ê°\9cì\9d\98 ë¬¸ì\84\9cê°\80 ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\8aµë\8b\88ë\8b¤:',
+'linkstoimage' => '다음 ë¬¸ì\84\9c $1ê°\9cê°\80 ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\8aµë\8b\88ë\8b¤:',
 'linkstoimage-more' => '$1개 이상의 문서가 이 파일을 가리키고 있습니다.
 다음 목록은 이 파일을 가리키는 처음 $1개 문서만 보여주고 있습니다.
 이 파일을 가리키는 모든 문서를 보려면 [[Special:WhatLinksHere/$2|여기]]를 참고해 주십시오.',
@@ -2001,7 +2073,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filedelete-maintenance-title' => '파일을 삭제할 수 없습니다',
 
 # MIME search
-'mimesearch' => 'MIME 검색',
+'mimesearch' => 'MIME 찾기',
 'mimesearch-summary' => 'MIME 타입에 해당하는 파일을 검색합니다. MIME 값을 <tt>image/jpeg</tt> 형태로 입력해주세요.',
 'mimetype' => 'MIME 종류:',
 'download' => '다운로드',
@@ -2081,8 +2153,8 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'nmembers' => '문서 $1개',
 'nrevisions' => '편집 $1개',
 'nviews' => '$1회 읽음',
-'nimagelinks' => '{{PLURAL:$1}}ê°\9c ë¬¸ì\84\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
-'ntransclusions' => '{{PLURAL:$1}}ê°\9c ë¬¸ì\84\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
+'nimagelinks' => '문ì\84\9c $1ê°\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
+'ntransclusions' => '문ì\84\9c $1ê°\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
 'specialpage-empty' => '명령에 대한 결과가 없습니다.',
 'lonelypages' => '외톨이 문서 목록',
 'lonelypagestext' => '{{SITENAME}}에서 다른 모든 문서에서 링크되거나 틀로 포함되지 않은 문서의 목록입니다.',
@@ -2123,7 +2195,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
 'listusers-creationsort' => '계정 등록일 순으로 정렬',
-'usereditcount' => '편집 $1',
+'usereditcount' => '편집 $1',
 'usercreated' => '$1 $2에 계정 {{GENDER:$3|생성됨}}',
 'newpages' => '새 문서 목록',
 'newpages-username' => '이름:',
@@ -2367,7 +2439,7 @@ $UNWATCHURL
 'exblank' => '빈 문서',
 'delete-confirm' => '‘$1’ 삭제',
 'delete-legend' => '삭제',
-'historywarning' => "'''주의''': 삭제하려는 문서에 약 $1개의 과거 편집 내역이 있습니다:",
+'historywarning' => "'''주의:''' 삭제하려는 문서에 과거 편집 내역 약 $1개가 있습니다:",
 'confirmdeletetext' => '문서와 문서 역사를 삭제하려고 합니다. 삭제하려는 문서가 맞는지, 이 문서를 삭제하는 것이 [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지를 확인해 주세요.',
 'actioncomplete' => '명령 완료',
 'actionfailed' => '명령 실패',
@@ -2675,7 +2747,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 [[Special:BlockList|여기]]에서 현재 차단된 사용자 목록을 볼 수 있습니다.',
 'unblocklogentry' => '$1을 차단 해제했습니다.',
 'block-log-flags-anononly' => 'IP만 막음',
-'block-log-flags-nocreate' => '계정 생성 막음',
+'block-log-flags-nocreate' => '계정 생성 금지됨',
 'block-log-flags-noautoblock' => '자동 차단 비활성화됨',
 'block-log-flags-noemail' => '이메일 막음',
 'block-log-flags-nousertalk' => '자신의 토론 문서 편집 불가',
@@ -2792,7 +2864,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'movelogpage' => '이동 기록',
 'movelogpagetext' => '아래는 옮겨진 문서의 목록입니다.',
 'movesubpage' => '{{PLURAL:$1}}하위 문서',
-'movesubpagetext' => '이 문서에는 다음 $1ê°\9cì\9d\98 í\95\98ì\9c\84 ë¬¸ì\84\9cê°\80 ì\9e\88ì\8aµë\8b\88ë\8b¤.',
+'movesubpagetext' => '이 문서에는 다음 í\95\98ì\9c\84 ë¬¸ì\84\9c $1ê°\9cê°\80 ì\9e\88ì\8aµë\8b\88ë\8b¤.',
 'movenosubpage' => '이 문서에는 하위 문서가 존재하지 않습니다.',
 'movereason' => '이유:',
 'revertmove' => '되돌리기',
@@ -3068,7 +3140,8 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'spamprotectionmatch' => '문제가 되는 부분은 다음과 같습니다: $1',
 'spambot_username' => 'MediaWiki 스팸 제거',
 'spam_reverting' => '$1을 포함하지 않는 최신 버전으로 되돌림',
-'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 문서를 비움',
+'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
+'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
 
 # Info page
 'pageinfo-title' => '"$1" 문서에 대한 정보',
@@ -3370,7 +3443,7 @@ Variants for Chinese language
 'exif-disclaimer' => '면책 조항',
 'exif-contentwarning' => '콘텐츠 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
-'exif-intellectualgenre' => '컨텐츠 정보',
+'exif-intellectualgenre' => 'ì½\98텐츠 정보',
 'exif-subjectnewscode' => '주제 코드',
 'exif-scenecode' => 'IPTC 장면 코드',
 'exif-event' => '묘사된 사건',
@@ -3777,7 +3850,7 @@ $5
 
 미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
 
-당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
+당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, 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-product' => '제품',
 'version-software-version' => '버전',
@@ -3864,7 +3937,8 @@ $5
 
 # Database error messages
 'dberr-header' => '이 위키에 문제가 있습니다.',
-'dberr-problems' => '죄송합니다. 이 사이트는 기술적인 문제가 있습니다.',
+'dberr-problems' => '죄송합니다!
+이 사이트는 기술적인 문제가 있습니다.',
 'dberr-again' => '잠시 후에 다시 시도해주세요.',
 'dberr-info' => '(데이터베이스에 접속할 수 없습니다: $1)',
 'dberr-usegoogle' => '그 동안 구글을 통해 검색할 수도 있습니다.',
@@ -3890,7 +3964,7 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 사용자가 $3 문서를 삭제하였습니다.',
 'logentry-delete-restore' => '$1 사용자가 $3 문서를 복구하였습니다.',
-'logentry-delete-event' => '$1 사용자가 $3의 $5개의 기록에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-delete-event' => '$1 사용자가 $3의 기록 $5개에 대해 표시 설정을 바꾸었습니다: $4',
 'logentry-delete-revision' => '$1 사용자가 $3 문서의 {{PLURAL:$5|$5}}개 편집의 설정을 변경하였습니다: $4',
 'logentry-delete-event-legacy' => '$1 사용자가 $3 문서 기록의 표시 설정을 변경하였습니다.',
 'logentry-delete-revision-legacy' => '$1 사용자가 $3 문서 편집의 표시 설정을 변경하였습니다.',
@@ -3946,6 +4020,8 @@ $5
 'api-error-empty-file' => '당신이 올리려는 파일이 비어 있습니다.',
 'api-error-emptypage' => '새 문서로 빈 문서를 만들 수 없습니다.',
 'api-error-fetchfileerror' => '내부 오류: 파일을 불러오는 중 문제가 발생했습니다.',
+'api-error-fileexists-forbidden' => '"$1" 이름으로 된 파일은 이미 존재하고 덮어쓸 수 없습니다.',
+'api-error-fileexists-shared-forbidden' => '"$1" 이름으로 된 파일이 이미 공용 저장소에 존재하며 덮어쓸 수 없습니다.',
 'api-error-file-too-large' => '당신이 올리려는 파일이 너무 큽니다.',
 'api-error-filename-tooshort' => '파일 이름이 너무 짧습니다.',
 'api-error-filetype-banned' => '이런 형식의 파일은 올릴 수 없습니다.',
@@ -3984,4 +4060,6 @@ $5
 'duration-centuries' => '$1{{PLURAL:$1|세기}}',
 'duration-millennia' => '$1{{PLURAL:$1|천년}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => '서버 $1의 잠금을 걸지 못했습니다.',
 );
index 8cf641f..f484421 100644 (file)
@@ -47,7 +47,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Джангы тюрлениулени списогунда тинтилген тюрлениулени кёргюзме',
 'tog-newpageshidepatrolled' => 'Джангы бетлени списогунда тинтилген бетлени кёргюзме',
 'tog-extendwatchlist' => 'Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
-'tog-usenewrc' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ð¸Ð³Ð¸Ð»ÐµÐ½Ð½Ð³ÐµÐ½ Ñ\81пиÑ\81огÑ\83н Ñ\85айÑ\8bÑ\80ландÑ\8bÑ\80 (JavaScript керекди)',
+'tog-usenewrc' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83леде Ñ\8dм ÐºÑ\91здеги Ñ\82измеде Ð±ÐµÑ\82лени ÐºÑ\8aаÑ\83Ñ\83м Ñ\82Ñ\8eÑ\80лениÑ\83леÑ\80и (JavaScript керекди)',
 'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
 'tog-showtoolbar' => 'Тюрлендирген сагъатда, башындагъы инструмент панелни кёргюз (JavaScript)',
 'tog-editondblclick' => 'Эки басыу бла тюрлендириу бет ачылсын (JavaScript)',
@@ -1481,6 +1481,7 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
+'uploadstash-clear' => 'Джашырылгъан файлланы ариула',
 'uploadstash-nofiles' => 'Сизни джашырылгъан файлларыгъыз джокъду',
 'uploadstash-refresh' => 'Файлланы тизмесин джангырт',
 
@@ -1566,6 +1567,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 [[Special:WhatLinksHere/$2|Толу спиосок]] барды.',
 'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
+'linkstoimage-redirect' => '$1 (файл редирект) $2',
 'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
 'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
 'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
@@ -1776,6 +1778,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'allpagesprefix' => 'Былайда джазгъан харифледен башланнган бетлени список эт:',
 'allpagesbadtitle' => 'Кирилген бет аты тиллени арасы байлм неда викилени арасында байлам болгъаны себебли джараусузду. Башлыкълада хайырланыуу джасакъ болгъан бир неда андан аслам символ тутаргъа болур.',
 'allpages-bad-ns' => '{{SITENAME}} сайтда «$1» ат алам джокъду.',
+'allpages-hide-redirects' => 'Башха бетлеге джиберген бетлени (редиректлени) джашыр',
 
 # Special:Categories
 'categories' => 'Категорияла',
@@ -2116,6 +2119,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Атла алам:',
 'invert' => 'Сайланнганны айландыр',
+'namespace_association' => 'Байламлы ат алам',
 'blanknamespace' => '(Баш)',
 
 # Contributions
@@ -3424,6 +3428,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
 'logentry-move-move' => '$1, $3 бетни атын $4 деб тюрлендирди',
 'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
+'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къурады',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
 
 # Feedback
index 5c51df2..2d6b020 100644 (file)
@@ -341,7 +341,7 @@ $messages = array(
 'noindex-category' => 'Sigge, di de Söhkmaschine nit opnämme sulle',
 'broken-file-category' => 'Sigge met kappodde Lengks op Datteije',
 
-'about' => 'Ã\9cvver',
+'about' => 'Ã\96vver',
 'article' => 'Atikkel',
 'newwindow' => '(Mäht e neu Finster op, wann Dinge Brauser dat kann)',
 'cancel' => 'Stopp! Avbreche!',
@@ -619,6 +619,8 @@ $2',
 Dä Wiki_Köbes dovun hät beim Deeschmaache als Jrond aanjejovve: „$3“',
 'invalidtitle-knownnamespace' => '„$3“ es ene onjöltijje Tittel för em Appachtemang „$2“',
 'invalidtitle-unknownnamespace' => '„$2“ es ene onjöltijje Tittel för e Appachtemang met dä verkehte Nommer $1.',
+'exception-nologin' => 'Nit enjelogg',
+'exception-nologin-text' => 'Heh di Sigg udder heh dä Opdraach jeiht blooß, wann De heh em Wiki enjelogg bes.',
 
 # Virus scanner
 'virus-badscanner' => "Fääler en de Enstellunge: Dat Projramm ''$1'' fö noh Kompjuterwiere ze söke, dat kenne mer nit.",
@@ -646,8 +648,8 @@ Denk dran, Do künnts Der [[Special:Preferences|Ding Enstellunge heh för {{GRAM
 'loginprompt' => 'Öm heh enlogge ze künne, muss De de <i lang="en">Cookies</i> en Dingem Brauser enjeschalt han.',
 'userlogin' => 'Enlogge odder Metmaacher wääde',
 'userloginnocreate' => 'Enlogge',
-'logout' => 'Uslogge',
-'userlogout' => 'Uslogge',
+'logout' => 'Ußlogge',
+'userlogout' => 'Ußlogge',
 'notloggedin' => 'Nit enjelogg',
 'nologin' => "Wann De Dich noch nit aanjemeldt häs, dann dun Dich '''$1'''.",
 'nologinlink' => 'neu aanmelde',
@@ -2335,11 +2337,12 @@ Adress en Dinge [[Special:Preferences|ming Enstellunge]] stonn han, öm en E-Mai
 schecke.',
 'emailuser' => 'E-mail aan dä Metmaacher',
 'emailpage' => 'E-mail aan ene Metmaacher',
-'emailpagetext' => 'Wann dä Metmaacher en E-mail Adress aanjejovve hätt en singe Enstellunge,
-un die deit et och, dann kanns De met däm Fomular hee unge en einzelne E-Mail aan dä Metmaacher schecke.
-Ding E-mail Adress, die De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
-die weed als em Avsender sing Adress en die E-Mail enjedrage.
-Domet kann, wä die E-Mail kritt, drop antwoote, un die Antwood jeiht tirek aan Dech.
+'emailpagetext' => 'Wann heh dä Metmaacher en Adräß för sing <i lang="en">e-mail</i> aanjejovve hätt en singe Enstellunge,
+un die deit et och, dann kanns De met däm Fomular hee unge en einzel <i lang="en">e-mail</i> aan dä Metmaacher schecke.
+
+Ding <i lang="en">e-mail</i>-Adräß, di De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
+di weed als em Afsender sing Adräß en Ding <i lang="en">e-mail</i> enjedrage.
+Domet kann, wä di <i lang="en">e-mail</i> kritt, drop antwoote, un di Antwood jeiht tirek aan Desch.
 Alles klor?',
 'usermailererror' => 'Dat E-Mail-Objek jov ene Fähler us:',
 'defemailsubject' => 'e-mail fum $1 {{GRAMMAR:fun|{{SITENAME}}}}.',
@@ -2421,14 +2424,14 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
 'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
 'enotif_body' => 'Leeven $WATCHINGUSERNAME,
 
-{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
+{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE {{GENDER:$PAGEEDITOR|vum|vum|vum_Metmaacher|vun dä|vum}} „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
 
 $NEWPAGE
 
 {{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT
 
 Do kanns dä Metmaacher „$PAGEEDITOR“ aanspreche:
-* E-mail: $PAGEEDITOR_EMAIL
+* Övver e-mail: $PAGEEDITOR_EMAIL
 * Em Wiki: $PAGEEDITOR_WIKI
 
 Do kriss vun jetz aan kein e-mail mieh, bes dat Do Der di Sigg aanjeluurt häs,
@@ -2441,10 +2444,10 @@ Ene schöne Jroß {{GRAMMAR:vun|{{SITENAME}}}}.
 Öm de Enshtällonge för Nohreeschet aan Desch ze ändere, jangk op:
 {{canonicalurl:{{#special:Preferences}}}}
 
-Do kanns hee Ding Oppassliss ändere:
+Do kanns hee Ding Oppassl ändere:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Öm di Sigg vun Dinger Oppassliss ze schmieße:
+Öm di Sigg vun Dinger Oppassl ze schmieße:
 $UNWATCHURL
 
 Do kanns hee noh Hölp luure:
@@ -3052,7 +3055,7 @@ Bes esu joot, un versök et noch ens.',
 'tooltip-pt-mycontris' => 'en Liss met Dinge eije Beidräch',
 'tooltip-pt-login' => 'Do moß Desch nit Enlogge, kannz_E ävver jähn maache!',
 'tooltip-pt-anonlogin' => 'Wöhr nett wann De enlogge dääts, moß ävver nit.',
-'tooltip-pt-logout' => 'Uslogge',
+'tooltip-pt-logout' => 'Ußlogge',
 'tooltip-ca-talk' => 'Dun die Sigg met däm Klaaf övver heh de Sigg aanzeije',
 'tooltip-ca-edit' => 'De kanns die Sigg heh ändere — für em Avspeichere, donn eetß ens enen Bleck op de Vör-Aansich',
 'tooltip-ca-addsection' => 'Donn heh enne neue Afschnett opmaache.',
@@ -3435,7 +3438,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-objectcycle' => 'De Daachszick, för wann dat Denge zom Verdeile jedaach es',
 'exif-contact' => 'Kuntak',
 'exif-writer' => 'Schriiver',
-'exif-languagecode' => 'Shprooch',
+'exif-languagecode' => 'Schprooch',
 'exif-iimversion' => 'Dem <i lang="en">IIM</i> sing Version',
 'exif-iimcategory' => 'Saachjrupp udder Zoot',
 'exif-iimsupplementalcategory' => 'Extra Saachjroppe udder Zoote',
@@ -3489,6 +3492,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-copyrighted-true' => 'Häd_en Urhävverrääsch',
 'exif-copyrighted-false' => 'Es en de Allmende (jemeinfrei, <i lang="en">public domain</i>)',
 
+'exif-photometricinterpretation-2' => 'RJB',
 'exif-photometricinterpretation-6' => '<i lang="en">YCbCr</i>',
 
 'exif-unknowndate' => 'Dattum onbikannt',
@@ -3512,6 +3516,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-colorspace-65535' => 'De Färve sin nit kallibreert',
 
 'exif-componentsconfiguration-0' => 'Jidd_et nit',
+'exif-componentsconfiguration-5' => 'J',
 
 'exif-exposureprogram-0' => 'Nit faßjelaat',
 'exif-exposureprogram-1' => 'Vun Hand',
@@ -3850,6 +3855,17 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
 'size-megabytes' => '$1 MB',
 'size-gigabytes' => '$1 GB',
 
+# Bitrate units
+'bitrate-bits' => '$1&nbps;bps',
+'bitrate-kilobits' => '$1&nbps;Kbps',
+'bitrate-megabits' => '$1&nbps;Mbps',
+'bitrate-gigabits' => '$1&nbps;Gbps',
+'bitrate-terabits' => '$1&nbps;Tbps',
+'bitrate-petabits' => '$1&nbps;Pbps',
+'bitrate-exabits' => '$1&nbps;Ebps',
+'bitrate-zetabits' => '$1&nbps;Zbps',
+'bitrate-yottabits' => '$1&nbps;Ybps',
+
 # Live preview
 'livepreview-loading' => 'Ben am Lade …',
 'livepreview-ready' => 'Fädesch jelaade.',
@@ -3910,7 +3926,7 @@ De könnts Ding Oppassliss ävver och [[Special:EditWatchlist|övver e Fomulaa m
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|Klaafe]])',
-'timezone-utc' => 'UTC',
+'timezone-utc' => '<i lang="en">UTC</i>',
 
 # Core parser functions
 'unknown_extension_tag' => '„<code>$1</code>“ es en zosäzlejje Kennzeichnung, die kenne mer nit.',
index baebffd..1c55804 100644 (file)
@@ -117,7 +117,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Ji bo guhertinên biçûk jî E-nameyekê ji min re bişîne',
 'tog-enotifrevealaddr' => 'Navnîşana e-nameya min di agahdariyên e-nameyan de nîşan bide',
 'tog-shownumberswatching' => 'Nîşan bide, çiqas bikarhêner dişopînin',
-'tog-oldsig' => 'Pêşdîtina îmzeya heyî',
+'tog-oldsig' => 'Pêşdîtina îmzeya heye:',
 'tog-fancysig' => 'Di îmzeyê de girêdana otomatîk a bikarhêner betal bike',
 'tog-externaleditor' => 'Edîtorekî derve bike "standard" (ji yên bi ezmûn re, tercîhên taybet di komputerê de hewce ne)',
 'tog-externaldiff' => 'Birnemijekî derve biguherîne "standard" (ji yên bi ezmûn re, tercîhên taybet di komputerê de hewce ne)',
@@ -153,8 +153,8 @@ $messages = array(
 'sun' => 'Ykş',
 'mon' => 'Duş',
 'tue' => 'Sêş',
-'wed' => 'Çarş',
-'thu' => 'Pşem',
+'wed' => 'Çrş',
+'thu' => 'Pşm',
 'fri' => 'În',
 'sat' => 'Şem',
 'january' => 'rêbendan',
@@ -173,14 +173,14 @@ $messages = array(
 'february-gen' => 'Reşemî',
 'march-gen' => 'Adar',
 'april-gen' => 'Avrêl',
-'may-gen' => 'Gulan',
-'june-gen' => 'Pûşper',
+'may-gen' => 'gulan',
+'june-gen' => 'pûşper',
 'july-gen' => 'Tîrmeh',
 'august-gen' => 'Gelawêj',
-'september-gen' => 'Rezber',
+'september-gen' => 'rezber',
 'october-gen' => 'Kewçêr',
 'november-gen' => 'Sermawez',
-'december-gen' => 'Berfanbar',
+'december-gen' => 'berfanbar',
 'jan' => 'rêb',
 'feb' => 'reş',
 'mar' => 'adr',
@@ -214,7 +214,7 @@ $messages = array(
 'about' => 'Der barê',
 'article' => 'Gotar',
 'newwindow' => '(di rûpeleke din de wê were nîşandan)',
-'cancel' => 'Betalkirin',
+'cancel' => 'Betal bike',
 'moredotdotdot' => 'Bêhtir...',
 'mypage' => 'Rûpela min',
 'mytalk' => 'Gotûbêja min',
@@ -250,7 +250,7 @@ $messages = array(
 'variants' => 'Variyant',
 
 'errorpagetitle' => 'Çewtî',
-'returnto' => 'Bizîvire $1.',
+'returnto' => 'Vegere $1.',
 'tagline' => 'Ji {{SITENAME}}',
 'help' => 'Alîkarî',
 'search' => 'Lêgerîn',
@@ -274,8 +274,8 @@ $messages = array(
 'protect' => 'Biparêze',
 'protect_change' => 'guherandin',
 'protectthispage' => 'Vê rûpelê biparêze',
-'unprotect' => 'Parastinê rake',
-'unprotectthispage' => 'Parastina vê rûpelê rake',
+'unprotect' => 'Parastinê biguherîne',
+'unprotectthispage' => 'Parastina vê rûpelê biguherîne',
 'newpage' => 'Rûpela nû',
 'talkpage' => 'Vê rûpelê gotûbêj bike',
 'talkpagelinktext' => 'gotûbêj',
@@ -286,7 +286,7 @@ $messages = array(
 'talk' => 'Gotûbêj',
 'views' => 'Dîtin',
 'toolbox' => 'Qutiya amûran',
-'userpage' => 'Li rûpela vê/vî bikarhênerê/î binêre',
+'userpage' => 'Li rûpela bikarhêner binêre',
 'projectpage' => 'Li rûpela projeyê binêre',
 'imagepage' => 'Rûpela dosyeyan bibîne',
 'mediawikipage' => 'Rûpela peyamê bibîne',
@@ -302,7 +302,7 @@ $messages = array(
 'protectedpage' => 'Rûpela parastî',
 'jumpto' => 'Here cem:',
 'jumptonavigation' => 'navîgasyon',
-'jumptosearch' => 'lêbigere',
+'jumptosearch' => 'lêgerîn',
 'view-pool-error' => 'Bibore, server niha zêde barkirî ne. Gelek bikarhêner niha hewl didin ku vê rûpelê bibînin. Ji kerema xwe kêlîkekê bisekine, berî ku tu dîsa hewl bidî rûpelê bibînî.',
 'pool-errorunknown' => 'Çewtiyeke nenas',
 
@@ -333,11 +333,11 @@ $messages = array(
 'versionrequired' => 'Versiyona $1 a MediaWiki pêwîst e',
 'versionrequiredtext' => 'Versiyona $1 a MediaWiki ji bo bikaranîna vê rûpelê pêwîst e. Li [[Special:Versiyon|rûpela versiyonê]] binêre.',
 
-'ok' => 'Temam',
+'ok' => 'Baş e',
 'retrievedfrom' => 'Ji "$1" hatiye standin.',
 'youhavenewmessages' => '$1 yên te hene ($2).',
 'newmessageslink' => 'Peyamên nû',
-'newmessagesdifflink' => 'ciyawazî ji guhertoya berê',
+'newmessagesdifflink' => 'cudayî ji guhertoya berê',
 'youhavenewmessagesmulti' => 'Peyamên nû li $1 ji te re hene.',
 'editsection' => 'biguherîne',
 'editold' => 'biguherîne',
@@ -402,7 +402,7 @@ Sedema girtinê ev e: $1',
 'internalerror' => 'Çewtiyeke navxweyî',
 'internalerror_info' => 'Çewtiya navxweyî: $1',
 'fileappenderror' => '"$1" li "$2" nehate zêdekirin.',
-'filecopyerror' => 'Daneya „$1“ ji bo „$2“ naye kopîkirin.',
+'filecopyerror' => 'Daneya "$1" ji bo "$2" naye kopîkirin.',
 'filerenameerror' => 'Navê pelê "$1" nebû "$2".',
 'filedeleteerror' => '"$1" jê nehate birîn.',
 'directorycreateerror' => 'Rêbera "$1" nehate çêkirin.',
@@ -411,7 +411,7 @@ Sedema girtinê ev e: $1',
 'unexpected' => 'Tiştekî nedihate hêvîkirin: "$1"="$2".',
 'formerror' => 'Çewtî: Ew nivîs pêk nehat.',
 'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
-'cannotdelete' => 'Ev rûpel nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
+'cannotdelete' => 'Ev rûpel an wêne nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
 'badtitle' => 'Sernivîsa nebaş',
 'badtitletext' => 'Sernavê rûpelê yê xwestî ne derbasdar, vala an jî ne xwediyê girêdaneke rast e.
 Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
@@ -427,21 +427,19 @@ Pirs: $2',
 'protectedpagetext' => 'Ev rûpel ji bo nenivîsandinê hatiye parastin.',
 'viewsourcetext' => 'Tu dikarî li çavkaniya vê rûpelê binêrî û wê kopî bikî:',
 'protectedinterface' => "Di vê rûpelê da nivîsandin ji bo interface'î zimanan yê vê software'ê ye. Ew tê parstin ji bo vandalîzm li vê derê çênebe.",
-'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
+'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku-latn translatewiki.net] de bixebite, projeya MediaWiki.",
 'sqlhidden' => '(Jêpirskirina SQL hatiye veşartin)',
-'cascadeprotected' => '<strong>Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
-$2
-
-</strong>',
+'cascadeprotected' => 'Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
+$2',
 'namespaceprotected' => "Destûra te ji bo guhertina vê rûpelê '''$1''' di valahiya nav de nîne.",
 'ns-specialprotected' => 'Rûpelên taybet {{ns:special}} nikarin werin guherandin.',
-'titleprotected' => "Rûpelek bi vî navî nikare were çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hate çêkirin.",
+'titleprotected' => "Rûpelek bi vî navî nikare bê çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hatiye çêkirin.",
 
 # Virus scanner
 'virus-unknownscanner' => 'Antîvîrusa nenas:',
 
 # Login and logout pages
-'logouttext' => "'''Tu niha derketî (logged out).'''
+'logouttext' => "'''Tu niha derketî.'''
 
 Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner [[Special:UserLogin|dîsa têkevî]].
 Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
@@ -456,16 +454,16 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'externaldberror' => 'Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.',
 'login' => 'Têkeve',
 'nav-login-createaccount' => 'Têkeve / hesabekî nû çêke',
-'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
-'userlogin' => 'Têkeve an hesabeke nû çêke',
+'loginprompt' => "<b>Eger tu xwe nû tomar bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo tomarkirina te ya di {{SITENAME}} de divê ku ''cookies'' gengaz bin.",
+'userlogin' => 'Têkeve an hesabekî nû çêke',
 'userloginnocreate' => 'Têkeve',
 'logout' => 'Derkeve',
 'userlogout' => 'Derkeve',
-'notloggedin' => 'Xwe qeyd nekir (not logged in)',
+'notloggedin' => 'Xwe tomar nekir',
 'nologin' => 'Hesabê te nîne? $1.',
 'nologinlink' => 'Bibe endam',
 'createaccount' => 'Hesabê nû çêke',
-'gotaccount' => "Hesabê te heye? '''$1'''.",
+'gotaccount' => 'Hesabê te heye? $1.',
 'gotaccountlink' => 'Têkeve',
 'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
 'createaccountmail' => 'bi e-name',
@@ -476,9 +474,9 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'nocookiesnew' => "Hesabê bikarhêner hatibû çêkirin, lê te xwe qeyd nekiriye. {{SITENAME}} ji bo qeydkirina bikarhêneran cookie'yan bikartîne. Te bikaranîna cookie'yan girtiye. Xêra xwe cookie'yan qebûl bike, piştre bi navê bikarhêner û şîfreya xwe têkeve.",
 'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
 'noname' => 'Navê ku te nivîsand derbas nabe.',
-'loginsuccesstitle' => 'Têketin serkeftî!',
-'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
-'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
+'loginsuccesstitle' => 'Têketin serkevtî bû!',
+'loginsuccess' => 'Tu niha di {{SITENAME}} de tomarkirî yî wek "$1".',
+'nosuchuser' => 'Bikarhênerê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabekî nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
 'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "$1" heye. Li nivîsandinê xwe seke.',
 'nouserspecified' => 'Divê tu navekî ji bo bikarhêneriyê hilbijêrî.',
 'login-userblocked' => 'Rê li ber vî/vê bikarhênerî/ê hatiye girtin. Destûr bo têketinê nîne.',
@@ -488,18 +486,18 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'password-name-match' => 'Divê şîfreya te ji navê te yê bikaranînê cuda be.',
 'password-login-forbidden' => 'Bikaranîna vî navî û vê şîfreyê hatiye qedexekirin.',
 'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
-'passwordremindertitle' => 'Şîfreyakekî nuh ji hesabekî {{SITENAME}} ra',
-'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyekî nuh ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nuh ji bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
+'passwordremindertitle' => 'Şîfreyeke nû ya ji hesabekî {{SITENAME}} re',
+'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyeke nû ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nû ya bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
 
 Eger kesekî din vê xastinê ji te ra xast ya şîfreya kevin dîsa hate bîrê te, tu dikarê guh nedê vê peyamê û tu dikarê bi şîfreya xwe yê kevin hên karbikê.',
 'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
 'noemailcreate' => 'Divê tu e-nameyeke derbasdar binivîsî',
 'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
-'blocked-mailpassword' => "IP'ya te yê ji te niha tê bikaranin ji bo guherandinê ra hatîye astengkirin. Ji bo tiştên şaş çênebin, xastinê te ji bo şifreyeka nuh jî hatîye qedexekirin.",
+'blocked-mailpassword' => "IP'ya ku tu niha bi kar tînî ji guherandinê re hatiye astengkirin. Ji bo tiştên şaş çênebin, xwestina te ya ji bo şîfreyeke nû jî hatiye qedexekirin.",
 'eauthentsent' => 'E-nameyeka naskirinê ji adresa nivîsî ra hate şandin. Berî e-name ji bikarhênerên din bi vê rêkê dikaribim bi te gên, ew adresa û rastbûna xwe gireke werin naskirin. Xêra xwe e-nameyê naskirinê bixûne!',
-'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh hate xastin. Ji bo şaşbûn bi vê fonksyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh dikare were xastin.',
+'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû hate xwestin. Ji bo şaşbûn bi vê fonksiyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû dikare were xwestin.',
 'mailerror' => 'Şaşbûnek li cem şandina e-nameyekê: $1',
-'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
+'acct_creation_throttle_hit' => 'Bibexşe! Te hesabê bikarhêneriyê $1 vekiriye. Tu êdî nikarî hesabên din vekî.',
 'emailauthenticated' => 'Adresa e-nameya te hate naskirin: $1.',
 'emailnotauthenticated' => 'Adresa e-nameyan yê te hên nehatîye naskirin. Fonksyonên e-nameyan piştî naskirina te dikarin ji te werin kirin.',
 'noemailprefs' => "'''Te hên adresa e-nameyan nenivîsandîye''', fonksyonên e-nameyan hên ji te ra ne tên qebûlkirin.",
@@ -520,7 +518,8 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 
 # Change password dialog
 'resetpass' => 'Şîfreyê biguherîne',
-'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
+'resetpass_announce' => 'Te xwe bi şîfreyekê tomar kiriye ku bi riya e-nameyekê ji te re hatiye şandin.
+Ji bo xelaskirina tomarkirinê, divê tu niha şîfreyeke nû binivîsî:',
 'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
 'resetpass_header' => 'Şîfreya hesabê xwe biguherîne',
 'oldpassword' => 'Şîfreya kevn',
@@ -530,7 +529,7 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 'resetpass_success' => 'Şîfreya te hate guherandin! Niha tu tê qeydkirin...',
 'resetpass_forbidden' => 'Şîfre nikarin werin guhertin',
 'resetpass-submit-loggedin' => 'Şîfre biguherîne',
-'resetpass-submit-cancel' => 'Betalkirin',
+'resetpass-submit-cancel' => 'Betal bike',
 'resetpass-temp-password' => 'Şîfreya niha:',
 
 # Special:PasswordReset
@@ -578,9 +577,9 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 'watchthis' => 'Vê gotarê bişopîne',
 'savearticle' => 'Rûpelê tomar bike',
 'preview' => 'Pêşdîtin',
-'showpreview' => 'Pêşdîtin',
+'showpreview' => 'Pêşdîtinê nîşan bide',
 'showlivepreview' => 'Pêşdîtina zindî',
-'showdiff' => 'Guherandinê nîşan bide',
+'showdiff' => 'Guherandinan nîşan bide',
 'anoneditwarning' => "'''Hişyarî:''' Tu netêketî yî! Navnîşana IP'ya te wê di dîroka guherandina vê rûpelê de bê tomarkirin.",
 'anonpreviewwarning' => "''Tu ne têketî yî. Tomarkirin wê navnîşana IP'ya te di dîroka guhertinan de nîşan bide.''",
 'missingsummary' => "<span style=\"color:#990000;\">'''Zanibe:'''</span> Te nivîsekî kurt ji bo guherandinê ra nenivîsand. Eger tu niha carekî din li Tomar xê, guherandinê te vê nivîsekî kurt yê were tomarkirin.",
@@ -631,15 +630,20 @@ Zanibe ku tu nikarî e-nameya bişînî heta tu di [[Special:Preferences|tercih
 'newarticletext' => "Ev rûpel hîn tune. Eger tu bixwazî vê rûpelê çêkî, dest bi nivîsandinê bike û piştre qeyd bike. '''Wêrek be''', biceribîne!<br />
 Ji bo alîkariyê binêre: [[{{MediaWiki:Helppage}}|Alîkarî]].<br />
 Heke tu bi şaşîtî hatî, bizîvire rûpela berê.",
-'anontalkpagetext' => "----''Ev rûpela gotûbêjê ye ji bo bikarhênerên nediyarkirî ku hîn hesabekî xwe çênekirine an jî bikarnaînin. Ji ber vê yekê divê em wan bi navnîşana IP ya hejmarî nîşan bikin. Navnîşaneke IP dikare ji aliyê gelek kesan ve were bikaranîn. Heger tu bikarhênerekî nediyarkirî bî û bawerdikî ku nirxandinên bê peywend di der barê te de hatine kirin ji kerema xwe re [[Special:UserLogin|hesabekî xwe veke an jî têkeve]] da ku tu xwe ji tevlîheviyên bi bikarhênerên din re biparêzî.''",
-'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
-'noarticletext-nopermission' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].
-Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
+'anontalkpagetext' => "----''Ev rûpela gotûbêjê ye ji bo bikarhênerên nediyarkirî ku hîn hesabekî xwe çênekirine an jî bikarnaînin. Ji ber vê yekê divê em wan bi navnîşana IP ya hejmarî nîşan bikin. Navnîşaneke IP dikare ji aliyê gelek kesan ve were bikaranîn. Heger tu bikarhênerekî nediyarkirî bî û bawerdikî ku nirxandinên bê peywend di der barê te de hatine kirin ji kerema xwe re [[Special:UserLogin/signup|hesabekî xwe veke an jî têkeve]] da ku tu xwe ji tevlîheviyên bi bikarhênerên din re biparêzî.''",
+'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigerî]] an jî [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
+'noarticletext-nopermission' => 'Ev rûpel niha vala ye. 
+Tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] 
+an <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vê rûpelê biguherînî]</span>.',
 'userpage-userdoesnotexist' => 'Hesabê bikarhêneran "<nowiki>$1</nowiki>" nehatiye qeydkirin. Heke tu bixwazî vê rûpelê çêkî/biguherînî ji kerema xwe lê binêre.',
 'userpage-userdoesnotexist-view' => 'Hesabê bikarhêner  "$1"  nehatiye qeyd kirin.',
 'blocked-notice-logextract' => 'Ev bikarhêner hatiye astengkirin.
 Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
-'clearyourcache' => "'''Zanibe:''' Piştî tomarkirinê, tu gireke cache'a browser'î xwe dîsa wînê ji bo dîtina guherandinan. '''Mozilla / Firefor /Safari:''' Kepsa ''Shift'' bigre û li ''Reload'' xe, ya ''Ctrl-Shift-R'' bikepsîne (''Cmd-Shift-R'' li cem Apple Mac); '''IE:''' Kepsa ''Ctrl'' bigre û li ''Reload'' xe, ya li ''Ctrl-F5''; '''Konqueror:''' bes li ''Reload'' xe ya li kepsa ''F5'' xe; bikarhênerên '''Opera''' girekin belkî cache'a xwe tevda di bin ''Tools → Preferences'' da valabikin.",
+'clearyourcache' => "'''Zanibe:''' Piştî tomarkirinê, tu gireke cache'a browser'î xwe dîsa wînê ji bo dîtina guherandinan.
+* '''Firefor / Safari: ''' Kepsa ''Shift'' bigre û li ''Reload'' xe, ya ''Ctrl-Shift-R'' bikepsîne (''Cmd-Shift-R'' li cem Apple Mac)
+* '''IE:''' Kepsa ''Ctrl'' bigre û li ''Reload'' xe, ya li ''Ctrl-F5''
+* '''Konqueror:''' Bes li ''Reload'' xe ya li kepsa ''F5'' xe
+* '''Opera:''' Girekin belkî cache'a xwe tevda di bin ''Tools → Preferences'' da valabikin",
 'usercssyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS'ê te yê nuh e berî tomarkirinê.",
 'userjsyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa JS'ê te yê nuh e berî tomarkirinê.",
 'usercsspreview' => "'''Zanibe ku tu bes pêşdîtina CSS dibînî.'''
@@ -655,25 +659,26 @@ Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
 'editingcomment' => '$1 (şîrove) tê guherandin.',
 'editconflict' => 'Têkçûna guherandinan: $1',
 'explainconflict' => "Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
-Jor guhartoya heyî tê dîtîn.
-Guherandinên te jêr tên nîşan dan.
-Divê tû wan bikî yek.
-Heke niha tomar bikî, '''bi tene''' nivîsara qutiya jor wê bê tomarkirin.",
+Li jor guhertoya heyî tê dîtîn.
+Guherandinên te li jêr tên nîşandan.
+Divê tu wan bikî yek.
+Heke niha tomar bikî, '''bi tenê''' nivîsara qutiya jor wê bê tomarkirin.",
 'yourtext' => 'Nivîsara te',
 'storedversion' => 'Versiyona qeydkirî',
 'editingold' => "'''Hişyarî: Tu li ser guhertoyeke kevn a vê rûpelê dixebitî.
 Heke tu qeyd bikî, hemû guhertinên piştî vê revîzyonê winda dibin.
 '''",
 'yourdiff' => 'Cudahî',
-'copyrightwarning' => "Hişyarî: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre). Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
-Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt.
-'''BERHEMÊN MAFÊN WAN PARASTΠ(©) BÊ DESTÛR NEWEŞÎNE!'''",
+'copyrightwarning' => "Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
+Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
+Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane (''public domain'') girt.
+'''Berhemên mafên wan parastî bê destûr neweşîne!'''",
 'protectedpagewarning' => "'''Hişyarî:  Ev rûpel tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînatoriyê\" ne, dikarin vê rûpelê biguherînin.'''",
 'semiprotectedpagewarning' => "'''Hişyarî:''' Ev rûpel tê parastin, lewma bes bikarhênerên tomarkirî dikarin vê biguherînin.
 Guhertina herî dawî bi referansa li jêr hatiye piştrastkirin:",
-'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
-'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
-'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
+'templatesused' => '{{PLURAL:$1|Şablona|Şablonên}} ku li ser vê rûpelê {{PLURAL:$1|tê|tên}} bikaranîn:',
+'templatesusedpreview' => '{{PLURAL:$1|Şablona|Şablonên}} di vê pêşdîtinê de {{PLURAL:$1|tê|tên}} bikaranîn:',
+'templatesusedsection' => 'Şablonên ku di vê parçeyê de tên bikaranîn:',
 'template-protected' => '(tê parastin)',
 'template-semiprotected' => '(nîv-parastî)',
 'hiddencategories' => 'Ev rûpel endamê{{PLURAL:$1|1 hidden category|$1 hidden categories}} ye:',
@@ -696,7 +701,7 @@ Ew berê heye.',
 
 # "Undo" feature
 'undo-success' => 'Ev guherandin dikare were şûndekirin. Ji kerema xwe ferqa piştî tomarkirinê bibîne, bê ka tu dixwazî vê guhertoyê tomar bikî an na. Ger te şaşîtiyek kir, ji kerema xwe derkeve.',
-'undo-failure' => 'Ev guherandina nikane were şondakirin ji ber ku guherandinên piştî wê.',
+'undo-failure' => 'Ev guhertin ji ber guherandinên piştî wê re nikare were şûndekirin.',
 'undo-summary' => 'Guhertoya $1 ya [[Special:Contributions/$2|$2]] ([[User talk:$2|gotûbêj]]) şûnde kir',
 
 # Account creation failure
@@ -713,13 +718,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revisionasof' => 'Guhertoya $1',
 'revision-info' => 'Guhertoya $1 ya ji aliyê $2 ve',
 'previousrevision' => '←Guhertoya kevintir',
-'nextrevision' => 'Guhertoya nûtir→',
+'nextrevision' => 'Guhertoya nûtir →',
 'currentrevisionlink' => 'Guhertoya niha nîşan bide',
 'cur' => 'cudahî',
 'next' => 'pêş',
 'last' => 'berê',
-'page_first' => 'yekemîn',
-'page_last' => 'paşîn',
+'page_first' => 'ya pêşîn',
+'page_last' => 'ya paşîn',
 'histlegend' => 'Rênîşan: (cudahî) = cudahiya nav vê û versiyona niha,
 (berê) = cudahiya nav vê û ya berî vê, B = guhertina biçûk',
 'history-fieldset-title' => 'Li dîrokê bigere',
@@ -785,22 +790,23 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'compareselectedversions' => 'Guhertoyan bide ber hev',
 'showhideselectedversions' => 'Revîzyonên bijartî nîşan bide/veşêre',
 'editundo' => 'betal bike',
-'diff-multi' => '({{PLURAL:$1|Guhertoyeke di navbera herduyan de|$1 guhertoyên di navbera herduyan de}} tê(n) dîtin.)',
+'diff-multi' => '({{PLURAL:$1|Guhertoyeke|Guhertoyên {{PLURAL:$2|bikarhêner|bikarhêneran}} di navbera herduyan de}} {{PLURAL:$1|nayê|nayên}} dîtin.)',
 
 # Search results
 'searchresults' => 'Encamên lêgerînê',
 'searchresults-title' => 'Encamên lêgerrînê bo "$1"',
-'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|Searching {{SITENAME}}]].',
+'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'Te daxwaza "[[:$1]]" kir. ([[Special:Prefixindex/$1|hemî rûpelên bi "$1" dest pê dikin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hemî rûpelên ku bi "$1" ve hatine girêdan]])',
 'searchsubtitleinvalid' => "Tu li '''$1''' geriyayî",
 'titlematches' => 'Dîtinên di sernivîsên gotaran de',
 'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
 'textmatches' => 'Dîtinên di nivîsara rûpelan de',
-'notextmatches' => 'Di nivîsarê de nehat dîtin.',
+'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
 'prevn' => '{{PLURAL:$1|$1}} paş',
 'nextn' => '{{PLURAL:$1|$1}} pêş',
 'prevn-title' => '{{PLURAL:$1|result|Encamên}} pêştir $1',
 'nextn-title' => '$1 {{PLURAL:$1|encama|encamên}} pêştir',
+'shown-title' => 'Li her rûpelê $1 {{PLURAL:$1|encam|encaman}} nîşan bide',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Vebijartinên lêgerrînê',
 'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
@@ -834,7 +840,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'powersearch' => 'Lê bigere',
 'powersearch-legend' => 'Lê bigere',
 'powersearch-ns' => 'Di valahiya navan de lêbigere:',
-'powersearch-redir' => "Lîsteya redirect'an",
+'powersearch-redir' => 'Lîsteya beralîkirinan',
 'powersearch-field' => 'Bigere li',
 'powersearch-togglelabel' => 'Kontrol bike:',
 'powersearch-toggleall' => 'Hemû',
@@ -850,7 +856,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe qeyd nekir',
+'prefsnologin' => 'Xwe tomar nekir',
 'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
 'changepassword' => 'Şîfreyê biguherîne',
 'prefs-skin' => 'Pêste',
@@ -869,7 +875,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-setemail' => 'Navnîşana E-nameyê binivîse',
 'prefs-email' => 'Vebijarkên E-nameyê',
 'prefs-rendering' => 'Rû',
-'saveprefs' => 'Tercîhan qeyd bike',
+'saveprefs' => 'Tercîhan tomar bike',
 'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
@@ -908,7 +914,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'yourvariant' => 'Cuda:',
 'yournick' => 'Bernavkê nû (ji bo îmzeyê):',
 'badsig' => 'Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.',
-'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} da be.',
+'badsiglength' => 'Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} de be.',
 'yourgender' => 'Zayend:',
 'gender-male' => 'Nêr',
 'gender-female' => 'Mê',
@@ -939,7 +945,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-user-editname' => 'Navekî bikarhêneriyê binivîse:',
 'editusergroup' => 'Komên bikarhêneran biguherîne',
 'editinguser' => "Mafên bikarhêner '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) tên guhertin",
-'userrights-editusergroup' => 'Grûpên bikarhêneran biguherîne',
+'userrights-editusergroup' => 'Komên bikarhêneran biguherîne',
 'saveusergroups' => 'Komên bikarhêneran tomar bike',
 'userrights-groupsmember' => 'Endamê/a:',
 'userrights-groups-help' => 'Tu dikarî komên bikarhêneran ên vê/vî bikarhênerê/î biguherînî:
@@ -951,21 +957,21 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-nodatabase' => 'Danegeh $1 nîne an ne ya vir e.',
 'userrights-nologin' => 'Ji bo guherandina mafên bikarhêneran, divê tu bi hesabê rêveber [[Special:UserLogin|têkevî]].',
 'userrights-notallowed' => "Account'a te mafê xwe tune ye ji bo guherandina mafên bikarhêneran.",
-'userrights-changeable-col' => 'Komên tu dikarî biguherînî',
-'userrights-unchangeable-col' => 'Komên tu nikarî biguherînî',
+'userrights-changeable-col' => 'Komên ku tu dikarî biguherînî',
+'userrights-unchangeable-col' => 'Komên ku tu nikarî biguherînî',
 
 # Groups
 'group' => 'Kom',
 'group-user' => 'Bikarhêner',
 'group-bot' => 'Bot',
 'group-sysop' => 'Rêveber',
-'group-bureaucrat' => 'Bûrokrat',
+'group-bureaucrat' => 'Burokrat',
 'group-all' => '(hemû)',
 
 'group-user-member' => 'Bikarhêner',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|rêveber}}',
-'group-bureaucrat-member' => 'Burokrat',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrat}}',
 
 'grouppage-user' => '{{ns:project}}:Bikarhêner',
 'grouppage-bot' => '{{ns:project}}:Bot',
@@ -988,13 +994,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
 
 # User rights log
-'rightslog' => 'Reşahîya mafên bikarhêneran',
-'rightslogtext' => 'Ev reşahîyek ji bo guherandinên mafên bikarhêneran e.',
+'rightslog' => 'guhertina mafê bikarhêneriyê',
+'rightslogtext' => 'Ev guhertineke ji bo mafên bikarhêneriyê ye.',
 'rightslogentry' => 'grûpa bikarhêneran ji bo $1 ji $2 guherande $3',
 'rightsnone' => '(tune)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'Vê rûpelê bixwîne',
+'action-read' => 'vê rûpelê bixwîne',
 'action-edit' => 'vê rûpelê biguherîne',
 'action-createpage' => 'rûpelan çêke',
 'action-createtalk' => 'rûpelên gotûbêjan çêke',
@@ -1002,9 +1008,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'action-minoredit' => 'vê weke guhertineke biçûk nîşan bide',
 'action-move' => 'vê rûpelê bigerîne',
 'action-move-subpages' => 'vê rûpelê û binrûpelên wê bigerîne',
-'action-movefile' => "vê data'yê bigerîne",
-'action-upload' => "vê data'yê barbike",
-'action-delete' => 'vê rûpelê jêbibe',
+'action-movefile' => 'vê daneyê bigerîne',
+'action-upload' => 'vê daneyê bar bike',
+'action-delete' => 'vê rûpelê jê bibe',
 'action-deleterevision' => 'Vê revîzyonê je bibe',
 'action-deletedhistory' => 'dîroka vê rûpelê jêbirî bibîne',
 'action-browsearchive' => 'li rûpelên jêbirî bigere',
@@ -1035,22 +1041,22 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|bikarhênerek|$1 bikarhêner}} vê rûpelê {{PLURAL:$1|dişopîne|dişopînin}}.]',
 'rc_categories_any' => 'Hîç',
-'newsectionsummary' => '/* $1 */ beşeka nuh',
+'newsectionsummary' => '/* $1 */ beşeke nû',
 'rc-enhanced-expand' => 'Kitûmatan nîşan bide (JavaScript pêdivî ye)',
 'rc-enhanced-hide' => 'Kitûmatan veşêre',
 
 # Recent changes linked
-'recentchangeslinked' => 'Guherandinên peywend',
+'recentchangeslinked' => 'Guherandinên têkilîdar',
 'recentchangeslinked-feed' => 'Guherandinên peywend',
 'recentchangeslinked-toolbox' => 'Guherandinên peywend',
 'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide. Ew rûpel yê di lîsteya te ya şopandinê da ne bi nivîsa '''estûr''' tên nîşandan.",
 'recentchangeslinked-page' => 'Navê rûpelê',
 
 # Upload
-'upload' => 'Wêneyekî barbike',
-'uploadbtn' => 'Wêneyê (ya tiştekî din ya mêdya) barbike',
+'upload' => 'Wêneyekî bar bike',
+'uploadbtn' => 'Wêneyekî bar bike',
 'reuploaddesc' => 'Barkirinê biskîne û dîsa here rûpela barkirinê.',
-'uploadnologin' => 'Xwe qeyd nekir',
+'uploadnologin' => 'Xwe tomar nekir',
 'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[Special:UserLogin|têkevî]].',
 'uploaderror' => 'Çewtiya barkirinê',
 'upload-recreate-warning' => "'''Agahdarî: Peleke bi vî navî hatiye jêbirin an jî raguhestin.'''",
@@ -1066,16 +1072,17 @@ anjî ji bo file'ên dengî '''<nowiki>[[</nowiki>{{ns:media}}:File.ogg<nowiki>]
 'uploadlog' => 'Têketina barkirinê',
 'uploadlogpage' => 'Têketina barkirinê',
 'filename' => 'Navê pelê',
-'filedesc' => 'Kurte',
+'filedesc' => 'Danasîn',
 'fileuploadsummary' => 'Kurte:',
 'filereuploadsummary' => 'Guhertinên pelê:',
 'filestatus' => 'Rewşa telîfê:',
 'filesource' => 'Çavkanî:',
 'uploadedfiles' => 'Pelên barkirî',
-'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
+'ignorewarning' => 'Guh nede hişyariyê û pelê qeyd bike',
 'ignorewarnings' => 'Guh nede hişyariyan',
 'minlength1' => "Navên data'yan bi kêmani gireke tîpek be.",
-'illegalfilename' => 'Navî datayê "$1" ne tê qebûlkirin ji ber ku tişt tê da hatine nivîsandin yê qedexe ne. Xêra xwe navî datayê biguherîne û carekî din barbike.',
+'illegalfilename' => 'Navê daneya "$1" nayê qebûlkirin ji ber ku tê de tiştên qedexekirî hatine nivîsandin.
+Ji kerema xwe re navê daneyê biguherîne û carekî din bar bike!',
 'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
 'filetype-badmime' => 'Data bi formata MIME yê "$1" nameşin werin barkirin.',
 'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' formatekî nexastî ye.
@@ -1098,10 +1105,10 @@ Xêra xwe navekî din bibîne.",
 'file-thumbnail-no' => "Navî vê datayê bi '''<tt>$1</tt>''' destpêdike. Ev dibêje ku ev wêneyekî çûçik e ''(thumbnail)''. Xêra xwe seke, ku belkî versyonekî mezin yê vê wêneyê li cem te heye û wê wêneyê mezintir di bin navî orîjînal da barbike.",
 'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
 [[File:$1|thumb|center|$1]]',
-'uploadwarning' => 'Hişyara barkirinê',
+'uploadwarning' => 'Hişyariya barkirinê',
 'savefile' => 'Dosyayê tomar bike',
-'uploadedimage' => '"$1" barkirî',
-'overwroteimage' => 'versyonekî nuh ji "[[$1]]" hate barkirin',
+'uploadedimage' => '"[[$1]]" hate barkirin',
+'overwroteimage' => 'versiyonekî nû ya "[[$1]]" hate barkirin',
 'uploaddisabled' => 'Barkirin hatîye qedexekirin',
 'uploaddisabledtext' => "Barkirinê data'yan  hatiye qedexekirin.",
 'uploadvirus' => "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
@@ -1123,14 +1130,14 @@ Xêra xwe navekî din bibîne.",
 'upload-unknown-size' => 'Mezinahiya nayê zanîn',
 
 'license' => 'Lîsans:',
-'license-header' => 'Lîsens:',
-'nolicense' => 'ya hilbijartî nîne',
+'license-header' => 'Lîsans',
+'nolicense' => 'Ya hilbijartî nîne',
 'license-nopreview' => 'Pêşdîtin ne gengaz e.',
 
 # Special:ListFiles
-'listfiles_search_for' => 'Li navî wêneyê bigere:',
+'listfiles_search_for' => 'Li navê wêneyî bigere:',
 'imgfile' => 'dosye',
-'listfiles' => 'Listeya wêneyan',
+'listfiles' => 'Lîsteya wêneyan',
 'listfiles_date' => 'Dem',
 'listfiles_name' => 'Nav',
 'listfiles_user' => 'Bikarhêner',
@@ -1140,9 +1147,9 @@ Xêra xwe navekî din bibîne.",
 
 # File description page
 'file-anchor-link' => 'Wêne',
-'filehist' => 'Dîroka datayê',
+'filehist' => 'Dîroka daneyê',
 'filehist-help' => 'Ji bo dîtina guhertoya wê demê bişkoka dîrokê bitikîne.',
-'filehist-deleteall' => 'giştika jêbibe',
+'filehist-deleteall' => 'hemûyan jê bibe',
 'filehist-deleteone' => 'jê bibe',
 'filehist-revert' => 'şûnde vegerîne',
 'filehist-current' => 'niha',
@@ -1151,7 +1158,7 @@ Xêra xwe navekî din bibîne.",
 'filehist-user' => 'Bikarhêner',
 'filehist-dimensions' => 'Mezinahî',
 'filehist-filesize' => 'Mezinahiya pelê',
-'filehist-comment' => 'Nivîs',
+'filehist-comment' => 'Şîrove',
 'filehist-missing' => 'Pel nîne',
 'imagelinks' => 'Girêdanên vî wêneyî',
 'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
@@ -1159,7 +1166,7 @@ Xêra xwe navekî din bibîne.",
 'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
 'sharedupload-desc-here' => 'Ev pel ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.
 Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
-'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
+'uploadnewversion-linktext' => 'Versiyoneke nû ya vê daneyê barbike',
 'shared-repo-from' => 'ji $1',
 
 # File reversion
@@ -1221,7 +1228,7 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'statistics-users-active' => 'Bikarhênerên çalak',
 'statistics-mostpopular' => 'Rûpelên herî lênerî',
 
-'disambiguations' => 'Rûpelên cudakirinê',
+'disambiguations' => 'Rûpelên girêdayî rûpelên cudakirinê',
 'disambiguationspage' => 'Template:disambig',
 
 'doubleredirects' => 'Beralîkirinên ducarî',
@@ -1229,11 +1236,11 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 
 'brokenredirects' => 'Beralîkirinên xerabûyî',
 'brokenredirects-edit' => 'biguherîne',
-'brokenredirects-delete' => 'jêbibe',
+'brokenredirects-delete' => 'jê bibe',
 
 'withoutinterwiki' => 'Rûpelên bê girêdanên ziman',
 'withoutinterwiki-legend' => 'Pêşbendik',
-'withoutinterwiki-submit' => 'Nîşan bide',
+'withoutinterwiki-submit' => 'nîşan bide',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
@@ -1247,13 +1254,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'uncategorizedcategories' => 'Kategoriyên bê kategorî',
 'uncategorizedimages' => 'Wêneyên bê kategorî',
 'uncategorizedtemplates' => 'Şablonên bê kategorî',
-'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
-'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
+'unusedcategories' => 'Kategoriyên ku nayên bikaranîn',
+'unusedimages' => 'Wêneyên ku nayên bikaranîn',
 'popularpages' => 'Rûpelên populer',
-'wantedcategories' => 'Kategoriyên tên xwestin',
+'wantedcategories' => 'Kategoriyên ku tên xwestin',
 'wantedpages' => 'Rûpelên ku tên xwestin',
 'wantedfiles' => 'Wêneyên ku tên xwestin',
-'wantedtemplates' => 'Şablonên tên xwestin',
+'wantedtemplates' => 'Şablonên ku tên xwestin',
 'mostlinked' => 'Rûpelên bi bêhtirîn girêdan',
 'mostlinkedcategories' => 'Kategoriyên bi bêhtirîn girêdan',
 'mostcategories' => 'Rûpelên bi pir kategorî',
@@ -1273,13 +1280,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'movethispage' => 'Vê rûpelê bigerîne',
 'notargettitle' => 'Hedef tune',
 'pager-newer-n' => '{{PLURAL:$1|nûtir 1|nûtir $1}}',
-'pager-older-n' => '{{PLURAL:$1|kevintirin 1|kevintirin $1}}',
+'pager-older-n' => '{{PLURAL:$1|kevintir 1|kevintir $1}}',
 
 # Book sources
 'booksources' => 'Çavkaniyên pirtûkan',
 'booksources-search-legend' => 'Li pirtûkan bigere',
 'booksources-go' => 'Here',
-'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nuh ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
+'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nû ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
 
 # Special:Log
 'specialloguserlabel' => 'Bikarhêner:',
@@ -1307,6 +1314,7 @@ Tu dikarî ji xwe re têketinekê hilbijêrî, navê bikarhêneriyê an navê r
 'allpagesprefix' => 'Rûpelên bi pêşbendik nîşan bide:',
 'allpagesbadtitle' => 'Sernavê rûpelê qedexe bû ya "interwiki"- ya "interlanguage"-pêşnavekî xwe hebû. Meqûle ku zêdertirî tiştekî nikanin werin bikaranîn di sernavê da.',
 'allpages-bad-ns' => 'Namespace\'a "$1" di {{SITENAME}} da tune ye.',
+'allpages-hide-redirects' => 'Beralîkirinan nîşan bide',
 
 # Special:Categories
 'categories' => 'Kategorî',
@@ -1317,17 +1325,17 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'special-categories-sort-abc' => 'li gorî alfabeyê rêzkirî ye',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'Guherandinên bikarhênerekî yê jêbirî',
-'deletedcontributions-title' => 'Guherandinên bikarhênerekî yê jêbirî',
-'sp-deletedcontributions-contribs' => 'tevkarî',
+'deletedcontributions' => 'Beşdariyên bikarhênerekî yê jêbirî',
+'deletedcontributions-title' => 'Guherandinên bikarhêner yê jêbirî',
+'sp-deletedcontributions-contribs' => 'beşdari',
 
 # Special:LinkSearch
-'linksearch' => 'Girêdanên derveyî',
+'linksearch' => 'Lêgerîna girêdanên derve',
 'linksearch-ns' => 'Valahiya nav:',
-'linksearch-ok' => 'Lêbigere',
+'linksearch-ok' => 'Lêgerîn',
 
 # Special:ListUsers
-'listusers-submit' => 'Nîşan bide',
+'listusers-submit' => 'nîşan bide',
 'listusers-noresult' => 'Bikarhêner nehate dîtin.',
 'listusers-blocked' => '(hate astengkirin)',
 
@@ -1344,6 +1352,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'listgrouprights' => 'Mafên koma bikarhêner',
 'listgrouprights-group' => 'Kom',
 'listgrouprights-rights' => 'Maf',
+'listgrouprights-helppage' => 'Help:Mafên koman',
 'listgrouprights-members' => '(lîsteya endaman)',
 'listgrouprights-addgroup-all' => 'Hemû koman tevlî bike',
 'listgrouprights-removegroup-all' => 'Hemû koman jê bibe',
@@ -1351,7 +1360,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 # E-mail user
 'mailnologin' => 'Navnîşanê neşîne',
 'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
-'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
+'emailuser' => 'Ji bikarhêner re e-name bişîne',
 'emailpage' => 'E-name bikarhêner',
 'defemailsubject' => '{{SITENAME}} e-name',
 'noemailtitle' => 'Navnîşana e-name tune',
@@ -1373,17 +1382,16 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'watchlist' => 'Lîsteya min a şopandinê',
 'mywatchlist' => 'Lîsteya min a şopandinê',
 'nowatchlist' => 'Tiştek di lîsteya te ya şopandinê de tune ye.',
-'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
-'watchnologin' => 'Te xwe qeyd nekiriye.',
-'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[Special:UserLogin|qedy kiribe]].',
+'watchlistanontext' => 'Ji  kerema xwe ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê xwe $1.',
+'watchnologin' => 'Te xwe tomar nekiriye',
+'watchnologintext' => 'Ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê divê tu xwe [[Special:Userlogin|tomar bikî]].',
 'addwatch' => 'Tevlî lîsteya şopandinê bike',
-'addedwatchtext' => "Rûpela \"<nowiki>\$1</nowiki>\" çû ser [[Special:Watchlist|lîsteya te ya şopandinê]].
-Li dahatû de her guhartoyek li wê rûpelê û rûpela gotûbêjê wê were kirin li vir dêt nîşan dan,
-
-Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
-
+'addedwatchtext' => "Rûpela \"[[:\$1]]\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
+Li dahatû de her guhertoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir tê nîşandan.
+Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hêsan dîtina wê, ew rûpel bi '''Nivîsa stûr''' tê nîşandan.
 
-<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".</p>",
+Gava tu bixwazî wê rûpelê ji nav lîsteya xwe ya şopandinê derbixî, li ser wê rûpelê, \"êdî neşopîne\" bitikîne.",
 'removewatch' => 'Ji lîsteya şopandinê derxe',
 'removedwatchtext' => 'Rûpela "[[:$1]]" ji lîsteya te ya şopandinê hate jêbirin.',
 'watch' => 'Bişopîne',
@@ -1392,17 +1400,17 @@ Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina
 'unwatchthispage' => 'Êdî neşopîne',
 'notanarticle' => 'Ne gotar e',
 'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
-'watchlist-details' => '* {{PLURAL:$1|Rûpelek tê|$1 rûpel tên}} şopandin, rûpelên gotûbêjê nayên jimartin.',
+'watchlist-details' => '{{PLURAL:$1|Rûpeleka|$1 rûpel}} li ser lîsteya te ya şopandinê, rûpelên gotûbêjê nayên jimartin.',
 'wlheader-enotif' => '* Agahdariya E-nameyê pêk tê.',
-'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
+'wlheader-showupdated' => "* Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
 'watchlistcontains' => 'Di lîsteya şopandina te de {{PLURAL:$1|rûpelek heye|$1 rûpel hene}}.',
 'wlnote' => "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
-'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 (di sih rojên dawî de)',
+'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 nîşan bide',
 'watchlist-options' => 'Vebijarkên lîsteya şopandinê',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Bişopîne...',
-'unwatching' => 'Neşopîne...',
+'unwatching' => 'Neşopîne',
 
 'enotif_reset' => 'Hemû rûpelan wek lêsekirî nîşanbide',
 'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
@@ -1436,24 +1444,23 @@ Paşagahîdan û alîkaraya din:
 # Delete
 'deletepage' => 'Rûpelê jê bibe',
 'confirm' => 'Pesend bike',
-'excontent' => "Naveroka berê: '$1'",
-'excontentauthor' => "Naverroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
-'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'
-Naverroka berî betalkirinê ev bû:'$1'",
+'excontent' => 'Naveroka berê: "$1"',
+'excontentauthor' => "Naveroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
+'exbeforeblank' => 'Naverok berî betalkirinê ev bû: "$1"',
 'exblank' => 'rûpel vala bû',
 'delete-confirm' => 'Jêbirina "$1"',
-'delete-legend' => 'Jêbirin',
+'delete-legend' => 'Jê bibe',
 'historywarning' => "'''Hişyarî''': Dîrokeke vê rûpela tu dixwazî jê bibî heye:",
 'confirmdeletetext' => 'Tu kê niha rûpelekê bi tev dîroka wê jêbibê. Xêra xwe zanibe tu kê niha çi bikê û zanibe, çi di wîkîyê da yê bibe. Hên jî seke, ku ev jêbirina bi [[{{MediaWiki:Policy-url}}|mafên wîkîyê]] ra dimeşin ya na.',
 'actioncomplete' => 'Çalakî pêk hat',
 'actionfailed' => 'Çalakî têkçû',
 'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
-'dellogpage' => 'Jêbirina rûpelê',
+'dellogpage' => 'jêbirina rûpelê',
 'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
 'deletionlog' => 'jêbirina rûpelê',
 'reverted' => 'Hate şondabirin berve verzyonekî berê',
 'deletecomment' => 'Sedem:',
-'deleteotherreason' => 'Sedemekî din:',
+'deleteotherreason' => 'Sedema din:',
 'deletereasonotherlist' => 'Sedema din',
 'deletereason-dropdown' => '*Sedemên jêbirinê
 ** Daxwaziya xwedî
@@ -1464,13 +1471,14 @@ Naverroka berî betalkirinê ev bû:'$1'",
 'delete-warning-toobig' => "Dîroka vê rûpelê pir mezin e, zêdetirî $1 guherandin. Jêbirina van rûpelan dikarin şaşbûnan di database'ê {{SITENAME}} da çêkin; zandibe tu çi dikê!",
 
 # Rollback
-'rollback_short' => 'Bizivirîne pêş',
-'rollbacklink' => 'bizivirîne pêş',
-'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
+'rollback_short' => 'bizîvirîne pêş',
+'rollbacklink' => 'bizîvirîne pêş',
+'cantrollback' => 'Guherto naye vegerandin;
+bikarhênerê dawî, tenya nivîskarê vê rûpelê ye.',
 'alreadyrolled' => 'Guherandina dawiya [[$1]]
-bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
+bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; kesekî din ew rûpel zîvirandiye an guherandiye.
 
-Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
+Guhertoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".",
 'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
 'rollback-success' => 'Guherandina $1 şondakir; dîsa guharte verzyona $2.',
@@ -1479,7 +1487,7 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'protectlogpage' => 'Têketina parastinê',
 'protectedarticle' => 'parastî [[$1]]',
 'modifiedarticleprotection' => 'parastina "[[$1]]" guherand',
-'unprotectedarticle' => '"[[$1]]" niha vê parastin e',
+'unprotectedarticle' => 'parastina "[[$1]]" rakir',
 'protect-title' => 'parastina "$1" biguherîne',
 'prot_1movedto2' => '$1 çû cihê $2',
 'protect-legend' => 'Parastinê teyîd bike',
@@ -1490,7 +1498,7 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'protect-default' => 'Destûrê bide hemû bikarhêneran',
 'protect-level-autoconfirmed' => 'Bikarhênerên neqeydkirî astengbike',
 'protect-level-sysop' => 'Tenê rêveber (admîn)',
-'protect-expiring' => 'heta rojê $1 (UTC)',
+'protect-expiring' => 'heta roja $1 (UTC)',
 'protect-expiring-local' => 'di $1 de dema wê xilas dibe',
 'protect-othertime' => 'Demeke din:',
 'protect-othertime-op' => 'dema din',
@@ -1513,13 +1521,14 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'restriction-level-autoconfirmed' => 'nîv-parastî',
 
 # Undelete
-'undelete' => 'Li rûpelên jêbirî seke',
+'undelete' => 'Li rûpelên jêbirî binêre',
 'undeletepage' => 'Rûpelên jêbirî bibîne û dîsa çêke',
-'viewdeletedpage' => 'Rûpelên vemirandî seke',
+'viewdeletedpage' => 'Li rûpelên jêbirî binêre',
 'undeletepagetext' => 'Rûpelên jêr hatine jêbirin, lê ew hên di arşîvê da ne û dikarin dîsa werin çêkirin. Ev arşîva piştî demekê tê pakkirin.',
 'undeleteextrahelp' => "Ji bo dîsaçêkirina vê rûpelê, li checkbox'an nexe û li '''''Dîsa çêke''''' klîk bike. Eger tu naxazî ku hemû verzyon dîsa werin çêkirin, li checkbox'ên wan verzyonan xe, yê tu dixazî dîsa çêkê û paşê li '''''Dîsa çêke'''' klîk bike. Eger tu li '''''Biskine''''' xê, hemû checkbox û cihê sedemê yê werin valakirin.",
 'undeleterevisions' => '$1 {{PLURAL:$1|rêvîzyonek çû|rêvîzyon çûn}} arşîv',
-'undeletehistory' => 'Eger tu vê rûpelê dîsa çêkê, hemû rêvîzyon ê dîsa di dîrokê da werin çêkirin. Eger rûpeleka nuh ji dema jêbirinê da hatîye çêkirin, ew rêvîzyon ê werin pêşî diroka nuh.',
+'undeletehistory' => 'Ger tu vê rûpelê dîsa çêkî, hemû guherto wê dîsa di dîrokê de werin çêkirin.
+Ger rûpeleke nû di dema jêbirinê de hatibe çêkirin, ew guherto wê were pêşiya diroka nû.',
 'undelete-revision' => 'Rêvîzyonên jêbirî yê $1 (di $2) ji $3:',
 'undelete-nodiff' => 'Guhertoyên berê nehatin dîtin.',
 'undeletebtn' => 'Dîsa çêke!',
@@ -1528,15 +1537,15 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'undeletereset' => 'Nû bike',
 'undeleteinvert' => 'Hilbijartinê şûnde vegerîne',
 'undeletecomment' => 'Sedem:',
-'undeletedrevisions' => '{{PLURAL:$1|Verzyonek dîsa hate|$1 verzyon dîsa hatin}} çêkirin',
-'undeletedrevisions-files' => '{{PLURAL:$1|Verzyonek|$1 verzyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
+'undeletedrevisions' => '{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin',
+'undeletedrevisions-files' => '{{PLURAL:$1|Versiyonek|$1 versiyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
 'undeletedfiles' => '{{PLURAL:$1|Medyayek hate|$1 medya hatin}} çêkirin',
 'undeletedpage' => "'''$1 dîsa hate çêkirin'''
 
-Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşahîya jêbirinê]] da seke.",
-'undelete-header' => '[[Special:Log/delete|Reşahîya jêbirinê]] bibîne ji bo rûpelên jêbirî.',
-'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
-'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
+Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/delete|Jêbirina têketinê]] binêre.",
+'undelete-header' => 'Ji bo rûpelên dawî hatine jêbirin, li [[Special:Log/delete|Jêbirina têketinê]] binêre.',
+'undelete-search-box' => 'Li rûpelên jêbirî bigere',
+'undelete-search-prefix' => 'Rûpela nîşandanê bi vê destpêdike:',
 'undelete-search-submit' => 'Lêgerîn',
 'undelete-show-file-submit' => 'Erê',
 
@@ -1552,32 +1561,32 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
 'mycontris' => 'Beşdariyên min',
 'contribsub2' => 'Ji bo $1 ($2)',
 'uctop' => '(ser)',
-'month' => 'Ji mehê (û zûtir):',
-'year' => 'Ji salê (û zûtir):',
+'month' => 'Ji meha (û zûtir):',
+'year' => 'Ji sala (û zûtir):',
 
 'sp-contributions-newbies' => 'Tenê beşdariyên bikarhênerên nû nîşan bide',
 'sp-contributions-newbies-sub' => 'Ji bikarhênerên nû re',
 'sp-contributions-newbies-title' => 'Tevkariyên bikarhêner ji bo hesabên nû',
-'sp-contributions-blocklog' => 'Astengkirina bikarhêner',
-'sp-contributions-deleted' => 'Guherandinên bikarhênerekî yê jêbirî',
+'sp-contributions-blocklog' => 'Astengkirina têketinê',
+'sp-contributions-deleted' => 'beşdariyên bikarhêner yên jêbirî',
 'sp-contributions-uploads' => 'yên barkirî',
 'sp-contributions-logs' => 'têketin',
 'sp-contributions-talk' => 'gotûbêj',
 'sp-contributions-userrights' => 'Îdarekirina mafên bikarhêneran',
 'sp-contributions-search' => 'Li beşdariyan bigere',
-'sp-contributions-username' => 'Adresê IP ya navî bikarhêner:',
+'sp-contributions-username' => "Adresa IP'yê yan navê bikarhêner:",
 'sp-contributions-submit' => 'Lêgerîn',
 
 # What links here
 'whatlinkshere' => 'Girêdanên li ser vê rûpelê',
 'whatlinkshere-title' => 'Rûpelan, yê berve $1 tên',
 'whatlinkshere-page' => 'Rûpel:',
-'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
-'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
+'linkshere' => "Ev rûpel tên ser vê rûpelê '''[[:$1]]''':",
+'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''[[:$1]]'''.",
 'nolinkshere-ns' => "Ne lînkek berve '''[[:$1]]''' di vê namespace'a da tê.",
 'isredirect' => 'rûpelê beralî bike',
 'istemplate' => 'tê bikaranîn',
-'isimage' => 'lînka wêneyê',
+'isimage' => 'girêdana wêneyî',
 'whatlinkshere-prev' => '{{PLURAL:$1|yê|$1 yên}} berê',
 'whatlinkshere-next' => '{{PLURAL:$1|yê|$1 yên}} din',
 'whatlinkshere-links' => '← girêdan',
@@ -1599,7 +1608,7 @@ Sedemekê binivîse!',
 'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
 'ipbexpiry' => 'Dem:',
 'ipbreason' => 'Sedem',
-'ipbreasonotherlist' => 'Sedemekî din',
+'ipbreasonotherlist' => 'Sedemeke din',
 'ipbreason-dropdown' => '*Sedemên astengkirinê
 ** vandalîzm
 ** agahiya şaş kire gotarekê
@@ -1611,17 +1620,17 @@ Sedemekê binivîse!',
 ** navekî ku nayê pejirandin',
 'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
 'ipbemailban' => 'Ji bo şandina e-nameyan qedexe bike.',
-'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
+'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nû yê vê bikarhênerê astengbike.",
 'ipbsubmit' => 'Vê bikarhêner asteng bike',
 'ipbother' => 'Demekî din:',
-'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
+'ipboptions' => '2 saet:2 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 meh:1 month,3 meh:3 months,6 meh:6 months,1 sal:1 year,ji her demê re:infinite',
 'ipbotheroption' => 'yên din',
-'ipbotherreason' => 'Sedemekî din',
-'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
+'ipbotherreason' => 'Sedemeke din',
+'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nû û lîsteya bikarhêneran veşêre',
 'ipbwatchuser' => 'Rûpelên bikarhêner û gotûbêjê bişopîne',
 'ipb-confirm' => 'Astengkirinê piştrast bike',
 'badipaddress' => 'Bikarhêner bi vî navî tune',
-'blockipsuccesssub' => 'Astengkirin serkeftî bû',
+'blockipsuccesssub' => 'Astengkirin pêkhat',
 'blockipsuccesstext' => '"$1" hat asteng kirin.
 <br />Bibîne [[Special:BlockList|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
 'ipb-edit-dropdown' => 'Sedemên astengkirinê',
@@ -1631,12 +1640,12 @@ Sedemekê binivîse!',
 'ipb-blocklist-contribs' => 'Beşdariyên ji bo $1',
 'unblockip' => "IP'yekê dîsa veke",
 'unblockiptext' => "Nivîsara jêr bikarwîne ji bo qebûlkirina nivîsandinê bikarhênerekî ya IP'yeka berê astengkirî.",
-'ipusubmit' => 'Astengkirina vê adrêsê rake',
+'ipusubmit' => 'Vê astengkirinê rake',
 'unblocked' => '[[User:$1|$1]] niha vê astengkirinê ye',
 'unblocked-id' => '$1 dîsa vê astengkirinê ye',
 'blocklist' => 'Bikarhênerên astengkirî',
 'ipblocklist' => "Listek ji adresên IP'yan û bikarhêneran yê hatine astengkirin",
-'ipblocklist-legend' => 'Bikarhênerekî astengkirî bibîne',
+'ipblocklist-legend' => 'Bikarhênerên astengkirî bibîne',
 'blocklist-userblocks' => 'Astengkirina hesaban veşêre',
 'blocklist-tempblocks' => 'Astengkirinên demkî veşêre',
 'blocklist-rangeblocks' => 'Astengkirinên cur bi cur veşêre',
@@ -1660,9 +1669,9 @@ Sedemekê binivîse!',
 'change-blocklink' => 'Astengkirinê biguherîne',
 'contribslink' => 'beşdarî',
 'emaillink' => 'e-name bişîne',
-'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Otomatîk hate astengkirin ji ber ku IP\'ya wê û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'$2\'\'"',
 'blocklogpage' => 'Astengkirina têketinê',
-'blocklogentry' => '"[[$1]]" ji bo dema $2 $3 hatîye asteng kirin',
+'blocklogentry' => '"[[$1]]" ji bo dema $2, $3 asteng kir',
 'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:BlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
 'unblocklogentry' => 'astenga "$1" betalkir',
 'block-log-flags-anononly' => 'bes bikarhênerên neqeydkirî',
@@ -1671,7 +1680,7 @@ Sedemekê binivîse!',
 'block-log-flags-noemail' => 'Şandina e-nameyan hatîye qedexekirin',
 'block-log-flags-nousertalk' => 'nikare gotûbêja xwe biguherîne',
 'block-log-flags-hiddenname' => 'navê bikarhêneriyê yê veşartî',
-'ipb_expiry_invalid' => 'Dem ne serrast e.',
+'ipb_expiry_invalid' => 'Dem ne serast e.',
 'ipb_already_blocked' => '"$1" berê hatîye astengkirin',
 'ipb-needreblock' => '$1 berê hatiye astengkirin. Tu dixwazî eyaran biguherînî?',
 'ipb_cant_unblock' => "Şaşbûn: ID'ya astengkirinê $1 nehate dîtin. Astengkirinê xwe niha belkî hatîye rakirin.",
@@ -1692,16 +1701,16 @@ Sedemekê binivîse!',
 # Move page
 'move-page' => '$1 bigerîne',
 'move-page-legend' => 'Vê rûpelê bigerîne',
-'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
+'movepagetalktext' => "Rûpela '''gotûbêjê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
 
-*berê guftûgoyek bi wê navê hebe ya
+*berê gotûbêjek bi wî navî hebe ya
 *tu tiştekî jêr hilbijêrê.
 
 Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
 
-Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
+Xêra xwe navê nû û sedemê navgerandinê binivisîne.",
 'movearticle' => 'Rûpelê bigerîne',
-'movenologin' => 'Xwe qeyd nekir',
+'movenologin' => 'Xwe tomar nekir',
 'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]
 da bikarî navê wê rûpelê biguherînî.',
 'movenotallowed' => 'Mafên te bo guherandina navên gotaran tune ye.',
@@ -1722,7 +1731,7 @@ da bikarî navê wê rûpelê biguherînî.',
 'movepage-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
 'movepage-page-moved' => 'Rûpela $1 çû cihê $2.',
 'movepage-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
-'movelogpage' => 'Nav guherandin',
+'movelogpage' => 'guhertina nav',
 'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
 'movereason' => 'Sedem',
 'revertmove' => 'şûnde vegerîne',
@@ -1730,7 +1739,7 @@ da bikarî navê wê rûpelê biguherînî.',
 'delete_and_move_text' => '== Jêbirin gireke ==
 
 Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê ra?',
-'delete_and_move_confirm' => 'Erê, wê rûpelê jêbibe',
+'delete_and_move_confirm' => 'Erê, rûpelê jê bibe',
 'delete_and_move_reason' => 'Jêbir ji bo navguherandinê',
 'immobile-source-page' => 'Navê vê rûpelê nikare were guherandin.',
 
@@ -1741,13 +1750,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'export-download' => 'Weka dosyeyê qeyd bike',
 
 # Namespace 8 related
-'allmessages' => 'Hemû mesajên sîstemê',
+'allmessages' => 'Hemû peyamên sîstemê',
 'allmessagesname' => 'Nav',
 'allmessagescurrent' => 'Nivîsa niha',
-'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
+'allmessagestext' => 'Lîsteya hemû peyamên MediaWikiyê.',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikare were bikaranîn ji ber ku '''\$wgUseDatabaseMessages''' hatiye jêbirin.",
 'allmessages-filter-legend' => 'Parzûn',
 'allmessages-filter-unmodified' => 'Neguhertî',
-'allmessages-filter-all' => 'hemû',
+'allmessages-filter-all' => 'Hemû',
 'allmessages-filter-modified' => 'Guhertî',
 'allmessages-language' => 'Ziman',
 'allmessages-filter-submit' => 'Gotar',
@@ -1783,7 +1793,8 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-ca-talk' => 'Gotûbêj li ser rûpela naverokê',
 'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
 'tooltip-ca-addsection' => 'Beşekê zêde bike.',
-'tooltip-ca-viewsource' => 'Ev rûpela tê parastin. Tu dikarê bes li çavkanîyê sekê.',
+'tooltip-ca-viewsource' => 'Ev rûpel tê parastin.
+Tu dikarî tenê li çavkaniyê binêrî.',
 'tooltip-ca-history' => 'Guhertoyên berê yên vê rûpelê',
 'tooltip-ca-protect' => 'Vê rûpelê biparêze',
 'tooltip-ca-unprotect' => 'Parastina vê rûpelê rake',
@@ -1794,14 +1805,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-search' => 'Li {{SITENAME}} bigere',
 'tooltip-search-go' => 'Here rûpeleke tev bi vî navî, heke hebe',
 'tooltip-search-fulltext' => 'Di nav rûpelan de li vê nivîsê bigerre',
-'tooltip-p-logo' => 'Biçe Destpêkê',
-'tooltip-n-mainpage' => 'Biçe Destpêkê',
-'tooltip-n-mainpage-description' => 'Biçe Destpêkê',
+'tooltip-p-logo' => 'Here Destpêkê',
+'tooltip-n-mainpage' => 'Here Destpêkê',
+'tooltip-n-mainpage-description' => 'Here Destpêkê',
 'tooltip-n-portal' => 'Agahdarî li ser {{SITENAME}}, tu dikarî çi bikî, tu dikarî çi li ku bîbînî',
-'tooltip-n-recentchanges' => "Lîsteya guherandinên dawî di vê Wîkî'yê da.",
+'tooltip-n-recentchanges' => 'Lîsteya guherandinên dawî di vê wîkiyê da',
 'tooltip-n-randompage' => 'Rûpeleka ketober bar bike',
 'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
-'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
+'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku pê ve girêdayî ne',
 'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
 'tooltip-feed-rss' => "RSS feed'ên ji bo rûpelê",
 'tooltip-feed-atom' => "Atom feed'ên ji bo vê rûpelê",
@@ -1811,18 +1822,18 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-t-specialpages' => 'Lîsteya hemû rûpelên taybetî',
 'tooltip-t-print' => 'Versiyona çapkirinê ya vê rûpelê',
 'tooltip-ca-nstab-main' => 'Li rûpela naverokê binêre',
-'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
+'tooltip-ca-nstab-user' => 'Rûpela bikarhêner bibîne',
 'tooltip-ca-nstab-special' => 'This is a special page, you can',
 'tooltip-ca-nstab-project' => 'Li rûpelê projektê seke',
 'tooltip-ca-nstab-image' => 'Rûpela dosyeyê bibîne',
-'tooltip-ca-nstab-template' => 'Şablonê nîşanbide',
+'tooltip-ca-nstab-template' => 'Şablonê nîşan bide',
 'tooltip-ca-nstab-help' => 'Rûpela alîkariyê bibîne',
 'tooltip-ca-nstab-category' => 'Li rûpelê kategorîyê seke',
 'tooltip-minoredit' => 'Vê guherandinê weka biçûk îşaret bike',
 'tooltip-save' => 'Guherandinên xwe tomarbike',
 'tooltip-preview' => 'Guherandinên xwe bibîne, berî ku tu wî qeyd bikî!',
 'tooltip-diff' => 'Guherandinên ku te di nivîsê de kirîyî nîşan bide',
-'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne.',
+'tooltip-compareselectedversions' => 'Cudatiyên guhertoyên hilbijartî yên vê rûpelê bibîne.',
 'tooltip-watch' => 'Vê rûpelê têke nav lîsteya te ya şopandinê',
 'tooltip-upload' => 'Barkirinê destpêke',
 
@@ -1834,13 +1845,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Attribution
 'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
-'siteuser' => 'Bikarhênera/ê $1 a/ê {{SITENAME}}',
+'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
 'others' => 'ên din',
 'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
 
 # Spam protection
 'spamprotectiontitle' => 'Parastina spam',
-'spamprotectiontext' => 'Ew rûpela yê tu dixast tomarbikê hate astengkirin ji ber ku parastina spam. Ew çêbû ji ber ku lînkekî derva di vê rûpelê da ye.',
+'spamprotectiontext' => 'Rûpela ku tu dixwazî tomar bikî ji ber parastina spamê hate astengkirin.
+Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'spamprotectionmatch' => 'Ev nivîsa parastinê spam vêxist: $1',
 
 # Info page
@@ -1854,8 +1866,8 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'pageinfo-views' => 'Hejmara dîtinê',
 
 # Patrolling
-'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
-'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşanbide',
+'markaspatrolleddiff' => 'Wek serrastkirî nîşan bide',
+'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşan bide',
 'markedaspatrolled' => 'Wek serrastkirî tê nîşandan',
 'markedaspatrolledtext' => 'Guherandina rûpelê wek serrastkirî tê nîşandan.',
 
@@ -1864,8 +1876,8 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Image deletion
 'deletedrevision' => 'Guhertoya berê $1 hate jêbirin.',
-'filedelete-missing' => 'Data\'yê "$1" nikane were jêbirin, ji ber ku ew tune.',
-'filedelete-current-unregistered' => 'Datayê "$1" di sistêmê da tune.',
+'filedelete-missing' => 'Dane "$1" nikare were jêbirin, ji ber ku ew tune ye.',
+'filedelete-current-unregistered' => 'Daneya "$1" li sîstemê tune ye.',
 
 # Browsing diffs
 'previousdiff' => '← Cudahiya pêştir',
@@ -1875,7 +1887,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'thumbsize' => 'Mezinahiya wêne:',
 'widthheight' => '$1 x $2',
 'widthheightpage' => '$1 × $2, $3 rûpel',
-'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
+'file-info' => 'mezinbûna daneyê: $1, MIME type: $2',
 'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
 'file-nohires' => 'Versyonekî jê mezintir tune.',
 'svg-long-desc' => 'Daneya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna daneyê: $3',
@@ -1890,11 +1902,11 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'noimages' => 'Ne tiştek tê dîtin.',
 'ilsubmit' => 'Lêgerîn',
 'bydate' => 'li gor dîrokê',
-'sp-newimages-showfrom' => "Data'yên nuh ji dema $1, saet $2 da bibîne",
+'sp-newimages-showfrom' => 'Daneyên nû ji dema $1, saet $2 ve bibîne',
 
 # Variants for Kurdish language
-'variantname-ku-arab' => 'tîpên erebî',
-'variantname-ku-latn' => 'tîpên latînî',
+'variantname-ku-arab' => 'Tîpên erebî',
+'variantname-ku-latn' => 'Tîpên latînî',
 'variantname-ku' => 'disable',
 
 # Metadata
@@ -1906,7 +1918,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'exif-imagewidth' => 'Panbûn',
 'exif-imagelength' => 'Dirêjbûn',
 'exif-jpeginterchangeformatlength' => "Byte'ên daneya JPEG",
-'exif-imagedescription' => 'Navî wêneyê',
+'exif-imagedescription' => 'Navê wêne',
 'exif-model' => 'Modela kamerayê',
 'exif-artist' => 'Nûser',
 'exif-pixelydimension' => 'Firehiya wêne',
@@ -1982,15 +1994,15 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hemû',
-'namespacesall' => 'Hemû',
-'monthsall' => 'giştik',
+'namespacesall' => 'hemû',
+'monthsall' => 'hemû',
 'limitall' => 'hemû',
 
 # E-mail address confirmation
 'confirmemail' => 'Adrêsa e-nameyan nasbike',
-'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandîye.',
+'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandiye.',
 'confirmemail_success' => 'E-Mail adrêsa te hate naskirin. Tu niha dikarî xwe qeydbikê û kêfkê.',
-'confirmemail_loggedin' => 'Adrêsa te yê E-Mail hate qebûlkirin.',
+'confirmemail_loggedin' => 'Navnîşana te ya E-Nameyê hate qebûlkirin.',
 'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
 
 Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
@@ -2004,14 +2016,14 @@ Lê eger ev *ne* tu bû, li lînkê netikîne. Ev e-nameya di rojê $4 da netê
 'scarytranscludetoolong' => '[URL zêde dirêj e; bibore]',
 
 # Delete conflict
-'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
+'deletedwhileediting' => "'''Hişyarî:''' Piştî te dest bi guherandinê kir ev rûpel hate jêbirin!",
 'confirmrecreate' => "Piştî te dest bi guherandinê kir, bikarhêner [[User:$1|$1]] ([[User talk:$1|gotûbêj]]) ev rûpel jê bir. Sedema jêbirinê ev bû:
 : ''$2''
 Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'recreate' => 'Dîsa çêke',
 
 # action=purge
-'confirm_purge_button' => 'Temam',
+'confirm_purge_button' => 'Baş e',
 'confirm-purge-top' => 'Bîra vê rûpelê jêbîbe ?',
 
 # Multipage image navigation
@@ -2021,24 +2033,24 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'imgmultigoto' => 'Here rûpela $1',
 
 # Table pager
-'table_pager_next' => 'Rûpelê din',
-'table_pager_prev' => 'Rûpelê berî',
-'table_pager_first' => 'Rûpelê yekemîn',
-'table_pager_last' => 'Rûpelê dawî',
-'table_pager_limit_submit' => 'Biçe',
+'table_pager_next' => 'Rûpela pêş',
+'table_pager_prev' => 'Rûpela berî',
+'table_pager_first' => 'Rûpela pêşîn',
+'table_pager_last' => 'Rûpela dawî',
+'table_pager_limit_submit' => 'Here',
 
 # Auto-summaries
 'autosumm-blank' => 'Rûpel hate vala kirin',
 'autosumm-replace' => "'$1' ket şûna rûpelê.",
 'autoredircomment' => 'ji bo [[$1]] hate beralîkirin',
-'autosumm-new' => 'Rûpela nû: $1',
+'autosumm-new' => 'Rûpela nû: "$1"',
 
 # Live preview
 'livepreview-loading' => 'Tê…',
 'livepreview-ready' => 'Bar dibe… Amade ye!',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Xeyrandin yê piştî $1 sanîyan hatine çêkirin belkî netên wêşendan.',
+'lag-warn-normal' => 'Sererastkirinên piştî $1 çirkeyan hatine çêkirin belkî neyên weşandin.',
 'lag-warn-high' => 'Ji bo westinê sistêmê ew xeyrandin, yê piştî $1 sanîyan hatine çêkirin netên wêşendan.',
 
 # Watchlist editor
@@ -2047,7 +2059,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'watchlistedit-normal-title' => 'Lîsteya xwe ya şopandinê biguherîne',
 'watchlistedit-normal-legend' => 'Gotaran ji lîsteya min ya şopandinê rake',
 'watchlistedit-normal-submit' => 'Gotaran jê bibe',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotaran hatin}} jêbirin ji lîsteya te yê şopandinê:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin ji lîsteya te yê şopandinê:',
 'watchlistedit-raw-titles' => 'Sernav:',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin:',
 
@@ -2073,7 +2085,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Navê dosyeyê:',
-'fileduplicatesearch-submit' => 'Lêbigere',
+'fileduplicatesearch-submit' => 'Lê bigere',
 
 # Special:SpecialPages
 'specialpages' => 'Rûpelên taybet',
@@ -2082,7 +2094,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 * <strong class="mw-specialpagerestricted">Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra</strong>',
 'specialpages-group-other' => 'Rûpelên taybetî yên din',
 'specialpages-group-login' => 'Têkeve',
-'specialpages-group-changes' => 'Guherandinên dawî û reşahîyan',
+'specialpages-group-changes' => 'Guherandinên dawî û têketin',
 'specialpages-group-media' => 'Nameyên medyayan û barkirinan',
 'specialpages-group-users' => 'Bikarhêner û maf',
 'specialpages-group-pages' => 'Lîstên rûpelan',
index 9b8b641..d41c07b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Cornish (Kernowek)
+/** Cornish (kernowek)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 47cb98d..726c146 100644 (file)
@@ -10,6 +10,7 @@
  * @author AidaBishkek
  * @author Aidabishkek
  * @author Amire80
+ * @author Chorobek
  * @author Muratjumashev
  * @author Ztimur
  */
@@ -36,15 +37,15 @@ $messages = array(
 'tog-usenewrc' => 'Акыркы өзгөрүүлөрдүн жакшыртылган тизмесин колдонуу (JavaScript талап кылынат)',
 'tog-numberheadings' => 'Башсаптарды автоматтык түрдө номурлоо',
 'tog-showtoolbar' => 'Оңдоо учурунда аспаптар тактасын көрсөтүү (JavaScript талап кылынат)',
-'tog-editondblclick' => 'Ð\9aоÑ\88 Ñ\87еÑ\80Ñ\82Ò¯Ò¯ Ð¼ÐµÐ½ÐµÐ½ баракты оңдоо (JavaScript талап кылынат)',
+'tog-editondblclick' => 'Эки Ð±Ð°Ñ\81Ñ\8bп баракты оңдоо (JavaScript талап кылынат)',
 'tog-editsection' => 'Ар бир секция үчүн «оңдоо» шилтемеси',
 
-'underline-always' => 'Ð\90Ñ\80 Ð´айым',
+'underline-always' => 'Ð\94айым',
 'underline-never' => 'Эч качан',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Оңдоо талаасынын арибинин стили:',
-'editfont-default' => 'Ð\90Ñ\80алагÑ\8bÑ\87Ñ\82Ñ\8bн Ð°Ñ\80ибин ÐºÐ»Ð´Ð¾Ð½Ñ\83Ñ\83',
+'editfont-default' => 'СеÑ\80епÑ\87инин Ð°Ñ\80ибин ÐºÐ¾Ð»Ð´Ð¾Ð½',
 'editfont-monospace' => 'Моножазы ариби',
 
 # Dates
@@ -102,7 +103,7 @@ $messages = array(
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категориялар}}',
 'category_header' => '"$1" категориядагы барактар',
-'subcategories' => 'Ð\9aөмөк категориялар',
+'subcategories' => 'Ð\98Ñ\87ки категориялар',
 'category-media-header' => '"$1" категориясындагы медиафайлдар',
 'category-empty' => "''Бул категорияда азыр эч бир барак же файл жок.''",
 'hidden-categories' => '{{PLURAL:$1|Жашырылган категория|Жашырылган категориялар}}',
@@ -115,8 +116,8 @@ $messages = array(
 'category-file-count-limited' => 'Бул категорияда {{PLURAL:$1|$1|$1|$1}} файл бар.',
 'listingcontinuesabbrev' => 'уланд.',
 'index-category' => 'Индекстелген барактар',
-'noindex-category' => 'Иреттелбеген барактар',
-'broken-file-category' => 'Файлдарга туура эмес шилтемелүү барактар',
+'noindex-category' => 'Индекстелбеген барактар',
+'broken-file-category' => 'Файлдарга туура эмес шилтеме берген барактар',
 
 'about' => 'Тууралуу',
 'article' => 'Макала',
@@ -124,14 +125,14 @@ $messages = array(
 'cancel' => 'Жокко чыгар',
 'moredotdotdot' => 'Уландысы...',
 'mypage' => 'Барагым',
-'mytalk' => 'Талкуум',
+'mytalk' => 'ТалкÑ\83Ñ\83лаÑ\80Ñ\8bм',
 'anontalk' => 'Бул IP дарек үчүн талкуу',
-'navigation' => 'Багыттоо',
+'navigation' => 'Багыт алуу',
 'and' => '&#32;жана',
 
 # Cologne Blue skin
-'qbfind' => 'Издөө',
-'qbbrowse' => 'Ð\9aаÑ\80оо',
+'qbfind' => 'Изде',
+'qbbrowse' => 'СеÑ\80еп Ñ\81ал',
 'qbedit' => 'Оңдоо',
 'qbpageoptions' => 'Бул барак',
 'qbpageinfo' => 'Контекст',
@@ -151,7 +152,7 @@ $messages = array(
 'vector-view-edit' => 'Оңдо',
 'vector-view-history' => 'Тарыхын кара',
 'vector-view-view' => 'Оку',
-'vector-view-viewsource' => 'Ð\91айкоо',
+'vector-view-viewsource' => 'Ð\9aайнаÑ\80Ñ\8bн ÐºÐ°Ñ\80а',
 'actions' => 'Аракеттер',
 'namespaces' => 'Аталыш топтому',
 'variants' => 'Варианттар',
@@ -223,8 +224,8 @@ $messages = array(
 'mainpage-description' => 'Башбарак',
 'portal' => 'Жамаат порталы',
 'portal-url' => 'Project:Жамаат порталы',
-'privacy' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83ндÑ\83Ñ\83лÑ\83к Ñ\82аÑ\80Ñ\82иби',
-'privacypage' => 'Project:Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83ндÑ\83Ñ\83лÑ\83к Ñ\82аÑ\80Ñ\82иби',
+'privacy' => 'Ð\9cаалÑ\8bмаÑ\82Ñ\82Ñ\8b ÐºÑ\83пÑ\83Ñ\8f Ñ\81акÑ\82оо Ñ\81аÑ\8fÑ\81аÑ\82Ñ\8b',
+'privacypage' => 'Project:Ð\9cаалÑ\8bмаÑ\82Ñ\82Ñ\8b ÐºÑ\83пÑ\83Ñ\8f Ñ\81акÑ\82оо Ñ\81аÑ\8fÑ\81аÑ\82Ñ\8b',
 
 'retrievedfrom' => '"$1" булагындан алынды',
 'youhavenewmessages' => 'Сизге $1 ($2) бар.',
@@ -249,10 +250,10 @@ $messages = array(
 'nstab-main' => 'Макала',
 'nstab-user' => 'Колдонуучунун барагы',
 'nstab-special' => 'Атайын барак',
-'nstab-project' => 'Долбоор барагы',
+'nstab-project' => 'Долбоордун барагы',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Билдирүү',
-'nstab-template' => 'Ð\9dÑ\83Ñ\81ка',
+'nstab-template' => 'Ð\9aалÑ\8bп',
 'nstab-help' => 'Жардам',
 'nstab-category' => 'Категория',
 
@@ -280,7 +281,7 @@ $messages = array(
 'badtitle' => 'Ыксыз аталыш',
 'badtitletext' => 'Талап кылынган барак аталышы туура эмес, бош, же тилдер-аралык же уики-аралык аталышы туура эмес шилтемеленген.
 Балким аталышта колдонулбай турган бир же андан көп белги камтылган.',
-'viewsource' => 'Ð\91айкоо',
+'viewsource' => 'Ð\9aайнаÑ\80Ñ\8bн ÐºÐ°Ñ\80а',
 
 # Login and logout pages
 'welcomecreation' => '== Кош келиңиз, $1! ==
@@ -289,21 +290,29 @@ $messages = array(
 'yourname' => 'Колдонуучунун аты',
 'yourpassword' => 'Сырсөз',
 'yourpasswordagain' => 'Сырсөздү кайра жазыңыз',
-'remembermypassword' => 'Ð\91Ñ\83л Ð±Ñ\80аÑ\83зеÑ\80де ÐºÐ°Ñ\82Ñ\82оо Ð¶Ð°Ð·Ñ\83Ñ\83мдÑ\83 Ñ\8dÑ\81Ñ\82е тут (эң көп $1 {{PLURAL:$1|күн|күн}})',
+'remembermypassword' => 'Ð\91Ñ\83л Ð±Ñ\80аÑ\83зеÑ\80де ÐºÐ°Ñ\82Ñ\82оо Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82Ñ\82аÑ\80Ñ\8bмдÑ\8b Ñ\8dÑ\81ке тут (эң көп $1 {{PLURAL:$1|күн|күн}})',
 'yourdomainname' => 'Сиздин домен',
 'login' => 'Кирүү',
 'nav-login-createaccount' => 'Кирүү / Каттоо',
 'loginprompt' => '{{SITENAME}} сайтына кирүү үчүн «cookies» колдонууга уруксатыңыз керек .',
 'userlogin' => 'Кирүү / Каттоо',
+'userloginnocreate' => 'Кирүү',
 'logout' => 'Чыгуу',
 'userlogout' => 'Чыгуу',
+'notloggedin' => 'Сиз системага кире элексиз',
 'nologin' => 'Каттала элексизби? $1.',
 'nologinlink' => 'Каттоону башта',
 'createaccount' => 'Жаңы колдонуучуну катта',
 'gotaccount' => 'Катталгансызбы? $1.',
 'gotaccountlink' => 'Кирүү',
-'userlogin-resetlink' => 'Кирүү маалыматыңызды унутуп калдыңызбы?',
+'userlogin-resetlink' => 'Кирүүчү маалыматарыңызды унутуп калдыңызбы?',
 'createaccountmail' => 'Электрондук дарек боюнча',
+'createaccountreason' => 'Себеби:',
+'badretype' => 'Сиз киргизген сырсөздөр дал келишпейт',
+'userexists' => 'Сиз тандаган колдонуучунун аты бош эмес.',
+'loginerror' => 'Колдонуучуну таанууда ката кетти',
+'createaccounterror' => '$1 эсебин түзүү мүмкүн эмес',
+'loginsuccesstitle' => 'Сиз ийгиликтүү кирдиңиз',
 'wrongpassword' => 'Ката сырсөз киргизилди. Кайтадан аракет кылып көрүңүз.',
 'wrongpasswordempty' => 'Сырсөз киргизилген жок. Кайтадан аракет кылып көрүңүз.',
 'mailmypassword' => 'Жаңы сырсөздү электрондук дарекке жибер',
@@ -316,8 +325,8 @@ $messages = array(
 'newpassword' => 'Жаңы сырсөз:',
 
 # Edit page toolbar
-'bold_sample' => 'Калын тамга',
-'bold_tip' => 'Калын тамга',
+'bold_sample' => 'Калың тамга',
+'bold_tip' => 'Калың тамга',
 'italic_sample' => 'Жантык тамга',
 'italic_tip' => 'Жантык тамга',
 'link_sample' => 'Шилтеменин аталышы',
@@ -330,7 +339,7 @@ $messages = array(
 'nowiki_tip' => 'Уики-форматтоого көңүл бөлбө',
 'image_tip' => 'Кыстарылган файл',
 'media_tip' => 'Файлга шилтеме',
-'sig_tip' => 'Ð\9aол Ñ\82амгаңÑ\8bз Ð¶Ð°Ð½Ð° Ñ\81ааÑ\82Ñ\8b',
+'sig_tip' => 'Ð\9aол Ñ\82амгаңÑ\8bз Ð¶Ð°Ð½Ð° Ñ\83бакÑ\8bÑ\82 Ð¼Ó©Ó©Ñ\80Ò¯',
 'hr_tip' => 'Туурасынын сызык (жыш колдонбоңуз)',
 
 # Edit pages
@@ -340,11 +349,16 @@ $messages = array(
 'savearticle' => 'Баракты сактап кой',
 'preview' => 'Алдын ала көрүү',
 'showpreview' => 'Алдын ала көрсөт',
+'showlivepreview' => 'Ылдам карап чыгуу',
 'showdiff' => 'Өзгөртүүлөрдү көрсөт',
 'anoneditwarning' => "'''Эскертүү:''' Сиз каттоодон өткөн жоксуз.
 IP дарегиңиз бул барактын оңдоо тарыхына жазылат.",
+'blockedtext' => 'Сиздин колдонуучу атыңыз же IP дарегиңиз тосмолонгон',
+'blockednoreason' => 'себеби көрсөтүлгөн эмес',
+'loginreqtitle' => 'Колдонуучунун аты талап кылынат',
+'loginreqlink' => 'Кирүү',
 'accmailtitle' => 'Сырсөз жөнөтүлдү.',
-'accmailtext' => '"$1" үчүн сырсөз $2 ге жөнөтүлдү.',
+'accmailtext' => ' [[User talk:$1|$1]] үчүн сырсөз $2 ге жөнөтүлдү.',
 'newarticle' => '(Жаңы)',
 'newarticletext' => "Сиз ачыла элек баракка шилтемени бастыңыз.
 Бул баракты ачуу үчүн, ылдый жактагы терезечеге жаза баштаңыз (кошумча маалымат алуу үчүн [[{{MediaWiki:Helppage}}|жардам барагы]] караңыз).
@@ -356,34 +370,44 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'noarticletext-nopermission' => 'Азыр бул баракта текст жок.
 Сиз башка барактардан [[Special:Search/{{PAGENAME}}|ушул аталыш менен баракты издөө]] салып,
 же <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тийиштүү жазууларды таба аласыз]</span>.',
+'userpage-userdoesnotexist' => '"$1" Мындай колдонуучу катталган эмес. Ушул баракты түзүүнү же оңдогонду каалганыңыз анык болсун',
 'previewnote' => "'''Бул алдын ала көрүнүшү гана болгонун эсиңизге алыңыз.'''
 Өзгөртүүлөрүңүз сактала элек!",
+'continue-editing' => 'Өзгөртүүүлөрдү улантабыз',
+'session_fail_preview' => 'Кечиресиз, байланыш үзүлгөндүктөн сиздин өзгөртүүлөр сакталган жок. Дагы бир жолу аракет кылып көрүңүз. Болбосо, [[Special:UserLogout|logging out]] аткарып, кайра кирип көрүңүз.',
 'editing' => 'Оңдоо $1',
+'creating' => '$1 түзүлүүдө',
 'editingsection' => '$1 (бөлүмү) оңдолууда',
+'editingcomment' => ' $1 оңдолууда (жаңы бөлүм)',
 'yourtext' => 'Текстиңиз',
 'yourdiff' => 'Айырмалар',
-'templatesused' => 'Бул баракта колдонулган {{PLURAL:$1|шаблон |шаблон}}:',
+'templatesused' => 'Бул баракта колдонулган {{PLURAL:$1|калып |калыптар}}:',
 'template-protected' => '(корголгон)',
 'template-semiprotected' => '(жарым-жартылай корголгон)',
 'hiddencategories' => 'Бул барак {{PLURAL:$1|1 жашыруун категориянын|$1 жашыруун категориялардын}} мүчөсү:',
 'permissionserrorstext-withaction' => 'Сизге $2, төмөнкү {{PLURAL:$1|себеп|себеп}} менен уруксат жок:',
-'recreate-moveddeleted-warn' => "'''Ð\90байлаÑ\82Ñ\83Ñ\83: Сиз мурун өчүрүлгөн баракты кайра баштап жатасыз.'''
+'recreate-moveddeleted-warn' => "'''ЭÑ\81кеÑ\80Ñ\82Ò¯Ò¯: Сиз мурун өчүрүлгөн баракты кайра баштап жатасыз.'''
 
\91Ñ\83л Ð±Ð°Ñ\80акÑ\82Ñ\8b Ð¾Ò£Ð´Ð¾Ð¾Ð½Ñ\83 Ñ\83ланÑ\82Ñ\83Ñ\83га Ñ\8bлайÑ\8bгÑ\8bн Ñ\82екÑ\88еÑ\80иңиз.
-Ыңгайлуулук үчүн өчүрүү жана өзгөртүүлөрдүн тизмеси ылдый жакта берилген:",
\91Ñ\83л Ð±Ð°Ñ\80акÑ\82Ñ\8b ÐºÐ°Ð¹Ñ\80а ÐºÐ°Ð¹Ñ\82аÑ\80Ñ\83Ñ\83 Ñ\87Ñ\8bндап ÐºÐµÑ\80ек Ñ\8dкендигине ÐºÓ©Ð·Ò¯Ò£Ò¯Ð· Ð¶ÐµÑ\82Ñ\81ин.
+Ыңгайлуулук үчүн төмөндө өчүрүүлөрдүн жана өзгөртүүлөрдүн тизмеси берилген:",
 'moveddeleted-notice' => 'Бул барак өчүрүлгөн.
-Маалымат алуу үчүн баракты өчүрүү жана өзгөртүүлөрдүн тизмеси ылдый жакта берилген.',
+Маалымат үчүн төмөндө өчүрүүлөрдүн жана өзгөртүүлөрдүн тизмеси берилген.',
+'edit-conflict' => 'Өзгөртүүлөрдүн конфликти',
+'edit-already-exists' => 'Жаңы барак түзүү мүмкүн эмес. Мындай барак бар',
 
 # Parser/template warnings
-'post-expand-template-inclusion-warning' => "'''Эскертүү:''' Шаблондун өлчөмү ашырып жиберилген.
-Кээ бир шаблондор кошулбайт.",
-'post-expand-template-inclusion-category' => 'Өлчөмү ашырып жиберилген шаблон камтыган барактар',
-'post-expand-template-argument-warning' => "'''Абайлатуу:''' Бул барак жаюуга өтө чоң көлөмдүү эң аз дегенде бир шаблон жүйөсүн камтыйт.
-Ушул сыяктуу жүйөлөр аттатылышты.",
-'post-expand-template-argument-category' => 'Аттатылган шаблон жүйөлөрүн камтыган барактар',
+'post-expand-template-inclusion-warning' => "'''Эскертүү:''' Камтылган калыптардын өлчөмү өтө чоң.
+Кээ бир калыптар камтылбайт.",
+'post-expand-template-inclusion-category' => 'Камтылган калыптардын өлчөмү ашып кеткен барактар',
+'post-expand-template-argument-warning' => "'''Эскертүү:''' Бул барак, жок дегенде, абдан чоң көлөмдүү калыптын бир жүйөсүн камтыйт жана  жайылганда өлчөмү абдан чоң болуп кетет. 
+Ушул сыяктуу жүйөлөр аттатылды.",
+'post-expand-template-argument-category' => 'Калыптардын аттатылган жүйөлөрүн камтыган барактар',
+'parser-template-loop-warning' => 'Калыптарда айланма бар:[[$1]]',
 
 # History pages
 'viewpagelogs' => 'Бул барак үчүн тизмелерди кара',
+'nohistory' => 'Бул барактын өзгөртүүлөр тарыхы жок',
+'currentrev' => 'Акыркы версиясы',
 'currentrev-asof' => '$1 -га соңку версиясы',
 'revisionasof' => '$1 -деги абалы',
 'revision-info' => '$1 карата $2 тарабынан жасалган версия',
@@ -393,18 +417,23 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'cur' => 'учрдг.',
 'next' => 'кийинки',
 'last' => 'соңку',
-'histlegend' => "Айырмалоону тандоо: Салыштырыла турган версияларлын тушундагы тегеректерди белгиле жана \"Enter\"-ди же астындагы нукуурун бас.<br />
+'page_first' => 'биринчи',
+'page_last' => 'акыркы',
+'histlegend' => "Айырмаларды тандоо: Салыштырыла турган версияларлын тушундагы тегеректерди белгилеп туруп \"Enter\"-ди же астындагы баскычты бас.<br />
 Түшүндүрүү: '''({{int:cur}})''' = соңку версиясынан айырма, '''({{int:last}})''' = мурунку версиясынан айырма, '''{{int:minoreditletter}}''' = майда оңдоо.",
 'history-fieldset-title' => 'Тарыхын кара',
 'history-show-deleted' => 'Өчүрүлгөндөрдү гана',
 'histfirst' => 'Эң эски',
 'histlast' => 'Соңку',
+'historyempty' => 'бош',
 
 # Revision feed
+'history-feed-title' => 'Өзгөртүүлөр тарыхы',
 'history-feed-item-nocomment' => '$1, $2 карата',
 
 # Revision deletion
 'rev-delundel' => 'көрсөт/жашыр',
+'rev-showdeleted' => 'көрсөт',
 'revdel-restore' => 'көрүнүшүн өзгөрт',
 'revdel-restore-deleted' => 'өчүрүлгөн версиялар',
 'revdel-restore-visible' => 'көрүнүүчү версиялары',
@@ -413,7 +442,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'revertmerge' => 'Бөл',
 
 # Diffs
-'history-title' => '"$1" барактын тарыхына сереп',
+'history-title' => '"$1" өзгөрүүлөр тарыхы',
 'lineno' => '$1 -сап:',
 'compareselectedversions' => 'Тандалган версияларды салыштыр',
 'editundo' => 'жокко чыгар',
@@ -434,7 +463,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchprofile-project' => 'Жардам жана Долбоор барактары',
 'searchprofile-images' => 'Мултимедиа',
 'searchprofile-everything' => 'Баары',
-'searchprofile-advanced' => 'Ð\96етилген',
+'searchprofile-advanced' => 'Ð\9aеңейтилген',
 'searchprofile-articles-tooltip' => '$1 -де изде',
 'searchprofile-project-tooltip' => '$1 -де изде',
 'searchprofile-images-tooltip' => 'Файлдарды изде',
@@ -450,12 +479,14 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchrelated' => 'байланыштуу',
 'searchall' => 'баары',
 'showingresultsheader' => "'''$4''' үчүн {{PLURAL:$5|'''$3''' жыйынтыктан '''$1'''-и|'''$1 - $2''' -дан '''$3''' жыйынтык}}",
-'search-nonefound' => 'СÑ\83Ñ\80ооңÑ\83зга Ñ\8bлайÑ\8bк ÐºÐµÐ»Ð³ÐµÐ½ Ð¶Ñ\8bйÑ\8bнÑ\82Ñ\8bк жок.',
+'search-nonefound' => 'Талапка Ñ\82өп Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82 Ñ\82абÑ\8bлган жок.',
 'powersearch' => 'Издөө',
+'powersearch-legend' => 'Кеңиртип изде',
 
 # Preferences page
-'preferences' => 'Түзөө',
+'preferences' => 'ЫңгайлаÑ\88Ñ\82Ñ\8bÑ\80Ñ\83Ñ\83',
 'mypreferences' => 'Ырастоолорум',
+'prefs-edits' => 'Өзгөртүүлөрдүн саны',
 'changepassword' => 'Сырсөздү өзгөртүү',
 'prefs-datetime' => 'Дата жана убакыт',
 'prefs-rc' => 'Соңку өзгөрүүлөр',
@@ -475,6 +506,12 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'prefs-help-email' => 'Электрондук дарек милдетүү эмес, бирок сырсөздү унутуп калсаңыз ал сырсөздү жиберүүгө керек.',
 'prefs-help-email-others' => 'Ошондой эле башкалар сиз менен колдонуучу же талкуу барактарыңыздагы шилтеме аркылуу байланыш түзүүгө уруксат берүүнү тандай аласыз.
 Электрондук дарегиңиз башка кодонуучуларга байланыш түзгөндө көрүнбөйт.',
+'prefs-advancedediting' => 'Кеңейтилген',
+'prefs-advancedrc' => 'Кеңейтилген',
+'prefs-advancedrendering' => 'Кеңейтилген',
+'prefs-advancedsearchoptions' => 'Кеңейтилген',
+'prefs-advancedwatchlist' => 'Кеңейтилген',
+'prefs-displayrc' => 'Көрсөтүүнү тууралоо',
 
 # Groups
 'group' => 'Топ:',
@@ -501,7 +538,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'rcshowhideminor' => 'Майда оңдоолорду $1',
 'rcshowhidebots' => 'ботторду $1',
 'rcshowhideliu' => '$1 катталган колдонуучу',
-'rcshowhideanons' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\8bн ÐºÐ¾Ð»Ð´Ð¾Ð½Ñ\83Ñ\83Ñ\87Ñ\83лаÑ\80дÑ\8b $1',
+'rcshowhideanons' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83н ÐºÐ¾Ð»Ð´Ð¾Ð½Ñ\83Ñ\83Ñ\87Ñ\83лаÑ\80 $1',
 'rcshowhidepatr' => 'Көзөмөл алдындагы оңдоолорду $1',
 'rcshowhidemine' => 'Оңдоолорумду $1',
 'rclinks' => 'Соңку $2 кундө жасалган акыркы $1 өзгөртүүлөрдү көрсөт<br />$3',
@@ -535,6 +572,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'uploadedfiles' => 'Жүктөлгөн файлдар',
 'savefile' => 'Файлды сактап кой',
 'uploadedimage' => '"[[$1]]" жүктөлдү',
+'upload-success-subj' => 'Ийгиликтүү жүктөлдү',
 
 'license' => 'Лицензиялоо:',
 'license-header' => 'Лицензиялоо:',
@@ -557,8 +595,8 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'imagelinks' => 'Файл пайдалануу',
 'linkstoimage' => 'Бул файлга болгон {{PLURAL:$1|шилтеме|$1 шилтеме}} :',
 'nolinkstoimage' => 'Бул файлга шилтеме берген барак жок.',
-'sharedupload-desc-here' => 'Файл $1 -дан Ð¶Ð°Ð½Ð° Ð±Ð°Ñ\88ка Ð´Ð¾Ð»Ð±Ð¾Ð¾Ñ\80лоÑ\80до Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\83Ñ\83га Ð°Ð»Ð° Ð°Ð»Ñ\8bÑ\88аÑ\82.
«Ð»Ð´Ñ\8bй Ð¶Ð°ÐºÑ\82а Ð°Ð½Ñ\8bн [$2 Ñ\84айлдÑ\8b Ñ\81Ñ\8bпаÑ\82Ñ\82оо Ð±Ð°Ñ\80агÑ\8b]нан Ñ\81Ñ\8bпаÑ\82Ñ\82оÑ\81Ñ\83 көрсөтүлгөн.',
+'sharedupload-desc-here' => 'Ð\91Ñ\83л Ñ\84айл $1 -дан  Ð¶Ð°Ð½Ð° Ð±Ð°Ñ\88ка Ð´Ð¾Ð»Ð±Ð¾Ð¾Ñ\80лоÑ\80до Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\8bлÑ\8bÑ\88Ñ\8b Ð¼Ò¯Ð¼ÐºÒ¯Ð½.
¢Ó©Ð¼Ó©Ð½Ð´Ó© Ð°Ð½Ñ\8bн [$2 Ñ\84айлдÑ\8b Ñ\81Ñ\8bпаÑ\82Ñ\82оо Ð±Ð°Ñ\80агÑ\8b]нан Ñ\81Ñ\8bпаÑ\82Ñ\82амаÑ\81Ñ\8b көрсөтүлгөн.',
 
 # Unused templates
 'unusedtemplates' => 'Колдонулбаган нускалар',
@@ -666,8 +704,8 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'undeletecomment' => 'Түшүндүрмө:',
 
 # Namespace form on various pages
-'namespace' => 'Аталыш топтому',
-'invert' => 'ТандалгандÑ\8b кайтар',
+'namespace' => 'Аталыштар мейкиндиги:',
+'invert' => 'Ð\91елгиленгенди кайтар',
 'blanknamespace' => '(Негизги)',
 
 # Contributions
@@ -680,7 +718,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'year' => 'Жылынан (жана андан мурун):',
 
 'sp-contributions-newbies' => 'Жаңы колдонуучулардын гана салымдарын көрсөт',
-'sp-contributions-blocklog' => 'Ñ\82оÑ\81моолоÑ\80дÑ\83н Ñ\82измеÑ\81и',
+'sp-contributions-blocklog' => 'тосмолордун тизмеси',
 'sp-contributions-uploads' => 'жүктөөлөр',
 'sp-contributions-logs' => 'тизме',
 'sp-contributions-talk' => 'талкуу',
@@ -715,7 +753,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'blocklink' => 'тосмоло',
 'unblocklink' => 'тосмолоону алып сал',
 'change-blocklink' => 'тосмолоону өзгөрт',
-'contribslink' => 'салымдар',
+'contribslink' => 'салымдары',
 'blocklogpage' => 'Тосмоолордун тизмеси',
 'blocklogentry' => '[[$1]] тосмолонду, тосмолоо мөөнөтү: $2 $3',
 'block-log-flags-nocreate' => 'Каттоо мүмкүн эмес',
@@ -745,7 +783,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Колдонуучу барагыңыз',
 'tooltip-pt-mytalk' => 'Талкуу барагыңыз',
-'tooltip-pt-preferences' => 'Ырастооңуздар',
+'tooltip-pt-preferences' => 'Ырастоолоруңуз',
 'tooltip-pt-watchlist' => 'Өзгөрүүлөрүн көзөмөлгө алган барактардын тизмеси',
 'tooltip-pt-mycontris' => 'Салымдарыңыздын тизмеси',
 'tooltip-pt-login' => 'Сизге системада катталууга сунуш кылынат, бирок милдеттүү эмес',
@@ -754,7 +792,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-edit' => 'Сиз бул баракты оңдой аласыз. Кичи пейилдикке, сактоодон мурда алдын ала көрсөтүү нукуурун колдонуңуз.',
 'tooltip-ca-addsection' => 'Жаңы бөлүм башта',
 'tooltip-ca-viewsource' => 'Бул барак корголгон.
\91айкоого Ð°Ñ\87Ñ\8bлаÑ\82.',
¡Ð¸Ð· Ð°Ð½Ñ\8bн ÐºÐ°Ð¹Ð½Ð°Ñ\80Ñ\8bн ÐºÓ©Ñ\80Ó© Ð°Ð»Ð°Ñ\81Ñ\8bз',
 'tooltip-ca-history' => 'Бул барактын мурунку оңдоолору',
 'tooltip-ca-protect' => 'Бул баракты корго',
 'tooltip-ca-delete' => 'Бул баракты өчүр',
@@ -762,7 +800,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-watch' => 'Бул баракты көзөмөл тизмеңизге кошуңуз',
 'tooltip-ca-unwatch' => 'Бул баракты көзөмөл тизмеңизден алып салыңыз',
 'tooltip-search' => '{{SITENAME}} изде',
-'tooltip-search-go' => 'УÑ\88Ñ\83л Ð°Ñ\82алÑ\8bÑ\88 Ð¼ÐµÐ½ÐµÐ½ Ð±Ð°Ñ\80ак Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ñ\81о, Ð°Ð»Ð³Ð°',
+'tooltip-search-go' => 'Так Ñ\83Ñ\88Ñ\83ндай Ð°Ñ\82алÑ\8bÑ\88Ñ\82агÑ\8b Ð±Ð°Ñ\80акÑ\82Ñ\8b ÐºÓ©Ñ\80Ñ\81Ó©Ñ\82',
 'tooltip-search-fulltext' => 'Ушул текст менен барактарды изде',
 'tooltip-p-logo' => 'Башбаракка кайрыл',
 'tooltip-n-mainpage' => 'Башбаракка кайрыл',
@@ -786,7 +824,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-nstab-special' => 'Бул атайын барак, аны оңдой албайсыз',
 'tooltip-ca-nstab-project' => 'Долбоор барагын кара',
 'tooltip-ca-nstab-image' => 'Файл барагын көрсөт',
-'tooltip-ca-nstab-template' => 'ШаблондÑ\83 көрсөт',
+'tooltip-ca-nstab-template' => 'Ð\9aалÑ\8bпÑ\82Ñ\8b көрсөт',
 'tooltip-ca-nstab-category' => 'Категория барагын көрсөт',
 'tooltip-minoredit' => 'Муну майда оңдоо деп белгиле',
 'tooltip-save' => 'Өзгөртүүлөрдү сактап кой',
@@ -825,10 +863,10 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 
 # Metadata
 'metadata' => 'Метамаалыматтар',
-'metadata-help' => 'Ð\91Ñ\83л Ñ\84айл Ð±Ð°Ð»ÐºÐ¸Ð¼ Ñ\81анаÑ\80ип ÐºÐ°Ð¼ÐµÑ\80адан Ð¶Ðµ Ñ\81каннеÑ\80ден ÐºÐ¾Ñ\88Ñ\83лган ÐºÐ¾Ñ\88Ñ\83мÑ\87а Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82 камтыйт. 
-Эгерде файл баштапкы абалынан соң өзгөртүлсө, анда кээ бир мүнөздөгүчтөрү толук түрдө дал келбеши мүмкүн.',
-'metadata-fields' => 'Төмөндө тизмеленген сүрөт метамаалыматтарынын саптары метамаалыматтардын жадыбалы түрүлгөндө сүрөт барагына кошумчаланат.
-Калгандары сөз байлашуу менен жашырылат.
+'metadata-help' => 'Ð\91Ñ\83л Ñ\84айл Ð°Ð´Ð°Ñ\82Ñ\82а Ñ\81анаÑ\80ип ÐºÐ°Ð¼ÐµÑ\80а Ð¶Ðµ Ñ\81каннеÑ\80 ÐºÐ¾Ñ\88Ñ\83Ñ\83Ñ\87Ñ\83 Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82Ñ\82аÑ\80дÑ\8b камтыйт. 
+Эгерде файл баштапкы абалынан өзгөртүлсө, анда анын кээ бир сыпаттары толук чагылдырылбашы мүмкүн.',
+'metadata-fields' => 'Төмөндө тизмеленген сүрөт метамаалыматтарынын саптары метамаалыматтардын жадыбалы түрүлүү учурда сүрөт барагына кошумчаланат.
+Калгандары баштапкы абалда (өзгөртүлбөсө) көргөзүлбөйт.
 * make
 * model
 * datetimeoriginal
@@ -871,7 +909,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'watchlisttools-raw' => 'Жетиле элек көзөмөл тизмени оңдо',
 
 # Core parser functions
-'duplicate-defaultsort' => '\'\'\'Ð\90байлаÑ\82Ñ\83Ñ\83:\'\'\' "$2" белгиленген ылгоочу ачкыч "$1" мурунку белгиленген ылгоочу ачкычты жокко чыгарат.',
+'duplicate-defaultsort' => '\'\'\'ЭÑ\81кеÑ\80Ñ\82Ò¯Ò¯:\'\'\' "$2" белгиленген ылгоочу ачкыч "$1" мурунку белгиленген ылгоочу ачкычты жокко чыгарат.',
 
 # Special:Version
 'version' => 'Версия',
index a734e89..fc9b562 100644 (file)
@@ -68,6 +68,9 @@ $namespaceAliases = array(
        'Diskussión_de_Kateggoría' => NS_CATEGORY_TALK,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'UsadoresAktivos' ),
        'Allmessages'               => array( 'TodosLosMessajes' ),
index dc6af2f..f2c488b 100644 (file)
@@ -534,6 +534,8 @@ Mellt dëst w.e.g. bei engem [[Special:ListUsers/sysop|Administrateur]] a vergie
 'cannotdelete' => 'D\'Bild oder d\'Säit "$1" konnt net geläscht ginn.
 Et ka sinn datt et scho vun engem Anere geläscht gouf.',
 'cannotdelete-title' => 'D\'Säit "$1" kann net geläscht ginn',
+'delete-hook-aborted' => "D'Läsche gouf vun enger Schnëttstell (hook) ofgebrach.
+Eng Erklärung gouf net ginn.",
 'badtitle' => 'Schlechten Titel',
 'badtitletext' => 'De gewënschten Titel ass net valabel, eidel, oder een net korrekten Interwiki Link.',
 'perfcached' => 'Dës Date kommen aus dem Tëschespäicher a si méiglecherweis net aktuell. Maximal {{PLURAL:$1|ee Resultat ass|$1 Resultater sinn}} am Tësche späicher disponibel.',
@@ -561,6 +563,8 @@ $2',
 'titleprotected' => "Eng Säit mat dësem Numm kann net ugeluecht ginn. Dës Spär gouf vum [[User:$1|$1]] gemaach deen als Grond ''$2'' uginn huet.",
 'invalidtitle-knownnamespace' => 'Net valabelen Titel mam Nummraum "$2" a mam Text "$3"',
 'invalidtitle-unknownnamespace' => 'Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text "$2"',
+'exception-nologin' => 'Net ageloggt',
+'exception-nologin-text' => 'Dës Säit oder Aktioun erfuerdert datt Dir op dëser Wiki ageloggt sidd.',
 
 # Virus scanner
 'virus-badscanner' => "Schlecht Configuratioun: onbekannte  Virescanner: ''$1''",
@@ -568,11 +572,11 @@ $2',
 'virus-unknownscanner' => 'onbekannten Antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''Dir sidd elo ofgemellt.'''
+'logouttext' => "'''Dir sidd elo ausgeloggt.'''
 
-Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech [[Special:UserLogin|erëm umellen]].
+Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech [[Special:UserLogin|erëm aloggen]].
 
-Opgepasst: Op verschiddene Säite gesäit et nach esou aus, wéi wann Dir nach ugemellt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
+Opgepasst: Op verschiddene Säite kann et nach esou aus gesinn, wéi wann Dir nach ageloggt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
 'welcomecreation' => '== Wëllkomm, $1! ==
 Äre Kont gouf kreéiert.
 Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
@@ -583,7 +587,7 @@ Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
 'securelogin-stick-https' => 'Nom Umelle mat HTTPS verbonn bleiwen',
 'yourdomainname' => 'Ären Domain',
 'externaldberror' => 'Entweder ass e Feeler bei der externer Authentifizéierung geschitt, oder Dir däerft Ären externe Benotzerkont net aktualiséieren.',
-'login' => 'Umellen',
+'login' => 'Aloggen',
 'nav-login-createaccount' => 'Aloggen / Benotzerkont uleeën',
 'loginprompt' => "Fir sech op {{SITENAME}} aloggen ze kënnen, mussen d'Cookien aktivéiert sinn.",
 'userlogin' => 'Aloggen / Benotzerkont uleeën',
@@ -682,7 +686,7 @@ Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
 'oldpassword' => 'Aalt Passwuert:',
 'newpassword' => 'Neit Passwuert:',
 'retypenew' => 'Neit Passwuert nach eemol antippen:',
-'resetpass_submit' => 'Passwuert aginn an umellen',
+'resetpass_submit' => 'Passwuert aginn an aloggen',
 'resetpass_success' => 'Äert Passwuert gouf geännert!
 Loggt Iech elo an ...',
 'resetpass_forbidden' => 'Passwierder kënnen net geännert ginn.',
@@ -1672,6 +1676,9 @@ Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrat
 'lockmanager-notlocked' => '"$1" konnt net fräigeschalt ginn; $1 ass net gespaart.',
 'lockmanager-fail-closelock' => 'De Spärfichier fir "$1" konnt net zougemaach ginn.',
 'lockmanager-fail-deletelock' => 'De Spärfichier fir "$1" konnt net geläscht ginn.',
+'lockmanager-fail-acquirelock' => '"$1" konnt net gespaart ginn.',
+'lockmanager-fail-openlock' => 'De Spärfichier fir "$1" konnt net opgemaach ginn.',
+'lockmanager-fail-releaselock' => 'D\'Spär fir "$1" konnt net opgehuewe ginn.',
 'lockmanager-fail-db-release' => "D'Spären op der Datebank $1 konnten net fräigeschalt ginn.",
 'lockmanager-fail-svr-release' => "D'Spären um Server $1 konnten net fräigeschalt ginn.",
 
@@ -1728,8 +1735,8 @@ Kuckt w.e.g. no op kee Feeler an der URL ass an op de Site och online ass.',
 'upload-curl-error28' => "D'Eroplueden huet ze laang gedauert (timeout)",
 'upload-curl-error28-text' => "Dëse Site huet ze laang gebraucht fir z'äntwerten. Kuckt w. e. g. no, ob dëse Site online ass, waart een Ament a probéiert et dann nach eng Kéier. Et ka sënnvoll sinn, et nach eng Kéier méi spéit ze versichen.",
 
-'license' => 'Lizenzéiert:',
-'license-header' => 'Lizenzéieren',
+'license' => 'Lizenz',
+'license-header' => 'Lizenz',
 'nolicense' => 'Keng Lizenz ausgewielt',
 'license-nopreview' => '(Kucken ouni ofzespäichere geet net)',
 'upload_source_url' => ' (gëlteg, ëffentlech zougänglech URL)',
@@ -2863,6 +2870,7 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'spambot_username' => 'Botz vum Spam duerch MediaWiki',
 'spam_reverting' => 'Déi lescht Versioun ouni Linken op $1 restauréieren.',
 'spam_blanking' => 'An alle Versioune ware Linken op $1, et ass elo alles gebotzt.',
+'spam_deleting' => 'All Versioune mat Linken op $1 gi geläscht',
 
 # Info page
 'pageinfo-title' => 'Informatioun iwwer "$1"',
@@ -3708,6 +3716,7 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'api-error-empty-file' => 'De Fichier deen Dir geschéckt hutt war eidel.',
 'api-error-emptypage' => 'Et ass net erlaabt nei, eidel Säiten unzeleeën.',
 'api-error-fetchfileerror' => 'Interne Feeler: beim Opruffe vum Fichier huet eppes net fonctionnéiert.',
+'api-error-fileexists-forbidden' => 'E Fichier mam Numm "$1" gëtt et schonn an e kann net iwwerschriwwe ginn.',
 'api-error-file-too-large' => 'De Fichier deen Dir geschéckt hutt war ze grouss.',
 'api-error-filename-tooshort' => 'Den Numm vum Fichier ass ze kuerz.',
 'api-error-filetype-banned' => 'Dësen Typ vu Fichier ass net zougelooss.',
@@ -3746,4 +3755,6 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "D'Spären um Server $1 konnten net ofgefrot ginn.",
 );
index e731e91..787e1be 100644 (file)
@@ -30,7 +30,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Мукьвара хьайи дегишвилера авай къаравулвал авунвай дуьзар хъувунар чуьнуьхун',
 'tog-newpageshidepatrolled' => 'ЦIийи ччинрин сиягьда къаравулвал авунвай ччинар чуьнуьхун',
 'tog-extendwatchlist' => 'ЧӀехи сиягь килигунин, кутазвай вири дегишунар, амма са эхирбур туш',
-'tog-usenewrc' => 'ЦIийи Ð´ÐµÐ³Ð¸Ñ\88вилеÑ\80ин Ñ\81иÑ\8fгÑ\8c ÐºÐ°Ñ\80дик ÐºÑ\83Ñ\82Ñ\83н (JavaScript герекзава)',
+'tog-usenewrc' => 'Ð\9cÑ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи Ð¼Ð°Ñ\81акIавилеÑ\80ин Ñ\87Ñ\87ина Ð²Ð° Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8cда  Ð´Ñ\83Ñ\8cзаÑ\80 Ñ\85Ñ\8aÑ\83вÑ\83наÑ\80 ÐºIеÑ\80еÑ\82\80из Ñ\87Ñ\87аÑ\80а Ð°Ð²Ñ\83н. (JavaScript герекзава)',
 'tog-numberheadings' => 'Кьилин цӀарариз автоматдаказ номерар эцигун',
 'tog-showtoolbar' => 'Дуьзар хъувунин алатрин кьвати къалура (JavaScript)',
 'tog-editondblclick' => 'Ччинар кьве тIампIуналди дуьзар хъувун (JavaScript герекзава)',
@@ -448,7 +448,7 @@ $messages = array(
 Квевай и ччинин туьхкlуьрунин гереквилиз килигиз тIалабзава.
 Агъадихъ и ччинин алудун ва тIвар эхцигунин журнал къалурнава.",
 'moveddeleted-notice' => 'И ччин алуднава. 
-Агъадихъ малумат патал и ччинин алудун ва тIвар эхцигунин журнал къалурнава.',
+Агъадихъ малумат патал и ччинин алудунин ва тIвар эхцигунин журнал къалурнава.',
 'log-fulllog' => 'Вири журналдиз килигун',
 'edit-conflict' => 'Дуьзар хъувунрин акьунар',
 
@@ -1025,7 +1025,7 @@ $messages = array(
 
 # Contributions
 'contributions' => 'Уртахди кутур крар',
-'contributions-title' => '$1 уртахдин кутур крар',
+'contributions-title' => '$1 уртахди кутур крар',
 'mycontris' => 'За кутур кар',
 'contribsub2' => '($1)-ин кутур пай  ($2)',
 'uctop' => '(вини кьил)',
index 3ac73c3..1625953 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lumbaart (Lumbaart)
+/** lumbaart (lumbaart)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 9597ca9..bf0b9d6 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lingala (Lingála)
+/** Lingala (lingála)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index aa7144a..5aa5b08 100644 (file)
@@ -1114,8 +1114,8 @@ Prašome patikrinti sąrašus.',
 
 # Diffs
 'history-title' => '„$1“ versijų istorija',
-'difference-title' => '$1: Skirtumas tarp redakcijų',
-'difference-title-multipage' => '$1 ir $2: Skirtumas tarp puslapių',
+'difference-title' => '$1: Skirtumas tarp puslapio versijų',
+'difference-title-multipage' => 'Skirtumas tarp puslapių „$1 ir $2“',
 'difference-multipage' => '(Skirtumai tarp puslapių)',
 'lineno' => 'Eilutė $1:',
 'compareselectedversions' => 'Palyginti pasirinktas versijas',
@@ -1210,6 +1210,7 @@ Prašome patikrinti sąrašus.',
 'prefs-beta' => 'Beta funkcijos',
 'prefs-datetime' => 'Data ir laikas',
 'prefs-labs' => 'Bandomosios funkcijos',
+'prefs-user-pages' => 'Naudotojo puslapiai',
 'prefs-personal' => 'Naudotojo profilis',
 'prefs-rc' => 'Naujausi keitimai',
 'prefs-watchlist' => 'Stebimų sąrašas',
@@ -1854,10 +1855,10 @@ Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.',
 'statistics-pages-desc' => 'Visi puslapiai, tarp jų aptarimo, nukreipimų, ir kiti puslapiai.',
 'statistics-files' => 'Įkelti failai',
 'statistics-edits' => 'Puslapių redagavimų skaičius nuo {{SITENAME}} sukūrimo',
-'statistics-edits-average' => 'Vidutinis redakcijų kiekis puslapiui',
+'statistics-edits-average' => 'Vidutinis puslapio keitimų skaičius',
 'statistics-views-total' => 'Iš viso peržiūrų',
 'statistics-views-total-desc' => 'Neegzistuojančių ir specialiųjų puslapių parodymai neįtraukti',
-'statistics-views-peredit' => 'Peržiūrų skaičius redakcijai',
+'statistics-views-peredit' => 'Peržiūrų skaičius puslapio versijai',
 'statistics-users' => 'Registruotų [[Special:ListUsers|naudotojų]]',
 'statistics-users-active' => 'Aktyvių naudotojų',
 'statistics-users-active-desc' => 'Naudotojai, kurie per {{PLURAL:$1|paskutinę dieną|paskutines $1 dienų}} padarė keitimų',
@@ -2792,7 +2793,7 @@ Išsaugokite jį savo kompiuteryje ir įkelkite jį čia.',
 'tooltip-search' => 'Ieškoti šiame projekte',
 'tooltip-search-go' => 'Eiti į puslapį su tokiu pavadinimu, jei toks yra',
 'tooltip-search-fulltext' => 'Ieškoti puslapių su šiuo tekstu',
-'tooltip-p-logo' => 'Pradinis puslapis',
+'tooltip-p-logo' => 'Eiti į pradinį puslapį',
 'tooltip-n-mainpage' => 'Eiti į pradinį puslapį',
 'tooltip-n-mainpage-description' => 'Eiti į pradinį puslapį',
 'tooltip-n-portal' => 'Apie projektą, ką galima daryti, kur ką rasti',
@@ -2861,11 +2862,12 @@ Leidžia pridėti atmetimo priežastį komentaruose',
 
 # Spam protection
 'spamprotectiontitle' => 'Priešreklaminis filtras',
-'spamprotectiontext' => 'Puslapis, kurį norėjote išsaugoti buvo užblokuotas priešreklaminio filtro. Tai turbūt sukėlė nuoroda į juodajame sąraše esančią svetainę.',
+'spamprotectiontext' => 'Tekstas, kurį norėjote išsaugoti, buvo užblokuotas priešreklaminio filtro. Taip turbūt įvyko dėl nuorodos į juodajame sąraše esančią svetainę.',
 'spamprotectionmatch' => 'Šis tekstas buvo atpažintas priešreklaminio filtro: $1',
 'spambot_username' => 'MediaWiki reklamų šalinimas',
 'spam_reverting' => 'Atkuriama į ankstesnę versiją, neturinčios nuorodų į $1',
 'spam_blanking' => 'Visos versijos turėjo nuorodų į $1, išvaloma',
+'spam_deleting' => 'Visos versijos turėjo nuorodų į $1, ištrinama',
 
 # Info page
 'pageinfo-title' => '„$1“ informacija',
@@ -3706,29 +3708,44 @@ Paveikslėliai yra rodomi pilna raiška, kiti failų tipai paleidžiami tiesiogi
 'newuserlog-byemail' => 'slaptažodis nusiųstas elektroniniu paštu',
 
 # Feedback
+'feedback-bugornote' => 'Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą].
+Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentaras bus įtrauktas į puslapį „[$3 $2]“, kartu su jūsų naudotojo vardu ir jūsų naudojama naršykle.',
 'feedback-subject' => 'Tema:',
 'feedback-message' => 'Pranešimas:',
 'feedback-cancel' => 'Atšaukti',
 'feedback-submit' => 'Siųsti Atsiliepimą',
 'feedback-adding' => 'Pridedamas atsiliepimas į puslapį ...',
+'feedback-error1' => 'Klaida: Neatpažįstamas rezultatas iš API',
 'feedback-error2' => 'Klaida: Redagavimas nepavyko',
+'feedback-error3' => 'Klaida: Jokio atsakymo iš API',
+'feedback-thanks' => 'Ačiū! Jūsų atsiliepimas buvo užregistruotas puslapyje „[$2 $1]“.',
 'feedback-close' => 'Atlikta',
+'feedback-bugcheck' => 'Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].',
+'feedback-bugnew' => 'Patikrinau. Pranešti apie naują klaidą',
 
 # API errors
 'api-error-badaccess-groups' => 'Jums neleidžiama įkelti failus į šią wiki.',
 'api-error-copyuploaddisabled' => 'Siuntimas pagal URL yra išjungtas šiame serveryje.',
 'api-error-duplicate-popup-title' => 'Dubliuoti  {{PLURAL:$1|failą|failus}}',
 'api-error-empty-file' => 'Pateikta failas buvo tuščias.',
+'api-error-emptypage' => 'Kurti naujus, tuščius puslapius neleidžiama.',
+'api-error-fetchfileerror' => 'Vidinė klaida: Kažkas nutiko gaunant failą.',
 'api-error-file-too-large' => 'Failą, kurį pateikėte buvo per didelis.',
 'api-error-filename-tooshort' => 'Failo vardas yra per trumpas.',
 'api-error-filetype-banned' => 'Šis failų tipas yra uždraustas.',
+'api-error-filetype-missing' => 'Failas neturi galūnės.',
+'api-error-hookaborted' => 'Pakeitimą, kurį bandėte atlikti, nutraukė priedas.',
 'api-error-http' => 'Vidinė klaida: nepavyko prisijungti prie serverio.',
 'api-error-illegal-filename' => 'Failo vardas neleidžiamas.',
 'api-error-invalid-file-key' => 'Vidinė klaida: failas nerastas saugykloje.',
+'api-error-missingresult' => 'Vidinė klaida: nepavyko nustatyti, ar pavyko nukopijuoti.',
 'api-error-mustbeloggedin' => 'Jūs turite būti prisijungęs kad galėtumėte įkelti failus.',
 'api-error-mustbeposted' => 'Vidinė klaida: prašymas reikalauja HTTP POST.',
+'api-error-noimageinfo' => 'Įkelti pavyko, bet serveris nepateikė mums jokios informacijos apie failą.',
 'api-error-ok-but-empty' => 'Vidinė klaida: nėra atsakymo iš serverio.',
 'api-error-overwrite' => 'Perrašymas esamą failą neleidžiamas.',
+'api-error-stashfailed' => 'Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.',
+'api-error-timeout' => 'Serveris neatsakė per numatytą laiką.',
 'api-error-unclassified' => 'Įvyko nežinoma klaida',
 'api-error-unknown-code' => 'Nežinoma klaida: " $1 "',
 'api-error-unknown-error' => 'Vidinė klaida: kažkas nutiko bandant įkelti failą.',
index 497b6c4..69f914d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Latgalian (Latgaļu)
+/** Latgalian (latgaļu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 78f567e..8f09ec9 100644 (file)
@@ -22,9 +22,9 @@ $messages = array(
 'tog-usenewrc' => 'Tihdanglam thar belhchhan hmang rawh (JavaScript a ngai)',
 'tog-numberheadings' => 'A thupuite amahin nambar inpêktir rawh',
 'tog-showtoolbar' => 'Siamţhatna hmanraw-liang tilang rawh (JavaScript a ngai)',
-'tog-editondblclick' => 'Vawihnih klikin phêk siamţha rawh (JavaScript a ngai)',
+'tog-editondblclick' => 'Hmehphìrin phêk siamţha rawh (JavaScript a ngai)',
 'tog-editsection' => 'Hlawm hrang siamţhatna [siamţhatna] zawmna hmangin awmtir rawh',
-'tog-editsectiononrightclick' => 'Hlawm thupui ding-klik hmangin hlawm siamţhat theihna awmtir rawh (JavaScript a ngai)',
+'tog-editsectiononrightclick' => 'Hlawm thupui ding-hmeh hmangin hlawm siamţhat theihna awmtir rawh (JavaScript a ngai)',
 'tog-showtoc' => 'A chhunga thu awm te tilang rawh (thupui 3 aia tam phêk tan)',
 'tog-rememberpassword' => 'He ka rangpuifannaah hian min hre reng rawh (a rei berah ni $1  {{PLURAL:$1}})',
 'tog-watchcreations' => 'Ka phêk siamte ka ralvèn zing-ah telh rawh',
@@ -35,9 +35,9 @@ $messages = array(
 'tog-previewontop' => 'Siamţhatna bawm hmaah endikna dah rawh',
 'tog-previewonfirst' => 'Siamţhat vawi khatnaah endikna tilang rawh',
 'tog-nocache' => 'Fanna-in phêk a cache tur veng rawh',
-'tog-enotifwatchlistpages' => 'Ka ralvèn zinga phêk pakhat tihdanglam a nih apiangin email min thawn rawh',
-'tog-enotifusertalkpages' => 'Ka hmangtu-sawihona phêk tihdanglam a nihin min email rawh',
-'tog-enotifminoredits' => 'Phêk siamţhat tenauah pawh min email tho rawh',
+'tog-enotifwatchlistpages' => 'Ka ralvèn zinga phêk pakhat tihdanglam a nih apiangin e-lehkha min thawn rawh',
+'tog-enotifusertalkpages' => 'Ka hmangtu-sawihona phêk tihdanglam a nihin e-lehkha min thawn rawh',
+'tog-enotifminoredits' => 'Phêk siamţhat tenauah pawh e-lehkha min thawn tho rawh',
 'tog-enotifrevealaddr' => 'Hriattirna email zingah ka email address pho lang rawh',
 'tog-shownumberswatching' => 'Ralvèngtu zât tilang rawh',
 'tog-oldsig' => 'Khàrna hming hman mék:',
@@ -53,10 +53,10 @@ $messages = array(
 'tog-watchlisthideliu' => 'Ralvèn zing aţang hmangtu inziaklut siamţhat tibo rawh.',
 'tog-watchlisthideanons' => 'Hmangtu hriat lohvina an siamţhat ralvèn zing aţang',
 'tog-watchlisthidepatrolled' => 'Siamţhat viltu nei ralvèn zingah telh suh',
-'tog-ccmeonemails' => 'Hmangtu dang hnena ka email thawn apiang min thawn ve zel rawh',
-'tog-diffonly' => 'Diff hnuaiah phêk chhunga awmte tilang suh',
+'tog-ccmeonemails' => 'Hmangtu dang hnena ka e-lehkha thawn apiang min thawn ve zel rawh',
+'tog-diffonly' => 'Dnglmn hnuaiah phêk chhúng tilang suh',
 'tog-showhiddencats' => 'Pawl thuhrûkho tilang rawh',
-'tog-norollbackdiff' => 'Lumlêt hnuah diff kalkan rawh',
+'tog-norollbackdiff' => 'Lumlêt hnuah dnglmn kalkan rawh',
 
 'underline-always' => 'Ziah/ngei ngei',
 'underline-never' => 'Ngai lo',
@@ -99,7 +99,7 @@ $messages = array(
 'january-gen' => 'Pawlkût thla',
 'february-gen' => 'Ramtuk thla',
 'march-gen' => 'Vau thla',
-'april-gen' => 'Ţau thla',
+'april-gen' => 'au thla',
 'may-gen' => 'Ţomir thla',
 'june-gen' => 'Nikir thla',
 'july-gen' => 'Vawkhniahzawn thla',
@@ -127,7 +127,7 @@ $messages = array(
 'subcategories' => 'Pawlpengte',
 'category-media-header' => '"$1" pawla mediate',
 'category-empty' => '"He pawl hian phêk leh media pakhat mah a nei hrih lo."',
-'hidden-categories' => 'Pawl thuhrûk {{PLURAL:$1||-te}}',
+'hidden-categories' => 'Pawl thuhrûk{{PLURAL:$1||te}}',
 'hidden-category-category' => 'Pawl thuhrûkte',
 'category-subcat-count' => '{{PLURAL:$2|He pawl hian he pawlpeng chauh hi a nei. |He pawl hian heng  {{PLURAL:$1|pawlpéng|pawlpéng $1-te}} hi a nei, avaia  $2  zingah.}}',
 'category-subcat-count-limited' => "He pawl hian  {{PLURAL:$1|hë pawlpéng chauh|$1 hê'ng pawlpéngte}} hi a nei.",
@@ -284,8 +284,8 @@ $1',
 'viewsourcelink' => 'a hnar enna',
 'editsectionhint' => 'Hemi thuhlawm hi siamţha rawh le: $1',
 'toc' => 'A chhung thute',
-'showtoc' => 'tihlanna',
-'hidetoc' => 'tihbona',
+'showtoc' => 'pharhna',
+'hidetoc' => 'thlehna',
 'collapsible-collapse' => 'Thlehna',
 'collapsible-expand' => 'Pharhna',
 'thisisdeleted' => '$1 hi en emaw, dah lêt leh emaw i duh em?',
@@ -384,6 +384,8 @@ $2',
 'customjsprotected' => 'Hmangtu dang mimal thil a tel avangin he JavaScript phêk hi siamţhat phalsak i ni lo.',
 'ns-specialprotected' => 'Phêk vohbîkte siam danglam theih a ni lo.',
 'titleprotected' => 'He phêk hi hmangtu [[User:$1|$1]] siam phalsak a ni lo. A chhan hetah: "\'\'$2\'\'" hian pêk a ni.',
+'invalidtitle-knownnamespace' => 'Hming pawm loh hminghmun "$2"-a "$3" tih thu chuang.',
+'invalidtitle-unknownnamespace' => 'Hming pawm loh leh hminghmun zât hriat loh $1-a thu chuang "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Inremdan dikhlel: Hrik thiantu hriat loh: ''$1''",
@@ -400,7 +402,7 @@ I [[Special:Preferences|{{SITENAME}}duhdàn]] siam danglam theihnghilh suh ang c
 'yourname' => 'Hmangtuhming:',
 'yourpassword' => 'Thurûk:',
 'yourpasswordagain' => 'Thurûk ziak nawn leh rawh le:',
-'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.',
+'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}$1) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.',
 'securelogin-stick-https' => 'Luh hnuah HTTPS-ah hian chëng reng rawh.',
 'yourdomainname' => 'I ram:',
 'externaldberror' => 'Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.',
@@ -457,6 +459,7 @@ A hnuaia mi eng vang pawh hian e-lehkha thawn a ni lo vang:',
 'invalidemailaddress' => 'A awmphung a dik loh avangin he e-chenhmun hi pawm theih a ni lo.
 E-chenhmun dik tak ziaklût rawh, a nih loh leh thai reh vek rawh.',
 'cannotchangeemail' => 'He wiki-ah hian siangchan e-chenhmun thlâk theih a ni lo.',
+'emaildisabled' => 'Hë rangpuihmun hian e-lehkha a thawn thei lo',
 'accountcreated' => 'Siangchan siamfel a ni ta.',
 'accountcreatedtext' => '$1 tana hmangtu siangchan siamfel a ni ta.',
 'createaccount-title' => '{{SITENAME}} tana siangchan siam',
@@ -641,7 +644,7 @@ Heng kawngte hi hmaih mai tur.",
 'viewpagelogs' => 'He phêk chanchin hi en rawh',
 'nohistory' => 'Hë phêk siamṭhatna chanchin ziak a awm lo tlat.',
 'currentrev' => 'Ennawnna hnuhnung ber',
-'currentrev-asof' => 'Ni $1-a ennawnna hnuhnung ber',
+'currentrev-asof' => 'Dar $1-a ennawnna hnuhnung ber',
 'revisionasof' => '$1 -a ennawnna zawng',
 'revision-info' => '$1-a $2 ennawnna',
 'previousrevision' => '←Ennawnna hlui zâwk',
@@ -663,6 +666,7 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 
 # Revision feed
 'history-feed-title' => 'Ennawnna chanchin',
+'history-feed-description' => 'Wiki-a hemi phêk ennawnna chanchin',
 'history-feed-item-nocomment' => '$1-in $2-ah',
 
 # Revision deletion
@@ -931,6 +935,7 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'right-move-subpages' => 'Phêkte leh an phêkpéngte sawnna',
 'right-move-rootuserpages' => 'Hmangtu bulte sawnna',
 'right-movefile' => 'Taksa sawnna',
+'right-suppressredirect' => 'Phêk sawna hruailuhna phêk siam lohtírna',
 'right-upload' => 'Taksa hlankaina',
 'right-reupload' => 'Taksa awmsa ziahhnan rawh',
 'right-reupload-own' => 'Mahni hlankai taksa awmsa ziahhnan rawh',
@@ -949,7 +954,7 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'he phêk hi chhiar rawh',
-'action-edit' => 'he phek hi siamţha rawh',
+'action-edit' => 'phek siamṭhat',
 'action-createpage' => 'phêk siam tharna',
 'action-createtalk' => 'sawihona phêk siamna',
 'action-createaccount' => 'he hmangtu siangchan hi siam rawh',
@@ -964,8 +969,10 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'action-writeapi' => 'ziakna WPI hmang rawh',
 'action-delete' => 'he phêk hi paih rawh',
 'action-deleterevision' => 'he ennawnna hi paih rawh',
+'action-deletedhistory' => 'phêk chanchin nuaibo tawh enna',
 'action-browsearchive' => 'phêk nuaibo tawhte zawng rawh',
 'action-undelete' => 'he phêk hi lakir leh rawh',
+'action-suppressionlog' => 'mimal chanchin bîk enna',
 'action-block' => 'he hmangtuina a siam danglam tùr hi däl rawh',
 
 # Recent changes
@@ -1228,8 +1235,12 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'withoutinterwiki-legend' => 'Thuhmabet',
 'withoutinterwiki-submit' => 'Tihlanna',
 
+'fewestrevisions' => 'Phêk siam danglam hlawh lo zualte',
+
 # Miscellaneous special pages
 'nbytes' => 'Bait {{PLURAL:$1||}} $1',
+'ncategories' => '{{PLURAL:$1|Páwl|Páwl}} $1',
+'nlinks' => '$1 {{PLURAL:$1||}} Zawmna $1',
 'nmembers' => 'A chhungah  {{PLURAL:$1||$1}} a awm.',
 'nrevisions' => 'siamṭhatna $1 {{PLURAL:$1||}}',
 'nviews' => 'vawi $1 {{PLURAL:$1||}} ràwn a ni tawh.',
index 289d5c4..1f6799d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Latvian (Latviešu)
+/** Latvian (latviešu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 9d8c470..f1c695d 100644 (file)
@@ -162,6 +162,8 @@ $messages = array(
 'tog-rememberpassword' => '符節通越(達至$1日)',
 'tog-watchcreations' => '哨己撰',
 'tog-watchdefault' => '哨己纂',
+'tog-watchmoves' => '派哨予吾遷之頁',
+'tog-watchdeletion' => '派哨予吾除之頁',
 'tog-minordefault' => '慣為校',
 'tog-previewontop' => '頂草覽',
 'tog-previewonfirst' => '覽首修',
@@ -271,6 +273,7 @@ $messages = array(
 'listingcontinuesabbrev' => '續',
 'index-category' => '已索之頁',
 'noindex-category' => '未索之頁',
+'broken-file-category' => '帶壞檔之頁',
 
 'about' => '述',
 'article' => '文',
@@ -537,6 +540,7 @@ $2',
 'createaccount' => '增簿',
 'gotaccount' => '有簿矣哉?往$1。',
 'gotaccountlink' => '登簿',
+'userlogin-resetlink' => '君忘登簿所需爾?',
 'createaccountmail' => '同郵',
 'createaccountreason' => '因:',
 'badretype' => '符節不合也。',
index 08045b6..56660e9 100644 (file)
@@ -110,7 +110,7 @@ $namespaceAliases = array(
        'Utilisateur' => NS_USER,
        'Discussion_Utilisateur' => NS_USER_TALK,
        'Discussion_$1' => NS_PROJECT_TALK,
-       'Discussion_Image' => NS_IMAGE_TALK,
+       'Discussion_Image' => NS_FILE_TALK,
        'Discussion_MediaWiki' => NS_MEDIAWIKI_TALK,
        'Modèle' => NS_TEMPLATE,
        'Discussion_Modèle' => NS_TEMPLATE_TALK,
@@ -1728,6 +1728,7 @@ Tsindrio eo amin'ny lohan-tsanganana raha hanova ny laharam-pisehoana.",
 'listfiles_search_for' => 'Hitady anarana media :',
 'imgfile' => 'rakitra',
 'listfiles' => "Lisitran'ny rakitra",
+'listfiles_thumb' => 'Sary nakelezina',
 'listfiles_date' => 'Daty',
 'listfiles_name' => 'Anarana',
 'listfiles_user' => 'Mpikambana',
@@ -1868,6 +1869,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
 'nmembers' => '{{PLURAL:$1|mpikambana|mpikambana}} $1',
 'nrevisions' => '{{PLURAL:$1|fanovana|fanovana}} $1',
 'nviews' => '{{PLURAL:}}Tsidika $1',
+'nimagelinks' => "Ampiasain'ny pejy miisa{{PLURAL:}} $1",
+'ntransclusions' => "Ampiasaina eo amin'ny pejy miisa $1 {{PLURAL:}}",
 'specialpage-empty' => 'Tsy misy valiny ho aseho.',
 'lonelypages' => 'Pejy manirery',
 'lonelypagestext' => "Ireo pejy ireo dia tsy voarohy sy tsy ampiasain'ny pejin' ity wiki ity.",
@@ -2283,6 +2286,8 @@ Vakio ny [[Special:Log/delete|laogim-pamafana]] ho an'ny lisitry ny famafana sy
 'undelete-filename-mismatch' => "Tsy afaka averina ny santiônan'ilay rakitra tamin'ny $1 : tsy mifanaraka ny anaran-drakitra.",
 'undelete-bad-store-key' => "Tsy mety averina ny santiônan'ilay rakitra tamin'ny $1 : mbola tsy tao ilay rakitra talohan'ny famafana.",
 'undelete-cleanup-error' => 'Tsy fetezana teo am-pamafana ilay rakitra an-tahiry tsy miasa « $1 ».',
+'undelete-missing-filearchive' => "Tsy afaka atao ny mamerina ilay rakitra tahiry miaraka amin'ny ID $1 satria tsy ao amin'ny banky angona izy io.
+Mety efa naverina angamba izy io.",
 'undelete-error-short' => 'Tsi-fetezana teo am-pamerenana ilay rakitra : $1',
 'undelete-error-long' => 'Nisy tsi-fetezana nitranga teo am-pamerenana ilay rakitra :
 
@@ -2444,6 +2449,8 @@ ny lisitry ny fisakanana sy fandrarana na tanteraka misy ankehitriny.",
 'ipb-otherblocks-header' => '{{PLURAL:$1}}sakana hafa',
 'ipb_cant_unblock' => 'Tsy fetezana : Marik ny fanakanana $1 tsy hita.
 Mety efa natao angamba ny fanalana sakana.',
+'ipb_blocked_as_range' => "Hadisoana : tsy nosakanana manokana ny adiresy IP $1 ka noho izany tsy afaka alàna ny sakany.
+Ao amin'ny laharana $2 izay afaka alàna sakana anefa izy io.",
 'ip_range_invalid' => 'Tsy mety io IP io.',
 'ip_range_toolarge' => 'Ny fanidiana laharana IP ngeza nohonny /$1 dia tsy azo atao.',
 'blockme' => 'Sakano ahy',
@@ -2534,6 +2541,7 @@ mifanaraka amin'ilay anarana vaovao. Azafady mba atambaro izay pejin-dresaka iza
 'movepage-page-exists' => 'Efa misy ny pejy $1 ary tsy afaka soloina ho azy.',
 'movepage-page-moved' => 'Voaova anarana lasa $2 ilay pejy $1.',
 'movepage-page-unmoved' => 'Tsy afaka novaina anarana $2 ilay pejy $1.',
+'movepage-max-pages' => 'Efa tratra ny isam-pejy farafahabetsany izay azo ovaina anarana (pejy $1){{PLURAL:}}, ka tsy ho voaova anarana ho azy intsony ny pejy hafa.',
 'movelogpage' => 'Ny laogim-panisahana',
 'movelogpagetext' => 'Lisitry ny pejy nafindra toerana.',
 'movesubpage' => 'Zana-pejy{{PLURAL:$1||}} $1',
@@ -2554,6 +2562,7 @@ Efa misy ny lahatsoratra hoe "[[:$1]]". Irinao ve ny hamafana azy mba hahafahana
 'immobile-source-page' => 'Tsy azo ovaina anarana ity pejy ity.',
 'immobile-target-page' => "Tsy afaka ovaina anarana makany amin'io lohateny io ilay pejy.",
 'imagenocrossnamespace' => 'Tsy mety ovaina anarana makany amina anaran-tsehatra hafa afatsy rakitra ihany ny rakitra.',
+'nonfile-cannot-move-to-file' => "Tsy afaka manova anaran'ny pejy tsy rakitra any amin'ny anaran-tsehatry ny rakitra.",
 'imagetypemismatch' => "Tsy mifanaraka amin'ny karazany ny fanitaran'ity rakitra ity.",
 'imageinvalidfilename' => 'Diso ny anaran-drakitra tanjona',
 'fix-double-redirects' => "Hanao update ny fihodinana makany amin'ny lohateny fotony",
@@ -2880,6 +2889,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-copyright' => 'Mpanana ilay copyright',
 'exif-exifversion' => 'Santiôna EXIF',
 'exif-flashpixversion' => 'Santiôna FlashPix',
+'exif-colorspace' => 'Valan-doko',
 'exif-pixelydimension' => 'Haavon-tsary ekena',
 'exif-pixelxdimension' => 'Halalan-tsary ekena',
 'exif-usercomment' => 'Diniky ny mpikambana',
@@ -2887,8 +2897,10 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-datetimeoriginal' => 'Daty fangalana niaviana',
 'exif-datetimedigitized' => 'Daty nanaovana numerisation',
 'exif-subsectime' => 'Daty nanovana',
+'exif-exposuretime' => 'Fitaona famakiana',
 'exif-exposuretime-format' => '$1 s ($2 s)',
 'exif-fnumber' => 'Isa F',
+'exif-exposureprogram' => 'Fomba famakiana',
 'exif-isospeedratings' => 'ISO',
 'exif-aperturevalue' => 'Sanasana',
 'exif-lightsource' => 'Loharanon-kazavana',
index 32964e4..fd1f344 100644 (file)
@@ -334,7 +334,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Скриј испатролирани уредувања во скорешните промени',
 'tog-newpageshidepatrolled' => 'Скриј испатролирани страници од списокот на нови страници',
 'tog-extendwatchlist' => 'Прошири го список на набљудувања за приказ на сите промени, не само скорешните',
-'tog-usenewrc' => 'Ð\9aоÑ\80иÑ\81Ñ\82и Ð¿Ð¾Ð´Ð¾Ð±Ñ\80ени скорешни промени (бара JavaScript)',
+'tog-usenewrc' => 'Ð\9fÑ\80омени Ð²Ð¾ Ð³Ñ\80Ñ\83пи Ð¿Ð¾ Ñ\81Ñ\82Ñ\80аниÑ\86и Ð²Ð¾ Ñ\81пиÑ\81окоÑ\82 Ð½Ð° скорешни промени (бара JavaScript)',
 'tog-numberheadings' => 'Авто нумерирање на заглавијата',
 'tog-showtoolbar' => 'Прикажи алатник за уредување (JavaScript)',
 'tog-editondblclick' => 'Уредување на страници при двојно кликнување (JavaScript)',
@@ -691,6 +691,8 @@ $1',
 'cannotdelete' => 'Страницата или податотеката „$1“ не можеше да се избрише.
 Можеби некој друг веќе ја избришал.',
 'cannotdelete-title' => 'Не можам да ја избришам страницата „$1“',
+'delete-hook-aborted' => 'Бришењето е прекинато со кука.
+Не е дадено никакво образложение.',
 'badtitle' => 'Лош наслов',
 'badtitletext' => 'Бараниот наслов е грешен, празен или неисправно поврзан меѓујазичен или меѓувики наслов. 
 Може да содржи недопуштени знаци.',
@@ -727,6 +729,8 @@ $2',
 Администраторот што ја заклучи го понуди следново образложение: „''$3''“.",
 'invalidtitle-knownnamespace' => 'Неважечки наслов со именски простор „$2“ и текст „$3“',
 'invalidtitle-unknownnamespace' => 'Неважечки наслов со именски простор бр. $1 и текст „$2“',
+'exception-nologin' => 'Не сте најавени',
+'exception-nologin-text' => 'Оваа страница или постапка бара да сте најавени на викито.',
 
 # Virus scanner
 'virus-badscanner' => "Лоша поставка: непознат проверувач на вируси: ''$1''",
@@ -976,7 +980,7 @@ $2
 
 Вашата IP-адреса е $3, a ID на блокирањеto е $5.
 Ве молиме наведете ги овие подробности доколку реагирате на блокирањето.",
-'blockednoreason' => 'не Ðµ Ð´Ð°Ð´ÐµÐ½Ð¾ Ð¾Ð±Ñ\80азложение',
+'blockednoreason' => 'не Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¿Ñ\80иÑ\87ина',
 'whitelistedittext' => 'Мора да сте $1 за да уредувате страници.',
 'confirmedittext' => 'Морате да ја потврдите вашата е-поштенска адреса пред да уредувате страници.
 Поставете ја и валидирајте ја вашата е-поштенска адреса преку вашите [[Special:Preferences|нагодувања]].',
@@ -1777,7 +1781,7 @@ $1",
 'tmp-create-error' => 'Не можев да создадам привремена податотека.',
 'tmp-write-error' => 'Грешка при запис на привремената податотека.',
 'large-file' => 'Се препорачува податотеките да не бидат поголеми од $1; оваа податотека е $2.',
-'largefileserver' => 'Ð\93олеминаÑ\82а Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82екаÑ\82а Ðµ Ð¿Ð¾Ð³Ð¾Ð»ÐµÐ¼Ð° Ð¾Ð´ Ð¼Ð°ÐºÑ\81имално Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð°Ñ\82а Ð³Ð¾Ð»ÐµÐ¼Ð¸Ð½Ð°.',
+'largefileserver' => 'Ð\93олеминаÑ\82а Ð½Ð° Ð¾Ð²Ð°Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ðµ Ð¿Ð¾Ð³Ð¾Ð»ÐµÐ¼Ð° Ð¾Ð´ Ð¼Ð°ÐºÑ\81имално Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð°Ñ\82а Ð³Ð¾Ð»ÐµÐ¼Ð¸Ð½Ð° Ð¾Ð´ Ñ\81еÑ\80веÑ\80оÑ\82.',
 'emptyfile' => 'Податотеката што ја подигнавте изгледа дека е празна.
 Ова може да е поради грешка во името на податотеката.
 Ве молиме проверете дали навистина сакате да ја подигнете оваа податотека.',
@@ -1970,7 +1974,7 @@ $1',
 'nolicense' => 'Нема',
 'license-nopreview' => '(Прегледот не е достапен)',
 'upload_source_url' => ' (важечка, јавно достапна URL-адреса)',
-'upload_source_file' => '(податотека на вашиот сметач)',
+'upload_source_file' => '(податотека на вашиот компјутер)',
 
 # Special:ListFiles
 'listfiles-summary' => 'Оваа специјална страница ги прикажува сите подигнати податотеки.
@@ -2679,7 +2683,7 @@ $1',
 'ipbenableautoblock' => 'Автоматски блокирај ја последната IP-адреса што ја користел корисникот и сите понатамошни адреси од кои ќе се обиде да уредува',
 'ipbsubmit' => 'Блокирај го овој корисник',
 'ipbother' => 'Друг рок:',
-'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 седмица:1 week,2 седмици:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
+'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 недела:1 week,2 недели:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
 'ipbotheroption' => 'друго',
 'ipbotherreason' => 'Друга, дополнителна причина:',
 'ipbhidename' => 'Скриј го корисничкото име во уредувањата и списоците',
@@ -3143,7 +3147,8 @@ $1',
 'spamprotectionmatch' => 'Следниот текст е она што го предизвика нашиот филтер за спам: $1',
 'spambot_username' => 'МедијаВики чистач на спам',
 'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
-'spam_blanking' => 'Сите верзии содржеа врски до $1, бришам',
+'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
+'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
 
 # Info page
 'pageinfo-title' => 'Информации за „$1“',
@@ -4016,8 +4021,8 @@ $5
 'version-entrypoints' => 'URL-а на влезните точки',
 'version-entrypoints-header-entrypoint' => 'Влезна точка',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath?uselang=mk Ð\9fаÑ\82ека Ð½Ð° Ñ\81Ñ\82аÑ\82иÑ\98аÑ\82а]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Ð\9fаÑ\82ека Ð½Ð° Ñ\81кÑ\80ипÑ\82ата]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath?uselang=mk Ð¡Ñ\82аÑ\82иÑ\98а]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Ð¡ÐºÑ\80ипта]',
 
 # Special:FilePath
 'filepath' => 'Патека до податотека',
@@ -4178,6 +4183,8 @@ $5
 'api-error-empty-file' => 'Поднесената податотека е празна.',
 'api-error-emptypage' => 'Создавањето на нови празни страници не е дозволено.',
 'api-error-fetchfileerror' => 'Внатрешна грешка: нешто тргна наопаку при добивањето на податотеката.',
+'api-error-fileexists-forbidden' => 'Веќе постои податотека наречена „$1“ и не може да се презапише.',
+'api-error-fileexists-shared-forbidden' => 'Веќе постои податотека наречена „$1“ во заедничкото складиште и не може да се презапише.',
 'api-error-file-too-large' => 'Поднесената податотека е преголема.',
 'api-error-filename-tooshort' => 'Името на податотеката е прекратко.',
 'api-error-filetype-banned' => 'Овој тип на податотека е забранет.',
@@ -4216,4 +4223,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
 'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не можев да добијам катанци за опслужувачот $1',
 );
index 9618e8b..15b8cbe 100644 (file)
@@ -334,7 +334,7 @@ $messages = array(
 'tog-hidepatrolled' => 'റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-newpageshidepatrolled' => 'റോന്തുചുറ്റിയ താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-extendwatchlist' => 'ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.',
-'tog-usenewrc' => 'വിപàµ\81à´²àµ\80à´\95àµ\83à´¤ à´ªàµ\81തിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´\89പയàµ\8bà´\97ിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
+'tog-usenewrc' => 'സമàµ\80à´ªà´\95ാല à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¤à´¾à´³à´¿à´²àµ\81à´\82 à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനവയàµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിലàµ\81à´\82 à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¤à´¾à´³à´¿à´¨à´¨àµ\81സരിà´\9aàµ\8dà´\9aàµ\8d à´\97ണമായി à´ªàµ\8dരദർശിപàµ\8dà´ªിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
 'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
 'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
 'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
@@ -346,7 +346,7 @@ $messages = array(
 'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchmoves' => 'ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchdeletion' => 'ഞാൻ നീക്കം ചെയ്യുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
-'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി à´¸àµ\8dവയà´\82 അടയാളപ്പെടുത്തുക',
+'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി അടയാളപ്പെടുത്തുക',
 'tog-previewontop' => 'തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക',
 'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തലിന്റെ പ്രിവ്യൂ കാണിക്കുക',
 'tog-nocache' => 'ബ്രൗസറിൽ താളുകൾ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കുന്നത് നിർജ്ജീവമാക്കുക',
@@ -378,7 +378,7 @@ $messages = array(
 'underline-default' => 'ബ്രൗസറിലേതു പോലെ',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി',
+'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി:',
 'editfont-default' => 'ബ്രൗസറിലേതു പോലെ',
 'editfont-monospace' => 'മോണോസ്പേസ്ഡ് ഫോണ്ട്',
 'editfont-sansserif' => 'സാൻസ്-സെറിഫ് ഫോണ്ട്',
@@ -451,8 +451,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന ഒരു പ്രമാണം മാത്രമാണുള്ളത്.|ഈ വർഗ്ഗത്തിൽ മൊത്തം $2 പ്രമാണങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
 'category-file-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
 'listingcontinuesabbrev' => 'തുടർച്ച.',
-'index-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെട്ട താളുകൾ',
-'noindex-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെടാത്ത താളുകൾ',
+'index-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെട്ട താളുകൾ',
+'noindex-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെടാത്ത താളുകൾ',
 'broken-file-category' => 'പ്രമാണത്തിലേക്കുള്ള പ്രവർത്തനരഹിതമായ കണ്ണി ഉൾക്കൊള്ളുന്ന താളുകൾ',
 
 'about' => 'വിവരണം',
@@ -492,7 +492,7 @@ $messages = array(
 'vector-view-viewsource' => 'മൂലരൂപം കാണുക',
 'actions' => 'നടപടികൾ',
 'namespaces' => 'നാമമേഖല',
-'variants' => 'à´\9aà´°ങ്ങൾ',
+'variants' => 'à´°àµ\82പഭàµ\87à´¦ങ്ങൾ',
 
 'errorpagetitle' => 'പിഴവ്',
 'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
@@ -534,7 +534,7 @@ $messages = array(
 'toolbox' => 'പണിസഞ്ചി',
 'userpage' => 'ഉപയോക്താവിന്റെ താൾ കാണുക',
 'projectpage' => 'പദ്ധതി താൾ കാണുക',
-'imagepage' => 'à´®àµ\80à´¡à´¿à´¯ താൾ കാണുക',
+'imagepage' => 'à´ªàµ\8dരമാണ താൾ കാണുക',
 'mediawikipage' => 'സന്ദേശങ്ങളുടെ താൾ കാണുക',
 'templatepage' => 'ഫലകം താൾ കാണുക',
 'viewhelppage' => 'സഹായം താൾ കാണുക',
@@ -590,7 +590,7 @@ $1',
 'youhavenewmessages' => 'താങ്കൾക്ക് $1 ഉണ്ട് ($2).',
 'newmessageslink' => 'പുതിയ സന്ദേശങ്ങൾ',
 'newmessagesdifflink' => 'അവസാന മാറ്റം',
-'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1-ൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
+'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1 താളിൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
 'editsection' => 'തിരുത്തുക',
 'editold' => 'തിരുത്തുക',
 'viewsourceold' => 'മൂലരൂപം കാണുക',
@@ -608,9 +608,9 @@ $1',
 'feedlinks' => 'ഫീഡ്:',
 'feed-invalid' => 'അസാധുവായ സബ്‌സ്ക്രിപ്ഷൻ ഫീഡ് തരം.',
 'feed-unavailable' => 'സിൻഡിക്കേഷൻ ഫീഡുകൾ ലഭ്യമല്ല',
-'site-rss-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86ർ.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d à´«àµ\80à´¡àµ\8d',
-'site-atom-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86à´±àµ\8dà´±à´\82 à´«àµ\80à´¡àµ\8d',
-'page-rss-feed' => '"$1" ന്റെ ആർ.എസ്.എസ്. ഫീഡ്',
+'site-rss-feed' => '$1 ആർ.എസ്.എസ് ഫീഡ്',
+'site-atom-feed' => '$1 ആറ്റം ഫീഡ്',
+'page-rss-feed' => '"$1"  ആർ.എസ്.എസ്. ഫീഡ്',
 'page-atom-feed' => '"$1" ആറ്റം ഫീഡ്',
 'feed-atom' => 'ആറ്റം',
 'feed-rss' => 'ആർ.എസ്.എസ്.',
@@ -668,8 +668,8 @@ $1',
 'missingarticle-rev' => '(മാറ്റം#: $1)',
 'missingarticle-diff' => '(വ്യത്യാസം: $1, $2)',
 'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ പിടിച്ചിരിക്കുന്നു',
-'internalerror' => 'ആന്തരികപ്രശ്നം',
-'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
+'internalerror' => 'ആന്തരിക പിഴവ്',
+'internalerror_info' => 'ആന്തരിക പിഴവ്: $1',
 'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
 'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
 'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
@@ -684,6 +684,8 @@ $1',
 'cannotdelete' => '"$1" എന്ന താൾ അഥവാ പ്രമാണം നീക്കം ചെയ്യാൻ കഴിഞ്ഞില്ല.
 അതു മിക്കവാറും മറ്റാരെങ്കിലും നീക്കം ചെയ്തിട്ടുണ്ടാവാം.',
 'cannotdelete-title' => '"$1" എന്ന താൾ മായ്ക്കാൻ കഴിയില്ല',
+'delete-hook-aborted' => 'മായ്ക്കൽ കൊളുത്തിനാൽ റദ്ദാക്കിയിരിക്കുന്നു.
+വിശദീകരണമൊന്നും നൽകിയിട്ടില്ല.',
 'badtitle' => 'അസാധുവായ തലക്കെട്ട്',
 'badtitletext' => 'താങ്കൾ ആവശ്യപ്പെട്ട തലക്കെട്ടുള്ള ഒരു താൾ നിലവിലില്ല. ഇതു തെറ്റായി അന്തർഭാഷാ/അന്തർവിക്കി കണ്ണി ചെയ്യപ്പെട്ടതു മൂലമോ, തലക്കെട്ടിൽ ഉപയോഗിക്കരുതാത്ത അക്ഷരരൂപങ്ങൾ ഉപയോഗിച്ചതു മൂലമോ സംഭവിച്ചതായിരിക്കാം.',
 'perfcached' => 'താഴെ കൊടുത്തിരിക്കുന്ന വിവരം ശേഖരിച്ചു വെച്ചിരിക്കുന്നതാണ്, അതുകൊണ്ട് ചിലപ്പോൾ പുതിയതായിരിക്കണമെന്നില്ല. പരമാവധി {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}} ശേഖരിച്ചുവെച്ചിരിക്കുന്നവയിൽ ഉണ്ട്.',
@@ -715,6 +717,8 @@ $2',
 ബന്ധിച്ച കാര്യ‌നിർവാഹക(ൻ) നൽകിയിരിക്കുന്ന കാരണം "\'\'$3\'\'" എന്നാണ്.',
 'invalidtitle-knownnamespace' => 'നാമമേഖല "$2", എഴുത്ത് "$3" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്',
 'invalidtitle-unknownnamespace' => 'അപരിചിതമായ നാമമേഖലാ സംഖ്യ $1, എഴുത്ത് "$2" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്',
+'exception-nologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
+'exception-nologin-text' => 'ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കേണ്ടതാണ്.',
 
 # Virus scanner
 'virus-badscanner' => "തെറ്റായ ക്രമീകരണങ്ങൾ: അപരിചിതമായ വൈറസ് തിരച്ചിൽ ഉപാധി :  ''$1''",
@@ -734,7 +738,7 @@ $2',
 'yourpassword' => 'രഹസ്യവാക്ക്:',
 'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
 'remembermypassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
-'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aതിനàµ\81 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. ഉപയോഗിക്കുക',
+'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശനതàµ\8dതിനàµ\81 à´¶àµ\87à´·à´µàµ\81à´\82 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. à´¤à´¨àµ\8dà´¨àµ\86 ഉപയോഗിക്കുക',
 'yourdomainname' => 'താങ്കളുടെ ഡൊമെയിൻ:',
 'externaldberror' => 'ഒന്നുകിൽ ഡേറ്റാബേസ് സാധൂകരണത്തിൽ പ്രശ്നം ഉണ്ടായിരുന്നു അല്ലെങ്കിൽ നവീകരിക്കുവാൻ താങ്കളുടെ ബാഹ്യ അംഗത്വം താങ്കളെ അനുവദിക്കുന്നില്ല.',
 'login' => 'പ്രവേശിക്കുക',
@@ -1053,8 +1057,8 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'moveddeleted-notice' => 'ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.
 ഈ താളിന്റെ മായ്ക്കൽ രേഖ പരിശോധനയ്ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു',
 'log-fulllog' => 'എല്ലാ രേഖകളും കാണുക',
-'edit-hook-aborted' => 'à´\95àµ\8aà´³àµ\81à´¤àµ\8dà´¤àµ\8d à´\9bàµ\87ദിà´\9aàµ\8dà´\9a à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d.
-à´\87à´¤àµ\8d à´\92à´°àµ\81 à´µà´¿à´¶à´¦àµ\80à´\95രണവും നൽകിയിട്ടില്ല.',
+'edit-hook-aborted' => 'തിരàµ\81à´¤àµ\8dതൽ à´\95àµ\8aà´³àµ\81à´¤àµ\8dതിനാൽ à´±à´¦àµ\8dദാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.
+വിശദàµ\80à´\95രണമàµ\8aà´¨àµ\8dà´¨ും നൽകിയിട്ടില്ല.',
 'edit-gone-missing' => 'ഈ താൾ പുതുക്കുവാൻ സാധിക്കുകയില്ല.
 ഇത് മായ്ക്കപ്പെട്ടതായി കാണുന്നു.',
 'edit-conflict' => 'തിരുത്തൽ സമരസപ്പെടായ്ക.',
@@ -1558,7 +1562,7 @@ $1",
 'right-edituserjs' => 'മറ്റ് ഉപയോക്താക്കളുടെ JS പ്രമാണങ്ങൾ തിരുത്തുക',
 'right-rollback' => 'ഒരു പ്രത്യേക താളിൽ അവസാനം തിരുത്തൽ നടത്തിയ ഉപയോക്താവിന്റെ തിരുത്തൽ പെട്ടെന്ന് ഒഴിവാക്കുക',
 'right-markbotedits' => 'മുൻപ്രാപനം നടത്തിയ തിരുത്തലുകൾ യാന്ത്രിക തിരുത്തലുകളായി അടയാളപ്പെടുത്തുക',
-'right-noratelimit' => 'നിലവാരമിà´\9fലിനàµ\8dà´±àµ\86 പരിധികൾ ബാധകമല്ല',
+'right-noratelimit' => 'à´ªàµ\8dരവർതàµ\8dതനà´\99àµ\8dà´\99ൾà´\95àµ\8dà´\95àµ\8d പരിധികൾ ബാധകമല്ല',
 'right-import' => 'മറ്റുള്ള വിക്കികളിൽ നിന്നും താളുകൾ ഇറക്കുമതി ചെയ്യുക',
 'right-importupload' => 'അപ്‌‌ലോഡ് ചെയ്ത പ്രമാണത്തിൽ നിന്നും താളുകൾ ഇറക്കുമതി ചെയ്യുക',
 'right-patrol' => 'മറ്റുള്ളവരുടെ തിരുത്തലുകൾ റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക',
@@ -1821,6 +1825,18 @@ $1',
 'backend-fail-connect' => '"$1"  ശേഖരണ ബാക്കെൻഡുമായി ബന്ധപ്പെടാൻ കഴിഞ്ഞില്ല.',
 'backend-fail-internal' => '"$1" എന്ന സ്റ്റോറേജ് ബാക്കെൻഡിൽ അപരിചിതമായ പിഴവ് സംഭവിച്ചു.',
 'backend-fail-contenttype' => '"$1" എന്നതിൽ സംഭരിച്ചിരിക്കുന്ന പ്രമാണത്തിന്റെ ഉള്ളടക്ക തരം നിർണ്ണയിക്കാനായില്ല.',
+'backend-fail-usable' => 'ആവശ്യമായത്ര അനുമതിയില്ലാത്തതു കൊണ്ടോ ഡയറക്റ്ററികൾ/കണ്ടൈനറുകൾ ഇല്ലാത്തതു കൊണ്ടോ പ്രമാണം $1 എഴുതിച്ചേർക്കാൻ കഴിഞ്ഞില്ല.',
+
+# Lock manager
+'lockmanager-notlocked' => '"$1" എന്നതിലെ പൂട്ടൽ അഴിക്കാൻ കഴിഞ്ഞില്ല; അത് പൂട്ടിയിട്ടില്ല.',
+'lockmanager-fail-closelock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം അടയ്ക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-deletelock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം നീക്കംചെയ്യാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-acquirelock' => '"$1" എന്നതിന്റെ പൂട്ട് ലഭ്യമാക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-openlock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം തുറക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-releaselock' => '"$1" എന്നതിന്റെ പൂട്ട് വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-db-bucket' => '$1 എന്ന ബക്കറ്റിൽ ആവശ്യത്തിനു പൂട്ടൽ ഡേറ്റാബേസുകളെ ബന്ധപ്പെടാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-db-release' => '$1 ഡേറ്റാബേസിലെ പൂട്ടലുകൾ വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-svr-release' => '$1 സെർവറിലെ പൂട്ടലുകൾ വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'സിപ് (ZIP) പരിശോധനകൾക്കായി പ്രമാണം തുറന്നപ്പോൾ പിഴവുണ്ടായി.',
@@ -2119,7 +2135,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'booksources-invalid-isbn' => 'തന്നിരിക്കുന്ന ഐ.എസ്.ബി.എൻ. സാധുവാണെന്നു തോന്നുന്നില്ല; യഥാർത്ഥ സ്രോതസ്സിൽ നിന്നും പകർത്തിയപ്പോൾ തെറ്റുപറ്റിയോ എന്നു പരിശോധിക്കുക',
 
 # Special:Log
-'specialloguserlabel' => 'à´\86വിഷàµ\8dà´\95ർതàµ\8dതാവàµ\8d:',
+'specialloguserlabel' => 'à´¨à´\9fà´ªàµ\8dപിലാà´\95àµ\8dà´\95ിയയാൾ:',
 'speciallogtitlelabel' => 'ലക്ഷ്യം (തലക്കെട്ട് അല്ലെങ്കിൽ ഉപയോക്താവ്) :',
 'log' => 'പ്രവർത്തനരേഖകൾ',
 'all-logs-page' => 'എല്ലാ പൊതുരേഖകളും',
@@ -2137,7 +2153,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'allpagesto' => 'ഇതിൽ അവസാനിക്കുന്ന താളുകൾ കാട്ടുക:',
 'allarticles' => 'എല്ലാ താളുകളും',
 'allinnamespace' => 'എല്ലാ താളുകളും ($1 നാമമേഖല)',
-'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതതàµ\8d)',
+'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതവ)',
 'allpagesprev' => 'മുമ്പത്തെ',
 'allpagesnext' => 'അടുത്തത്',
 'allpagessubmit' => 'പോകൂ',
@@ -2181,7 +2197,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'listusersfrom' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ പ്രദർശിപ്പിക്കുക:',
 'listusers-submit' => 'പ്രദർശിപ്പിക്കുക',
 'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
-'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¤àµ\8d)',
+'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fàµ\81)',
 
 # Special:ActiveUsers
 'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
@@ -2202,7 +2218,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 വ്യക്തിപരമായ അവകാശങ്ങളെ കുറിച്ച് [[{{MediaWiki:Listgrouprights-helppage}}|കൂടുതൽ വിവരങ്ങൾ]] ഉണ്ടാകാനിടയുണ്ട്.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">അവകാശം നൽകിയിരിക്കുന്നു</span>
 * <span class="listgrouprights-revoked">അവകാശം നീക്കിയിരിക്കുന്നു</span>',
-'listgrouprights-group' => 'വിഭാà´\97ം',
+'listgrouprights-group' => 'à´¸à´\82à´\98ം',
 'listgrouprights-rights' => 'അവകാശങ്ങൾ',
 'listgrouprights-helppage' => 'Help:സംഘാവകാശങ്ങൾ',
 'listgrouprights-members' => '(അംഗങ്ങളുടെ പട്ടിക)',
@@ -2414,7 +2430,7 @@ $UNWATCHURL
 'protect-othertime' => 'മറ്റ് കാലാവധി:',
 'protect-othertime-op' => 'മറ്റു കാലയളവ്',
 'protect-existing-expiry' => 'നിലവിലെ കാലാവധി: $3, $2',
-'protect-otherreason' => 'മറàµ\8dà´±àµ\81à´³àµ\8dà´³/à´ªàµ\81റമàµ\87à´¯àµ\81à´³àµ\8dà´³ കാരണം:',
+'protect-otherreason' => 'മറàµ\8dà´±àµ\8d/à´\95àµ\82à´\9fàµ\81തൽ കാരണം:',
 'protect-otherreason-op' => 'മറ്റ് കാരണം',
 'protect-dropdown' => '*സംരക്ഷിക്കാനുള്ള കാരണങ്ങൾ
 ** അമിതമായ നശീകരണപ്രവർത്തനങ്ങൾ
@@ -2629,7 +2645,7 @@ $1',
 'change-blocklink' => 'തടയലിൽ മാറ്റം വരുത്തുക',
 'contribslink' => 'സംഭാവനകൾ',
 'emaillink' => 'ഇമെയിൽ അയയ്ക്കുക',
-'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1ന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" ആണ്‌.',
+'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1 എന്ന ഉപയോക്താവിന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" എന്നാണ്‌.',
 'blocklogpage' => 'തടയൽ രേഖ',
 'blocklog-showlog' => 'ഈ ഉപയോക്താവ് മുമ്പേ തടയപ്പെട്ടതാണ്.
 തടയൽ രേഖ അവലംബമായി താഴെ കൊടുത്തിരിക്കുന്നു:',
@@ -3024,7 +3040,8 @@ $1',
 'spamprotectionmatch' => 'പാഴെഴുത്ത് അരിപ്പയെ ഉണർത്തിയ എഴുത്ത് താഴെ കൊടുത്തിരിക്കുന്നു: $1',
 'spambot_username' => 'മീഡിയാവിക്കിയിലെ പാഴെഴുത്ത് ശുദ്ധീകരണം',
 'spam_reverting' => '$1 എന്നതിലേയ്ക്കുള്ള കണ്ണികളില്ലാത്ത അവസാന നാൾപ്പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്യുന്നു',
-'spam_blanking' => '$1 എന്ന കണ്ണികളുള്ള നാൾപ്പതിപ്പുകളെല്ലാം ശൂന്യമാക്കുന്നു',
+'spam_blanking' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും ശൂന്യമാക്കുന്നു',
+'spam_deleting' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും മായ്ക്കുന്നു',
 
 # Info page
 'pageinfo-title' => '"$1" എന്ന താളിന്റെ വിവരങ്ങൾ',
@@ -3326,6 +3343,9 @@ $1',
 
 # EXIF attributes
 'exif-compression-1' => 'ചുരുക്കാത്തത്',
+'exif-compression-5' => 'എൽ.സെഡ്.ഡബ്ല്യു.',
+'exif-compression-6' => 'ജെപിഇജി (പഴയത്)',
+'exif-compression-7' => 'ജെപിഇജി',
 
 'exif-copyrighted-true' => 'പകർപ്പവകാശസംരക്ഷിതം',
 'exif-copyrighted-false' => 'പൊതുസഞ്ചയം',
@@ -3544,7 +3564,7 @@ $1',
 'confirmemail_noemail' => '[[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളുടെ കൂടെ]] സാധുവായൊരു ഇ-മെയിൽ വിലാസം സജ്ജീകരിച്ചിട്ടില്ല.',
 'confirmemail_text' => '{{SITENAME}} സം‌രംഭത്തിൽ ഇ-മെയിൽ സൗകര്യം ഉപയോഗിക്കണമെങ്കിൽ താങ്കൾ താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിന്റെ സാധുത തെളിയിച്ചിരിക്കണം. താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണ മെയിൽ അയക്കുവാൻ താഴെയുള്ള ബട്ടൺ അമർത്തുക. താങ്കൾക്ക് അയക്കുന്ന ഇ-മെയിലിൽ ഒരു സ്ഥിരീകരണ കോഡ് ഉണ്ട്. ആ കോഡിൽ അമർത്തിയാൽ താങ്കളുടെ വിലാസത്തിന്റെ സാധുത തെളിയിക്കപ്പെടും.',
 'confirmemail_pending' => 'താങ്കളുടെ അംഗത്വം ഈ അടുത്ത് ഉണ്ടാക്കിയതാണെങ്കിൽ,  ഒരു സ്ഥിരീകരണ കോഡ് താങ്കൾക്ക് ഇ-മെയിൽ ചെയ്തിട്ടുണ്ട്.  പുതിയ സ്ഥിരീകരണ കോഡ് ആവശ്യപ്പെടാൻ ശ്രമിക്കുന്നതിനു മുൻപ് ആദ്യത്തെ സ്ഥിരീകരണ കോഡിനായി കുറച്ച് സമയം കാത്തിരിക്കൂ.',
-'confirmemail_send' => 'സ്ഥിരീകരണ കോഡ് (confirmation code) മെയിൽ ചെയ്യുക',
+'confirmemail_send' => 'സ്ഥിരീകരണ കോഡ്  ഇമെയിലിൽ അയയ്ക്കുക',
 'confirmemail_sent' => 'സ്ഥിരീകരണ ഇ-മെയിൽ അയച്ചിരിക്കുന്നു.',
 'confirmemail_oncreate' => 'ഒരു സ്ഥിരീകരണ കോഡ് താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് അയച്ചിട്ടുണ്ട്.
 ലോഗിൻ ചെയ്യുന്നതിനു ഈ കോഡ് ആവശ്യമില്ല. പക്ഷെ വിക്കിയിൽ ഇ-മെയിലുമായി ബന്ധപ്പെട്ട സേവനങ്ങൾ ഉപയോഗിക്കുന്നതിനു മുൻപ് പ്രസ്തുത കോഡ് ഉപയോഗിച്ച് ഇ-മെയിൽ സ്ഥിരീകരിച്ചിരിക്കണം.',
@@ -3610,6 +3630,8 @@ $5
 'confirmrecreate-noreason' => 'താങ്കൾ തിരുത്താനാരംഭിച്ചതിനു ശേഷം, ഉപയോക്താവ് [[User:$1|$1]] ([[User talk:$1|സംവാദം]]) ഈ താൾ മായ്ച്ചിരിക്കുന്നു. ഈ താൾ പുനഃസൃഷ്ടിക്കണം എന്നത് സ്ഥിരീകരിക്കുക.',
 'recreate' => 'പുനഃസൃഷ്ടിക്കുക',
 
+'unit-pixel' => 'ബിന്ദു',
+
 # action=purge
 'confirm_purge_button' => 'ശരി',
 'confirm-purge-top' => 'ഈ താളിന്റെ കാഷെ ക്ലീയർ ചെയ്യട്ടെ?',
@@ -3645,6 +3667,19 @@ $5
 'autoredircomment' => '[[$1]] എന്ന താളിലേക്ക് തിരിച്ചുവിടുന്നു',
 'autosumm-new' => "'$1' താൾ സൃഷ്ടിച്ചിരിക്കുന്നു",
 
+# Size units
+'size-bytes' => '$1 ബൈ',
+'size-kilobytes' => '$1 കെ.ബി.',
+'size-megabytes' => '$1 എം.ബി.',
+'size-gigabytes' => '$1 ജി.ബി.',
+'size-terabytes' => '$1 ടി.ബി.',
+
+# Bitrate units
+'bitrate-bits' => '$1ബി.പി.എസ്.',
+'bitrate-kilobits' => '$1കെ.ബി.പി.എസ്.',
+'bitrate-megabits' => '$1എം.ബി.പി.എസ്.',
+'bitrate-gigabits' => '$1ജി.ബി.പി.എസ്.',
+
 # Live preview
 'livepreview-loading' => 'ശേഖരിക്കുന്നു...',
 'livepreview-ready' => 'ശേഖരിച്ചുകൊണ്ടിരിക്കുന്നു… തയ്യാർ!',
@@ -3677,7 +3712,7 @@ $5
 
 # Watchlist editing tools
 'watchlisttools-view' => 'ബന്ധപ്പെട്ട മാറ്റങ്ങൾ കാട്ടുക',
-'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95à´¾à´\9fàµ\8dà´\9fുക, തിരുത്തുക',
+'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95ാണുക, തിരുത്തുക',
 'watchlisttools-raw' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ മൂലരൂപം തിരുത്തുക',
 
 # Signatures
@@ -3718,6 +3753,8 @@ $5
 'version-entrypoints' => 'പ്രവേശന നില യൂ.ആർ.എല്ലുകൾ',
 'version-entrypoints-header-entrypoint' => 'പ്രവേശന നില',
 'version-entrypoints-header-url' => 'യൂ.ആർ.എൽ.',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath ലേഖന പഥം]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath സ്ക്രിപ്റ്റ് പഥം]',
 
 # Special:FilePath
 'filepath' => 'പ്രമാണത്തിലേക്കുള്ള വിലാസം',
@@ -3843,7 +3880,7 @@ $5
 'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
 'logentry-move-move' => '$1 എന്ന ഉപയോക്താവ് $3 എന്ന താൾ $4 എന്നാക്കി മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move-noredirect' => '$3 എന്ന താൾ $4 എന്ന തലക്കെട്ടിലേയ്ക്ക് തിരിച്ചുവിടലില്ലാതെ $1 മാറ്റി',
-'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനു മുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move_redir-noredirect' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക്, തിരിച്ചുവിടൽ ഇല്ലാതെ മാറ്റിയിരിക്കുന്നു',
 'logentry-patrol-patrol' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
 'logentry-patrol-patrol-auto' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 സ്വതേ അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
@@ -3880,6 +3917,8 @@ $5
 'api-error-empty-file' => 'താങ്കൾ സമർപ്പിച്ച പ്രമാണം ശൂന്യമാണ്.',
 'api-error-emptypage' => 'ശൂന്യമായ പുതിയ താളുകൾ സൃഷ്ടിക്കുന്നത് അനുവദിക്കുന്നില്ല.',
 'api-error-fetchfileerror' => 'ആന്തരിക പിഴവ്: പ്രമാണം ശേഖരിച്ചുകൊണ്ടിരുന്നപ്പോൾ എന്തോ പിഴവുണ്ടായി.',
+'api-error-fileexists-forbidden' => '"$1" എന്ന പേരിൽ ഒരു പ്രമാണം മുമ്പേയുണ്ട്, അതിന്റെ മുകളിലായി സൃഷ്ടിക്കാനാകില്ല.',
+'api-error-fileexists-shared-forbidden' => '"$1" എന്ന പേരിൽ ഒരു പ്രമാണം പങ്ക് വെച്ചുപയോഗിക്കുന്ന ശേഖരത്തിൽ മുമ്പേയുണ്ട്, അതിനു മുകളിലായി സൃഷ്ടിക്കാനാകില്ല.',
 'api-error-file-too-large' => 'താങ്കൾ സമർപ്പിച്ച പ്രമാണം വളരെ വലുതാണ്.',
 'api-error-filename-tooshort' => 'പ്രമാണത്തിന്റെ പേര് വളരെച്ചെറുതാണ്.',
 'api-error-filetype-banned' => 'ഈ തരത്തിലുള്ള പ്രമാണങ്ങൾ നിരോധിച്ചിരിക്കുന്നു.',
index 81c228d..2d7ee74 100644 (file)
@@ -28,6 +28,7 @@
  * @author Rahuldeshmukh101
  * @author Rdeshmuk
  * @author Sankalpdravid
+ * @author Sau6402
  * @author Shantanoo
  * @author Shreewiki
  * @author Shreyas19
@@ -958,6 +959,7 @@ $2',
 'updated' => '(बदल झाला आहे.)',
 'note' => "'''सूचना:'''",
 'previewnote' => "'''लक्षात ठेवा की ही फक्त झलक आहे''', बदल अजून जतन करण्यात आलेले नाहीत.",
+'continue-editing' => 'संपादन चालु राहुदे',
 'previewconflict' => 'वरील संपादन क्षेत्रातील मजकूर जतन केल्यावर या झलकेप्रमाणे दिसेल.',
 'session_fail_preview' => "'''क्षमस्व! सत्र विदेच्या क्षयामुळे आम्ही तुमची संपादन प्रक्रीया पार पाडू शकलो नाही.कृपया पुन्हा प्रयत्न करा.जर एवढ्याने काम झाले नाही तर सदस्य खात्यातून बाहेर पडून पुन्हा प्रवेश करून पहा.'''",
 'session_fail_preview_html' => "'''क्षमस्व! सत्र विदेच्या क्षयामुळे आम्ही तुमची संपादन प्रक्रीया पार पाडू शकलो नाही.'''
@@ -970,6 +972,7 @@ $2',
 असे कदाचित तुम्ही अनामिक proxy वापरत असल्याने होऊ शकते.'''",
 'edit_form_incomplete' => '”’तुमच्या संपादनाचा काही भाग सर्व्हरपर्यंत पोचला नाही; तुमचे संपादन पूर्ण आहे का याची पुन्हा खात्री करा.',
 'editing' => '$1 चे संपादन होत आहे.',
+'creating' => '$1 ची निर्मिती सुरु आहे',
 'editingsection' => '$1 (विभाग) संपादन',
 'editingcomment' => '$1 चे संपादन (प्रतिक्रिया)',
 'editconflict' => 'वादग्रस्त संपादन: $1',
@@ -1219,6 +1222,8 @@ $1",
 
 # Diffs
 'history-title' => '"$1" चा संपादन इतिहास',
+'difference-title' => '"$1" च्या विविध उजळण्या',
+'difference-title-multipage' => '"$1" व "$2" या पानान मधला फरक',
 'difference-multipage' => '(पानांमधील फरक)',
 'lineno' => 'ओळ $1:',
 'compareselectedversions' => 'निवडलेल्या आवृत्त्यांमधील बदल पहा',
@@ -1313,6 +1318,7 @@ $1",
 'prefs-beta' => 'बीटा चेहेरेपट्टी',
 'prefs-datetime' => 'दिनांक आणि वेळ',
 'prefs-labs' => 'प्रायोगिक वैशिष्ट्ये',
+'prefs-user-pages' => 'सदस्य पान',
 'prefs-personal' => 'सदस्य व्यक्तिरेखा',
 'prefs-rc' => 'अलीकडील बदल',
 'prefs-watchlist' => 'नित्य पहाण्याची सूची',
@@ -1755,7 +1761,8 @@ $1',
 'backend-fail-writetemp' => 'तात्पुरत्या संचिकेत लिहिणे जमले नाही.',
 'backend-fail-closetemp' => 'तात्पुरती संचिका बंद करणे जमले नाही.',
 'backend-fail-read' => '$1 ही संचिका वाचता आली नाही.',
-'backend-fail-create' => '$1 ही संचिका बनवता आली नाही.',
+'backend-fail-create' => '$1 ही संचिका लिहिता आली नाही.',
+'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|one byte|$2 bytes}} पेक्षा मोठी आहे.',
 'backend-fail-readonly' => 'पार्श्वभौमीक साठवण "$1" “फक्त वाचा” असे आहे. दिलेले कारण "$2" आहे.',
 'backend-fail-synced' => 'अंतर्गत पार्श्वभौमीक साठवणीतील फाईल "$1" विसंगत आहे.',
 'backend-fail-connect' => 'पार्श्वभौमीक साठा "$1"शी संबंध जोडू शकत नाही.',
@@ -2086,6 +2093,9 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
 'allpagesbadtitle' => 'दिलेले शीर्षक चुकीचे किंवा आंतरभाषीय किंवा आंतरविकि शब्दाने सुरू होणारे होते. त्यात एक किंवा अधिक शीर्षकात न वापरता येणारी अक्षरे असावीत.',
 'allpages-bad-ns' => '{{SITENAME}}मध्ये "$1" हे नामविश्व नाही.',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'आखेरचे दृश्य',
+
 # Special:Categories
 'categories' => 'वर्ग',
 'categoriespagetext' => 'विकिवर खालील वर्ग {{PLURAL:$1|आहे|आहेत}}.
@@ -3626,6 +3636,9 @@ $5
 'version-software' => 'स्थापित संगणक प्रणाली (Installed software)',
 'version-software-product' => 'उत्पादन',
 'version-software-version' => 'आवृत्ती',
+'version-entrypoints' => 'आत येणारी यू॰आर॰एल',
+'version-entrypoints-header-entrypoint' => 'आत येण्याचा मार्ग',
+'version-entrypoints-header-url' => 'यू॰आर॰एल',
 
 # Special:FilePath
 'filepath' => 'संचिका मार्ग',
@@ -3809,4 +3822,16 @@ $5
 'api-error-uploaddisabled' => 'चढवण्याचे कार्य ह्या विकिवर अवरुद्ध करण्यात आले आहे',
 '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|शतकापूर्वी|शतकांपूर्वी }}',
+
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'सर्व्हर "$1" वरील कुलूप उघडू शकत नाही',
 );
index 3907128..3f0e6c4 100644 (file)
@@ -198,7 +198,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Sorokkan suntingan yang telah dironda daripada senarai perubahan terkini',
 'tog-newpageshidepatrolled' => 'Sorokkan laman yang telah dironda daripada senarai laman baru',
 'tog-extendwatchlist' => 'Kembangkan senarai pantau untuk memaparkan semua perubahan, bukan hanya yang terkini',
-'tog-usenewrc' => 'Guna peningkatan perubahan terkini (perlukan JavaScript)',
+'tog-usenewrc' => 'Perubahan kumpulan mengikut laman dalam perubahan terkini dan senarai pantau (memerlukan JavaScript)',
 'tog-numberheadings' => 'Nomborkan tajuk secara automatik',
 'tog-showtoolbar' => 'Tunjukkan bar sunting (JavaScript)',
 'tog-editondblclick' => 'Klik ganda untuk sunting halaman (JavaScript)',
@@ -555,6 +555,8 @@ Sila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:
 'cannotdelete' => 'Laman atau fail $1 tidak dapat dihapuskan.
 Ia mungkin telah pun dihapuskan oleh orang lain.',
 'cannotdelete-title' => 'Laman "$1" tidak dapat dihapuskan',
+'delete-hook-aborted' => 'Penghapusan dibatalkan oleh penyangkuk.
+Tiada sebab diberikan.',
 'badtitle' => 'Tajuk tidak sah',
 'badtitletext' => 'Tajuk laman yang diminta tidak sah, kosong, ataupun tajuk antara bahasa atau tajuk antara wiki yang salah dipaut. Ia mungkin mengandungi aksara yang tidak dibenarkan.',
 'perfcached' => 'Data yang berikut disimpan dalam cache dan mungkin tidak terkemas kini. Semaksimum {{PLURAL:$1|satu hasil|$1 hasil}} terdapat dalam cache.',
@@ -585,6 +587,8 @@ Pertanyaan: $2',
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
@@ -2881,7 +2885,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'tooltip-rollback' => 'Balikkan semua suntingan oleh penyumbang terakhir pada laman ini dengan satu klik.',
 'tooltip-undo' => 'Balikkan suntingan ini dan buka borang sunting dalam mod pralihat. Sebab boleh dinyatakan dalam ruangan ringkasan.',
 'tooltip-preferences-save' => 'Simpan keutamaan',
-'tooltip-summary' => 'Masukkan ringkasan pendek',
+'tooltip-summary' => 'Berikan ringkasan',
 
 # Stylesheets
 'common.css' => '/* CSS yang terletak di sini akan digunakan pada semua kulit */',
@@ -2917,6 +2921,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'spambot_username' => 'Pembersihan spam MediaWiki',
 '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',
 
 # Info page
 'pageinfo-title' => 'Maklumat untuk "$1"',
@@ -3802,6 +3807,8 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'api-error-empty-file' => 'Fail yang anda serahkan adalah kosong.',
 'api-error-emptypage' => 'Anda tidak dibenarkan membuat laman baru yang kosong.',
 'api-error-fetchfileerror' => 'Ralat dalaman: ada malasah ketika mengambil fail itu.',
+'api-error-fileexists-forbidden' => 'Fail bernama "$1" sudah wujud, dan tidak boleh ditulis ganti.',
+'api-error-fileexists-shared-forbidden' => 'Fail bernama "$1" sudah wujud dalam repositori fail kongsian, dan tidak boleh ditulis ganti.',
 'api-error-file-too-large' => 'Fail yang anda serahkan adalah terlalu besar.',
 'api-error-filename-tooshort' => 'Nama fail ini terlalu pendek.',
 'api-error-filetype-banned' => 'Fail jenis ini adalah dilarang.',
@@ -3840,4 +3847,6 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'duration-centuries' => '$1 abad',
 'duration-millennia' => '$1 alaf',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Selak-selak tidak dapat diperoleh di pelayan $1.',
 );
index 0f1552c..6eacf0b 100644 (file)
@@ -136,7 +136,7 @@ $messages = array(
 'tog-extendwatchlist' => 'گت تر هکردن دمبال هکرده‌ئون فهرست تموم دگارسه‌ئون سر، و نا فقط آخرین  موردون',
 'tog-usenewrc' => 'استفاده از تازه دگاردسته‌ئون گت‌تر بَیی (نیازمند جاوااسکریپت)',
 'tog-numberheadings' => 'شماره بشتن خدکار عناوین',
-'tog-showtoolbar' => 'نشون هدائن نوار ابزار جعبه دچی ین',
+'tog-showtoolbar' => 'دچی‌ین جعبه نوار ابزار ره سِراق هدائن',
 'tog-editondblclick' => 'دچی ین ولگون با دتا کلیک (نیازمند جاوااسکریپت)',
 'tog-editsection' => 'به کار دمبدائن تیکه‌ئون دچی‌ین از طریق پیوندون [دچی‌ین]',
 'tog-editsectiononrightclick' => 'به کار دمبدائن دچی‌ین قسمت‌ئون با راست کیلیک<br />عناوین قسمت‌ئون ِرو (جاوااسکریپت)',
@@ -154,7 +154,7 @@ $messages = array(
 'tog-enotifusertalkpages' => 'هر گادر منه کاروری صفخه‌ی گپ دله ات چی بنویشنه مه سّه ایمیل بزن',
 'tog-enotifminoredits' => 'هرگادر صحه ها دله اتا خورد چی ره عوض هکردنه مه وسّه ایمیل بزن',
 'tog-enotifrevealaddr' => 'منه ایمیل نامه ئون ایطیلاع رسونی دله دواشه',
-'tog-shownumberswatching' => 'نشون هدائن کارورن دمبال کوننده',
+'tog-shownumberswatching' => 'دمبالکرونِ سِراق هدائن',
 'tog-oldsig' => 'پیش نیمایش ایمضای موجود:',
 'tog-fancysig' => 'ایمضا ره ویکی متن نظر بیرین (بدون لینک هایتن)',
 'tog-externaleditor' => 'به شیکل پیش فرض خارجی ویرایشگرون جه ایستیفاده بواشه',
@@ -330,14 +330,14 @@ $messages = array(
 'talk' => 'گپ',
 'views' => 'هارشی‌ئون',
 'toolbox' => 'أبـزار جـا',
-'userpage' => 'کارور صفحه ره نشون هدائن',
+'userpage' => 'کارور صفحه ره سِراق هدائن',
 'projectpage' => 'بدی‌ین پروژه‌ی ِصفحه',
 'imagepage' => 'بدی‌ین ِعکس ِصفحه',
 'mediawikipage' => 'پیغوم ره بدی‌ین',
 'templatepage' => 'بدی‌ین شابلون',
 'viewhelppage' => 'راهنما صفحه هارشی‌ین',
 'categorypage' => 'بدی‌ین رج',
-'viewtalkpage' => 'گپ ئون ره نشون هدائن',
+'viewtalkpage' => 'گپون ره سِراق هدائن',
 'otherlanguages' => 'بقیه زوون‌ئون',
 'redirectedfrom' => '($1 جه بموئه)',
 'redirectpagesub' => 'گجگی‌بَیتـِن',
@@ -363,7 +363,7 @@ $2، $1',
 'edithelp' => 'دچی‌ین رانما',
 'edithelppage' => 'Help:دَچی‌ین',
 'helppage' => 'Help:راهنما',
-'mainpage' => 'گت ولگ',
+'mainpage' => 'گت صفحه',
 'mainpage-description' => 'گت صفحه',
 'policy-url' => 'Project:سیاستون',
 'portal' => 'کارورون ِلوش',
@@ -545,7 +545,7 @@ $2، $1',
 'watchthis' => 'این صفحه ره دمبال هـاکاردن',
 'savearticle' => 'جادکتن ِصفحه',
 'preview' => 'پیش نمایش',
-'showpreview' => 'پیش‌نمایش نشون هدائن',
+'showpreview' => 'پیش‌نمایش ره سِراق هدائن',
 'showlivepreview' => 'پیش‌نمایش آنلاین',
 'showdiff' => 'نمایش تغییرات',
 'blockedtext' => "'''شمه آی پی دوسته بیّه.'''
@@ -599,7 +599,7 @@ $2، $1',
 'historyempty' => '(خالی)',
 
 # Revision deletion
-'rev-delundel' => 'نشون هدائن/فرو بوردن',
+'rev-delundel' => 'دیار بیّن/فرو بوردن',
 'revdelete-text' => "'''نسخه‌ئون و حذف بئی موارد ره بشنه سیاهه جا و صفحه تاریخچه دله بدین، ولی اتی قسمت از وشونه محتواره بقیه کارورون نتوننه بوینن.'''
 {{SITENAME}} بقیه مدیرون بتوننه اینتا پنهون بئیه محتوا ره هارشن و وشونه حذف بئیون ره احیاء هاکنن، مگر اینکه اتی سری محدودیت ونه رو اعمال بئی باشه.",
 'revdel-restore' => 'دیاری تغییر هدائن',
@@ -880,13 +880,15 @@ $2، $1',
 'blockip-title' => 'کارور ره دَوستن',
 'blockip-legend' => 'کارور ره دَوستن',
 'ipbsubmit' => 'ای کارور دأبه‌س بأوه',
+'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایون:infinite',
 'ipblocklist' => 'IP نـه‌شـونـی‌ئون ئو کـارورنـوم‌ئونی کـه دأبـه‌سـتـوونـه',
 'infiniteblock' => 'بی‌پایون',
+'expiringblock' => '$1 دله، ساعت $2 دِرِس وونه',
 'blocklink' => 'دَوستن',
 'unblocklink' => 'وا هـه‌کـارده‌ن',
 'change-blocklink' => 'قطع دسترسی تغییر هدائن',
 'contribslink' => 'کایری‌ئون',
-'blocklogentry' => '[[$1]] دأبـه‌سـتـو بـأیـه ئو وه‌نـه دأبه‌ستو بوئه‌ن زأمـون، تـا  $2 $3 هـأسـه',
+'blocklogentry' => '[[$1]] دَوسته بیّه و ونه دَوسته بی‌ین گادِر $2 تا $3 هسته',
 
 # Move page
 'newtitle' => 'ترنه نوم:',
index 51a8e22..86ed4e1 100644 (file)
@@ -36,6 +36,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Neneuhcāyōtl_tēixnāmiquiliztli',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $namespaceAliases = array(
        'Media'         => NS_MEDIA,
        'Especial'      => NS_SPECIAL,
index 2f002b9..8d3edf6 100644 (file)
@@ -25,7 +25,10 @@ $dateFormats = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Liân-kiat oē té-sûn:',
+'tog-justify' => 'pâi-chê  tōaⁿ-lo̍h',
 'tog-hideminor' => 'Am chòe-kīn ê sió kái-piàn',
+'tog-hidepatrolled' => 'Am chòe-kīn sûn koè--ê  kái-piàn',
+'tog-newpageshidepatrolled' => 'Sin-ia̍h ê chheng-toaⁿ am sûn koè--ê',
 'tog-extendwatchlist' => 'Khok-chhiong kàm-sī-toaⁿ kàu hián-sī só͘-ū ê kái-piàn',
 'tog-usenewrc' => 'Ka-kiông pán ê chòe-kīn-ê-kái-piàn (su-iàu JavaScript)',
 'tog-numberheadings' => 'Phiau-tê chū-tōng pian-hō',
@@ -43,22 +46,37 @@ $messages = array(
 'tog-previewontop' => 'Sûn-khoàⁿ ê lōe-iông tī pian-chi̍p keh-á thâu-chêng',
 'tog-previewonfirst' => 'Thâu-pái pian-chi̍p seng khoàⁿ-māi',
 'tog-nocache' => 'Koaiⁿ-tiāu ia̍h ê cache',
+'tog-enotifwatchlistpages' => 'Kam-sī-tuann ū ē bûn-tsiunn nā ū kái-piàn, kià tiān-tsú-phue hōo guá.',
+'tog-enotifusertalkpages' => 'Guá ê thó-lūn ia̍h  nā ū lâng kái,  kià tiān-tsú-phue hōo guá.',
+'tog-enotifminoredits' => 'Sió pian-chi̍p mā kià tiān-tsú-phue hōo guá.',
+'tog-enotifrevealaddr' => 'Hō͘ pat-lâng khoàⁿ ê tio̍h oá ê tiān-chú-phoe tē-chí',
+'tog-shownumberswatching' => 'Hián-sī tng leh khoàⁿ ê iōng-chiá sò͘-bo̍k',
+'tog-oldsig' => 'Chit-má ê chhiam-miâ:',
 'tog-fancysig' => 'Chhiam-miâ mài chò liân-kiat',
 'tog-externaleditor' => 'Iōng gōa-pō· pian-chi̍p-khì',
 'tog-externaldiff' => 'Iōng gōa-pō· diff',
+'tog-showjumplinks' => 'Hō͘ "thiàu khì" chit ê liân-chiap ē-sái',
+'tog-uselivepreview' => 'Ēng sui khoàⁿ-māi (ài ū JavaScript) (chhì-giām--ê)',
 'tog-forceeditsummary' => 'Pian-chi̍p khài-iàu bô thiⁿ ê sî-chūn, kā goá thê-chhéⁿ',
 'tog-watchlisthideown' => 'Kàm-sī-toaⁿ bián hián-sī goá ê pian-chi̍p',
 'tog-watchlisthidebots' => 'Kàm-sī-toaⁿ bián hián-sī ki-khì pian-chi̍p',
 'tog-watchlisthideminor' => 'Kàm-sī-toaⁿ bián hián-sī sió siu-kái',
+'tog-watchlisthideliu' => 'Kàm-sī-toaⁿ bián hián-sī iōng-chiá ū teng-ji̍p ê pian-chi̍p',
+'tog-watchlisthideanons' => 'Kàm-sī-toaⁿ bián hián-sī bû-bêng-sī ê pian-chi̍p',
+'tog-watchlisthidepatrolled' => 'Kàm-sī-toaⁿ bián hián-sī khoàⁿ-koè--ê pian-chi̍p',
 'tog-ccmeonemails' => 'Kià hō͘ pa̍t-lâng ê email sūn-soà kià copy hō͘ goá',
 'tog-diffonly' => 'Diff ē-pêng bián hián-sī ia̍h ê loē-iông',
+'tog-showhiddencats' => 'Hián-sī chhàng khí--lâi ê lūi-pia̍t',
+'tog-norollbackdiff' => 'ká tńg-khí liáu bián-koán cheng-chha goā-chē',
 
 'underline-always' => 'Tiāⁿ-tio̍h',
 'underline-never' => 'Tiāⁿ-tio̍h mài',
 'underline-default' => 'Tòe liû-lám-khì ê default',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Pian-chi̍p sî ēng ê jī-thé hêng-sek:',
 'editfont-default' => 'Tòe liû-lám-khì ê default',
+'editfont-monospace' => 'Monospaced jī-thé',
 'editfont-sansserif' => 'Sans-serif jī-thé',
 'editfont-serif' => 'Serif jī-thé',
 
@@ -137,6 +155,7 @@ $messages = array(
 'article' => 'Loē-iông ia̍h',
 'newwindow' => '(ē khui sin thang-á hián-sī)',
 'cancel' => 'Chhú-siau',
+'moredotdotdot' => 'Iáu-ū',
 'mypage' => 'Góa ê ia̍h',
 'mytalk' => 'Góa ê thó-lūn',
 'anontalk' => 'Chit ê IP ê thó-lūn-ia̍h',
@@ -387,6 +406,7 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
 'nav-login-createaccount' => 'Teng-ji̍p / khui sin kháu-chō',
 'loginprompt' => 'Thiⁿ ē-kha ê chu-liāu thang khui sin hō·-thâu a̍h-sī teng-ji̍p {{SITENAME}}.',
 'userlogin' => 'Teng-ji̍p / khui sin kháu-chō',
+'userloginnocreate' => 'Teng-ji̍p',
 'logout' => 'Teng-chhut',
 'userlogout' => 'Teng-chhut',
 'notloggedin' => 'Bô teng-ji̍p',
@@ -396,6 +416,7 @@ Chhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iû-go
 'gotaccount' => "Í-keng ū kháu-chō? '''$1'''.",
 'gotaccountlink' => 'Teng-ji̍p',
 'createaccountmail' => 'Thàu koè tiān-chú-phoe',
+'createaccountreason' => 'Lí-iû:',
 'badretype' => 'Lí su-ji̍p ê 2-cho· bi̍t-bé bô tùi.',
 'userexists' => 'Lí beh ti̍h ê iōng-chiá miâ-chheng í-keng ū lâng iōng. Chhiáⁿ kéng pa̍t-ê miâ.',
 'loginerror' => 'Teng-ji̍p chhò-gō·',
index 683128b..bbbd96c 100644 (file)
@@ -353,7 +353,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Gemarkeerde wijzigingen verbergen in recente wijzigingen',
 'tog-newpageshidepatrolled' => "Gemarkeerde pagina's verbergen in de lijst met nieuwe pagina's",
 'tog-extendwatchlist' => 'Uitgebreide volglijst gebruiken om alle wijzigingen te bekijken, en niet alleen de laatste',
-'tog-usenewrc' => 'Uitgebreide Recente Wijzigingen-pagina gebruiken (vereist JavaScript)',
+'tog-usenewrc' => 'Wijzigingen per pagina weergeven in recente wijzigingen en volglijst (vereist JavaScript)',
 'tog-numberheadings' => 'Koppen automatisch nummeren',
 'tog-showtoolbar' => 'Bewerkingswerkbalk weergeven (vereist JavaScript)',
 'tog-editondblclick' => 'Dubbelklikken voor bewerken (vereist JavaScript)',
@@ -705,6 +705,8 @@ Maak hiervan melding bij een [[Special:ListUsers/sysop|beheerder]] van {{SITENAM
 'cannotdelete' => 'De pagina of het bestand "$1" kon niet verwijderd worden.
 Mogelijk is deze al door iemand anders verwijderd.',
 'cannotdelete-title' => 'Pagina "$1" kan niet verwijderd worden',
+'delete-hook-aborted' => 'Het verwijderen is afgebroken door een hook.
+Er is geen toelichting beschikbaar.',
 'badtitle' => 'Ongeldige paginanaam',
 'badtitletext' => 'De naam van de opgevraagde pagina was ongeldig, leeg of bevatte een verkeerde intertaal- of interwikinaamverwijzing.
 Wellicht bevat de paginanaam niet toegestane tekens.',
@@ -743,6 +745,8 @@ De gegeven reden is ''$2''.",
 De opgegeven reden is "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en tekst "$3"',
 'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekend naamruimtenummer $1 en tekst "$2"',
+'exception-nologin' => 'Niet aangemeld',
+'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet u aangemeld zijn bij deze wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Onjuiste configuratie: onbekende virusscanner: ''$1''.",
@@ -2765,8 +2769,8 @@ Zie de [[Special:BlockList|blokkadelijst]] voor recente blokkades.',
 'expiringblock' => 'vervalt op $1 om $2',
 'anononlyblock' => 'alleen anoniemen',
 'noautoblockblock' => 'autoblokkeren uitgeschakeld',
-'createaccountblock' => 'registreren gebruikers geblokkeerd',
-'emailblock' => 'e-mail geblokkeerd',
+'createaccountblock' => 'registreren gebruikers uitgeschakeld',
+'emailblock' => 'e-mail uitgeschakeld',
 'blocklist-nousertalk' => 'kan eigen overlegpagina niet bewerken',
 'ipblocklist-empty' => 'De blokkeerlijst is leeg.',
 'ipblocklist-no-results' => 'Dit IP-adres of deze gebruikersnaam is niet geblokkeerd.',
@@ -2790,7 +2794,7 @@ Zie ook de [[Special:BlockList|blokkadelijst]] voor de op dit moment actieve blo
 'block-log-flags-anononly' => 'alleen anoniemen',
 'block-log-flags-nocreate' => 'registreren gebruikers geblokkeerd',
 'block-log-flags-noautoblock' => 'autoblokkeren is uitgeschakeld',
-'block-log-flags-noemail' => 'e-mail geblokkeerd',
+'block-log-flags-noemail' => 'e-mail uitgeschakeld',
 'block-log-flags-nousertalk' => 'kan eigen overlegpagina niet bewerken',
 'block-log-flags-angry-autoblock' => 'uitgebreide automatische blokkade ingeschakeld',
 'block-log-flags-hiddenname' => 'gebruiker verborgen',
@@ -3184,8 +3188,9 @@ U kunt wel de broncode bekijken.',
 Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
 'spamprotectionmatch' => 'De volgende tekst veroorzaakte een alarm van de spamfilter: $1',
 'spambot_username' => 'MediaWiki opschoning spam',
-'spam_reverting' => 'Bezig met terugdraaien naar de laatste versie die geen verwijzing heeft naar $1',
-'spam_blanking' => 'Alle wijzigingen met een verwijzing naar $1 worden verwijderd',
+'spam_reverting' => 'Teruggedraaid naar de laatste versie die geen verwijzing bevat naar $1',
+'spam_blanking' => 'Alle versies bevatten een verwijzing naar $1. Pagina leeggemaakt',
+'spam_deleting' => 'Alle versies bevatten verwijzingen naar $1. Pagina verwijderd',
 
 # Info page
 'pageinfo-title' => 'Informatie over "$1"',
@@ -4083,6 +4088,8 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'api-error-empty-file' => 'Het bestand dat u hebt geüpload is leeg.',
 'api-error-emptypage' => "Het aanmaken van nieuwe, lege pagina's is niet toegestaan.",
 'api-error-fetchfileerror' => 'Interne fout: er is iets misgegaan bij het ophalen van het bestand.',
+'api-error-fileexists-forbidden' => 'Er bestaat al een bestand met de naam "$1" dat niet overschreven kan worden.',
+'api-error-fileexists-shared-forbidden' => 'Er bestaat al een bestand met de naam "$1" in de gedeelde repository dat niet overschreven kan worden.',
 'api-error-file-too-large' => 'Het bestand dat u hebt geüpload is te groot.',
 'api-error-filename-tooshort' => 'De bestandsnaam is te kort.',
 'api-error-filetype-banned' => 'Dit bestandstype mag niet geüpload worden.',
@@ -4121,4 +4128,6 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'duration-centuries' => '$1 {{PLURAL:$1|eeuw|eeuwen}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Het was niet mogelijk een vergrendeling te krijgen op server $1.',
 );
index c960521..b06c4c9 100644 (file)
@@ -640,7 +640,7 @@ Ho kan allereie vere sletta av andre.',
 'cannotdelete-title' => 'Kan ikkje sletta sida «$1»',
 'badtitle' => 'Feil i tittelen',
 'badtitletext' => 'Den ønskte tittelen var ulovleg, tom eller feillenkja frå ein annan wiki. Kanskje inneheld han eitt eller fleire teikn som ikkje kan brukast i sidetitlar.',
-'perfcached' => 'Det følgjande er frå mellomlageret åt tenaren og er ikkje nødvendigvis oppdatert. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcached' => 'Dei følgjande dataa er frå mellomlageret åt tenaren og er ikkje utan vidare oppdatert. Høgst {{PLURAL:$1|eitt resultat er tilgjengeleg|$1 resultat er tilgjengelege}} i mellomlageret.',
 'perfcachedts' => 'Desse dataa er mellomlagra, og vart sist oppdaterte $1. Høgst {{PLURAL:$4|eitt resultat er tilgjengeleg|$4 resultat er tilgjengelege}} i mellomlageret.',
 'querypage-no-updates' => 'Oppdatering av denne sida er slått av, og data her vil ikkje verte fornya.',
 'wrong_wfQuery_params' => 'Feil parameter gjevne til wfQuery()<br />Funksjon: $1<br />Førespurnad: $2',
@@ -650,6 +650,7 @@ Ho kan allereie vere sletta av andre.',
 'actionthrottledtext' => 'For å hindre spamming kan du ikkje utføre denne handlinga for mange gonger på kort tid. Ver venleg og prøv igjen litt seinare.',
 'protectedpagetext' => 'Denne sida er verna for å hindre endring.',
 'viewsourcetext' => 'Du kan sjå og kopiere kjeldekoden til denne sida:',
+'viewyourtext' => "Du kan sjå og kopiera kjelda til '''endringane dine''' på sida:",
 'protectedinterface' => 'Denne sida inneheld tekst som er brukt av brukargrensesnittet for programvara, og er difor låst for å hindre hærverk.',
 'editinginterface' => "'''Åtvaring:''' Du endrar på ei side som inneheld tekst som er brukt av brukargrensesnittet for programvara. Endringar på denne sida påverkar utsjånaden til sida for dei andre brukarane. Dersom du ynskjer å setje om, ver venleg og vurder å bruke [//translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for omsetjing av MediaWiki.",
 'sqlhidden' => '(SQL-førespurnaden er gøymd)',
@@ -661,6 +662,8 @@ $2',
 'ns-specialprotected' => 'Sider i {{ns:special}}-namnerommet kan ikkje endrast.',
 'titleprotected' => "Denne sidetittelen er verna mot oppretting av [[User:$1|$1]].
 Grunnen som er gjeven er: ''$2''.",
+'invalidtitle-knownnamespace' => 'Ugyldig tittel med namnerommet «$2» og teksten «$3»',
+'invalidtitle-unknownnamespace' => 'Ugyldig tittel med ukjend namneromstal $1 og teksten «$2»',
 
 # Virus scanner
 'virus-badscanner' => "Dårleg konfigurasjon: ukjend virusskanner: ''$1''",
@@ -743,6 +746,7 @@ Grunna dette vil ikkje vitjande som nyttar denne IP-adressa kunna oppretta nye k
 'emailconfirmlink' => 'Stadfest e-post-adressa di',
 'invalidemailaddress' => 'E-postadressa kan ikkje nyttast sidan formatet truleg er feil. Skriv ei fungerande adresse eller tøm feltet.',
 'cannotchangeemail' => 'Epost-adresser knytta til brukarkonti kan ikkje endrast på denne wikien.',
+'emaildisabled' => 'Denne nettstaden kan ikkje senda e-postar.',
 'accountcreated' => 'Brukarkonto oppretta',
 'accountcreatedtext' => 'Brukarkontoen til $1 er oppretta.',
 'createaccount-title' => 'Oppretting av brukarkonto på {{SITENAME}}',
@@ -904,7 +908,12 @@ eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'userpage-userdoesnotexist-view' => 'Brukarkontoen «$1» er ikkje oppretta.',
 'blocked-notice-logextract' => 'Denne brukaren er for tida blokkert.
 Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
-'clearyourcache' => "Merk: Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.''' '''Firefox og Safari:''' Hald ''Shift'' nede medan du trykkjer anten ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på Mac). '''Konqueror:''' Trykk ''Oppdater'' eller på ''F5''. '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''. '''Internet Explorer:''' Hald nede ''Ctrl'' medan du trykkjer ''Oppdater'', eler trykk ''Ctrl-F5.''",
+'clearyourcache' => "'''Merk:''' Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.
+* '''Firefox og Safari:''' Haldt nede ''Shift'' medan du klikkar på ''Oppdater'', eller trykk anten ''Ctrl-F5'' eller ''Ctrl-R'' (''⌘-R'' på Mac)
+* '''Google Chrome:''' Trykk ''Ctrl-Shift-R'' (''⌘-Shift-R'' på Mac)
+* '''Internet Explorer:''' Haldt nede ''Ctrl'' medan du klikkar ''Oppdater'', eller trykk ''Ctrl-F5.''
+* '''Konqueror:''' Klikk ''Oppdater'' eller trykk ''F5''. 
+* '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''.",
 'usercssyoucanpreview' => "'''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
 'userjsyoucanpreview' => "''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
 'usercsspreview' => "'''Hugs at dette berre er ei førehandsvising av din eigen CSS og at han ikkje er lagra enno!'''",
@@ -953,8 +962,7 @@ Teksten må du ha skrive sjølv, eller kopiert frå ein ressurs som er kompatibe
 Teksten må du ha skrive sjølv eller ha kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett (sjå $1 for detaljar).
 
 '''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''",
-'longpageerror' => "'''Feil: Teksten du har prøvd å lagre er $1 kilobyte
-lang, altså lenger enn $2 kilobyte som er maksimum. Han kan difor ikkje lagrast.'''",
+'longpageerror' => "'''Feil: Teksten du sende inn er {{PLURAL:$1|éin kilobyte|$1 kilobyte}} stor, noko som er større enn øvstegrensa på {{PLURAL:$2|éin kilobyte|$2 kilobyte}}.''' Han kan difor ikkje lagrast.",
 'readonlywarning' => "'''ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å  kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.'''
 
 Systemadministratoren som låste databasen gav følgjande årsak: $1",
@@ -1070,16 +1078,16 @@ Som administrator kan du sjå han. Det finst kanskje meir informasjon i [{{fullu
 'rev-deleted-no-diff' => "Du kan ikkje vise denne skilnaden fordi ein av versjonane er vorten '''sletta'''.
 Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].",
 'rev-suppressed-no-diff' => "Du kan ikkje sjå denne skilnaden av di ein av versjonane er vorten '''sletta'''.",
-'rev-deleted-unhide-diff' => "Éin av versjonane i denne skilnaden er vorten '''sletta'''.
-Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
-Som administrator kan du framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
-'rev-suppressed-unhide-diff' => "Ei av sideversjonane i denne lista over versjonar har vorte '''skjult'''.
-Det kan vera detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
-Som administrator kan du framleis [$1 sjå versjonen] om du ynskjer det.",
-'rev-deleted-diff-view' => "Ei av endringane i dette oversynet er '''sletta'''.
-Som administrator kan du sjå oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-suppressed-diff-view' => "Ei av endringane i dette oversynet er '''løynd'''.
-Som administrator kan du sjå dette oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} historikkfjerningsloggen].",
+'rev-deleted-unhide-diff' => "Ein av versjonane i denne skilnaden er vorten '''sletta'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-suppressed-unhide-diff' => "Ein av sideversjonane i denne lista over versjonar er vorten '''løynd'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} løyneloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-deleted-diff-view' => "Ein av versjonane i skilnaden er vorten '''sletta'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-diff-view' => "Ei av endringane i skilnaden er vorten '''løynd'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} løyneloggen].",
 'rev-delundel' => 'vis/gøym',
 'rev-showdeleted' => 'syn',
 'revisiondelete' => 'Slett/attopprett versjonar',
@@ -1265,6 +1273,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'qbsettings-fixedright' => 'Høgre',
 'qbsettings-floatingleft' => 'Flytande venstre',
 'qbsettings-floatingright' => 'Flytande høgre',
+'qbsettings-directionality' => 'Fast, avhengig av kva retning språket ditt vert lese',
 
 # Preferences page
 'preferences' => 'Innstillingar',
@@ -1279,6 +1288,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'prefs-beta' => 'Betafunksjonar',
 'prefs-datetime' => 'Dato og klokkeslett',
 'prefs-labs' => 'Testfunksjonar',
+'prefs-user-pages' => 'Brukarsider',
 'prefs-personal' => 'Brukaropplysningar',
 'prefs-rc' => 'Siste endringar',
 'prefs-watchlist' => 'Overvakingsliste',
@@ -1539,7 +1549,7 @@ Dette kan ikke tilbakestillast.',
 'recentchanges-legend' => 'Alternativ for siste endringar',
 'recentchanges-summary' => 'På denne sida ser du dei sist endra sidene i {{SITENAME}}.',
 'recentchanges-feed-description' => 'Fylg med på dei siste endringane på denne wikien med dette abonnementet.',
-'recentchanges-label-newpage' => 'Denne redigeringa oppretta ei ny side',
+'recentchanges-label-newpage' => 'Denne endringa oppretta ei ny side',
 'recentchanges-label-minor' => 'Dette er ei mindre endring',
 'recentchanges-label-bot' => 'Denne endringa vart gjort av ein bot',
 'recentchanges-label-unpatrolled' => 'Denne endringa er ikkje patruljert enno',
@@ -1615,8 +1625,9 @@ For å bruke ei fil på ei side, bruk ei lenkje på eit liknande format:
 'ignorewarnings' => 'Oversjå åtvaringar',
 'minlength1' => 'Filnamn må ha minst eitt teikn.',
 'illegalfilename' => 'Filnamnet «$1» inneheld teikn som ikkje er tillatne i sidetitlar. Skift namn på fila og prøv på nytt.',
+'filename-toolong' => 'Filnamn kan ikkje vera lengre enn 240 byte.',
 'badfilename' => 'Namnet på fila har vorte endra til «$1».',
-'filetype-mime-mismatch' => 'Filendinga samsvarar ikkje med ein MIME-type.',
+'filetype-mime-mismatch' => 'Filendinga «.$1» samsvarar ikkje med MIME-typen som er funnen i fila ($2).',
 'filetype-badmime' => 'Filer av MIME-typen «$1» kan ikkje lastast opp.',
 'filetype-bad-ie-mime' => 'Kan ikkje lasta opp fila då Internet Explorer ville merka ho som "$1", ein ikkje-tillate og potensielt farleg filtype.',
 'filetype-unwanted-type' => "«'''.$1'''» er ein uynskt filtype.
@@ -1715,7 +1726,9 @@ $1',
 'upload-http-error' => 'Ein HTTP-feil oppstod: $1',
 
 # File backend
+'backend-fail-invalidpath' => '$1 er ikkje ein gyldig lagringsstig.',
 'backend-fail-delete' => 'Kunne ikkje sletta fila «$1».',
+'backend-fail-alreadyexists' => 'Fila $1 finst frå før.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Tilgjenge avslått',
@@ -2287,9 +2300,8 @@ Her er dei noverande innstillingane for sida '''$1''':",
 'viewdeletedpage' => 'Sjå sletta sider',
 'undeletepagetext' => '{{PLURAL:$1|Den følgjande sida er sletta, men ho|Dei følgjande $1 sidene er sletta, men dei}} finst enno i arkivet og kan attopprettast. Arkivet blir periodevis sletta.',
 'undelete-fieldset-title' => 'Attenderull endringar',
-'undeleteextrahelp' => "For å attenderulle heile sida, la alle boksane vere som dei er, og klikk '''''Rull attende'''''.
-For å berre attenderulle delar, kryss av boksane til endringane, og klikk '''''Rull attende'''''.
-Å klikke '''''Nullstill''''' vil føre til at alle tekstfelt og boksar vert blanke.",
+'undeleteextrahelp' => "For å attoppretta heile historikken til sida, lat alle boksane vera vera tomme og trykk '''''{{int:undeletebtn}}'''''.
+For å berre attopretta delar av historikken, haka av boksane til dei relevante endringane og trykk '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => '{{PLURAL:$1|Éin versjon arkivert|$1 versjonar arkiverte}}',
 'undeletehistory' => 'Om du gjenopprettar sida vil alle endringar i historikken også bli gjenoppretta. Dersom ei ny side med same namn er oppretta etter slettinga, vil dei gjenoppretta endringane dukke opp før denne i endringshistorikken.',
 'undeleterevdel' => 'Gjenoppretting kan ikkje utførast om det resulterer i at den øvste endringa delvis vert sletta. I slike tilfelle må du fjerne merkinga av den siste sletta endringa.',
@@ -2322,6 +2334,7 @@ Sjå [[Special:Log/delete|sletteloggen]] for eit oversyn over sider som nyleg er
 'undelete-bad-store-key' => 'Kan ikkje gjenopprette filutgåva med tidstrykk $1: fil mangla før sletting',
 'undelete-cleanup-error' => 'Feil ved sletting av den ubrukte arkivfila «$1».',
 'undelete-missing-filearchive' => 'Kunne ikkje attopprette filarkivet med nummer $1 fordi det ikkje ligg i databasen. Det kan allereie ver attoppretta.',
+'undelete-error' => 'Feil under attoppretting av sida.',
 'undelete-error-short' => 'Veil ved sletting av fila: $1',
 'undelete-error-long' => 'Feil ved attoppretting av fila:
 
@@ -3560,6 +3573,8 @@ Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
 'logentry-move-move-noredirect' => '$1 flytte sida $3 til $4 utan å lata etter ei omdirigering',
 'logentry-move-move_redir' => '$1 flytte sida $3 til $4 over ei omdirigering',
 'logentry-move-move_redir-noredirect' => '$1 flytte sida $3 til $4 over ei omdirigering utan å lata etter ei omdirigering',
+'logentry-patrol-patrol' => '$1 merkte versjon $4 av sida $3 som patruljert',
+'logentry-patrol-patrol-auto' => '$1 merkte automatisk versjon $4 av sida $3 som patruljert',
 'logentry-newusers-newusers' => '$1 oppretta ein brukarkonto',
 'logentry-newusers-create' => '$1 oppretta ein brukarkonto',
 'logentry-newusers-create2' => '$1 oppretta brukarkontoen $3',
index de04157..188f114 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Occitan (Occitan)
+/** Occitan (occitan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index ef68575..036e10b 100644 (file)
@@ -2188,8 +2188,8 @@ A page is treated as disambiguation page if it uses a template which is linked f
 'mailnologintext' => 'ଆପଣ ନିଜ [[Special:Preferences|ପସନ୍ଦସବୁ]]ରେ [[Special:UserLogin|ଲଗ ଇନ]] କରିଥିଲେ ଓ ନିଜର ଏକ ସଚଳ ଇ-ମେଲ ଠିକଣା ଥିଲେ ଯାଇ ବାକି ସବୁ ସଭ୍ୟଙ୍କୁ ଇ-ମେଲ ପଠାଇପାରିବେ ।',
 'emailuser' => 'ଏହି ସଭ୍ୟଙ୍କୁ ଇମେଲ କରିବେ',
 'emailpage' => 'ଇ-ମେଲ ବ୍ୟବହାରକାରୀ',
-'emailpagetext' => 'ତଳà­\87 à¬¥à¬¿à¬¬à¬¾ à¬«à¬°à­\8dମ à¬¬à­\8dà­\9fବହର à¬\95ରି à¬\86ପଣ à¬\8fହି à¬¸à¬­à­\8dà­\9fନà­\8dà¬\95à­\80 ଇ-ମେଲ କରିପାରିବେ ।
-[[Special:Preferences|à¬\85ପନà¬\95 à¬ªà¬¸à¬¨à­\8dଦ]]ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87-ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬ªà­\8dରà­\87ରà¬\95 à¬­à¬¾à¬¬à¬°à­\87 à¬¦à­\87à¬\96ାଯିବ, à¬¤à­\87ଣà­\81 à¬¤à¬¿à¬¥ି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
+'emailpagetext' => 'ତଳà­\87 à¬¥à¬¿à¬¬à¬¾ à¬«à¬°à­\8dମ à¬¬à­\8dà­\9fବହାର à¬\95ରି à¬\86ପଣ à¬\8fହି à¬¸à¬­à­\8dà­\9fà¬\99à­\8dà¬\95à­\81 ଇ-ମେଲ କରିପାରିବେ ।
+[[Special:Preferences|à¬\86ପଣà¬\99à­\8dà¬\95 à¬ªà¬¸à¬¨à­\8dଦ]]ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87-ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬ªà­\8dରà­\87ରà¬\95 à¬­à¬¾à¬¬à¬°à­\87 à¬¦à­\87à¬\96ାଯିବ, à¬¤à­\87ଣà­\81 à¬\9aିଠି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
 'usermailererror' => 'ମେଲ ଭିତରେ କିଛି ଅସୁବିଧା ଅଛି ବୋଲି ଜାଣିବାକୁ ମିଳିଲା:',
 'defemailsubject' => '{{SITENAME}} "$1" ସଭ୍ୟଙ୍କ ଠାରୁ ଇ-ମେଲ କରିବେ',
 'usermaildisabled' => 'ବ୍ୟବହାରକାରୀଙ୍କ ଈ-ମେଲ ଅଚଳ କରାଗଲା',
index f29fb29..8c29317 100644 (file)
@@ -526,6 +526,7 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
 
 # Revision feed
 'history-feed-title' => 'ਰੀਵਿਜ਼ਨ ਅਤੀਤ',
+'history-feed-item-nocomment' => '$1 ਤੋਂ $2 ਵੱਜੇ',
 
 # Revision deletion
 'rev-deleted-comment' => '(ਟਿੱਪਣੀ ਹਟਾਈ)',
index db1ff10..f9d073d 100644 (file)
@@ -76,35 +76,35 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'tue' => 'Mrt',
 'wed' => 'Mie',
 'thu' => 'Jue',
-'fri' => 'Vie',
+'fri' => 'Bie',
 'sat' => 'Sab',
 'january' => 'Eneru',
-'february' => 'Febreru',
-'march' => 'Marzu',
+'february' => 'Pebreru',
+'march' => 'Marsu',
 'april' => 'Abril',
 'may_long' => 'Mayu',
 'june' => 'Juniu',
 'july' => 'Juliu',
 'august' => 'Agostu',
-'september' => 'Setiembri',
+'september' => 'Septiembri',
 'october' => 'Octubri',
 'november' => 'Nobiembri',
-'december' => 'Diciembri',
+'december' => 'Disiembri',
 'january-gen' => 'Eneru',
-'february-gen' => 'Febreru',
-'march-gen' => 'Marzu',
+'february-gen' => 'Pebreru',
+'march-gen' => 'Marsu',
 'april-gen' => 'Abril',
 'may-gen' => 'Mayu',
 'june-gen' => 'Juniu',
 'july-gen' => 'Juliu',
 'august-gen' => 'Agostu',
-'september-gen' => 'Setiembri',
-'october-gen' => 'Octobri',
-'november-gen' => 'Noviembri',
-'december-gen' => 'Diciembri',
+'september-gen' => 'Septiembri',
+'october-gen' => 'Octubri',
+'november-gen' => 'Nobiembri',
+'december-gen' => 'Disiembri',
 'jan' => 'Ene',
 'feb' => 'Peb',
-'mar' => 'Mrz',
+'mar' => 'Mrs',
 'apr' => 'Abr',
 'may' => 'Myu',
 'jun' => 'Jnu',
@@ -154,10 +154,19 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'faqpage' => 'Project:MAK',
 
 # Vector skin
+'vector-action-addsection' => 'Dagdagan ing pisasabian',
+'vector-action-delete' => 'Buran',
 'vector-action-move' => 'Iyalis',
 'vector-action-protect' => 'Protectan/kambilan',
 'vector-action-undelete' => 'Isubli/iurung ya pangabura',
 'vector-action-unprotect' => 'Idayu ya panga-protecta',
+'vector-view-create' => 'Maglalang',
+'vector-view-edit' => 'Alilan',
+'vector-view-history' => 'Lawen ya ing amlat',
+'vector-view-view' => 'Basan',
+'vector-view-viewsource' => 'Lawen ya ing pikuanan',
+'namespaces' => 'Karinanlagiu',
+'variants' => 'Aliwapa',
 
 'errorpagetitle' => 'Mali',
 'returnto' => 'Magbalik king $1.',
@@ -173,6 +182,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'printableversion' => 'Kopiang malyaring i-print',
 'permalink' => 'Suglung a permanenti',
 'print' => 'I-print',
+'view' => 'Lawen',
 'edit' => 'Alilan',
 'create' => 'Maglalang',
 'editthispage' => 'I-edit ya ing bulung a ini',
@@ -275,7 +285,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'nstab-project' => 'Bulung ding proyektu',
 'nstab-image' => 'Simpan (File)',
 'nstab-mediawiki' => 'Mensahi',
-'nstab-template' => 'Modelu (template)',
+'nstab-template' => 'Ulma (template)',
 'nstab-help' => 'Saup bulung',
 'nstab-category' => 'Kategoriya',
 
@@ -644,6 +654,7 @@ Ini ing sangkan a binie nang $3: ''$2''",
 Kabaldugan: (ngeni)=pamiyaliwa king salukuyan a bersion (bersion ngeni),
 (tauli)=pamiyaliwa ketang sadyang (tauling) bersion, M = malating edit.',
 'history-fieldset-title' => 'Amlat da reng pamaglawe',
+'history-show-deleted' => 'Milako yamu',
 'histfirst' => 'Minunang dili',
 'histlast' => 'Pekabayu',
 'historysize' => '({{PLURAL:$1|1 a byte|byte}})',
@@ -748,7 +759,9 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 'prevn' => 'minunang {{PLURAL:$1|$1}}',
 'nextn' => 'tutuking {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Atin bulung a mikilagiung \"[[:\$1]]\" keng wiking ini.'''",
 'searchhelp-url' => 'Help:Kalamnan',
+'searchprofile-everything' => 'Eganagana',
 'search-result-size' => '$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})',
 'search-result-score' => 'Kaugnayan (relevance): $1%',
 'search-redirect' => '(pamanalis direksiun $1)',
@@ -1294,6 +1307,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 # Special:LinkSearch
 'linksearch' => 'Suglung palual',
+'linksearch-line' => '$1 makasuglung ibat $2',
 
 # Special:ListUsers
 'listusersfrom' => 'Ipakit la reng talagamit magumpisa king:',
@@ -1583,7 +1597,7 @@ $1',
 'nolinkshere-ns' => "Alang bulung a makatuglung king '''[[:$1]]''' ketang mepiling pirinan lagyu (namespace).",
 'isredirect' => 'Bulung ning pamanaliling direksiun',
 'istemplate' => 'misingit',
-'isimage' => 'suglung king larawan',
+'isimage' => 'Isuglung king larawan',
 'whatlinkshere-prev' => '{{PLURAL:$1|minunang|minunang $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|next|tutuking $1}}',
 'whatlinkshere-links' => '← suglung',
@@ -2080,6 +2094,14 @@ Detang aliwa tambing (by default) lang makasalikut.
 'exif-gpsareainformation' => 'Lagyu ning lugal king GPS',
 'exif-gpsdatestamp' => 'Petsa ning GPS',
 'exif-gpsdifferential' => 'Pamanulid king pamialiwa ning GPS (GPS differential correction)',
+'exif-worldregioncreated' => 'Labuad nung nu ya meyakua ing litratu',
+'exif-countrycreated' => 'Bangsa nung nokarin ya meyakua ing litratu',
+'exif-countrydest' => 'Bangsang makalto',
+'exif-provinceorstatedest' => 'Lalawigan o bangsang makalto',
+'exif-citydest' => 'Lakanbalen makalto',
+'exif-objectname' => 'Makuyad a bansag',
+'exif-source' => 'Pikuanan',
+'exif-cameraownername' => 'Mikibandi keng paglitratu',
 
 # EXIF attributes
 'exif-compression-1' => 'E makapitpit (uncompressed)',
index cf649e0..de6af95 100644 (file)
@@ -126,6 +126,7 @@ $messages = array(
 'subcategories' => 'Unnerabdeeling',
 'category-media-header' => 'Media in Abdeeling „$1“',
 'category-empty' => "''Die Abdeeling hot zu daere Zeit kene Bledder oder Feils.''",
+'hidden-categories' => '{{PLURAL:$1|Versteckelte Abdeeling|Verstecktelte Abdeelinge}}',
 'category-article-count-limited' => '{{PLURAL:$1|Sell Blatt iss|Selle $1 Bledder sin}} in daer Abdeeling drin:',
 'category-file-count-limited' => '{{PLURAL:$1|Sell Feil iss|Selle $1 Feils sin}} in daer Abdeeling drin:',
 'listingcontinuesabbrev' => '(weider)',
@@ -276,6 +277,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
 'missingarticle-diff' => '(Unnerschidd zwische Versione: $1, $2)',
 'internalerror' => 'Interner Fehler',
 'internalerror_info' => 'Interner Fehler: $1',
+'badtitle' => 'Tidl net gildich',
 'ns-specialprotected' => 'Besunnere Bledder sinn net zum Ennere.',
 
 # Virus scanner
index a0cd772..67cd743 100644 (file)
@@ -293,11 +293,11 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Podkreślenie linków',
 'tog-justify' => 'Wyrównuj tekst w akapitach do obu marginesów',
-'tog-hideminor' => 'Ukryj drobne modyfikacje w ostatnich zmianach',
+'tog-hideminor' => 'Ukryj drobne edycje w ostatnich zmianach',
 'tog-hidepatrolled' => 'Ukryj sprawdzone edycje w ostatnich zmianach',
 'tog-newpageshidepatrolled' => 'Ukryj sprawdzone strony na liście nowych stron',
 'tog-extendwatchlist' => 'Pokaż na liście obserwowanych wszystkie zmiany, nie tylko ostatnie',
-'tog-usenewrc' => 'Zastosuj rozbudowany widok ostatnich zmian (JavaScript)',
+'tog-usenewrc' => 'Grupuj zmiany według stron na liście ostatnich zmian i obserwowanych (Wymaga JavaScript)',
 'tog-numberheadings' => 'Automatyczna numeracja nagłówków',
 'tog-showtoolbar' => 'Pokaż pasek narzędzi (JavaScript)',
 'tog-editondblclick' => 'Podwójne kliknięcie rozpoczyna edycję (JavaScript)',
@@ -309,12 +309,12 @@ $messages = array(
 'tog-watchdefault' => 'Dodaj do obserwowanych strony, które edytuję',
 'tog-watchmoves' => 'Dodaj do obserwowanych strony, które przenoszę',
 'tog-watchdeletion' => 'Dodaj do obserwowanych strony, które usuwam',
-'tog-minordefault' => 'Wszystkie zmiany oznaczaj domyślnie jako drobne',
+'tog-minordefault' => 'Wszystkie edycje domyślnie oznaczaj jako drobne',
 'tog-previewontop' => 'Pokazuj podgląd powyżej obszaru edycji',
 'tog-previewonfirst' => 'Pokazuj podgląd strony podczas pierwszej edycji',
 'tog-nocache' => 'Wyłącz pamięć podręczną przeglądarki',
-'tog-enotifwatchlistpages' => 'Wyślij do mnie e‐mail, jeśli strona z listy moich obserwowanych zostanie zmodyfikowana',
-'tog-enotifusertalkpages' => 'Wyślij do mnie e‐mail, jeśli moja strona dyskusji zostanie zmodyfikowana',
+'tog-enotifwatchlistpages' => 'Wyślij do mnie e‐mail kiedy strona z mojej listy obserwowanych zostanie zmodyfikowana',
+'tog-enotifusertalkpages' => 'Wyślij do mnie e‐mail kiedy moja strona dyskusji zostanie zmodyfikowana',
 'tog-enotifminoredits' => 'Wyślij e‐mail także w przypadku drobnych zmian na stronach',
 'tog-enotifrevealaddr' => 'Nie ukrywaj mojego adresu e‐mail w powiadomieniach',
 'tog-shownumberswatching' => 'Pokaż liczbę użytkowników obserwujących stronę',
@@ -327,7 +327,7 @@ $messages = array(
 'tog-forceeditsummary' => 'Informuj o niewypełnieniu opisu zmian',
 'tog-watchlisthideown' => 'Ukryj moje edycje na liście obserwowanych',
 'tog-watchlisthidebots' => 'Ukryj edycje botów na liście obserwowanych',
-'tog-watchlisthideminor' => 'Ukrywaj drobne zmiany na liście obserwowanych',
+'tog-watchlisthideminor' => 'Ukryj drobne zmiany na liście obserwowanych',
 'tog-watchlisthideliu' => 'Ukryj edycje zalogowanych użytkowników na liście obserwowanych',
 'tog-watchlisthideanons' => 'Ukryj edycje anonimowych użytkowników na liście obserwowanych',
 'tog-watchlisthidepatrolled' => 'Ukryj sprawdzone edycje na liście obserwowanych',
@@ -648,6 +648,8 @@ Można zgłosić ten fakt [[Special:ListUsers/sysop|administratorowi]], podając
 'cannotdelete' => 'Strona lub plik „$1” nie mogą zostać usunięte.
 Możliwe, że zostały już usunięte przez kogoś innego.',
 'cannotdelete-title' => 'Nie można usunąć strony „$1”.',
+'delete-hook-aborted' => 'Usuwanie przerwane przez zaczep.
+Przyczyna nieokreślona.',
 'badtitle' => 'Niepoprawny tytuł',
 'badtitletext' => 'Podano niepoprawny tytuł strony. Prawdopodobnie jest pusty lub zawiera znaki, których użycie jest zabronione.',
 'perfcached' => 'Poniższe dane są kopią z pamięci podręcznej i mogą być nieaktualne. Maksymalnie {{PLURAL:$1|jeden wynik jest|$1 wyniki są|$1 wyników jest}} w pamięci podręcznej.',
@@ -681,6 +683,8 @@ Uzasadnienie blokady: ''$2''.",
 Administrator blokujący go podał następujący powód "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Nieprawidłowa nazwa w obszarze nazw "$2" o treści "$3"',
 'invalidtitle-unknownnamespace' => 'Nieprawidłowa nazwa z nieznaną liczbą przestrzeni nazw  $1  o treści "$2"',
+'exception-nologin' => 'Nie jesteś zalogowany/a',
+'exception-nologin-text' => 'Ta strona lub akcja wymaga bycia zalogowanym na tej wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Zła konfiguracja – nieznany skaner antywirusowy ''$1''",
@@ -2533,7 +2537,7 @@ $1',
 'tooltip-invert' => 'Zaznacz to pole, aby ukryć zmiany na stronach w wybranych przestrzeniach nazw (oraz związanych z nimi innymi przestrzeniami nazw, jeśli zaznaczono)',
 'namespace_association' => 'powiązana przestrzeń nazw',
 'tooltip-namespace_association' => 'Zaznacz to pole, aby uwzględnić strony dyskusji i tematu związane z wybranymi przestrzeniami nazw',
-'blanknamespace' => '(główna)',
+'blanknamespace' => '(Główna)',
 
 # Contributions
 'contributions' => 'Wkład użytkownika',
@@ -2975,7 +2979,7 @@ Brak katalogu dla plików tymczasowych.',
 'tooltip-n-currentevents' => 'Informacje o aktualnych wydarzeniach',
 'tooltip-n-recentchanges' => 'Lista ostatnich zmian na {{GRAMMAR:MS.lp|{{SITENAME}}}}.',
 'tooltip-n-randompage' => 'Pokaż stronę wybraną losowo',
-'tooltip-n-help' => 'Tutaj możesz się wielu rzeczy dowiedzieć.',
+'tooltip-n-help' => 'Tutaj możesz się dowiedzieć wielu rzeczy.',
 'tooltip-t-whatlinkshere' => 'Pokaż listę wszystkich stron linkujących do tej strony',
 'tooltip-t-recentchangeslinked' => 'Ostatnie zmiany w stronach, do których ta strona linkuje',
 'tooltip-feed-rss' => 'Kanał RSS dla tej strony',
@@ -3062,6 +3066,7 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
 'spambot_username' => 'MediaWiki – usuwanie spamu',
 'spam_reverting' => 'Przywracanie ostatniej wersji nie zawierającej linków do $1',
 'spam_blanking' => 'Wszystkie wersje zawierały odnośniki do $1. Czyszczenie strony.',
+'spam_deleting' => 'Wszystkie wersje zawierały linki do $1, usuwam.',
 
 # Info page
 'pageinfo-title' => 'Informacje o „$1“',
@@ -3995,6 +4000,8 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'api-error-empty-file' => 'Przesłany przez Ciebie plik jest pusty.',
 'api-error-emptypage' => 'Tworzenie nowych, pustych stron jest niedozwolone.',
 'api-error-fetchfileerror' => 'Błąd wewnętrzny – wystąpił błąd w trakcie pobierania pliku.',
+'api-error-fileexists-forbidden' => 'Plik o nazwie "$1" już istnieje i nie może być nadpisany.',
+'api-error-fileexists-shared-forbidden' => 'Plik o nazwie "$1" już istnieje we współdzielonym repozytorium i nie może być nadpisany.',
 'api-error-file-too-large' => 'Przesłany przez Ciebie plik jest zbyt duży.',
 'api-error-filename-tooshort' => 'Nazwa pliku jest zbyt krótka.',
 'api-error-filetype-banned' => 'Zabroniony format pliku.',
@@ -4033,4 +4040,6 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'duration-centuries' => '$1 {{PLURAL:$1|stulecie|stulecia|stuleci}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tysiąclecie|tysiąclecia|tysiącleci}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nie udało się uzyskać blokady na serwerze $1.',
 );
index 5dd69ff..72a40a5 100644 (file)
@@ -48,7 +48,7 @@ $messages = array(
 'tog-hidepatrolled' => "Stërma le modìfiche verificà ant j'ùltime modìfiche",
 'tog-newpageshidepatrolled' => 'Stërma le pàgine verificà da la lista dle pàgine neuve',
 'tog-extendwatchlist' => 'Slarga la funsion "ten sot euj" an manera che a la smon-a tute le modìfiche, nen mach l\'ùltima',
-'tog-usenewrc' => "Deuvra j'ùltime modìfiche an bela forma (a-i va JavaScript)",
+'tog-usenewrc' => "Deuvra j'ùltime modìfiche ameliorà (a-i và JavaScript)",
 'tog-numberheadings' => 'Tìtoj ëd paràgraf<br />che as nùmero daspërlor',
 'tog-showtoolbar' => "Mostra la bara dj'utiss (a-i va Javascript)",
 'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol<br />(a-i va JavaScript)",
@@ -399,6 +399,8 @@ Për piasì, fa rapòrt a n'[[Special:ListUsers/sysop|aministrator]], pijand nò
 'cannotdelete' => "La pàgina o l'archivi \"\$1\" a peul pa esse scancelà.
 Peul desse ch'a l'é già stàit ëscancelà da cheidun d'àutr.",
 'cannotdelete-title' => 'A peul pa scancelesse la pàgina «$1»',
+'delete-hook-aborted' => "Modìfica anulà da n'estension.
+A l'ha smonù gnun-e spiegassion.",
 'badtitle' => 'Tìtol nen giust',
 'badtitletext' => "La pàgina che a l'ha ciamà a peul pa esse mostrà. A podrìa tratesse ëd na pàgina nen bon-a, veujda, ò pura a podrìa ëdcò esse n'eror ant n'anliura antra lenghe diferente ò tra diferente version ëd {{SITENAME}}.",
 'perfcached' => "Ij dat sì-dapress a sòn ëstàit memorisà an local e a peulo esse nen agiornà. Al pi {{PLURAL:$1|n'arzultà a l'é disponìbil|$1 arzultà a son disponìbij}} ant la memòria local.",
@@ -429,6 +431,8 @@ Coma rason a l'ha butà: ''$2''.",
 L'aministrator ch'a l'ha blocalo a l'ha lassà sta spiegassion: «$3».",
 'invalidtitle-knownnamespace' => 'Tìtol pa bon con spassi nominal "$2" e test "$3"',
 'invalidtitle-unknownnamespace' => 'Tìtol pa bon con spassi nominal sconossù nùmer $1 e test "$2"',
+'exception-nologin' => 'Nen rintrà ant ël sistema',
+'exception-nologin-text' => "Costa pàgina o assion a ciama ch'a sia rintrà an costa wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Configurassion falà: antivìrus nen conossù: ''$1''",
@@ -520,7 +524,7 @@ Da qualsëssìa ëd coste funsion a sarà mandà gnun messagi fin che chiel (chi
 'invalidemailaddress' => "Costa adrëssa ëd pòsta eletrònica-sì as peul nen pijesse përchè a l'ha na forma nen bon-a.
 Për piasì che a buta n'adrëssa scrita giusta ò che a lassa ël camp veujd.",
 'cannotchangeemail' => "J'adrësse ëd pòsta eletrònica dij cont a peulo pa esse modificà ansima a costa wiki.",
-'emaildisabled' => 'Ës sit a peul pa mandé ëd mëssagi ëd pòsta eletrònica.',
+'emaildisabled' => 'Ës sit a peul pa mandé dij mëssagi ëd pòsta eletrònica.',
 'accountcreated' => 'Cont creà',
 'accountcreatedtext' => "Ël cont Utent për $1 a l'é stàit creà.",
 'createaccount-title' => 'Creassion ëd cont për {{SITENAME}}',
@@ -2594,12 +2598,12 @@ Për piasì, ch'a vìsita la [//www.mediawiki.org/wiki/Localisation Localisassio
 'allmessages-filter-unmodified' => 'Pa modificà',
 'allmessages-filter-all' => 'Tùit',
 'allmessages-filter-modified' => 'Modificà',
-'allmessages-prefix' => 'Filtra për prefiss:',
+'allmessages-prefix' => 'Filtré për prefiss:',
 'allmessages-language' => 'Lenga:',
-'allmessages-filter-submit' => '',
+'allmessages-filter-submit' => 'Apliché',
 
 # Thumbnails
-'thumbnail-more' => 'Slarga',
+'thumbnail-more' => 'Slarg',
 'filemissing' => 'Archivi che a manca',
 'thumbnail_error' => 'Eror antramentr che as fasìa la figurin-a: $1',
 'djvu_page_error' => 'Pàgina DjVu fòra dij lìmit',
@@ -2609,21 +2613,21 @@ Për piasì, ch'a vìsita la [//www.mediawiki.org/wiki/Localisation Localisassio
 'thumbnail_invalid_params' => 'Paràmetro dla figurin-a pa giust',
 'thumbnail_dest_directory' => 'As peul pa fesse ël dossié ëd destinassion',
 'thumbnail_image-type' => 'Sòrt ëd figura nen gestì',
-'thumbnail_gd-library' => 'Configurassion pa finìa dla librerìa GD: Fonsion $1 mancanta',
-'thumbnail_image-missing' => 'Ël file a smija esse mancant: $1',
+'thumbnail_gd-library' => 'Configurassion incompleta dla biblioteca GD: Fonsion $1 mancanta',
+'thumbnail_image-missing' => "L'archivi a smija ch'a manca: $1",
 
 # Special:Import
 'import' => 'Amportassion ëd pàgine',
 'importinterwiki' => 'Amportassion da wiki diferente',
 'import-interwiki-text' => "Che a selession-a na wiki e ël tìtol dla pàgina da amporté.
-Date dle revision e stranòm dj'editor a resteran piajit sù 'cò lor.
-Tute le amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
-'import-interwiki-source' => 'Sorziss wiki/pàgina:',
-'import-interwiki-history' => 'Còpia tute le version stòriche dë sta pàgina-sì',
-'import-interwiki-templates' => 'Ansëriss tùit jë stamp',
+Date dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.
+Tute j'amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
+'import-interwiki-source' => 'Wiki e pàgina sorgiss:',
+'import-interwiki-history' => 'Copié tute le revision ëd la stòria ëd costa pàgina',
+'import-interwiki-templates' => 'Anserì tùit jë stamp',
 'import-interwiki-submit' => 'Amporté',
 'import-interwiki-namespace' => 'Spassi nominal ëd destinassion:',
-'import-upload-filename' => 'Nòm dël file:',
+'import-upload-filename' => "Nòm ëd l'archivi:",
 'import-comment' => 'Oget:',
 'importtext' => "Për piasì, che as espòrta l'archivi da 'nt la sorgiss wiki ën dovrand l'[[Special:Export|utiss d'esportassion]]. 
 Che as lo salva ansima a sò ordinator e peui che a lo caria ambelessì.",
@@ -2634,18 +2638,18 @@ Che as lo salva ansima a sò ordinator e peui che a lo caria ambelessì.",
 'importfailed' => 'Amportassion falìa: $1',
 'importunknownsource' => "Sorgiss d'amportassion ëd na sòrt nen conossùa",
 'importcantopen' => "L'archivi da amporté a l'é pa podusse deurbe",
-'importbadinterwiki' => 'Anliura antra wiki diferente malfaita',
-'importnotext' => 'Veujd ò sensa pa gnun test',
-'importsuccess' => 'Amportassion andaita a bon fin!',
-'importhistoryconflict' => "A-i son dle stòrie dë sta pàgina-sì che as contradisso un-a con l'àutra (a peul esse che sta pàgina-sì a l'avèissa già amportala)",
-'importnosources' => "A l'é pa staita definìa gnun-a sorgiss d'amportassion da na wiki diferenta, e carié mach le stòrie as peul nen.",
+'importbadinterwiki' => 'Liura antra wiki diferente cioca',
+'importnotext' => 'Veujd o con gnun test',
+'importsuccess' => 'Amportassion finìa!',
+'importhistoryconflict' => "A-i son dle stòrie dë sta pàgina-sì che as contradiso un-a con l'àutra (a peul esse che sta pàgina-sì a l'avèissa già amportala)",
+'importnosources' => "A l'é pa stàita definìa gnun-a sorgiss d'amportassion da na wiki diferenta, e carié mach le stòrie as peul nen.",
 'importnofile' => "Pa gnun archivi d'amportassion carià.",
 'importuploaderrorsize' => "A l'é falìe la caria dl'archivi d'amporté. L'archivi a resta pì gròss che lòn ch'as peul cariesse.",
 'importuploaderrorpartial' => "A l'é falìe la caria dl'archivi d'amporté. L'archivi a resta carià mach për un tòch.",
 'importuploaderrortemp' => "A l'é falìe la caria dl'archivi d'amporté. A-i manca un dossié provisòri.",
 'import-parse-failure' => "Eror dë scomposission XML ant l'amportassion",
 'import-noarticle' => "Pa gnun-a pàgina d'amporté.",
-'import-nonewrevisions' => "Tute le revision a l'ero già stàite amportà.",
+'import-nonewrevisions' => "Tute le revision a j'ero già stàite amportà.",
 'xml-error-string' => '$1 ant la riga $2, colòna $3 (byte $4): $5',
 'import-upload' => 'Carìa dat XML',
 'import-token-mismatch' => 'Perdù ij dat ëd session.
@@ -2777,6 +2781,7 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
 'spambot_username' => 'MediaWiki - trigomiro che a-j dà deuit a la rumenta',
 'spam_reverting' => "Buta andaré a l'ùltima version che a l'avèissa pa andrinta dj'anliure a $1",
 'spam_blanking' => "Pàgina dësveujdà, che tute le version a l'avìo andrinta dj'anliure a $1",
+'spam_deleting' => 'Tute le revision a contnisìo dle liure a $1, scancelament',
 
 # Info page
 'pageinfo-title' => 'Anformassion për "$1"',
@@ -3669,6 +3674,8 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi
 'api-error-empty-file' => "L'archivi ch'a l'ha mandà a l'era veuid.",
 'api-error-emptypage' => "La creassion ëd pagine neuve veujde a l'é pa përmëttùa.",
 'api-error-fetchfileerror' => "Eror antern: quaicòs a l'é andàit mal an mente as arcuperava l'archivi",
+'api-error-fileexists-forbidden' => "N'archivi con nòm «$1» a esist già, e a peul pa esse dzorascrivù.",
+'api-error-fileexists-shared-forbidden' => 'N\'archivi con nòm "$1" a esist già ant ël depòsit condivis ëd j\'archivi, e a peul pa esse dzorascrivù.',
 'api-error-file-too-large' => "L'archivi ch'a l'ha mandà a l'era tròp gròss.",
 'api-error-filename-tooshort' => "Ël nòm ëd l'archivi a l'é tròp curt.",
 'api-error-filetype-banned' => "Costa sòrt d'archivi a l'é proibìa.",
@@ -3707,4 +3714,6 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi
 'duration-centuries' => '$1 {{PLURAL:$1|sécol|sécoj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenari|milenari}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'As peul pa butesse le saradure an sël servent $1.',
 );
index 8cfc8b6..29715a9 100644 (file)
@@ -2277,7 +2277,7 @@ Encontram-se disponíveis [[{{MediaWiki:Listgrouprights-helppage}}|informações
 # E-mail user
 'mailnologin' => 'Nenhum endereço de envio',
 'mailnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] e possuir um endereço de correio válido nas suas [[Special:Preferences|preferências]], para poder enviar correio electrónico a outros utilizadores.',
-'emailuser' => 'Enviar-lhe um e-mail',
+'emailuser' => 'Enviar um e-mail ao utilizador',
 'emailpage' => 'Contactar utilizador',
 'emailpagetext' => 'Pode usar o formulário abaixo para enviar uma mensagem por correio electrónico para este utilizador.
 O endereço de correio que introduziu nas suas [[Special:Preferences|preferências]] irá aparecer no campo do remetente da mensagem "De:", para que o destinatário lhe possa responder directamente.',
index 8ea2992..eda037f 100644 (file)
@@ -21,6 +21,7 @@
  * @author Danielsouzat
  * @author Diego Queiroz
  * @author Eduardo.mps
+ * @author Emufarmers
  * @author Everton137
  * @author Francisco Leandro
  * @author GKnedo
@@ -314,11 +315,11 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Sublinhar links:',
 'tog-justify' => 'Justificar parágrafos',
-'tog-hideminor' => 'Esconder edições secundárias nas mudanças recentes',
-'tog-hidepatrolled' => 'Esconder edições patrulhadas nas mudanças recentes',
-'tog-newpageshidepatrolled' => 'Esconder páginas patrulhadas da lista de páginas novas',
+'tog-hideminor' => 'Ocultar edições menores nas mudanças recentes',
+'tog-hidepatrolled' => 'Ocultar edições patrulhadas nas mudanças recentes',
+'tog-newpageshidepatrolled' => 'Ocultar páginas patrulhadas da lista de páginas novas',
 'tog-extendwatchlist' => 'Expandir a lista de páginas vigiadas para mostrar todas as alterações aplicáveis, não apenas as mais recentes',
-'tog-usenewrc' => 'Utilizar mudanças recentes melhoradas (requer JavaScript)',
+'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e páginas vigiadas (requer JavaScript)',
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição (JavaScript)',
 'tog-editondblclick' => 'Editar páginas quando houver clique duplo (JavaScript)',
@@ -346,12 +347,12 @@ $messages = array(
 'tog-showjumplinks' => 'Ativar links de acessibilidade "ir para"',
 'tog-uselivepreview' => 'Utilizar pré-visualização em tempo real (JavaScript) (Experimental)',
 'tog-forceeditsummary' => 'Avisar-me ao introduzir um sumário vazio',
-'tog-watchlisthideown' => 'Esconder as minhas edições da lista de páginas vigiadas',
-'tog-watchlisthidebots' => 'Esconder edições efetuadas por robôs da lista de páginas vigiadas',
-'tog-watchlisthideminor' => 'Esconder edições menores da lista de páginas vigiadas',
+'tog-watchlisthideown' => 'Ocultar as minhas edições da lista de páginas vigiadas',
+'tog-watchlisthidebots' => 'Ocultar edições automatizadas por bots da lista de páginas vigiadas',
+'tog-watchlisthideminor' => 'Ocultar edições menores da lista de páginas vigiadas',
 'tog-watchlisthideliu' => 'Ocultar edições de usuários autenticados da lista de páginas vigiadas',
 'tog-watchlisthideanons' => 'Ocultar edições de usuários anônimos da lista de páginas vigiadas',
-'tog-watchlisthidepatrolled' => 'Esconder edições patrulhadas na lista de páginas vigiadas',
+'tog-watchlisthidepatrolled' => 'Ocultar edições patrulhadas na lista de páginas vigiadas',
 'tog-nolangconversion' => 'Desabilitar conversão de variantes de idioma',
 'tog-ccmeonemails' => 'Receber cópias de e-mails que eu enviar a outros usuários',
 'tog-diffonly' => 'Não mostrar o conteúdo da página ao comparar duas edições',
@@ -703,6 +704,8 @@ Quem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
 O administrador que bloqueou ofereceu a seguinte explicação: "$3".',
 'invalidtitle-knownnamespace' => 'Título inválido para o espaço nominal "$2" e texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título inválido para o espaço nominal de número desconhecido ($1) e texto "$2"',
+'exception-nologin' => 'Não está autenticado',
+'exception-nologin-text' => 'Esta página ou ação requer que você esteja autenticado neste wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Má configuração: antivírus desconhecido: ''$1''",
@@ -756,8 +759,8 @@ Certifique-se de que tem os cookies ativados, recarregue esta página e tente no
 'loginsuccesstitle' => 'Login bem sucedido',
 'loginsuccess' => "'''Agora você está {{GENDER:autenticado|autenticada}} ao wiki {{SITENAME}} como \"\$1\"'''.",
 'nosuchuser' => 'Não existe nenhum usuário com o nome "$1".
-Os nomes de usuário são sensíveis à capitalização.
-Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
+Os nomes de usuário são sensíveis a letras maiúsculas.
+Verifique o que foi digitado ou [[Special:UserLogin/signup|crie uma nova conta]].',
 'nosuchusershort' => 'Não existe um usuário com o nome "$1". Verifique o nome que introduziu.',
 'nouserspecified' => 'Você precisa especificar um nome de usuário.',
 'login-userblocked' => 'Este usuário está bloqueado. Entrada proibida.',
@@ -795,9 +798,10 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
 'accountcreated' => 'Conta criada',
 'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
 'createaccount-title' => 'Criação de conta em {{SITENAME}}',
-'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
+'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha "$3".
+Você deve se autenticar e alterar sua senha.
 
-Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
+Ignore esta mensagem caso a conta tenha sido criada por engano.',
 'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
 'login-throttled' => 'Você fez tentativas demais de se autenticar com esta conta recentemente.
 Por favor aguarde antes de tentar novamente.',
@@ -1182,8 +1186,8 @@ Outros administradores no {{SITENAME}} continuarão podendo acessar ao conteúdo
 'revdelete-hide-text' => 'Ocultar texto da edição',
 'revdelete-hide-image' => 'Ocultar conteúdos do arquivo',
 'revdelete-hide-name' => 'Ocultar ação e alvo',
-'revdelete-hide-comment' => 'Esconder comentário de edição',
-'revdelete-hide-user' => 'Esconder nome de usuário/IP do editor',
+'revdelete-hide-comment' => 'Ocultar o sumário de edição',
+'revdelete-hide-user' => 'Ocultar nome de usuário/IP do editor',
 'revdelete-hide-restricted' => 'Suprimir dados de administradores assim como de outros',
 'revdelete-radio-same' => '(não altere)',
 'revdelete-radio-set' => 'Sim',
@@ -1264,7 +1268,7 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
 'difference-multipage' => '(Diferenças entre páginas)',
 'lineno' => 'Linha $1:',
 'compareselectedversions' => 'Compare as versões selecionadas',
-'showhideselectedversions' => 'Mostrar/esconder versões selecionadas',
+'showhideselectedversions' => 'Exibir/ocultar edições selecionadas',
 'editundo' => 'desfazer',
 'diff-multi' => '({{PLURAL:$1|Uma edição intermediária|$1 edições intermediárias}} de {{PLURAL:$2|um usuário|$2 usuários}} {{PLURAL:$1|não apresentada|não apresentadas}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Uma edição intermediária|$1 edições intermediárias}} de mais de {{PLURAL:$2|um usuário|$2 usuário}} não {{PLURAL:$1|apresentada|apresentadas}})',
@@ -1621,7 +1625,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'nchanges' => '$1 {{PLURAL:$1|alteração|alterações}}',
 'recentchanges' => 'Mudanças recentes',
 'recentchanges-legend' => 'Opções das mudanças recentes',
-'recentchanges-summary' => 'Veja as mais novas mudanças na {{SITENAME}} nesta página.',
+'recentchanges-summary' => 'Acompanhe nesta página as mudanças mais recentes deste wiki.',
 'recentchanges-feed-description' => 'Acompanhe neste feed as mudanças mais recentes do wiki.',
 'recentchanges-label-newpage' => 'Esta edição criou uma nova página',
 'recentchanges-label-minor' => 'Esta é uma edição menor',
@@ -3046,6 +3050,7 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
 'spambot_username' => 'MediaWiki limpeza de spam',
 'spam_reverting' => 'Revertendo para a última versão que não contém links para $1',
 'spam_blanking' => 'Todas revisões contendo links para $1, limpando',
+'spam_deleting' => 'Eliminada por todas as suas edições conterem links para $1',
 
 # Info page
 'pageinfo-title' => 'Informações sobre "$1"',
@@ -3923,6 +3928,8 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'api-error-empty-file' => 'O arquivo que você enviou está vazio.',
 'api-error-emptypage' => 'Não é permitido criar páginas novas vazias.',
 'api-error-fetchfileerror' => 'Erro interno: ocorreu um problema indeterminado ao acessar o arquivo.',
+'api-error-fileexists-forbidden' => 'Já existe um arquivo com o nome "$1". Não é possível substituí-lo.',
+'api-error-fileexists-shared-forbidden' => 'Já existe, no repositório de arquivos partilhados, um arquivo com o nome "$1". Não é possível substituí-lo.',
 'api-error-file-too-large' => 'O arquivo que você enviou é muito grande.',
 'api-error-filename-tooshort' => 'O nome do arquivo é curto demais.',
 'api-error-filetype-banned' => 'Este tipo do arquivo é proibido.',
index b526aca..7dde544 100644 (file)
@@ -74,6 +74,7 @@
  * @author Mihai
  * @author Mormegil
  * @author Mpradeep
+ * @author Murma174
  * @author Najami
  * @author Nemo bis
  * @author Niels
@@ -138,7 +139,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
 'tog-newpageshidepatrolled' => 'Toggle in [[Special:Preferences]], section "Recent changes" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
 'tog-extendwatchlist' => "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}",
-'tog-usenewrc' => "[[Special:Preferences]], tab 'Recent changes'. Offers user to use alternative reprsentation of [[Special:RecentChanges]]. {{Gender}}",
+'tog-usenewrc' => "[[Special:Preferences]], tab 'Recent changes'. Offers user to use alternative representation of [[Special:RecentChanges]] and watchlist. {{Gender}}",
 'tog-numberheadings' => "[[Special:Preferences]], tab 'Misc'. Offers numbered headings on content pages to user. {{Gender}}",
 'tog-showtoolbar' => "[[Special:Preferences]], tab 'Edit'. Offers user to show edit toolbar in page edit screen. {{Gender}}
 
@@ -322,7 +323,7 @@ See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
+'newwindow' => 'Below the edit form, next to "{{msg-mw|Edithelp}}".',
 'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
 
 {{Identical|Cancel}}',
@@ -664,6 +665,7 @@ HTML markup cannot be used.
 $1 is a filename, I think.',
 'cannotdelete-title' => 'Title of error page when the user cannot delete a page
 * $1 is the page name',
+'delete-hook-aborted' => 'Error message shown when an extension hook prevents a page deletion, but does not provide an error message.',
 'badtitle' => 'The page title when a user requested a page with invalid page name. The content will be {{msg-mw|badtitletext}}.',
 'badtitletext' => 'The message shown when a user requested a page with invalid page name. The page title will be {{msg-mw|badtitle}}.',
 'perfcached' => 'Like {{msg-mw|perfcachedts}} but used when we do not know how long ago page was cached (unlikely to happen). Parameters:
@@ -696,6 +698,8 @@ $1 is a filename, I think.',
 'invalidtitle-unknownnamespace' => 'Displayed when an invalid title was encountered (generally in a list) and the namespace number is unknown.
 * $1 is the namespace number
 * $2 is the part of the title after the namespace (e.g. SomeName for the page User:SomeName)',
+'exception-nologin' => 'Generic page title used on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
+'exception-nologin-text' => 'Generic reason displayed on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
 
 # Login and logout pages
 'logouttext' => 'Log out message',
@@ -1122,6 +1126,7 @@ Used in History and [[Special:Contributions]].',
 'rev-deleted-user-contribs' => 'Part of revision deletion.',
 'rev-deleted-text-unhide' => 'This message is very similar to {{msg-mw|rev-suppressed-unhide-diff}}. Parameters:
 * $1 is a HTML link to the diff',
+'rev-deleted-text-view' => 'I believe this is an error message which appears if a user tries to view a past revision of a page, where the revision has been hidden from view, although later revisions of the page still exist.',
 'rev-suppressed-unhide-diff' => 'This message is very similar to {{msg-mw|rev-deleted-unhide-diff}} and to {{msg-mw|rev-suppressed-text-unhide}}. Parameters:
 * $1 is a HTML link to the diff',
 'rev-delundel' => 'Link in page history for oversight (see also {{msg-mw|rev-showdeleted}})',
@@ -2376,7 +2381,7 @@ The title is {{msg-mw|nopagetitle}}.',
 'booksources-go' => 'Name of button in [[Special:BookSources]]
 
 {{Identical|Go}}',
-'booksources-invalid-isbn' => 'This message is displayed after an invalid ISBN is entered on Special:Booksources.',
+'booksources-invalid-isbn' => 'This message is displayed after an invalid ISBN is entered on [[Special:Booksources]].',
 
 # Special:Log
 'specialloguserlabel' => 'Used in [[Special:Log]] as a label for an input field with which the log can be filtered for entries describing actions \'\'performed\'\' by the specified user.  "Carried out" and "done" are possible alternatives for "performed".',
@@ -2484,7 +2489,7 @@ You can apparently use 'URL' instead of 'hostname'.",
 'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in the recent changes.',
+'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
 'newuserlogpagetext' => 'Part of the "Newuserlog" extension. It is the description you can see on [[Special:Log/newusers]].',
 
 # Special:ListGroupRights
@@ -2596,7 +2601,7 @@ This is a button text used in [[Special:Emailuser]] when called without a (valid
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'watchlist-details' => 'Message on Special page: My watchlist. This is paired with the message [[Mediawiki:Nowatchlist]] which appears instead of Watchlist-details when $1 is 0.',
+'watchlist-details' => 'Message on [[Special:Watchlist]]. This is paired with the message {{msg-mw|Nowatchlist}} which appears instead of Watchlist-details when $1 is 0.',
 'wlheader-showupdated' => 'This message shows up near top of users watchlist page.',
 'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
 Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
@@ -2746,8 +2751,8 @@ This message was something like "unlock move protection" in the past.',
 {{Identical|Infinite}}",
 'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
 'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
-'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
-'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
+'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Maximum-size}}. There is an input box to specify the minimum bites of the projected pages listed.',
+'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Minimum-size}}. There is an input box to specify the maximum bites of the projected pages listed.',
 'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
 
 # Restrictions (nouns)
@@ -3197,7 +3202,7 @@ See also:
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tooltip shown when hovering the mouse over the link to your own User page in the upper-side personal toolbox.',
 'tooltip-pt-mytalk' => 'Tooltip shown when hovering over the "my talk" link in your personal toolbox (upper right side).',
-'tooltip-pt-preferences' => 'Tooltip shown when hovering over the "my preferences" ([[MediaWiki:Mypreferences]]) link in your personal toolbox (upper right side).
+'tooltip-pt-preferences' => 'Tooltip shown when hovering over the {{msg-mw|Mypreferences}} link in your personal toolbox (upper right side).
 
 {{Identical|My preferences}}',
 'tooltip-pt-watchlist' => 'Tooltip shown when hovering over the "my watchlist" link in your personal toolbox (upper right side).',
@@ -3225,8 +3230,8 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
 'tooltip-ca-watch' => '{{Identical|Add this page to your watchlist}}',
 'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg|unwatch}} tab.',
 'tooltip-search' => 'The tooltip when hovering over the search menu.',
-'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Go|Go]]” button next to the search box.',
-'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Search|Search]]” button under the search box.',
+'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Go}}” button next to the search box.',
+'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Search}}” button under the search box.',
 'tooltip-p-logo' => 'Tool tip shown when hovering the mouse over the logo that links to [[Main Page]].
 {{Identical|Visit the main page}}',
 'tooltip-n-mainpage' => 'Tool tip shown when hovering the mouse over the link to [[{{MediaWiki:Mainpage}}]].
@@ -3254,7 +3259,7 @@ No GENDER-Support for performance reason.',
 'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg|nstab-template}} tab.',
 'tooltip-ca-nstab-help' => 'Tootip shown when hovering over the {{msg|nstab-help}} tab in the Help namespace.',
 'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg|nstab-category}} tab.',
-'tooltip-minoredit' => 'Tooltip shown when hovering over the "[[MediaWiki:Minoredit/{{SUBPAGENAME}}|{{int:minoredit}}]]" link below the edit form.',
+'tooltip-minoredit' => 'Tooltip shown when hovering over the "{{msg-mw|Minoredit}}" link below the edit form.',
 'tooltip-save' => "This is the text that appears when you hover the mouse over the 'Save page' button on the edit page",
 'tooltip-preview' => 'Tooltip shown when hovering over the "Show preview" button.
 
@@ -3359,7 +3364,12 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
 'nocredits' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}) but when there are no credits available. Note that the credits action is disabled by default (currently enabled on translatewiki.net).',
 
 # Spam protection
-'spam_reverting' => '{{Identical|Revert}}',
+'spam_reverting' => 'Edit summary for spam cleanup script. Used when a page is reverted because all later revisions contained a particular link. Parameters:
+* $1 is a spammed domain name.',
+'spam_blanking' => 'Edit summary for spam cleanup script. Used when a page is blanked (made to have no content, but still exist) because the script could not find an appropriate revision to set the page to. Parameters:
+* $1 is a spammed domain name.',
+'spam_deleting' => 'Edit summary for spam cleanup script. Used when a page is deleted because all revisions contained a particular link. Parameters:
+* $1 is a spammed domain name.',
 
 # Info page
 'pageinfo-title' => 'Page title for action=info.
@@ -4292,14 +4302,14 @@ Bitrate (of a file, typically) in yottabits (1 yottabits = 1000×1000×1000×100
 'livepreview-loading' => '{{Identical|Loading}}',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Message on Special page: Edit watchlist. This is paired with the message [[Mediawiki:Watchlistedit-noitems]] which appears instead of Watchlistedit-numitems when $1 is 0.',
-'watchlistedit-noitems' => "Message on [[Special:Watchlist/edit]], which only appears when a user's watchlist is empty.",
+'watchlistedit-numitems' => 'Message on [[Special:EditWatchlist]]. This is paired with the message {{Msg-mw|Watchlistedit-noitems}} which appears instead of Watchlistedit-numitems when $1 is 0.',
+'watchlistedit-noitems' => "Message on [[Special:EditWatchlist]], which only appears when a user's watchlist is empty.",
 'watchlistedit-normal-title' => 'Title of [[Special:Watchlist/edit|special page]].',
 'watchlistedit-normal-legend' => 'Heading of dialogue box on [[Special:Watchlist/edit]]',
 'watchlistedit-normal-explain' => 'An introduction/explanation about the [[Special:Watchlist/edit|normal edit watchlist function]].
 Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-normal-submit' => 'Text of submit button on [[Special:Watchlist/edit]].',
-'watchlistedit-normal-done' => 'Message on Special page: Edit watchlist after pages are removed from the watchlist.',
+'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.',
 'watchlistedit-raw-title' => 'Title of [[Special:Watchlist/raw|Special page]].
 
 {{Identical|Edit raw watchlist}}',
@@ -4310,8 +4320,8 @@ Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-raw-titles' => 'Text above edit box containing items being watched on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-submit' => 'Text of submit button on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-done' => 'A message which appears after the raw watchlist has been updated using [[Special:Watchlist/raw]].',
-'watchlistedit-raw-added' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is added to the raw watchlist.',
-'watchlistedit-raw-removed' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is deleted from the raw watchlist.',
+'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is added to the raw watchlist.',
+'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is deleted from the raw watchlist.',
 
 # Watchlist editing tools
 'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-edit}} and {{msg|watchlisttools-raw}}.',
@@ -4556,7 +4566,7 @@ It appears that the word 'valid' describes 'tags', not 'change'. It also appears
 'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
 'tags-edit' => '{{Identical|Edit}}
 Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a description.',
-'tags-hitcount' => 'Shown in the “Tagged changes” column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags-hitcount' => 'Shown in the "{{msg-mw|Tags-hitcount-header}}" column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
 
 * <code>$1</code> is the number of changes marked with the tag',
 
@@ -4710,6 +4720,8 @@ $4 is the gender of the target user.',
 'api-error-empty-file' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-emptypage' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-fetchfileerror' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-fileexists-forbidden' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-fileexists-shared-forbidden' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-file-too-large' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-filename-tooshort' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-filetype-banned' => 'API error message that can be used for client side localisation of API errors.',
index 57acb48..c994d0c 100644 (file)
@@ -37,6 +37,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Katiguriya_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Allmessages'               => array( 'TukuyWillaykuna' ),
        'Allpages'                  => array( 'TukuyPanqakuna' ),
index 313cde1..85a7390 100644 (file)
@@ -33,6 +33,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Samiyachiy_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Tinkikunana uraypi aspishpa rikuchina',
index 7fdd9c1..2a54e32 100644 (file)
@@ -305,7 +305,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ascunde în schimbări recente editările patrulate',
 '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' => 'Afișează varianta îmbunătățită a schimbărilor recente (necesită JavaScript)',
+'tog-usenewrc' => 'Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite (necesită JavaScript)',
 'tog-numberheadings' => 'Numerotează automat secțiunile',
 'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare (JavaScript)',
 'tog-editondblclick' => 'Activează modificarea paginii prin dublu clic (JavaScript)',
@@ -659,6 +659,8 @@ Te rog anunță acest aspect unui [[Special:ListUsers/sysop|administrator]], ind
 'cannotdelete' => 'Pagina sau fișierul „$1” nu a putut fi șters.
 S-ar putea ca acesta să fi fost deja șters de altcineva.',
 'cannotdelete-title' => 'Imposibil de șters pagina „$1”',
+'delete-hook-aborted' => 'Ștergerea a fost abandonată din cauza unui hook.
+Nicio explicație furnizată.',
 'badtitle' => 'Titlu incorect',
 'badtitletext' => 'Titlul căutat a fost invalid, gol sau o legătură invalidă inter-linguală sau inter-wiki.
 
@@ -695,6 +697,8 @@ 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-text' => 'Această pagină sau acțiune necesită ca dumneavoastră să fiți autentificat{{GENDER:||ă}} pe acest wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Configurație greșită: scaner de virus necunoscut: ''$1''",
@@ -737,7 +741,7 @@ Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:P
 Vă rugăm să alegeți un alt nume.',
 'loginerror' => 'Eroare de autentificare',
 'createaccounterror' => 'Nu pot crea contul: $1',
-'nocookiesnew' => 'Contul a fost creat, dar dvs. nu sunteți autentificat(ă). {{SITENAME}} folosește cookie-uri pentru a reține utilizatorii autentificați. Browser-ul dvs. are modulele cookie dezactivate (disabled). Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
+'nocookiesnew' => 'Contul a fost creat, dar nu sunteți autentificat{{GENDER:||ă|}}. {{SITENAME}} folosește module cookie pentru a reține utilizatorii autentificați. Navigatorul dumneavoastră are aceste module cookie dezactivate. Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
 'nocookieslogin' => '{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.',
 'nocookiesfornew' => 'Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.
 Asigurați-vă că aveți cookie-urile activate, reîncărcați pagina și încercați din nou.',
@@ -886,7 +890,7 @@ Parolă temporară: $2',
 # Edit pages
 'summary' => 'Rezumat:',
 'subject' => 'Subiect / titlu:',
-'minoredit' => 'Aceasta este o editare minoră',
+'minoredit' => 'Aceasta este o modificare minoră',
 'watchthis' => 'Monitorizează această pagină',
 'savearticle' => 'Salvare pagină',
 'preview' => 'Previzualizare',
@@ -1058,7 +1062,7 @@ Jurnalul ștergerilor și al mutărilor pentru această pagină este disponibil:
 Jurnalul ștergerilor și al mutărilor este disponibil mai jos.',
 'log-fulllog' => 'Vezi tot jurnalul',
 'edit-hook-aborted' => 'Modificarea a fost abandonată din cauza unui hook.
-Fără nicio explicație.',
+Nicio explicație furnizată.',
 'edit-gone-missing' => 'Pagina nu s-a putut actualiza.
 Se pare că a fost ștearsă.',
 'edit-conflict' => 'Conflict de modificare.',
@@ -1097,7 +1101,7 @@ Acsete argumente au fost omise.',
 Motivul invocat de $3 este ''$2''",
 
 # History pages
-'viewpagelogs' => 'Vezi jurnalele pentru această pagină',
+'viewpagelogs' => 'Afișează jurnalele paginii',
 'nohistory' => 'Nu există istoric pentru această pagină.',
 'currentrev' => 'Versiunea curentă',
 'currentrev-asof' => 'Versiunea curentă din $1',
@@ -1469,7 +1473,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 # User rights
 'userrights' => 'Administrare permisiuni de utilizator',
 'userrights-lookup-user' => 'Administrare grupuri de utilizatori',
-'userrights-user-editname' => 'Introdu un nume de utilizator:',
+'userrights-user-editname' => 'Introduceți un nume de utilizator:',
 'editusergroup' => 'Modificare grup de utilizatori',
 'editinguser' => "Modificare permisiuni de utilizator pentru '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Modificare grup de utilizatori',
@@ -1576,7 +1580,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 # User rights log
 'rightslog' => 'Jurnal permisiuni de utilizator',
 'rightslogtext' => 'Acest jurnal cuprinde modificările permisiunilor utilizatorilor.',
-'rightslogentry' => 'a schimbat pentru $1 apartenența la un grup de la $2 la $3',
+'rightslogentry' => 'a schimbat permisiunile pentru $1 de la $2 la $3',
 'rightslogentry-autopromote' => 'a fost promovat în mod automat de la $2 la $3',
 'rightsnone' => '(niciunul)',
 
@@ -2276,7 +2280,7 @@ Adresa de e-mail introdusă de tine în [[Special:Preferences|preferințele de u
 'mywatchlist' => 'Pagini urmărite',
 'watchlistfor2' => 'Pentru $1 $2',
 'nowatchlist' => 'Nu ați ales să urmăriți nici o pagină.',
-'watchlistanontext' => 'Te rugăm să $1 pentru a vizualiza sau edita itemii de pe lista ta de urmărire.',
+'watchlistanontext' => 'Vă rugăm să vă $1 pentru a vizualiza sau edita elementele din lista dumneavoastră de pagini urmărite.',
 'watchnologin' => 'Nu sunteți autentificat',
 'watchnologintext' => 'Trebuie să fiți [[Special:UserLogin|autentificat]] pentru a vă modifica lista de pagini urmărite.',
 'addwatch' => 'Adăugă la lista de pagini urmărite',
@@ -2550,7 +2554,7 @@ Iată aici ultima înregistrare relevantă din jurnalul blocărilor:',
 'sp-contributions-search' => 'Căutare contribuții',
 'sp-contributions-username' => 'Adresă IP sau nume de utilizator:',
 'sp-contributions-toponly' => 'Afișează numai versiunile recente',
-'sp-contributions-submit' => 'Caută',
+'sp-contributions-submit' => 'Căutare',
 
 # What links here
 'whatlinkshere' => 'Ce trimite aici',
@@ -2762,7 +2766,7 @@ automat odată cu aceasta '''afară de cazul că''':
 manual paginile de discuții, dacă dorești acest lucru.",
 'movearticle' => 'Pagina de redenumit:',
 'moveuserpage-warning' => "'''Atenție''': sunteți pe cale să redenumiți o pagină de utilizator. Vă rugăm să rețineți că singura redenumită va fi pagina, nu și utilizatorul.",
-'movenologin' => 'Nu ești autentificat',
+'movenologin' => 'Nu sunteți autentificat{{GENDER:||ă}}.',
 'movenologintext' => 'Trebuie să fii un utilizator înregistrat și să te [[Special:UserLogin|autentifici]] pentru a muta o pagină.',
 'movenotallowed' => 'Nu ai permisiunea să muți pagini.',
 'movenotallowedfile' => 'Nu ai permisiunea de a muta fișiere.',
@@ -3041,7 +3045,8 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'spamprotectionmatch' => 'Următorul text a fost oferit de filtrul de spam: $1',
 'spambot_username' => 'Curățarea de spam a MediaWiki',
 'spam_reverting' => 'Revenire la ultima versiune care nu conține legături către $1',
-'spam_blanking' => 'Toate reviziile conținând legături către $1, au eșuat',
+'spam_blanking' => 'Toate versiunile conținând legături către $1 au fost golite',
+'spam_deleting' => 'Toate versiunile conținând legături către $1 au fost șterse',
 
 # Info page
 'pageinfo-title' => 'Informații pentru „$1”',
@@ -3665,7 +3670,7 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
 'table_pager_prev' => 'Pagina anterioară',
 'table_pager_first' => 'Prima pagină',
 'table_pager_last' => 'Ultima pagină',
-'table_pager_limit' => 'Arată $1 itemi pe pagină',
+'table_pager_limit' => 'Arată $1 elemente pe pagină',
 'table_pager_limit_label' => 'Elemente pe pagină:',
 'table_pager_limit_submit' => 'Du-te',
 'table_pager_empty' => 'Niciun rezultat',
@@ -3912,6 +3917,8 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 'api-error-empty-file' => 'Fișierul încărcat de dumneavoastră este gol.',
 'api-error-emptypage' => 'Crearea paginilor noi, goale nu este permisă.',
 'api-error-fetchfileerror' => 'Eroare internă: ceva nu a funcționat corect la prelucrarea fișierului.',
+'api-error-fileexists-forbidden' => 'Un fișier cu numele „$1” există deja și nu poate fi suprascris.',
+'api-error-fileexists-shared-forbidden' => 'Un fișier cu numele „$1” există deja în depozitul de fișiere partajate, și nu poate fi suprascris.',
 'api-error-file-too-large' => 'Fișierul pe care l-ați trimis este prea mare.',
 'api-error-filename-tooshort' => 'Numele fișierului este prea scurt.',
 'api-error-filetype-banned' => 'Acest tip de fișiere este interzis.',
index 160b594..6a8fff5 100644 (file)
@@ -30,7 +30,7 @@ $messages = array(
 'tog-hidepatrolled' => "Scunne le cangiaminde condrollete jndr'à le cangiaminde recende",
 'tog-newpageshidepatrolled' => "Scunne le pàggene tenute sotte condrolle da 'a liste de le pàggene nuève",
 'tog-extendwatchlist' => "Spanne 'a liste de le pàggene condrollete pe fa vedè tutte le cangiaminde fatte, none sulamende l'urteme",
-'tog-usenewrc' => "Ause le cangiaminde recende migliorate (richiede 'u JavaScript)",
+'tog-usenewrc' => "Ause le cangiaminde recende migliorate (vole 'u JavaScript)",
 'tog-numberheadings' => 'Testete auto-numerete',
 'tog-showtoolbar' => "Fà vedè 'a barra de le cangiaminde (JavaScript)",
 'tog-editondblclick' => "Cange le pàggene cu 'nu doppie clic (JavaScript)",
@@ -1934,6 +1934,8 @@ Pò condenè une  cchiù carattere ca non ge ponne essere ausate jndr'à le tite
 'allpages-hide-redirects' => 'Scunne le redirezionaminde',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere aggiornate a $1 fà.",
+'cachedspecial-viewing-cached-ts' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere ca non g'è attuale.",
 'cachedspecial-refresh-now' => "Vide l'urteme.",
 
 # Special:Categories
index 3d9cfba..fabf34e 100644 (file)
@@ -16,6 +16,7 @@
  * @author Alexander Sigachov (alexander.sigachov@gmail.com)
  * @author Alexandr Efremov
  * @author Amikeco
+ * @author Amire80
  * @author Askarmuk
  * @author Assele
  * @author Bouron
@@ -398,7 +399,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Скрывать патрулированные правки в списке свежих правок',
 'tog-newpageshidepatrolled' => 'Скрывать отпатрулированные страницы в списке новых страниц',
 'tog-extendwatchlist' => 'Расширенный список наблюдения, включающий все изменения, а не только последние',
-'tog-usenewrc' => 'Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\83лÑ\83Ñ\87Ñ\88еннÑ\8bй Ñ\81пиÑ\81ок Ñ\81вежиÑ\85 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ (требуется JavaScript)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83ппиÑ\80оваÑ\82Ñ\8c Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81вежиÑ\85 Ð¿Ñ\80авок Ð¸ Ð² Ñ\81пиÑ\81ке Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f (требуется JavaScript)',
 'tog-numberheadings' => 'Автоматически нумеровать заголовки',
 'tog-showtoolbar' => 'Показывать верхнюю панель инструментов при редактировании (JavaScript)',
 'tog-editondblclick' => 'Править страницы по двойному щелчку (JavaScript)',
@@ -749,6 +750,8 @@ $1',
 'cannotdelete' => 'Невозможно удалить страницу или файл «$1».
 Возможно, страница уже оказалась удалена.',
 'cannotdelete-title' => 'Нельзя удалить страницу «$1»',
+'delete-hook-aborted' => 'Правка отменена процедурой-перехватчиком.
+Дополнительных пояснений не приведено.',
 'badtitle' => 'Недопустимое название',
 'badtitletext' => 'Запрашиваемое название страницы неправильно, пусто, либо неправильно указано межъязыковое или интервики название. Возможно, в названии используются недопустимые символы.',
 'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей|записей}}.',
@@ -783,6 +786,8 @@ $2',
 Установивший этот режим администратор оставил следующее разъяснение: «''$3''».",
 'invalidtitle-knownnamespace' => 'Недопустимый заголовок с пространством имен «$2» и текстом «$3»',
 'invalidtitle-unknownnamespace' => 'Недопустимый заголовок с неизвестным номером пространства $1 и текстом «$2»',
+'exception-nologin' => 'Вы не представились системе',
+'exception-nologin-text' => 'Для просмотра этой станицы или выполнения запрошенного действия необходимо представиться системе.',
 
 # Virus scanner
 'virus-badscanner' => "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
@@ -3165,6 +3170,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Чистка спама',
 'spam_reverting' => 'Откат к последней версии, не содержащей ссылки на $1',
 'spam_blanking' => 'Все версии содержат ссылки на $1, очистка',
+'spam_deleting' => 'Все версии содержали ссылки на $1, производится удаление',
 
 # Info page
 'pageinfo-title' => 'Сведения по «$1»',
@@ -4128,6 +4134,8 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-empty-file' => 'Отправленный вами файл пуст.',
 'api-error-emptypage' => 'Не допускается создание новых пустых страниц.',
 'api-error-fetchfileerror' => 'Внутренняя ошибка: что-то пошло не так при получении файла.',
+'api-error-fileexists-forbidden' => 'Файл с именем «$1» уже существует и не может быть перезаписан.',
+'api-error-fileexists-shared-forbidden' => 'Файл с именем «$1» уже существует в хранилище общих файлов и не может быть перезаписан.',
 'api-error-file-too-large' => 'Отправленный вами файл слишком велик.',
 'api-error-filename-tooshort' => 'Слишком короткое имя файла.',
 'api-error-filetype-banned' => 'Этот тип файлов запрещён.',
@@ -4166,4 +4174,6 @@ MediaWiki распространяется в надежде, что она бу
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не удалось получить блокировку на сервере  $1.',
 );
index e20022c..2831ac9 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Rusyn (Русиньскый)
+/** Rusyn (русиньскый)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -204,9 +204,9 @@ $messages = array(
 'vector-simplesearch-preference' => 'Поволити росшырены пропозіції гляданя (лем взгляд Vector )',
 'vector-view-create' => 'Створити',
 'vector-view-edit' => 'Едітовати',
-'vector-view-history' => 'Видїти історію',
+'vector-view-history' => 'Відїти історію',
 'vector-view-view' => 'Чітати',
-'vector-view-viewsource' => 'Видїти код',
+'vector-view-viewsource' => 'Відїти код',
 'actions' => 'Дїї',
 'namespaces' => 'Просторы назв',
 'variants' => 'Варіанты',
@@ -310,7 +310,7 @@ $1',
 'youhavenewmessagesmulti' => 'Маєте новы ознамы на $1',
 'editsection' => 'едіт.',
 'editold' => 'едіт.',
-'viewsourceold' => 'видїти код',
+'viewsourceold' => 'відїти код',
 'editlink' => 'едітовати',
 'viewsourcelink' => 'видїти код',
 'editsectionhint' => 'Едітовати секцію: $1',
@@ -377,9 +377,9 @@ $1',
 Адміністратор, котрый датабазу замкнув, охабив тото пояснїня: $1',
 'missing-article' => 'В датабазї ся не нашов жаданый текст сторінкы «$1» $2.
 
-Подобна сітуація звычайно взникає при спробі переходу по застаралому одказованю на історію змін сторінкы, яка была вымазана.
+Подобна сітуація звычайно выникать при спробі переходу по застаралому одказованю на історію змін сторінкы, яка была вымазана.
 
-Кідь то не є тот припад, може сьте нашли помылку в проґрамовім забезпечіню.
+Кідь то не є тот припад, може сьте нашли помылку в проґрамовім забеспечіню.
 Просиме Вас, оголоште то [[Special:ListUsers/sysop|адміністраторам]], придайте і URL.',
 'missingarticle-rev' => '(ревізія № $1)',
 'missingarticle-diff' => '(Роздїл: $1, $2)',
@@ -409,7 +409,7 @@ $1',
 'wrong_wfQuery_params' => 'Неправилны параметры функцій wfQuery()<br />
 Функція: $1<br />
 Запрос: $2',
-'viewsource' => 'Видїти код',
+'viewsource' => 'Відїти код',
 'viewsource-title' => 'Відїти жрідло сторінкы $1',
 'actionthrottled' => 'Акція была придушена',
 'actionthrottledtext' => 'Взглядом ку протиспамовым опатрїням не можете жадану акцію провести барз часто в короткім часї. Спробуйте то знову о пару мінут.',
@@ -426,6 +426,11 @@ $2',
 'customjsprotected' => 'Не маєте права едітовати тоту сторінку з JavaScript-ом, бо обсягує персоналны наставлїна іншого хоснователя.',
 'ns-specialprotected' => 'Шпеціалны сторінкы не є можне едітовати.',
 'titleprotected' => "Створїня сторінкы з таков назвов было заборонене хоснователём [[User:$1|$1]] з причінов: ''$2''.",
+'filereadonlyerror' => "Не годно змінити файл „$1“, бо архів файлів „$2“ є теперь лем на чітаня.
+
+Адміністратор сервера, котрый архів заблоковав, додав тото пояснїня: „''$3''“.",
+'invalidtitle-knownnamespace' => 'Непряавилна назва в просторї назв „$2“ і текстом „$3“',
+'invalidtitle-unknownnamespace' => 'Неправилна назва з незнамым чіслом простору назв $1 і текстом „$2“',
 
 # Virus scanner
 'virus-badscanner' => "Зла конфіґурація: незнамый антивіровый проґрам: ''$1''",
@@ -514,6 +519,7 @@ $2',
 'invalidemailaddress' => 'Уведена адреса ел. пошты не може быти прията, бо она не має правилный формат.
 Просиме Вас, уведьте коректну адесу або зохабте поле порожнє.',
 'cannotchangeemail' => 'В тій вікі не годен мінити імейловы адресы.',
+'emaildisabled' => 'Сесь сервер не годен одосылати імейлы.',
 'accountcreated' => 'Конто вытворене',
 'accountcreatedtext' => 'Конто хоснователя $1 было вытворене.',
 'createaccount-title' => 'Вытвориня конта про  {{SITENAME}}',
@@ -596,7 +602,7 @@ $2
 'changeemail-cancel' => 'Сторно',
 
 # Edit page toolbar
-'bold_sample' => 'Тучный текст',
+'bold_sample' => 'Товстый текст',
 'bold_tip' => 'Шырокый текст',
 'italic_sample' => 'Курсива',
 'italic_tip' => 'Курсива',
@@ -706,6 +712,7 @@ $2
 'note' => "'''Позначка:'''&nbsp;",
 'previewnote' => "'''Памятайте, же то лем нагляд.'''
 Зміны іщі не суть уложены!",
+'continue-editing' => 'Продовжыти едітованя',
 'previewconflict' => 'Тот нагляд зображує текст так, як буде вызерати по уложіню сторінкы.',
 'session_fail_preview' => "'''Вашу пожадавку ся не подарило зпрацовати, бо были страчены дата сеансу.
 Просиме, спробуйте то зясь.
@@ -779,21 +786,28 @@ $2
 'edit-conflict' => 'Конфлікт едітованя.',
 'edit-no-change' => 'Ваша едітація была іґнорована, бо не дішло ку жадній змінї тексту.',
 'edit-already-exists' => 'Не подарило ся створити нову сторінку, бо она уж екзістує.',
+'defaultmessagetext' => 'Преднаставленый текст повідомлїня',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Увага: Тота сторінка обсягує дуже много кликаня выконово нарочных функцій парсера.
 
 Поволеный ліміт є $2, теперь шак  {{PLURAL:$1|ту єдно кликаня є|ту суть  $2 кликаня|ту є $2 кликань}}.',
 'expensive-parserfunction-category' => 'Сторінкы з дуже великым чіслом кликаня функції парсера',
-'post-expand-template-inclusion-warning' => 'Увага: розмір шаблон про включіня є барз великый.
+'post-expand-template-inclusion-warning' => 'Ð\9fозÑ\96Ñ\80Ñ\8c: розмір шаблон про включіня є барз великый.
 Дакотры шаблоны не будуть включены.',
 'post-expand-template-inclusion-category' => 'Сторінкы з перевышуючов великостёв включеных шаблон',
-'post-expand-template-argument-warning' => 'Увага: Тота сторінка обсягує принайменшім єден арґумент шаблоны, котрый є по розбалїню дуже великый.
+'post-expand-template-argument-warning' => 'Увага: Тота сторінка обсягує принайменшім єден арґумент шаблоны, котрый є по роспакованю дуже великый.
 Тоты арґументы были іґнорованы.',
 'post-expand-template-argument-category' => 'Сторінкы обсягуючі іґнорованы арґументы шаблон',
 'parser-template-loop-warning' => 'Найдженый цікл шаблон: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Перевышеный ліміт глубкы рекурзівного вкладаня шаблон ($1)',
 'language-converter-depth-warning' => 'Перевышеный ліміт глубкы у языковій конверзії ($1)',
+'node-count-exceeded-category' => 'Сторінкы перевышуючі чісло вузлів',
+'node-count-exceeded-warning' => 'Сторінка перевышыла чісло вузлів',
+'expansion-depth-exceeded-category' => 'Сторінкы превышують глубку експанзії',
+'expansion-depth-exceeded-warning' => 'Сторінка перевышыла глубку експанзії',
+'parser-unstrip-loop-warning' => 'Выявлене заціклїня unstrip',
+'parser-unstrip-recursion-limit' => 'Перевышеный ліміт рекурзії unstrip ($1)',
 
 # "Undo" feature
 'undo-success' => 'Едітованя може быти зручене.
@@ -938,7 +952,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Запис затаїня',
-'suppressionlogtext' => 'Тото є  список змазаня і блокованя котрый має обсяг схованый перед адміністраторами. Видьте тыж [[Special:BlockList|список вшыткых блоковань]].',
+'suppressionlogtext' => 'Тото є список мазаня і блокованя загорнюючі спрятаня обсягу і перед адміністраторами.
+Смотьте тыж [[Special:BlockList|Список вшыткых актуалных блоковань]].',
 
 # History merging
 'mergehistory' => 'Злучованя історії сторінок',
@@ -970,7 +985,9 @@ $1",
 'mergelogpagetext' => 'Ниже є список найновшых злучінь історії єдной сторінкы з другов.',
 
 # Diffs
-'history-title' => 'Історія змін сторінкы «$1»',
+'history-title' => '$1: Історія змін',
+'difference-title' => '$1: Роздїлы міджі ревізіями',
+'difference-title-multipage' => '$1 і $2: Роздїлы міджі сторінками',
 'difference-multipage' => '(Роздїлы міджі сторінками)',
 'lineno' => 'Рядок $1:',
 'compareselectedversions' => 'Порівнати выбраны верзії',
@@ -1032,7 +1049,7 @@ $1",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}}  про '''$4'''",
 'nonefound' => "'''Позначка:''' Штандартно ся глядать лем в дакотрых просторах назв.
 Хоснуйте префікс ''all:'', жебы глядати у вшыткых просторах назв (рахувчі тыж сторінкы діскузії, шаблоны ітд.), або зазначте потрібный простор назв.",
-'search-nonefound' => 'На ваш запрос не были найджены жадны резултаты.',
+'search-nonefound' => 'На вашу пожадавку не были найджены жадны резултаты.',
 'powersearch' => 'Росшырене гляданя',
 'powersearch-legend' => 'Росшырене гляданя',
 'powersearch-ns' => 'Глядати у просторах назв:',
@@ -1066,7 +1083,8 @@ $1",
 'prefs-beta' => 'Бета-функції',
 'prefs-datetime' => 'Датум і час',
 'prefs-labs' => 'Експеріменталны функції',
-'prefs-personal' => 'Інформації о хоснователёві',
+'prefs-user-pages' => 'Сторінкы хоснователя',
+'prefs-personal' => 'Інформації о хоснователёви',
 'prefs-rc' => 'Послїднї зміны',
 'prefs-watchlist' => 'Слїдованы сторінкы',
 'prefs-watchlist-days' => 'Чісло днїв зображеных в слїдованых сторінках:',
@@ -1358,6 +1376,7 @@ $1",
 'newsectionsummary' => '/* $1 */ нова секція',
 'rc-enhanced-expand' => 'Вказати детайлы (потрібный JavaScript)',
 'rc-enhanced-hide' => 'Сховати детайлы',
+'rc-old-title' => 'спочатку створена як $1',
 
 # Recent changes linked
 'recentchangeslinked' => 'Повязаны зміны',
@@ -1494,6 +1513,31 @@ $1',
 'upload-too-many-redirects' => 'URL обсягує барз велё напрямлінь',
 'upload-unknown-size' => 'Незнамый розмір',
 'upload-http-error' => 'Дішло ку хыбі HTTP: $1',
+'upload-copy-upload-invalid-domain' => 'Начітаня копірованём неможливе з той домены.',
+
+# File backend
+'backend-fail-stream' => 'Не вдало ся транслёвати файл $1.',
+'backend-fail-backup' => 'Не вдало ся створити резервну копію файлу $1.',
+'backend-fail-notexists' => 'Файл $1 не існує.',
+'backend-fail-hashes' => 'Не вдало ся обтримати гешы файлів про порівнаня.',
+'backend-fail-notsame' => 'Неідентичный файл $1 вже існує.',
+'backend-fail-invalidpath' => '$1 є неправилна степка к місцю уложіня.',
+'backend-fail-delete' => 'Не вдало ся вылучіти файл $1.',
+'backend-fail-alreadyexists' => 'Файл $1 вже існує.',
+'backend-fail-store' => 'Не вдало ся уложыти файл $1 в $2.',
+'backend-fail-copy' => 'Не вдало ся скопіровати файл $1 до $2.',
+'backend-fail-move' => 'Не вдало ся перемістити файл $1 до $2.',
+'backend-fail-opentemp' => 'Не вдало ся отворити дочасный файл.',
+'backend-fail-writetemp' => 'Не вдало ся записати до дочасного файлу.',
+'backend-fail-closetemp' => 'Не вдало ся заперти дочасный файл.',
+'backend-fail-read' => 'Не вдало ся прочітати файл $1.',
+'backend-fail-create' => 'Не вдало ся записати файл $1.',
+'backend-fail-maxsize' => 'Не вдало ся записати до файлу $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-usable' => 'Не вдало ся записати до файлу $1  про недостаточны права або хыбуючі адресарї/контайнеры.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'При одкрытю ZIP-архіву про ёго перевірку выникла хыба.',
@@ -1871,7 +1915,7 @@ $1',
 # E-mail user
 'mailnologin' => 'Без адресы одосланя',
 'mailnologintext' => 'Кідь хочете посылати ел. пошту іншым хоснователям, мусите ся [[Special:UserLogin|приголосити]] і мати платну адресу ел. пошты в своїм [[Special:Preferences|наставлїню]].',
-'emailuser' => 'Послати е-маіл тому хоснователёві',
+'emailuser' => 'Послати е-маіл тому хоснователёви',
 'emailpage' => 'Пошлийте е-пошту',
 'emailpagetext' => 'Помочов ниже зображеного формуларя можете тому хоснователёви послати повідомлїня ел. поштов.
 Адреса ел. пошты, котру мате зазначену в [[Special:Preferences|наставлїня]],ся обявить як адреса одосылателя пошты, жебы вам адресат міг одповісти прямо.',
@@ -1887,7 +1931,7 @@ $1',
 'emailtarget' => 'Уведьте імя хоснователя-адресата',
 'emailusername' => 'Імя хоснователя:',
 'emailusernamesubmit' => 'Одослати',
-'email-legend' => 'Одосыланя ел. пошты іншому хоснователёві {{GRAMMAR:2sg|{{SITENAME}}}}',
+'email-legend' => 'Одосыланя ел. пошты іншому хоснователёви {{GRAMMAR:2sg|{{SITENAME}}}}',
 'emailfrom' => 'Од:',
 'emailto' => 'Кому:',
 'emailsubject' => 'Тема:',
@@ -1897,7 +1941,7 @@ $1',
 'emailccsubject' => 'Копія вашого повідомлїня про хоснователя $1: $2',
 'emailsent' => 'Пошта одослана',
 'emailsenttext' => 'Ваше повідомлїня было послане.',
-'emailuserfooter' => 'Тота ел. пошта была послана з {{grammar:2sg|{{SITENAME}}}} за помочі функції „Послати ел, пошту“; одослав го хоснователь $1 хоснователёві $2',
+'emailuserfooter' => 'Тота ел. пошта была послана з {{grammar:2sg|{{SITENAME}}}} за помочі функції „Послати ел, пошту“; одослав го хоснователь $1 хоснователёви $2',
 
 # User Messenger
 'usermessage-summary' => 'Зохабити сістемове повідомлїня',
@@ -2112,8 +2156,8 @@ $UNWATCHURL
 'undeleterevision-missing' => 'Неправилна або хыбляча ревізія. Може маєте планый одказ, або ревізія была обновлена ці одстранена з архіву.',
 'undelete-nodiff' => 'Не найджена жадна попередня верзія.',
 'undeletebtn' => 'Обновити',
-'undeletelink' => 'видїти/обновити',
-'undeleteviewlink' => 'видїти',
+'undeletelink' => 'відїти/обновити',
+'undeleteviewlink' => 'відїти',
 'undeletereset' => 'Ресетовати',
 'undeleteinvert' => 'Інвертовати селекцію',
 'undeletecomment' => 'Причіна:',
@@ -2149,9 +2193,9 @@ $1',
 'blanknamespace' => '(Основный)',
 
 # Contributions
-'contributions' => 'Приспевок хоснователя',
+'contributions' => 'Приспівок хоснователя',
 'contributions-title' => 'Приспевок хоснователя $1',
-'mycontris' => 'Мої приспевкы',
+'mycontris' => 'Мої приспівкы',
 'contribsub2' => 'Приспевок $1 ($2)',
 'nocontribs' => 'Ненайджены жадны зміны подля тых крітерій.',
 'uctop' => ' (послїдня)',
@@ -2219,7 +2263,7 @@ $1',
 ** Невгодне мено хоснователя',
 'ipb-hardblock' => 'Заборонити приголошеным хоснователям едітовати з той IP-адресы',
 'ipbcreateaccount' => 'Не доволити реґістрацію новых хоснователїв',
-'ipbemailban' => 'Заборонити хоснователёві посылати ел. пошту',
+'ipbemailban' => 'Заборонити хоснователёви посылати ел. пошту',
 'ipbenableautoblock' => 'Автоматічно блоковати IP адресы хоснованы тым хоснователём',
 'ipbsubmit' => 'Заблоковати',
 'ipbother' => 'Іншый час:',
@@ -2233,8 +2277,8 @@ $1',
 'ipb-confirm' => 'Потвердити блокованя',
 'badipaddress' => 'Неправилна IP адреса',
 'blockipsuccesssub' => 'Блокованя проведено',
-'blockipsuccesstext' => 'Хоснователь „[[Special:Contributions/$1|$1]]“ є блокованый.<br />
\9cожеÑ\82е Ñ\81обÑ\96 Ð¿Ð¾Ñ\81моÑ\82Ñ\80иÑ\82и [[Special:BlockList|Ñ\81пиÑ\81ок Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\85оÑ\81новаÑ\82елÑ\97в]].',
+'blockipsuccesstext' => '„[[Special:Contributions/$1|$1]]“ je {{GENDER:$1|заблокованый|заблокована}}.<br />
\9cожеÑ\82е Ñ\81обÑ\96 Ð¿Ð¾Ñ\81моÑ\82Ñ\80иÑ\82и [[Special:BlockList|Ñ\81пиÑ\81ок Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\80едакÑ\82оÑ\80Ñ\96в]].',
 'ipb-blockingself' => 'Зберате ся заблоковати {{gender:|сам|сама|самы}} себе! Сьте собі {{gender:|певный|певна|певны}}, же тото хочете зробити?',
 'ipb-confirmhideuser' => 'Рыхтуєте ся заблоковати хоснователя зо запнутов вольбов "сховати імя хоснователя". То запрічінить же імя хоснователя счезне зо вшыткых списків і протоколёвачіх записів.  Сьте собі {{gender:|певный|певна|певны}}, же хочете тото зробити?',
 'ipb-edit-dropdown' => 'Едітовати причіны блоковань',
@@ -2276,7 +2320,7 @@ $1',
 'blocklink' => 'заблоковати',
 'unblocklink' => 'одблоковати',
 'change-blocklink' => 'змінити блок',
-'contribslink' => 'приспевкы',
+'contribslink' => 'приспівкы',
 'emaillink' => 'послати імейл',
 'autoblocker' => 'Сьте были автоматічно блокованы, протоже здїляте IP-адресу з хоснователём „[[User:$1|$1]]“. Причіна блокованя того хоснователя: „$2“',
 'blocklogpage' => 'Запис блоковань',
@@ -2285,7 +2329,9 @@ $1',
 'blocklog-showsuppresslog' => 'Тот хоснователь быв блокованый і схованый. Ту є про перегляд вказаный выпис з книгы блокованя:',
 'blocklogentry' => 'заблокoвав [[$1]] на термін $2 $3',
 'reblock-logentry' => 'змінив наставлїня блоку „[[$1]]“ з часом ексіпрації $2 $3',
-'blocklogtext' => 'Тото є книга блокованя і одблокованя хоснователїв. Автоматічно блокованы IP-адресы не суть выписаны. Попозерайте ся на  [[Special:BlockList|список блокованя IP]] з выписом актуалный заказів і блоковань.',
+'blocklogtext' => 'Тото є журнал дїй блокованя і одблокованя редакторів.
+Автоматічно блокованы IP адресы не выписованы.
+Смотьте тыж [[Special:BlockList|список вшыткых чінных блоковань]].',
 'unblocklogentry' => 'одблоковав $1',
 'block-log-flags-anononly' => 'лем анонімны хоснователї',
 'block-log-flags-nocreate' => 'вытваряня конт не поволене',
@@ -2439,9 +2485,11 @@ $1',
 До ниже зазначеного едітачного поля зазначте назвы сторінок, котры хочете експортовати; каждый рядок єдна назва. Тыж звольте, ці ся мають експортовати і старшы верзії сторінкы враховано інформацій в історії едітованя, або лем актуална верзія з інформаціов о послїднїй едітації.
 
 В другім припадї можете тыж хосновати прямый одказ, наприклад помочов [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ся выекспортує „[[{{MediaWiki:Mainpage}}]]“.',
+'exportall' => 'Експортовати вшыткы сторінкы',
 'exportcuronly' => 'Загорняти лем сучасну верзію, не повну історію',
 'exportnohistory' => "----
 '''Позначка:''' експорт повных історій средством того формуларя быв про проблемы з ресурсами заказаный.",
+'exportlistauthors' => 'У каждой сторінкы выписати повный список приспівателїв',
 'export-submit' => 'Експорт',
 'export-addcattext' => 'Додати сторінкы з катеґорії:',
 'export-addcat' => 'Придати',
@@ -2474,6 +2522,8 @@ $1',
 'thumbnail_error' => 'Хыба створїня нагляду: $1',
 'djvu_page_error' => 'Сторінка DjVu мімо россяг',
 'djvu_no_xml' => 'Створїня XML про файл DjVu ся не подарило.',
+'thumbnail-temp-create' => 'Дочасный файл нагляду негодно было створити',
+'thumbnail-dest-create' => 'Нагляд не годно было уложыти на призначене місце',
 'thumbnail_invalid_params' => 'Неплатный параметер нагляду',
 'thumbnail_dest_directory' => 'Не дасть ся створити цілёвый адресарь',
 'thumbnail_image-type' => 'Непідпорованый тіп образку',
@@ -2517,6 +2567,9 @@ $1',
 'import-invalid-interwiki' => 'Із зазначеной вікі ся не дасть імпортовати.',
 'import-error-edit' => 'Сторінка „$1“ ся не наімпортовала, бо не мате право єй едітовати.',
 'import-error-create' => 'Сторінка „$1“ ся не наімпортовала, бо не мате право єй створити.',
+'import-error-interwiki' => 'Сторінка „$1“ ся не імпортує, бо єй назва є зарезервована про вонкашнї лінкы (interwiki).',
+'import-error-special' => 'Сторінка „$1“ ся не імпортує, бо належыть до шпеціалного простору назв, до котрого сторінкы не належать.',
+'import-error-invalid' => 'Сторінка „$1“ ся не імпортує, бо єй назва неприпустна.',
 
 # Import log
 'importlogpage' => 'Книга імпортів',
@@ -2526,6 +2579,14 @@ $1',
 'import-logentry-interwiki' => 'міджівікі імпорт $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ревізія|ревізії|ревізій}} з $2',
 
+# JavaScriptTest
+'javascripttest' => 'Тестованя JavaScript',
+'javascripttest-disabled' => 'Тота функція не дозволена на тій вікі.',
+'javascripttest-title' => 'Біжать тест в $1',
+'javascripttest-pagetext-noframework' => 'Тота сторінка є резервована про тестованя JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Незнаный фреймворк тестованя „$1“.',
+'javascripttest-pagetext-frameworks' => 'Просиме, звольте єден з наступных фреймворків тестованя : $1',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ваша сторінка хоснователя',
 'tooltip-pt-anonuserpage' => 'Сторінка хоснователя про IP-адресу, з котрой едітуєте',
@@ -2533,7 +2594,7 @@ $1',
 'tooltip-pt-anontalk' => 'Діскузія о едітованях выконаных з той IP-адресы',
 'tooltip-pt-preferences' => 'Вашы наставлїня',
 'tooltip-pt-watchlist' => 'Список сторінок, на котрых слїдуєте зміны',
-'tooltip-pt-mycontris' => 'Список вашых приспевків',
+'tooltip-pt-mycontris' => 'Список вашых приспівків',
 'tooltip-pt-login' => 'Рекомендуєме ся приголосити, але не є то повинне.',
 'tooltip-pt-anonlogin' => 'Рекомендуєме ся приголосити, але не є то повинне.',
 'tooltip-pt-logout' => 'Одголошіня',
@@ -2541,14 +2602,14 @@ $1',
 'tooltip-ca-edit' => 'Тоту сторінку можно едітовати. Просиме, хоснуйте перегляд перед уложінём.',
 'tooltip-ca-addsection' => 'Створити нову секцію',
 'tooltip-ca-viewsource' => 'Тота сторінка є замкнута.
-Можете видїти єй код.',
+Можете відїти єй код.',
 'tooltip-ca-history' => 'Минулы верзії той сторінкы',
 'tooltip-ca-protect' => 'Хрань тоту сторінку',
 'tooltip-ca-unprotect' => 'Змінити замок той сторінкы',
 'tooltip-ca-delete' => 'Вымазати тоту сторінку',
 'tooltip-ca-undelete' => 'Обновити едітованя той сторінкы выконаны перед єй змазанём',
 'tooltip-ca-move' => 'Переменовати тоту сторінку',
-'tooltip-ca-watch' => 'Придати тоту сторінку до вашого списку слїдованых сторінок',
+'tooltip-ca-watch' => 'Придати гевсю сторінку до вашого списку слїдованых сторінок',
 'tooltip-ca-unwatch' => 'Одобрати тоту сторінку з вашого списку слїдованых сторінок',
 'tooltip-search' => 'Глядати {{SITENAME}}',
 'tooltip-search-go' => 'Перейти до сторінкы, што має точно таку назву (кідь екзістує)',
@@ -2561,31 +2622,31 @@ $1',
 'tooltip-n-recentchanges' => 'Список послїднїх змін',
 'tooltip-n-randompage' => 'Зображіня нагодной сторінкы',
 'tooltip-n-help' => 'Посмотрити поміч',
-'tooltip-t-whatlinkshere' => 'Список вшыткых сторінок, што одказують на тоту сторінку',
-'tooltip-t-recentchangeslinked' => 'Ð\9fоÑ\81лÑ\97днÑ\97 Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85, ÐºÐ¾Ñ\82Ñ\80Ñ\8b Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¾Ð´ÐºÐ°Ð· Ð½Ð° Ñ\82Ñ\96й сторінцї',
+'tooltip-t-whatlinkshere' => 'Список вшыткых сторінок, што одказують ся на тоту сторінку',
+'tooltip-t-recentchangeslinked' => 'Ð\9fоÑ\81лÑ\97днÑ\97 Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85, ÐºÐ¾Ñ\82Ñ\80Ñ\8b Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¾Ð´ÐºÐ°Ð· Ð½Ð° Ñ\82Ñ\97й сторінцї',
 'tooltip-feed-rss' => 'RSS канал про тоту сторінку',
-'tooltip-feed-atom' => 'Atom канал про тоту сторінку',
+'tooltip-feed-atom' => 'Atom канал про гевсю сторінку',
 'tooltip-t-contributions' => 'Перегляд приспевків того хоснователя',
-'tooltip-t-emailuser' => 'Послати е-маіл тому хоснователёві',
+'tooltip-t-emailuser' => 'Послати е-маіл тому хоснователёви',
 'tooltip-t-upload' => 'Награти файлы',
 'tooltip-t-specialpages' => 'Список вшыткых шпеціалных сторінок',
 'tooltip-t-print' => 'Верзія той сторінкы про друк',
 'tooltip-t-permalink' => 'Перманентный одказ на тоту верзію сторінкы',
 'tooltip-ca-nstab-main' => 'Обсяг сторінкы',
-'tooltip-ca-nstab-user' => 'Видїти сторінку хоснователя',
+'tooltip-ca-nstab-user' => 'Відїти сторінку хоснователя',
 'tooltip-ca-nstab-media' => 'Вказати сторінку файлу',
 'tooltip-ca-nstab-special' => 'Шпеціална сторінка, она є недоступна про едітованя',
 'tooltip-ca-nstab-project' => 'Сторінка проєкту',
 'tooltip-ca-nstab-image' => 'Видїти код сторінкы',
 'tooltip-ca-nstab-mediawiki' => 'Вказати повідомлїня сістемы',
-'tooltip-ca-nstab-template' => 'Видїти шаблону',
+'tooltip-ca-nstab-template' => 'Відїти шаблону',
 'tooltip-ca-nstab-help' => 'Видїти сторінку помочі',
 'tooltip-ca-nstab-category' => 'Сторінка катеґорії',
 'tooltip-minoredit' => 'Позначіти тото як незначне едітованя',
 'tooltip-save' => 'Уложыти вашы зміны',
 'tooltip-preview' => 'Нагляд сторінкы, просиме Вас, хоснуйте перед уложінём!',
 'tooltip-diff' => 'Вказати зміны, што были зроблены в тексті.',
-'tooltip-compareselectedversions' => 'Видїти роздїл міджі двома указаныма верзіями той сторінкы.',
+'tooltip-compareselectedversions' => 'Відїти роздїл міджі двома указаныма верзіями той сторінкы.',
 'tooltip-watch' => 'Придати тоту сторінку до списку слїдованых',
 'tooltip-recreate' => 'Обновити сторінку і кідь была змазана',
 'tooltip-upload' => 'Почати одосыланя',
@@ -3122,7 +3183,7 @@ $1',
 
 # External editor support
 'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
-'edit-externally-help' => '(Вецей інформації найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
+'edit-externally-help' => '(Веце інформацій найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вшыткы',
index 204d79b..cfc70f2 100644 (file)
@@ -1961,7 +1961,7 @@ $1',
 "Кимтэн" графааҕа эн [[Special:Preferences|туруорууларгар]] баар аадырыһыҥ киириэҕэ,
 онон туппут киһи хардарар кыахтаныа.',
 'usermailererror' => 'Сурук кыайан барбата:',
-'defemailsubject' => '{{SITENAME}} —  бу киһиттэн $1 сурук кэлбит',
+'defemailsubject' => '{{SITENAME}} — $1 диэн киһиттэн сурук кэлбит',
 'usermaildisabled' => 'Кыттааччы эл почтата арахса сылдьар',
 'usermaildisabledtext' => 'Эн атын кыттааччыларга эл. почтанан сурук ыытар кыаҕыҥ суох эбит',
 'noemailtitle' => 'E-mail суох',
index 827374c..6289a79 100644 (file)
@@ -12,6 +12,7 @@
  * @author Ghonokuashabaskey
  * @author Joseph Mardy
  * @author Nipon087
+ * @author Reedy
  * @author Salvator
  * @author Samar88
  * @author Srabony90
@@ -334,7 +335,7 @@ Noa do noṅkanaḱ menkana je {{SITENAME}} sayeṭre beoharen sofṭower re mit
 'dberrortext' => 'Database query syntexre vul hoeakana.
 Sofṭoyerre jahan bag karonte noa do hoe daṛeyaḱa.
 Joto khon mucạt́ database query do tahẽkana noṅka:
-<blockquote><tt>$1<//tt><blockquote>
+<blockquote><tt>$1</tt><blockquote>
 "<tt>$2</tt>" bhitrire tahẽna.
 Database okaṭaḱ vule em akada:"<tt>$3: $4</tt>".',
 'dberrortextcl' => 'Ḍaṭabes query sintxexṭre vul hoeakana.
index 05dd5ea..e7eb926 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sardinian (Sardu)
+/** Sardinian (sardu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 4a74cb9..2f1f1dc 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sicilian (Sicilianu)
+/** Sicilian (sicilianu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 7ba56b8..ddedea5 100644 (file)
@@ -170,13 +170,13 @@ $messages = array(
 'mar' => 'njuk',
 'apr' => 'cuoŋ',
 'may' => 'mies',
-'jun' => 'geassemánnu',
-'jul' => 'suoidnemánnu',
-'aug' => 'borgemánnu',
-'sep' => 'čakčamánnu',
-'oct' => 'golggotmánnu',
-'nov' => 'skábmamánnu',
-'dec' => 'juovlamánnu',
+'jun' => 'geas',
+'jul' => 'suoi',
+'aug' => 'borg',
+'sep' => 'čakč',
+'oct' => 'golg',
+'nov' => 'skáb',
+'dec' => 'juov',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Luohkká|Luohkát}}',
@@ -225,7 +225,7 @@ $messages = array(
 'searchbutton' => 'Oza',
 'go' => 'Mana',
 'searcharticle' => 'Mana',
-'history' => 'Historjá',
+'history' => 'Siiddu historjá',
 'history_short' => 'Historjá',
 'updatedmarker' => 'beaiváduvvon du ovddit fitnama maŋŋá',
 'printableversion' => 'Prentenveršuvdna',
@@ -309,7 +309,7 @@ $messages = array(
 'nstab-main' => 'Siidu',
 'nstab-user' => 'Geavaheaddjisiidu',
 'nstab-media' => 'Media',
-'nstab-special' => 'Erenomáš',
+'nstab-special' => 'Erenoamáš',
 'nstab-project' => 'Prošeaktasiidu',
 'nstab-image' => 'Fiila',
 'nstab-mediawiki' => 'Dieđáhus',
@@ -348,9 +348,9 @@ $messages = array(
 'sqlhidden' => '(SQL-jearahallan lea čihkojuvvon)',
 
 # Login and logout pages
-'logouttext' => "'''Leat dál čálligoahtán olggos {{GRAMMAR:elative|{{SITENAME}}}}.'''
+'logouttext' => "'''Don leat dál loggen olggos {{GRAMMAR:elative|{{SITENAME}}}}s.'''
 
-Sáhtát joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman, dahje čálligoahtit ođđasit sisa.",
+Sáhtát joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman dahje logget ođđasit sisa",
 'welcomecreation' => '== Bures boahtin, $1! ==
 Du geavaheaddjidovddaldat lea dál anus.
 Ále vajáldahte rievdadit {{GRAMMAR:genitive|{{SITENAME}}}} iežat ásahusaid.',
@@ -447,7 +447,7 @@ Du geavaheaddjidovddaldat lea dál anus.
 'showpreview' => 'Geahča ovdalgiihtii',
 'showlivepreview' => 'Ovdalgeahčastan',
 'showdiff' => 'Čájet rievdadusaid',
-'anoneditwarning' => "'''Váruhus:''' It leat čálligoahtán sisa. Du IP-čujuhus báhcá dán siiddu ođasmahttinhistorjái.",
+'anoneditwarning' => "'''Váruhus:''' It leat loggen sisa. Du IP-čujuhus báhcá dán siiddu rievdadushistorjái.",
 'missingsummary' => 'It leat čállán čoahkkáigeasu. Jus válljet Vurke ođđasit, de rievdadusat maid ráhkadit vurkejuvvo čoahkkáigeasuhaga.',
 'missingcommenttext' => 'Čále čoahkkáigeasu vuollái.',
 'missingcommentheader' => 'It leat čállán bajilčállaga du oaivilii. Vállje <em>Vurke</em>, jus it hálit čállit bajilčállaga.',
@@ -505,6 +505,7 @@ Don fertet dahkat du rievdadusaid dálá tekstii.
 'last' => 'ovddit',
 'page_first' => 'vuosttas siidu',
 'page_last' => 'maŋimus siidu',
+'history-fieldset-title' => 'Bláđe historjjá',
 'histfirst' => 'Vuosttas',
 'histlast' => 'Maŋimus',
 'historysize' => '($1 stávvala)',
@@ -541,16 +542,23 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 'revdelete-submit' => 'Daga',
 'pagehist' => 'Siiddu rievdanhistorjá',
 'deletedhist' => 'Šluhtejuvvon veršuvnnaid historjá',
+'revdelete-reason-dropdown' => '*Sivat
+** Ii-almmolaš persovnnalaš dieđut
+** Vejolaš gudnenrihkkun
+** Vuovnnalaš geavaheaddjidovddaldat
+** Vuovnnalaš sisdoallu',
 
 # Diffs
+'history-title' => 'Siiddu «$1» historjá',
 'lineno' => 'Gurgadas $1:',
 'compareselectedversions' => 'Veardde válljejuvvon veršuvnnaid',
+'showhideselectedversions' => 'Čájet/čiega válljejuvvon veršuvnnaid',
 'editundo' => 'šluhtte',
 'diff-multi' => '(Veršuvnnaid gaskas {{PLURAL:$1|okta rievdadus|$1 eará rievdadusa}}.)',
 
 # Search results
 'searchresults' => 'Ohcanbohtosat',
-'searchresults-title' => 'Ohcanbohtosat: "$1"',
+'searchresults-title' => 'Ohcanbohtosat: «$1»',
 'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
 'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
 'notitlematches' => 'Ohcansátni ii dihtton ovttasge bájilčállagis',
@@ -559,6 +567,7 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 'viewprevnext' => 'Čájet [$3] oktanaga.
 
 $1 {{int:pipe-separator}} $2',
+'searchmenu-new' => "'''Álggat siiddu ''[[:$1]]'' dán Wikipediai'''",
 'searchhelp-url' => 'Help:Rávvagat',
 'searchprofile-articles' => 'Sisdoallosiiddut',
 'searchprofile-project' => 'Veahkke- ja prošeaktasiiddut',
@@ -599,7 +608,7 @@ $1 {{int:pipe-separator}} $2',
 'saveprefs' => 'Vurke ásahusaid',
 'resetprefs' => 'Máhcat vurkejuvvon ásahusaid',
 'prefs-editing' => 'Rievdadeapmi',
-'rows' => 'Gurgadasat',
+'rows' => 'Gurgadasa:',
 'columns' => 'Kolumnat',
 'searchresultshead' => 'Ohcan',
 'resultsperpage' => 'Bohtosa juohke siiddus',
@@ -614,14 +623,20 @@ $1 {{int:pipe-separator}} $2',
 'allowemail' => 'Suova e-postta sádden čujuhussii',
 'prefs-files' => 'Fiillat',
 'youremail' => 'E-poastačujuhus',
-'username' => 'Dovddaldat',
-'uid' => 'Nummir',
+'username' => 'Geavaheaddjenamma:',
+'uid' => 'Geavaheaddji-ID:',
+'prefs-memberingroups' => 'Miellahttu/lahttu {{PLURAL:$1|joavkkus|joavkkuin}}:',
+'prefs-registration' => 'Registrerenáigi:',
 'yourrealname' => 'Rivttes namma',
 'yourlanguage' => 'Geavahanvuođu giella',
 'yourvariant' => 'Giellavarianta:',
 'yournick' => 'Vuolláičálus',
 'badsig' => 'Vuolláičálus ii dohke.',
 'badsiglength' => 'Vuolláičálus lea menddo guhki - vuolláičálus sáhttá leat eanemusta $1 mearka.',
+'yourgender' => 'Sohkabealli:',
+'gender-unknown' => 'Ii diehtu',
+'gender-male' => 'Dievdu',
+'gender-female' => 'Nisson',
 'email' => 'E-poastadoaimmat',
 'prefs-help-realname' => 'Eaktodahtolaš. Du namma čájehuvvo geavaheaddjidovddaldaga sajis siiddu dahkkilogahallamis.',
 'prefs-help-email' => 'Eaktodahtolaš. Eará geavaheaddjit sáhttet váldit dunnje oktavuođa e-poasttain nu ahte du e-poastačujuhus ii dihtto.',
@@ -640,19 +655,19 @@ $1 {{int:pipe-separator}} $2',
 'userrights-reason' => 'Sivva',
 
 # Groups
-'group' => 'Joavku',
+'group' => 'Joavku:',
 'group-user' => 'geavaheaddjit',
 'group-bot' => 'Bohtat',
 'group-sysop' => 'Administráhtorat',
-'group-bureaucrat' => 'byrokráhtat',
+'group-bureaucrat' => 'Byrokráhtat',
 'group-all' => '(buot)',
 
-'group-bot-member' => 'robohtta',
-'group-sysop-member' => 'bájasdoalli',
-'group-bureaucrat-member' => 'byrokráhta',
+'group-bot-member' => 'bohtta',
+'group-sysop-member' => 'administráhtorat',
+'group-bureaucrat-member' => 'byrokráhtta',
 
 'grouppage-bot' => '{{ns:project}}:Bohtat',
-'grouppage-sysop' => '{{ns:project}}:Bájasdoallit',
+'grouppage-sysop' => '{{ns:project}}:Administráhtorat',
 'grouppage-bureaucrat' => '{{ns:project}}:Byrokráhtat',
 
 # User rights log
@@ -677,7 +692,7 @@ $1 {{int:pipe-separator}} $2',
 'rcshowhidemine' => '$1 iežas rievdádusat',
 'rclinks' => 'Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.<br />$3',
 'diff' => 'erohus',
-'hist' => 'historjá',
+'hist' => 'hist',
 'hide' => 'čiega',
 'show' => 'čájet',
 'minoreditletter' => 'u',
@@ -701,9 +716,9 @@ $1 {{int:pipe-separator}} $2',
 'uploaderror' => 'Vurkenfeaila',
 'uploadlog' => 'Fiilalogga',
 'uploadlogpage' => 'Fiilalogga',
-'filename' => 'Fiilla namma:',
+'filename' => 'Fiilla namma',
 'filedesc' => 'Čoahkkáigeassu',
-'fileuploadsummary' => 'Čoahkkáigeassu',
+'fileuploadsummary' => 'Čoahkkáigeassu:',
 'filesource' => 'Gáldu:',
 'uploadedfiles' => 'Lasihuvvon fiillat',
 'ignorewarning' => 'Vurke fuolatkeahttá varuhusas',
@@ -715,6 +730,7 @@ $1 {{int:pipe-separator}} $2',
 'uploadwarning' => 'Lasihanvaruhus',
 'savefile' => 'Vurke',
 'uploadedimage' => 'vurkii fiilla [[$1]]',
+'overwroteimage' => 'vurkii ođđa veršuvnna fiillas «[[$1]]»',
 'uploaddisabled' => '{{GRAMMAR:genitive|{{SITENAME}}}} ii sáhte lasihit fiillaid.',
 'uploaddisabledtext' => 'Fiillaid vurken lea váldojuvvon eret anus.',
 'uploadscripted' => 'Dát fiila sisdisdoalla HTML-koda dahje skriptaid, maid neahttabláđejeaddji sáhttá vahagis dahkat.',
@@ -892,7 +908,7 @@ $1 {{int:pipe-separator}} $2',
 'booksources-text' => 'Vuolábealde leat liŋkkat olggobeal siidduide, main vuvdojuvvot ođđa ja boares girjjid. Siiddui sáhttá maid leat lassedieđut girjjiin.',
 
 # Special:Log
-'specialloguserlabel' => 'Geavaheaddji',
+'specialloguserlabel' => 'Geavaheaddji:',
 'speciallogtitlelabel' => 'Mearri',
 'log' => 'Loggat',
 'all-logs-page' => 'Buot loggat',
@@ -919,6 +935,9 @@ $1 {{int:pipe-separator}} $2',
 [[Special:UnusedCategories|Unused categories]] are not shown here.
 Also see [[Special:WantedCategories|wanted categories]].',
 
+# Special:LinkSearch
+'linksearch-ok' => 'Oza',
+
 # Special:ListUsers
 'listusers-submit' => 'Oza',
 'listusers-noresult' => 'Geavaheaddjit eai dihtton. Dárkis maid sierra bustávasturrodagat.',
@@ -953,6 +972,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'emailccsubject' => 'Kopiija sáddejuvvon sánis čujuhussii $1: $2',
 'emailsent' => 'E-poastasátni lea sáddejuvvon',
 'emailsenttext' => 'E-poastasátni lea sáddejuvvon.',
+'emailuserfooter' => 'Dán e-poastta sáddii geavaheaddji $1 geavaheaddjái $2 {{SITENAME}} "E-mailUser"-doaimmain.',
 
 # Watchlist
 'watchlist' => 'Čuovvunlistu',
@@ -998,7 +1018,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'deletepage' => 'Sihko siiddu',
 'confirm' => 'Daga',
 'excontent' => 'sisdisdolii: ”$1”',
-'exbeforeblank' => 'sisdoallu ovdal gurrema: ”$1”',
+'exbeforeblank' => 'sisdoallu ovdal gurrema: «$1»',
 'exblank' => 'lei guoros',
 'historywarning' => 'Siiddu, man aiggot sihkut, lea rievdaduvvon dávjit go oktii:',
 'confirmdeletetext' => 'Leat sihkumin siiddu dahje fiilla ja buot dan historjjá. Ádde dagu váikkuhsaid ja sihko {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|geavahaid]] mielde.',
@@ -1036,7 +1056,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'protect_expiry_invalid' => 'Boarášnuvvánáigi ii dohket.',
 'protect_expiry_old' => 'Boarásnuvvánáigi lea vássán.',
 'protect-default' => 'Suova buot geavaheddjiid',
-'protect-level-autoconfirmed' => 'Cakkastala ođđa ja anonyma geavaheddjiid',
+'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
 'protect-level-sysop' => 'Suova beare administráhtoriid',
 'protect-summary-cascade' => 'viiddiduvvon',
 'protect-expiring' => 'boarásnuvvá $1',
@@ -1056,7 +1076,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 
 # Restrictions (nouns)
 'restriction-edit' => 'rievdádeapmi',
-'restriction-move' => 'sirdin',
+'restriction-move' => 'Sirdin',
 'restriction-upload' => 'Fiilla vurken',
 
 # Restriction levels
@@ -1136,7 +1156,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'ipbsubmit' => 'Eastte',
 'ipbother' => 'Eará áigi',
 'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
-'ipbotheroption' => 'Eará',
+'ipbotheroption' => 'eará',
 'ipbotherreason' => 'Eará sivva',
 'badipaddress' => 'IP-čujuhus lea boastut.',
 'blockipsuccesssub' => 'Easttan lihkosmuvai',
@@ -1196,7 +1216,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 
 # Special:Import
 'import-comment' => 'Sivva',
-'import-revision-count' => '$1 {{PLURAL:$1|veršuvdna|veršuvnna}}',
+'import-revision-count' => '$1 {{PLURAL:$1|veršuvdna|veršuvnnat}}',
 
 # Import log
 'import-logentry-upload-detail' => '$1 veršuvdna/veršuvnna',
@@ -1281,6 +1301,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 # Special:NewFiles
 'newimages' => 'Ođđa govat',
 'imagelisttext' => "Vuolábealde lea '''$1''' fiilla ordnejuvvon $2.",
+'noimages' => 'Ii oaidnámus.',
 'ilsubmit' => 'Oza',
 'bydate' => 'beaivemeari mielde',
 'sp-newimages-showfrom' => 'Čájet ođđa govaid $1 rájes',
@@ -1407,6 +1428,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 
 # New logging system
 'logentry-delete-delete' => '$1 sihkui siiddu $3',
+'logentry-delete-restore' => '$1 máhcahii siiddu $3',
 'logentry-move-move' => '$1 sirddii siiddu $3 nammii $4',
 'logentry-move-move_redir-noredirect' => '$1 sirddii siiddu $3 nammii $4 iige ráhkadan ođđasitstivrema',
 'logentry-newusers-create' => '$1 ráhkadii dovddaldaga',
index 1b99be8..1cba767 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Samogitian (Žemaitėška)
+/** Samogitian (žemaitėška)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 52ab42f..17e5e31 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbo-Croatian (Srpskohrvatski)
+/** Serbo-Croatian (srpskohrvatski / српскохрватски)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 0111218..29c8f18 100644 (file)
@@ -288,7 +288,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skryť strážené úpravy v Posledných úpravách',
 'tog-newpageshidepatrolled' => 'Skryť strážené stránky zo zoznamu nových stránok',
 'tog-extendwatchlist' => 'Rozšíriť zoznam sledovaných, aby zobrazoval všetky zmeny, nie len posledné',
-'tog-usenewrc' => 'Použiť rozšírené zobrazenie posledných úprav (vyžaduje JavaScript)',
+'tog-usenewrc' => 'Zoskupiť zmeny v posledných úpravách a zoznamoch sledovaných (vyžaduje JavaScript)',
 'tog-numberheadings' => 'Automaticky číslovať nadpisy',
 'tog-showtoolbar' => 'Zobraziť panel nástrojov úprav',
 'tog-editondblclick' => 'Upravovať stránky po dvojitom kliknutí (JavaScript)',
@@ -639,6 +639,8 @@ Oznámte to prosím [[Special:ListUsers/sysop|správcovi]] a uveďte URL.',
 'cannotdelete' => 'Nebolo možné zmazať stránku alebo súbor „$1“.
 Možno ju už zmazal nieto iný.',
 'cannotdelete-title' => 'Nemôžete zmazať stránku "$1"',
+'delete-hook-aborted' => 'Zmazanie zrušila prídavná funkcia (prípojný bod syntaktického analyzátora).
+Neudala vysvetlenie.',
 'badtitle' => 'Neplatný nadpis',
 'badtitletext' => 'Požadovaný nadpis bol neplatný, nezadaný, alebo nesprávne odkazovaný z inej jazykovej verzie {{GRAMMAR:genitív|{{SITENAME}}}}. Mohol tiež obsahovať jeden alebo viac znakov, ktoré nie je možné použiť v nadpisoch.',
 'perfcached' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a nemusia byť úplne aktuálne. Vo vyrovnávacej pamäti {{PLURAL:$1|je dostupný|sú dostupné|je dostupných}} najviac {{PLURAL:$1|jeden výsledok|$1 výsledky|$1 výsledkov}}.',
@@ -670,6 +672,8 @@ Udaný dôvod: ''$2''.",
 Správca, ktorý ho zamkol ponúkol toto vysvetlenie: „$3“.',
 'invalidtitle-knownnamespace' => 'Neplatný názov s menným priestorom „$2“ a textom „$3“',
 'invalidtitle-unknownnamespace' => 'Neplatný názov s neznámym číslom menného priestoru „$1“ a textom „$2“',
+'exception-nologin' => 'Nie ste prihlásený',
+'exception-nologin-text' => 'Táto stránka alebo operácia vyžaduje, aby ste boli na tejto wiki prihlásení.',
 
 # Virus scanner
 'virus-badscanner' => "Chybná konfigurácia: neznámy antivírus: ''$1''",
@@ -2130,6 +2134,7 @@ na ktorý/-ého chcete aplikovať túto funkciu.',
 Môžete zúžiť rozsah, ak zvolíte typ záznamu, používateľské meno alebo dotyčnú stránku (záleží na veľkosti písmen).',
 'logempty' => 'V zázname neboli nájdené zodpovedajúce položky.',
 'log-title-wildcard' => 'Hľadať názvy začínajúce týmto textom',
+'showhideselectedlogentries' => 'Zobraziť/skryť vybraté položky záznamu',
 
 # Special:AllPages
 'allpages' => 'Všetky stránky',
@@ -3042,6 +3047,7 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
 'spambot_username' => 'MediaWiki čistenie spamu',
 'spam_reverting' => 'Vraciam poslednú verziu, ktorá neobsahuje odkazy na $1',
 'spam_blanking' => 'Všetky revízie obsahovali odkaz na $1, odstraňujem obsah',
+'spam_deleting' => 'Všetky revízie obsahovali odkaz na $1, odstraňuje sa',
 
 # Info page
 'pageinfo-title' => 'Informácie o „$1“',
@@ -3923,6 +3929,8 @@ V opačnom prípade môžete použiť zjednodušený formulár nižšie. Váš k
 'api-error-empty-file' => 'Súbor, ktorý ste poslali bol prázdny.',
 'api-error-emptypage' => 'Vytváranie nových, prázdnych stránok nie je dovolené.',
 'api-error-fetchfileerror' => 'Vnútorná chyba: Niečo pokazilo počas sťahovania súboru.',
+'api-error-fileexists-forbidden' => 'Súbor s názvom „$1“ už existuje a nie je možné prepísať ho.',
+'api-error-fileexists-shared-forbidden' => 'Súbor s názvom „$1“ už neexistuje v repozitári zdieľaných súborov a nie je možné prepísať ho.',
 'api-error-file-too-large' => 'Súbor, ktorý ste poslali bol príliš veľký.',
 'api-error-filename-tooshort' => 'Názov súboru je príliš krátky.',
 'api-error-filetype-banned' => 'Tento typ súboru je zakázaný.',
@@ -3961,4 +3969,6 @@ V opačnom prípade môžete použiť zjednodušený formulár nižšie. Váš k
 'duration-centuries' => '$1 {{PLURAL:$1|storočie|storočia|storočí}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisícročie|tisícročia|tisícročí}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nepodarilo sa získať zámky na serveri $1.',
 );
index 0d9cf50..2408a3b 100644 (file)
@@ -191,7 +191,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skrij pregledana urejanja v zadnjih spremembah',
 'tog-newpageshidepatrolled' => 'Skrij pregledane strani iz seznama novih strani',
 'tog-extendwatchlist' => 'Razširi spisek nadzorov, da bo prikazoval vse spremembe, ne le najnovejše',
-'tog-usenewrc' => 'Izboljšane zadnje spremembe (zahteva JavaScript)',
+'tog-usenewrc' => 'Združi spremembe posamezne strani na zadnjih spremembah in spisku nadzorov (zahteva JavaScript)',
 'tog-numberheadings' => 'Samodejno številči poglavja',
 'tog-showtoolbar' => 'Prikaži urejevalno orodno vrstico',
 'tog-editondblclick' => 'Omogoči urejanje strani z dvojnim klikom (zahteva JavaScript)',
@@ -541,6 +541,8 @@ Prosimo, da o tem obvestite [[Special:ListUsers/sysop|administratorja]] (ne poza
 'cannotdelete' => 'Strani ali datoteke »$1« ni mogoče izbrisati.
 Morda jo je izbrisal že kdo drug.',
 'cannotdelete-title' => 'Ne morem izbrisati strani »$1«',
+'delete-hook-aborted' => 'Zanka je prekinila brisanje.
+Vrnila ni nobene razlage.',
 'badtitle' => 'Nepravilen naslov',
 'badtitletext' => 'Navedeni naslov strani je neveljaven, prazen, napačno povezan k drugim jezikom oziroma wikiprojektom.
 Morda vsebuje enega ali več nepodprtih znakov.',
@@ -576,6 +578,8 @@ Podani razlog je bil »''$2''«.",
 Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 'invalidtitle-knownnamespace' => 'Neveljaven naslov z imenskim prostorom »$2« in besedilom »$3«',
 'invalidtitle-unknownnamespace' => 'Neveljaven naslov z neznano številko imenskega prostora $1 in besedilom »$2«',
+'exception-nologin' => 'Niste prijavljeni',
+'exception-nologin-text' => 'Izbrana stran ali dejanje zahteva, da ste na tem wikiju prijavljeni.',
 
 # Virus scanner
 'virus-badscanner' => "Slaba konfiguracija: neznani virus skener: ''$1''",
@@ -2956,6 +2960,7 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'spambot_username' => 'Čiščenje navlake MediaWiki',
 'spam_reverting' => 'Vračanje na zadnjo redakcijo brez povezav na $1',
 'spam_blanking' => 'Vse redakcije so vsebovale povezave na $1, izpraznjujem',
+'spam_deleting' => 'Vse redakcije so vsebovale povezave na $1, brišem',
 
 # Info page
 'pageinfo-title' => 'Informacije o »$1«',
@@ -3835,6 +3840,8 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'api-error-empty-file' => 'Poslana datoteka je prazna.',
 'api-error-emptypage' => 'Ustvarjanje novih, praznih strani ni dovoljeno.',
 'api-error-fetchfileerror' => 'Notranja napaka: pri pridobivanju datoteke je nekaj šlo narobe.',
+'api-error-fileexists-forbidden' => 'Datoteka »$1« že obstaja in je ni mogoče prepisati.',
+'api-error-fileexists-shared-forbidden' => 'Datoteka »$1« že obstaja v skupnem skladišču datotek in je ni mogoče prepisati.',
 'api-error-file-too-large' => 'Poslana datoteka je prevelika.',
 'api-error-filename-tooshort' => 'Ime datoteke je prekratko.',
 'api-error-filetype-banned' => 'Ta vrsta datoteke je prepovedana.',
@@ -3873,4 +3880,6 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'duration-centuries' => '$1 {{PLURAL:$1|stoletje|stoletji|stoletja|stoletij}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Ne morem pridobiti zaklepov na strežniku $1.',
 );
index 97fb200..55d4ab4 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Albanian (Shqip)
+/** Albanian (shqip)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 2400634..d3e5d9c 100644 (file)
@@ -406,7 +406,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Сакриј прегледане измене у списку скорашњих измена',
 'tog-newpageshidepatrolled' => 'Сакриј прегледане странице са списка нових страница',
 'tog-extendwatchlist' => 'Прошири списак надгледања за приказ свих измена, не само скорашњих',
-'tog-usenewrc' => 'Побољшани списак скорашњих измена (јаваскрипт)',
+'tog-usenewrc' => 'Промене у групи по страници у списку скорашњих измена и надгледаних страница (захтева јаваскрипт)',
 'tog-numberheadings' => 'Самостално нумериши поднаслове',
 'tog-showtoolbar' => 'Трака с алаткама за уређивање (јаваскрипт)',
 'tog-editondblclick' => 'Уређивање страница двоструким кликом (јаваскрипт)',
@@ -766,6 +766,8 @@ $1',
 'cannotdelete' => 'Не могу да обришем страницу или датотеку „$1“.
 Вероватно ју је неко други обрисао.',
 'cannotdelete-title' => 'Не могу да обришем страницу „$1“',
+'delete-hook-aborted' => 'Брисање је прекинула кука.
+Није дато никакво образложење.',
 'badtitle' => 'Неисправан наслов',
 'badtitletext' => 'Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.
 Можда садржи знакове који се не могу користити у насловима.',
@@ -801,6 +803,8 @@ $2',
 Администратор који ју је закључао понудио је следеће објашњење: „$3“.',
 'invalidtitle-knownnamespace' => 'Неисправан наслов с именским простором „$2“ и текстом „$3“',
 'invalidtitle-unknownnamespace' => 'Неисправан наслов с именским простором бр. $1 и текстом „$2“',
+'exception-nologin' => 'Нисте пријављени',
+'exception-nologin-text' => 'Ова страница или радња захтева да будете пријављени на вики.',
 
 # Virus scanner
 'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
@@ -1174,8 +1178,8 @@ $2
 'moveddeleted-notice' => 'Ова страница је обрисана.
 Историја њеног брисања и премештања налази се испод:',
 'log-fulllog' => 'Погледај целу историју',
-'edit-hook-aborted' => 'Измена је прекинута куком.
\9eбÑ\80азложеÑ\9aе Ð½Ð¸Ñ\98е Ð¿Ð¾Ð½Ñ\83Ñ\92ено.',
+'edit-hook-aborted' => 'Измену је прекинула кука.
\9dиÑ\98е Ð´Ð°Ñ\82о Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾ Ð¾Ð±Ñ\80азложеÑ\9aе.',
 'edit-gone-missing' => 'Не могу да ажурирам страницу.
 Изгледа да је обрисана.',
 'edit-conflict' => 'Сукоб измена.',
@@ -1383,8 +1387,8 @@ $1",
 'mergelogpagetext' => 'Испод се налази списак скорашњих спајања историја страница.',
 
 # Diffs
-'history-title' => 'Историја измена за „$1“',
-'difference-title' => 'Разлика између измена странице „$1“',
+'history-title' => 'Историја измена странице „$1“',
+'difference-title' => 'Разлика између измена на страници „$1“',
 'difference-title-multipage' => 'Разлика између страница „$1“ и „$2“',
 'difference-multipage' => '(разлике између страница)',
 'lineno' => 'Ред $1:',
@@ -1483,6 +1487,7 @@ $1",
 'prefs-beta' => 'Бета могућности',
 'prefs-datetime' => 'Датум и време',
 'prefs-labs' => 'Пробне могућности',
+'prefs-user-pages' => 'Корисничке странице',
 'prefs-personal' => 'Профил',
 'prefs-rc' => 'Скорашње измене',
 'prefs-watchlist' => 'Списак надгледања',
@@ -1968,14 +1973,15 @@ $1',
 'backend-fail-writetemp' => 'Не могу да пишем у привременој датотеци.',
 'backend-fail-closetemp' => 'Не могу да затворим привремену датотеку.',
 'backend-fail-read' => 'Не могу да прочитам датотеку $1.',
-'backend-fail-create' => 'Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð½Ð°Ð¿Ñ\80авим датотеку $1.',
-'backend-fail-maxsize' => 'Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð½Ð°Ð¿Ñ\80авим датотеку $1 јер је већа од {{PLURAL:$2|$2 бајта|$2 бајта|$2 бајтова}}.',
+'backend-fail-create' => 'Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð·Ð°Ð¿Ð¸Ñ\88ем датотеку $1.',
+'backend-fail-maxsize' => 'Ð\9dе Ð¼Ð¾Ð³Ñ\83 Ð´Ð° Ð·Ð°Ð¿Ð¸Ñ\88ем датотеку $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:$2|операција|операције|операција}}.',
+'backend-fail-usable' => 'Не могу да запишем датотеку $1 јер немате довољно дозвола или вам недостају фасцикле/садржаоци.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Не могу да се повежем с новинарском базом за складишну основу „$1“.',
@@ -2302,6 +2308,7 @@ $1',
 Можете сузити приказ одабирући врсту историје, корисничког имена или тражене странице.',
 'logempty' => 'Нема пронађених ставки у историји.',
 'log-title-wildcard' => 'тражи наслове који почињу с овим текстом',
+'showhideselectedlogentries' => 'Прикажи/сакриј изабране записе',
 
 # Special:AllPages
 'allpages' => 'Све странице',
@@ -3232,7 +3239,8 @@ $1',
 'spamprotectionmatch' => 'Следећи текст је изазвао наш филтер за непожељне поруке: $1',
 'spambot_username' => 'Чишћење непожељних порука у Медијавикији',
 'spam_reverting' => 'Враћам на последњу измену која не садржи везе до $1',
-'spam_blanking' => 'Све измене које садрже везе до $1, бришем',
+'spam_blanking' => 'Све измене садрже везе до $1. Чистим',
+'spam_deleting' => 'Све измене садрже везе до $1. Бришем',
 
 # Info page
 'pageinfo-title' => 'Подаци о „$1“',
@@ -4287,6 +4295,8 @@ $5
 'api-error-empty-file' => 'Послата датотека је празна.',
 'api-error-emptypage' => 'Стварање нових празних страница није дозвољено.',
 'api-error-fetchfileerror' => 'Унутрашња грешка: дошло је до грешке при добављању датотеке.',
+'api-error-fileexists-forbidden' => 'Већ постоји датотека с именом „$1“ и не може да се замени.',
+'api-error-fileexists-shared-forbidden' => 'Већ постоји датотека с именом „$1“ у заједничкој ризници и не може да се замени.',
 'api-error-file-too-large' => 'Послата датотека је превелика.',
 'api-error-filename-tooshort' => 'Назив датотеке је прекратак.',
 'api-error-filetype-banned' => 'Ова врста датотеке је забрањена.',
@@ -4325,4 +4335,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|векова}}',
 'duration-millennia' => '$1 {{PLURAL:$1|миленијум|миленијума|миленијума}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не могу да добијем катанце на серверу $1.',
 );
index 50716de..9868b9b 100644 (file)
@@ -47,6 +47,7 @@
  * @author Thurs
  * @author Tobulos1
  * @author VickyC
+ * @author Warrakkk
  * @author Where next Columbus
  * @author Where next Columbus?
  * @author WikiPhoenix
@@ -705,6 +706,8 @@ Den uppgivna anledningen är "\'\'$2\'\'".',
 Den administratören som låste den gav denna 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',
+'exception-nologin-text' => 'Denna sida eller åtgärd kräver att du måste vara inloggad på denna wiki.',
 
 # Virus scanner
 'virus-badscanner' => "Dålig konfigurering: okänd virusskanner: ''$1''",
@@ -1088,6 +1091,8 @@ Dessa parametrar har uteslutits.',
 'node-count-exceeded-warning' => 'Sidan har överskridit antalet nodar',
 'expansion-depth-exceeded-category' => 'Sidor där expansionsdjupet överskrids',
 'expansion-depth-exceeded-warning' => 'Sidan överskrider expansionsdjupet',
+'parser-unstrip-loop-warning' => 'Tagavskalningsloop upptäcktes',
+'parser-unstrip-recursion-limit' => 'Tagavskalningsloop överskred rekursionsgränsen ($1)',
 
 # "Undo" feature
 'undo-success' => 'Redigeringen kan göras ogjord.
@@ -1835,13 +1840,14 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
 'backend-fail-closetemp' => 'Kunde inte stänga temporär fil.',
 'backend-fail-read' => 'Kunde inte läsa filen $1.',
 'backend-fail-create' => 'Kunde inte skapa filen $1.',
-'backend-fail-maxsize' => 'Kunde inte skapa filen $1, eftersom den är större än {{PLURAL:$2|$2|$2}} byte.',
+'backend-fail-maxsize' => 'Kunde inte skapa filen $1 eftersom den är större än {{PLURAL:$2|en byte|$2 bytes}}.',
 'backend-fail-readonly' => 'Lagringssystemet "$1" är för närvarande skrivskyddad. Den angivna anledningen är: "$2"',
 'backend-fail-synced' => 'Filen "$1" är i ett inkonsekvent tillstånd inom de interna lagringssystemen',
 'backend-fail-connect' => 'Kunde inte ansluta till lagringssystemet "$1".',
 'backend-fail-internal' => 'Ett okänt fel uppstod i lagringssystemet "$1".',
 'backend-fail-contenttype' => 'Kunde inte bestämma innehållstypen för filen att spara på "$1".',
 'backend-fail-batchsize' => 'Lagringssystemet gav en batch på $1 fil{{PLURAL:$1|operation|operationer}}; gränsen är $2 {{PLURAL:$2|operation|operationer}}.',
+'backend-fail-usable' => 'Kunde inte skriva filen $1 beroende på otillräckliga behörigheter eller saknade kataloger/containrar.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Kunde inte ansluta till journaldatabasen för lagringssystemet "$1".',
@@ -2160,6 +2166,7 @@ Lägg märke till att andra webbplatser kan länka till en fil med en direkt URL
 Du kan avgränsa sökningen och få färre träffar genom att ange typ av logg, användarnamn (skiftlägeskänsligt), eller berörd sida (också skiftlägeskänsligt).',
 'logempty' => 'Inga matchande träffar i loggen.',
 'log-title-wildcard' => 'Sök efter sidtitlar som börjar med texten',
+'showhideselectedlogentries' => 'Visa/Dölj markerade loggposter',
 
 # Special:AllPages
 'allpages' => 'Alla sidor',
@@ -3066,6 +3073,7 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'spambot_username' => 'MediaWikis spampatrull',
 'spam_reverting' => 'Återställer till den senaste versionen som inte innehåller länkar till $1',
 'spam_blanking' => 'Alla versioner innehöll en länk till $1, blankar',
+'spam_deleting' => 'Alla ändringar innehöll länkar till $1, raderar',
 
 # Info page
 'pageinfo-title' => 'Information om "$1"',
@@ -3982,4 +3990,6 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Kunde inte erhålla lås på servern $1 .',
 );
index 3310dc9..ece11b7 100644 (file)
@@ -131,7 +131,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ficha kurasa zilizofanyiwa doria kwenye mabadiliko ya karibuni',
 'tog-newpageshidepatrolled' => 'Ficha kurasa zilizofanyiwa doria kwenye orodha ya kurasa mpya',
 'tog-extendwatchlist' => 'Tanua orodha ya maangalizi ili kuonyesha mabadiliko yote yaliyofanyika, si hilo la mwisho tu.',
-'tog-usenewrc' => 'Mabadiliko ya karibuni yenye maelezo mengine (inatumia JavaScript)',
+'tog-usenewrc' => 'Mabadiliko ya kundi kwa kurasa kwenye mabadiliko ya karibuni na maangalizi (JavaScript inahitajika)',
 'tog-numberheadings' => 'Vichwa vya habari vijipange namba-vyenyewe',
 'tog-showtoolbar' => 'Onyesha mwambaa wa zana za kuhariria (JavaScript)',
 'tog-editondblclick' => 'Hariri ukurasa kwa kubonyeza mara mbili',
@@ -945,10 +945,10 @@ Bado unaweza [$1 kutazama sahihisho hili] iwapo utapenda kuendelea.",
 'rev-suppressed-text-unhide' => "Pitio la ukurasa huu '''limefichwa'''.
 Maelezo yanaweza kupatikana kwenye [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kumbukumbu ya ufichaji].
 Bado unaweza [$1 kutazama sahihisho hili] iwapo utapenda kuendelea.",
-'rev-deleted-text-view' => "Pitio hilo la ukurasa '''lilifutwa'''.
-Kwa sababu u mkabidhi, bado unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kumbukumbu ya kufuta].",
-'rev-suppressed-text-view' => "Pitio hilo la ukurasa '''lilifichwa'''.
-Kwa sababu u mkabidhi, bado unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kumbukumbu ya kuficha].",
+'rev-deleted-text-view' => "Pitio hilo la ukurasa huu '''limefutwa'''.
+Unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} kumbukumbu ya ufutaji].",
+'rev-suppressed-text-view' => "Pitio la ukurasa huu '''limefichwa'''.
+Unaweza kulitazama; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} kumbukumbu ya ufichaji].",
 'rev-delundel' => 'onyesha/ficha',
 'rev-showdeleted' => 'onyesha',
 'revisiondelete' => 'Kufuta/kurudisha mapitio',
@@ -1197,7 +1197,7 @@ Hutaweza kulibatilisha tendo hili baadaye.',
 'prefs-registration' => 'Wakati wa kusajili:',
 'yourrealname' => 'Jina lako halisi:',
 'yourlanguage' => 'Lugha:',
-'yourvariant' => 'Variant:',
+'yourvariant' => 'Kadiri ya lugha ya wiki:',
 'yournick' => 'Sahihi:',
 'prefs-help-signature' => 'Unapoandika kwenye kurasa za majadiliano tafadhali utie sahihi kwa kuandika "<nowiki>~~~~</nowiki>"; itaonekana jina lako pamoja na saa na tarehe ya kuhifadhi.',
 'badsig' => 'Umeweka sahihi batili.
@@ -1326,7 +1326,7 @@ Taarifa hii itakuwa wazi.',
 'right-userrights-interwiki' => 'Kuhariri wezo za watumiaji kwenye wiki zingine',
 'right-siteadmin' => 'Kufunga na kufungua hifadhidata',
 'right-sendemail' => 'Kutuma barua-pepe kwa watumiaji wengine',
-'right-passwordreset' => 'Kuona barua pepe zinazoweka neno la siri upya',
+'right-passwordreset' => 'Onesha barua pepe zinazoweka neno la siri upya',
 
 # User rights log
 'rightslog' => 'Kumbukumbu za vyeo vya watumiaji',
@@ -1474,7 +1474,7 @@ faili hili lina $2.',
 'emptyfile' => 'Faili ulilolipakia linaonekana kuwa tupu.
 Hii huenda ikawa jina lake limeandikwa vibaya.
 Tafadhali uhakikishe kwamba ni kweli unataka kupakia faili hili.',
-'windows-nonascii-filename' => 'Wiki hii haiwezi kutumia majina ya mafaili yenye herufi maalum.',
+'windows-nonascii-filename' => 'Wiki hii haiwezi kutumia majina ya mafaili yenye herufi maalumu.',
 'fileexists' => "Faili lenye jina hili lipo tayari, tafadhali tazama '''<tt>[[:$1]]</tt>''' ikiwa una mashaka kuhusu kulibadilisha.
 [[$1|thumb]]",
 'filepageexists' => "Ukurasa wa maelezo kwa ajili ya faili hili tayari umeshaanzishwa katika '''<tt>[[:$1]]</tt>''', lakini bado hakuna faili lenye jina hili kwa sasa.
@@ -1515,7 +1515,7 @@ Tafadhali utazame kipimo cha file_uploads.',
 'uploadvirus' => 'Faili lina kirusi!
 Maelezo mengine: $1',
 'uploadjava' => 'Faili ZIP hili lina faili Java .class humo ndani.
-Hairuhusiki kupakia mafaili ya Java, kwa sababu yanawezesha kuambaa vizuio vya usalama.',
+Hairuhusiki kupakia mafaili ya Java, kwa sababu yanawezesha kusababisha vizuio vya usalama kuzungukwa.',
 'upload-source' => 'Faili la chanzo',
 'sourcefilename' => 'Jina la faili la chanzo:',
 'sourceurl' => 'URL ya chanzo:',
@@ -1596,8 +1596,7 @@ Unaweza kujaribu wakati tovuti haina kazi nyingi.',
 
 # Special:ListFiles
 'listfiles-summary' => 'Ukurasa huu maalum unaonyesha mafaili yote yaliyopakiwa.
-Kwa kawaida mafaili ya mwisho kupakiwa yanaonekana juu kabisa ya orodha.
-Ukibofya kichwa cha safu mtindo wa kupanga orodha utabadilika.',
+Ikichujwa na mtumiaji, toleo la mafaili pekee ambayo mtumiaji ameyapakia hivi karibuni ndiyo yatakayoonekana.',
 'listfiles_search_for' => 'Tafuta jina la faili:',
 'imgfile' => 'faili',
 'listfiles' => 'Orodha ya mafaili',
@@ -1790,7 +1789,7 @@ Sasa unaelekeza kwa [[$2]].',
 'deadendpagestext' => 'Kurasa zifuatazo haziungana na kurasa zingine katika {{SITENAME}}.',
 'protectedpages' => 'Kurasa zinazolindwa',
 'protectedpages-indef' => 'Ulinzi kwa muda usiojulikana tu',
-'protectedpages-cascade' => 'zinazokuwa na ulindaji kwa kurasa chini zake tu',
+'protectedpages-cascade' => 'Mpangilio wa ulindaji tu',
 'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala kuhaririwa',
 'protectedpagesempty' => 'Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.',
 'protectedtitles' => 'Majina yanayozuluiwa',
@@ -1815,11 +1814,11 @@ Sasa unaelekeza kwa [[$2]].',
 'booksources' => 'Vyanzo vya vitabu',
 'booksources-search-legend' => 'Tafuta mahali panopopatikana kitabu',
 'booksources-go' => 'Nenda',
-'booksources-invalid-isbn' => 'ISBN iliyoandikwa haonekani kuwa halali; hakikisha kwamba ni sawa na ISBN ya asili.',
+'booksources-invalid-isbn' => 'ISBN iliyoandikwa haonekani kuwa halali; hakikisha kwamba ni sawa na chanzo halisi cha ISBN.',
 
 # Special:Log
-'specialloguserlabel' => 'Mtumiaji:',
-'speciallogtitlelabel' => 'Cheo:',
+'specialloguserlabel' => 'Mtendaji:',
+'speciallogtitlelabel' => 'Kusudio (jina la ukurasa au mtumiaji):',
 'log' => 'Kumbukumbu',
 'all-logs-page' => 'Kumbukumbu zote zilizo wazi',
 'alllogstext' => 'Hapa panaonyeshwa kumbukumbu zote za {{SITENAME}} kwa pamoja.
@@ -1865,10 +1864,11 @@ Tazama pia [[Special:WantedCategories|jamii zinazohitajika]].',
 'linksearch-pat' => 'Herufi zitakazotafutwa:',
 'linksearch-ns' => 'Eneo la wiki:',
 'linksearch-ok' => 'Tafuta',
-'linksearch-text' => 'Alama maalum za kutafuta kama "*.wikipedia.org" zinaweza kutumika.<br />
-Itifaki zinazoungwa mkono: <tt>$1</tt>',
+'linksearch-text' => 'Alama maalumu za kutafuta kama vile "*.wikipedia.org" zinaweza kutumika.<br />
+Inahitajika angalau kikoa cha kiwango cha juu, kwa mfano "*.org".<br />
+Itifaki zinazoungwa mkono: <tt>$1</tt> (usiongeza hizi unapotafuta).',
 'linksearch-line' => '$2 umeungwa kutoka $1',
-'linksearch-error' => 'Alama maalum za kutafuta zinaweza kutumika mwanzoni mwa URL tu.',
+'linksearch-error' => 'Alama maalumu zinaweza kuonekana mwanzoni mwa URL tu.',
 
 # Special:ListUsers
 'listusersfrom' => 'Onyesha watumiaji kuanzia:',
@@ -1965,7 +1965,7 @@ Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuat
 'watchnochange' => 'Hakuna kitu kati ya maangalizi yako kilichohaririwa katika kipindi kilichotajwa.',
 'watchlist-details' => 'Unafuatilia {{PLURAL:$1|ukurasa $1|kurasa $1}} bila kuzingatia kurasa za majadiliano.',
 'wlheader-enotif' => '* Huduma ya kuarifu kwa barua pepe imewezeshwa.',
-'wlheader-showupdated' => "* Kurasa zilizobadilika tangu ulipoziona mwishoni zinaonyeshwa '''kooze'''",
+'wlheader-showupdated' => "* Kurasa zilizobadilika tangu ulivyotembelea mara ya mwisho zinaonyeshwa katika hali ya '''kukooza'''",
 'watchmethod-recent' => 'kupitia madabiliko ya karibuni ili kupata kurasa za maangalizi',
 'watchmethod-list' => 'kupitia kurasa za maangalizi ili kupata madabiliko ya karibuni',
 'watchlistcontains' => 'Orodha ya maangalizi yako ina {{PLURAL:$1|kitu|vitu}} $1.',
index 19c3b0a..8bc74a7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Silesian (Å\9alůnski)
+/** Silesian (Å\9blůnski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
 
 $fallback = 'pl';
 
+$namespaceNames = array(
+       NS_SPECIAL        => 'Szpecyjalna',
+       NS_TALK           => 'Dyskusyjo',
+       NS_USER           => 'Używacz',
+       NS_USER_TALK      => 'Dyskusyjo_używacza',
+       NS_PROJECT_TALK   => 'Dyskusyjo_$1',
+       NS_FILE           => 'Plik',
+       NS_FILE_TALK      => 'Dyskusyjo_plika',
+       NS_MEDIAWIKI      => 'MediaWiki',
+       NS_MEDIAWIKI_TALK => 'Dyskusyjo_MediaWiki',
+       NS_TEMPLATE       => 'Muster',
+       NS_TEMPLATE_TALK  => 'Dyskusyjo_mustra',
+       NS_HELP           => 'Půmoc',
+       NS_HELP_TALK      => 'Dyskusyjo_půmocy',
+       NS_CATEGORY       => 'Kategoryjo',
+       NS_CATEGORY_TALK  => 'Dyskusyjo_kategoryji',
+);
+
+$namespaceAliases = array(
+       // Aliases for Polish namespaces (bug 34988).
+       'Specjalna'            => NS_SPECIAL,
+       'Dyskusja'             => NS_TALK,
+       'Użytkownik'           => NS_USER,
+       'Dyskusja_użytkownika' => NS_USER_TALK,
+       'Dyskusja_$1'          => NS_PROJECT_TALK,
+       'Dyskusja_pliku'       => NS_FILE_TALK,
+       'Dyskusja_MediaWiki'   => NS_MEDIAWIKI_TALK,
+       'Szablon'              => NS_TEMPLATE,
+       'Dyskusja_szablonu'    => NS_TEMPLATE_TALK,
+       'Pomoc'                => NS_HELP,
+       'Dyskusja_pomocy'      => NS_HELP_TALK,
+       'Kategoria'            => NS_CATEGORY,
+       'Dyskusja_kategorii'   => NS_CATEGORY_TALK,
+);
+
+// Remove Polish gender aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Podsztrychńyńcy linkůw:',
@@ -373,19 +411,22 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'formerror' => 'Feler: ńy idźe wysuać formulařa',
 'badarticleerror' => 'Tyj uoperacyje ńy idźe zrobić lo tyj zajty.',
 'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
+'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
 'badtitle' => 'Felerno tytůua',
 '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 naškryflane, to ino kopja s pamjyńći podrynčnyj a može ńy być aktualne. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'To co sam je naškryflane, to ino kopja s pamjyńći podrynčnyj a bůuo uaktualńůne $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} w tyj pamjyńći.',
+'perfcachedts' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a bůło uaktualńůne $1. Nojwjyncyj {{PLURAL:$4|jeden wynik je|$4 wyniki sům}} dostympne.',
 'querypage-no-updates' => 'Uaktualńyńo lo tyj zajty sům terozki zawarte. Dane, kere sam sům, ńy zostouy uodśwjyžůne.',
 'wrong_wfQuery_params' => 'Felerne parametry překozane do wfQuery()<br />
 Funkcyjo: $1<br />
 Zapytańy: $2',
 'viewsource' => 'Zdrzůdłowy tekst',
+'viewsource-title' => 'Uobocz zdrzůdło lo $1',
 'actionthrottled' => 'Akcyjo wstřimano',
 'actionthrottledtext' => 'Mechańizm uobrůny před spamym uograńičo ličba wykonań tyj čynnośći we jednostce času. Průbowoužeś go uocygańić. Proša, sprůbuj na nowo za pora minut.',
-'protectedpagetext' => 'Ta zajta je zawarto před sprowjańym.',
-'viewsourcetext' => 'We tekst zdřůduowy tyj zajty možno dali filować, idźe go tyž kopjować.',
+'protectedpagetext' => 'Ta zajta je zawarto przed sprowjańym.',
+'viewsourcetext' => 'We tekst zdrzůduowy tyj zajty możno dali filować, idźe go tyż kopjyrować.',
+'viewyourtext' => 'We tekst zdrzůduowy tyj zajty możno dali filować, idźe go tyż kopjować.',
 'protectedinterface' => 'Na tyj zajće znojduje śe tekst interfejsu uoprogramowańo, bestož uůna je zawarto uod sprowjańo.',
 'editinginterface' => "''''Dej pozůr:''' Sprowjosz zajta, na keryj je tekst interfejsu uoprogramowańo. Pomjyńyńa na tyj zajće zmjyńům wyglůnd interfejsu lo inkšych užytkowńikůw.",
 'sqlhidden' => '(schowano zapytańy SQL)',
@@ -397,6 +438,10 @@ $2',
 'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we přestřyni mjan {{ns:special}}.',
 'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
 Powůd zawarćo: ''$2''.",
+'filereadonlyerror' => 'Ńy idźe pomjyńać plika "$1" abo repozytorjum "$2" terozki je zawarte.
+
+Administrator kery zawarł wćepał kůmyntorz: "$3".',
+'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
 
 # Virus scanner
 'virus-badscanner' => "Felerno konfiguracyjo – ńyznany skaner antywirusowy ''$1''",
@@ -412,7 +457,7 @@ Dej pozůr, co na ńykerych zajtach přeglůndarka može dali pokozywać co jež
 Uotwarli my sam lo Ćebje kůnto.
 Ńy zapomńij poštalować [[Special:Preferences|preferencyji lo {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
 'yourname' => 'Mjano użytkowńika:',
-'yourpassword' => 'Hasuo:',
+'yourpassword' => 'Hasło:',
 'yourpasswordagain' => 'Naszkryflej ausdruk zaś',
 'remembermypassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
 'securelogin-stick-https' => 'Po zalogowańy mjyj połonczenie bez HTTPS',
@@ -426,9 +471,9 @@ Uotwarli my sam lo Ćebje kůnto.
 'logout' => 'Wyloguj',
 'userlogout' => 'Uodloguj śe',
 'notloggedin' => 'Ńy ježeś zalůgowany',
-'nologin' => "Ńy moš kůnta? '''$1'''.",
+'nologin' => "Ńy mosz kůnta? '''$1'''.",
 'nologinlink' => 'Twůrz kůnto',
-'createaccount' => 'Zouůž nowe kůnto',
+'createaccount' => 'Twůrz nowe kůnto',
 'gotaccount' => "Mosz już kůnto? '''$1'''.",
 'gotaccountlink' => 'Naloguj śe',
 'userlogin-resetlink' => 'Zapomńoł żeś dane lo nalogowańo?',
@@ -449,13 +494,13 @@ Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
 'nosuchusershort' => 'Ńy mo sam užytkowńika uo mjańe "$1".',
 'nouserspecified' => 'Podej mjano użytkowńika.',
 'login-userblocked' => 'Tyn sprowjorz ma zawrzite sprowjyńa. Ńy możno sie zalgować.',
-'wrongpassword' => 'Hasuo kere žeś naškryflou je felerne. Poprůbůj naškryflać je ješče roz.',
+'wrongpassword' => 'Hasło kere żeś naszkryfloł je felerne. Poprůbůj naszkryflać je jeszcze roz.',
 'wrongpasswordempty' => 'Hasuo kere žeś podou je puste. Naškryflej je ješče roz.',
 'passwordtooshort' => 'Hasło kere żeś podoł je felerne abo za krůtke.
 Hasło muśi mjeć przinojmńij {{PLURAL:$1|1 buchsztaba|$1 buchsztabůw}} a być inksze od mjana użytkowńika.',
 'password-name-match' => 'Hasło musi być inne niż nazwa użytkownika.',
 'password-login-forbidden' => 'Ńy wolno mjyć takij nazwy a hasua.',
-'mailmypassword' => 'Wyślij mi nowe hasuo bez e-brif',
+'mailmypassword' => 'Wyślij mi nowe hasło bez e-brif',
 'passwordremindertitle' => 'Nowe tymčasowe hasuo dla {{SITENAME}}',
 'passwordremindertext' => 'Ftůś (cheba Ty, s IP $1)
 pado, aże chce nowe hasło do {{SITENAME}} ($4).
@@ -469,8 +514,8 @@ Jak ktůś inkszy chćoł nowe hasło abo jak Ci śe przipůmńouo stare a ńy c
 'passwordsent' => 'Nowe hasuo pošuo na e-brifa uod užytkowńika "$1".
 Zalůguj śe zaś jak dostańyš tygo brifa.',
 'blocked-mailpassword' => 'Twůj adres IP zostou zawarty a ńy možeš užywać funkcyje odzyskiwańo hasua skuli možliwośći jeji nadužywańo.',
-'eauthentsent' => 'Potwjerdzeńy zostouo wysuane na e-brifa.
-Jak bydźeš chćou, coby wysyuouo Ći e-brify, pjyrwyj go přečytej. Bydźeš tam mjou instrukcyjo co moš zrobić, coby pokozać, aže tyn adres je Twůj.',
+'eauthentsent' => 'Potwjerdzeńy zostoło posłane na e-brifa.
+Jak bydźesz chćoł, coby wysyłouo Ći e-brify, pjyrwyj go przeczytej. Bydźesz tam mjoł instrukcyjo co mosz zrobić, coby pokozać, aże tyn ausdruk je Twůj.',
 'throttled-mailpassword' => 'Připůmńyńy hasua bůuo juž wysuane bez {{PLURAL:$1|uostatńo godźina|uostatńe $1 godźin}}.
 Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano na jydne bez {{PLURAL:$1|godźina|$1 godźiny}}.',
 'mailerror' => 'Při wysyuańu e-brifa zdořiu śe feler: $1',
@@ -481,10 +526,11 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
 'emailconfirmlink' => 'Potwjerdź swůj adres e-brifa',
 'invalidemailaddress' => 'E-brif ńy bydźe zaakceptůwany skiž tygo co jego format ńy speuńo formalnych wymagań. Proša naškryflać poprowny adres e-brifa abo wyčyśćić pole.',
 'cannotchangeemail' => 'Ńy możno pomjyńyc ausdruku e-mail.',
+'emaildisabled' => 'Ta zajta ńy je mogebna posyłać e-brify.',
 'accountcreated' => 'Utwůřůno kůnto',
 'accountcreatedtext' => 'Kůnto lo $1 zostouo utwůřůne.',
 'createaccount-title' => 'Stwořyńy kůnta na {{GRAMMAR:MS.lp|{{SITENAME}}}}',
-'createaccount-text' => 'Ktoś utwořiu na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasuo to "$3". Powińežeś śe terozki zalogůwać a je zmjyńić.',
+'createaccount-text' => 'Ktoś utworził na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasło to "$3". Powińeżeś śe terozki zalogůwać a je zmjyńić.',
 'usernamehasherror' => 'Nazwa sprowjorza ńy może mjyć buchsztaby "#".',
 'login-throttled' => '!Wykonołżeś za wjela průb zalůgowańo śe na te kůnto. Poczekej chwila ńym zaś sprůbujesz.',
 'login-abort-generic' => 'Felerne logowańe',
@@ -496,12 +542,12 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
 'user-mail-no-addy' => 'Próba wysłania e‐maila bez adresu odbiorcy',
 
 # Change password dialog
-'resetpass' => 'Zmjyń hasło',
+'resetpass' => 'Pomjyńaj hasło',
 'resetpass_announce' => 'Zalůgowoužeś śe s tymčasowym kodym uotřimanym bez e-brif. Coby zakůńčyć proces logůwańo muśiš naštalować nowe hasuo:',
 'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
-'oldpassword' => 'Stare hasuo',
-'newpassword' => 'Nowe hasuo',
-'retypenew' => 'Naškryflej ješče roz nowe hasuo:',
+'oldpassword' => 'Stare hasło',
+'newpassword' => 'Nowe hasło',
+'retypenew' => 'Naszkryflej jeszcze roz nowe hasło:',
 'resetpass_submit' => 'Naštaluj hasuo a zalůguj',
 'resetpass_success' => 'Twoje hasuo zostouo půmyślńy pomjyńone! Trwo logůwańe...',
 'resetpass_forbidden' => 'Ńy idźe sam půmjyńyć hasuůw.',
@@ -545,7 +591,7 @@ Tymczasowe hasło: $2',
 'changeemail-header' => 'Pomjyno ausduku e-mail',
 'changeemail-text' => 'Wypełnij formularz, podej nowy ausdruk a hasło.',
 'changeemail-no-info' => 'Muśysz być zalogowany, coby uzyskać bezpostrzedńi dostymp do tyj zajty.',
-'changeemail-oldemail' => 'Łobecny ausdruk:',
+'changeemail-oldemail' => 'Uobecny ausdruk:',
 'changeemail-newemail' => 'Nowy adresu e-brif',
 'changeemail-none' => 'podstawowo',
 'changeemail-submit' => 'Zapisz nowy',
@@ -627,8 +673,8 @@ Hasło można pomjyńyć [[Special:ChangePassword|tu]].',
 'newarticle' => '(Nowy)',
 '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ć cosik 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 jeich 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]] - bez tůż uńikńesz potym podobnych ńyporozumjyń.''",
+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ń.''",
 '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' => 'Na tyj zajće ńy mo jeszcze artikla.
 Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśći inkszych zajtůw
@@ -648,7 +694,8 @@ abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}
 'userinvalidcssjstitle' => "'''Pozůr:''' Ńy mo skůrki uo mjańe \"\$1\". Pamjyntej, aže zajty užytkowńika zawjyrajůnce CSS i JavaScript powinny začynać śe mouům buchštabům, np. {{ns:user}}:Foo/vector.css.",
 'updated' => '(Pomjyńano)',
 'note' => "'''Pozůr:'''",
-'previewnote' => "'''To je ino podglůnd - artikel ješče ńy je naškryflany!'''",
+'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
+'continue-editing' => 'Sprowjej dalej',
 'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu s pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecyduješ śe jům naškryflać.',
 'session_fail_preview' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe i zalogůj uod nowa.'''",
 'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
@@ -658,8 +705,9 @@ abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}
 '''Jeli to je prawiduowo průba sprowjańo, sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe a zalůguj na nowo.'''",
 'token_suffix_mismatch' => "'''Twoje sprowjyńy zostouo uodćepńynte skuli tego, co twůj klijynt pomjyšou znaki uod interpůnkcyji w žetůńe sprowjyń. Twoje sprowjyńy zostouo uodćepńynte coby zapobjec zńyščyńu tekstu zajty. Take průblymy zdořajům śe w roźe kůřistańo s felernych anůnimowych śećowych usuůg proxy.'''",
 'editing' => 'Sprowjosz $1',
+'creating' => 'Tworzyńy $1',
 'editingsection' => 'Sprowjosz $1 (sekcyjo)',
-'editingcomment' => 'Sprowjosz "$1" (kůmyntorz)',
+'editingcomment' => 'Sprowjosz "$1" (nowy kůmyntorz)',
 'editconflict' => 'Kůnflikt sprowjyń: $1',
 'explainconflict' => "Ktoś zdůnžyu wćepać swoja wersyjo artikla ńim žeś naškryflou sprowjyńy.
 We polu edycyji na wjyrchu moš tekst zajty aktůalńy naškryflany w baźe danych.
@@ -676,17 +724,20 @@ By wćepać swoje pomjyńańo muśiš pomjyńać tekst w polu na wjyrchu.
 'copyrightwarning2' => "Pamjyntej uo tym, aže couki wkuod do {{GRAMMAR:MS.lp|{{SITENAME}}}} može być sprowjany, pomjyńany abo wyćepany bez inkšych užytkownikůw. Jak ńy chceš, coby koždy můg go zmjyńać i dali rozpowšychńać bez uograničyń, ńy wćepuj go sam.<br />
 Škryflajůnc sam tukej pośwjadčoš tyž, co te pisańy je twoje wuasne, abo žeś go wźůn(a) s matyrjouůw kere sům na public domain, abo kůmpatybilne (kuknij tyž: $1).
 '''PROŠA ŃY WĆEPYWAĆ SAM MATYRJOUŮW KERE SŮM CHRŮŃONE PRAWYM AUTORSKIM BEZ DOZWOLEŃO WUAŚĆIĆELA!'''",
-'longpageerror' => "'''Feler: Tekst kery žeś sam wćepywou mo $1 kilobajtůw. Maksymalno dugość tekstu ńy može być wjynkšo kej $2 kilobajtůw. Twůj tekst ńy bydźe sam naškryflany.'''",
+'longpageerror' => "''Feler: Tekst kery żeś sam wćepywoł mo {{PLURAL:$1|jedyn kilobajt|$1 kilobajtůw}}. Maksymalno dugość tekstu ńy może być srogszo kej {{PLURAL:$2|jedyn kilobajt|$2 kilobajtůw}}. Twůj tekst ńy bydźe sam naszkryflany.'''",
 'readonlywarning' => "'''Dej pozůr: Baza danych zostoua filowo zawarto skuli potřeb admińistracyjnych. Bestůž ńy do śe terozki naškryflać Twojich pomjyńań. Radzymy přećepać nowy tekst kajś do plika tekstowego (wytnij/wklej) a wćepać sam zaś po uodymkńyńću bazy.'''
 
 Admińistrator kery zawar baza dou take wyjaśńyńe: $1",
-'protectedpagewarning' => "'''Dej pozůr: Sprowjańe tyj zajty zostouo zawarte. Mogům jům sprowjać ino užytkowńicy s uprawńyńami admińistratora.'''",
-'semiprotectedpagewarning' => "'''Pozůr:''' Ta zajta zostoua zawarto a ino zaregišterowani užytkownicy mogům jům sprowjać.",
+'protectedpagewarning' => "'''Dej pozůr: Sprowjańe tyj zajty zostoło zawarte. Mogům jům sprowjać ino użytkowńicy s uprawńyńami admińistratora.'''
+Uostatńy wpis w rejerze je poniżej.",
+'semiprotectedpagewarning' => "'''Pozůr:''' Ta zajta zostoła zawarto a ino zaregiszterowani użytkownicy mogům jům sprowjać.
+Uostotńy wpis w rejerze je ńyżej.",
 'cascadeprotectedwarning' => "'''Dej pozůr:''' Ta zajta zostoua zawarto a ino užytkowńicy s uprawńyńami admińistratora mogům jům sprowjać. Zajta ta je podpjynto pod {{PLURAL:$1|nastympujůnco zajta, kero zostoua zawarto|nastympujůncych zajtach, kere zostouy zawarte}} ze zauůnčonům opcjům dźedźičyńo:",
-'titleprotectedwarning' => "'''DEJ POZŮR: Zajta uo tym titlu zostoua zawarto a ino ńykeři užytkowńicy mogům jům wćepać.'''",
+'titleprotectedwarning' => "'''Dej pozůr: Zajta uo tym titlu zostoła zawarto a ino [[Special:ListGroupRights|ńykerzi użytkowńicy]] mogům jům wćepać.'''
+Uostatńy wpis z rejera je ńyżej.",
 'templatesused' => '{{PLURAL:$1|Szablon|Szablůny}} użyte na tyj zajće:',
-'templatesusedpreview' => 'Šablůny užyte we tym podglůńdźe:',
-'templatesusedsection' => 'Šablůny užyte w tyj tajli:',
+'templatesusedpreview' => '{{PLURAL:$1|Szablon|Szablůny}} użyte na tyj zajće:',
+'templatesusedsection' => '{{PLURAL:$1|Szablon|Szablůny}} użyte w tyj tajli:',
 'template-protected' => '(zawrzity uod sprowjańo)',
 'template-semiprotected' => '(tajlowo zawarte)',
 'hiddencategories' => 'Ta zajta je {{PLURAL:$1|w jednyj schrůńunyj katygoryji|we $1 schrůńunych katygoryjach}}:',
@@ -694,6 +745,8 @@ Admińistrator kery zawar baza dou take wyjaśńyńe: $1",
 'nocreatetext' => 'Na {{GRAMMAR:MS.lp|{{SITENAME}}}} twořyńy nowych zajtůw uograńičůno.
 Možeš sprowjać te co juž sům, abo [[Special:UserLogin|zalogować śe, abo zauožyć konto]].',
 'nocreate-loggedin' => 'Ńy moš uprowńyń do twořyńo nowych zajtůw.',
+'sectioneditnotsupported-title' => 'Sprowjańy tajli ńymogebne',
+'sectioneditnotsupported-text' => 'Sprowjańy tajli ńymogebne na tyj zajće.',
 'permissionserrors' => 'Felerne uprowńyńa',
 'permissionserrorstext' => 'Ńy moš uprowńyń do takij akcyje {{PLURAL:$1|skuli tego, co:|bestůž, co:}}',
 'permissionserrorstext-withaction' => 'Ńy mogesz $2, ze {{PLURAL:$1|takigo powodu|takich powodůw}}:',
@@ -711,6 +764,7 @@ Zdowo śe, co zostoua wyćepano.',
 'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
 'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
 Tako zajta juž sam je.',
+'defaultmessagetext' => 'Tekst důmyślny',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dužo uodwouań do funkcyji parsera, kere mocno uobćůnžajům systym.
@@ -778,9 +832,12 @@ Možeš tyž [[Special:Search|šnupać]] za tům zajtům.',
 Atoli kej admińistrator {{GRAMMAR:MS.lp|{{SITENAME}}}} možeš jům uobejřeć.
 Powody wyćepańo idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejeře wyćepań]',
 'rev-delundel' => 'ukoż/schrůń',
+'rev-showdeleted' => 'ukoż',
 'revisiondelete' => 'Wyćep/wćep nazod wersyje',
 'revdelete-nooldid-title' => 'Ńy wybrano wersyji',
 'revdelete-nooldid-text' => 'Ńy wybrano wersyji na kerych mo zostać wykůnano ta uoperacyjo.',
+'revdelete-no-file' => 'Ńy mo tygo plika.',
+'revdelete-show-file-confirm' => 'Jeżeś echt pewny co chcesz uobejzdrzeć wyćepano wersyjo plika „<nowiki>$1</nowiki>” s $2 $3?',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyja|Wybrane wersyje}} zajty [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdařyńy s rejeru|Wybrane zdařyńa s rejeru}}:'''",
@@ -829,7 +886,7 @@ $1',
 
 # Suppression log
 'suppressionlog' => 'Log schrůńyńć',
-'suppressionlogtext' => 'Půńiżyj je lista nojnowszych wyćepań i zawarć s uwzglyndńyńym treśći schrůńůnej lo admińistratorůw. Coby przřejrzeć lista aktualnych banůw i zawarć, uobezdrzij [[Special:BlockList|IP block list]].',
+'suppressionlogtext' => 'Půńiżyj je lista nojnowszych wyćepań a zawarć s uwzglyndńyńym treśći schrůńůnej lo admińistratorůw. Coby przejrzeć lista teroźnych banůw a zawarć, uobezdrzij [[Special:BlockList|IP block list]].',
 
 # History merging
 'mergehistory' => 'Pouůnč historyjo půmjyńań zajtůw',
@@ -860,7 +917,7 @@ $1',
 'mergelogpagetext' => 'Půńižej znojduje śe lista uostatńich pouůnčyń historyji půmjyńań zajtůw.',
 
 # Diffs
-'history-title' => 'Historyjo sprowjyń "$1"',
+'history-title' => 'Gyszichta sprowjyń "$1"',
 'difference-multipage' => '(Porůwnańje zajt)',
 'lineno' => 'Lińijo $1:',
 'compareselectedversions' => 'zrůwnej uobrane wersyje',
@@ -924,7 +981,7 @@ $1',
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
 'powersearch' => 'Sznupańy zaawansowane',
 'powersearch-legend' => 'Šnupańy zaawansowane',
-'powersearch-ns' => 'Šnupej we přestřyńach mjan:',
+'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
 'powersearch-redir' => 'Pokož překerowańa',
 'powersearch-field' => 'Šnupej',
 'powersearch-togglelabel' => 'Zaznocz:',
@@ -944,7 +1001,7 @@ $1',
 # Preferences page
 'preferences' => 'Preferyncyje',
 'mypreferences' => 'Moje preferyncyje',
-'prefs-edits' => 'Ličba sprowjyń:',
+'prefs-edits' => 'Liczba sprowjyń:',
 'prefsnologin' => 'Ńy ježeś zalůgowany',
 'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
 'changepassword' => 'Zmjana hasua',
@@ -954,19 +1011,22 @@ $1',
 'prefs-beta' => 'Testowe funkcyje',
 'prefs-datetime' => 'Data a czas',
 'prefs-labs' => 'Funkcyje "labs"',
+'prefs-user-pages' => 'Zajty używaczy',
 'prefs-personal' => 'Dane užytkowńika',
 'prefs-rc' => 'Ńydowno pomjyńane',
 'prefs-watchlist' => 'Pozůrlista',
 'prefs-watchlist-days' => 'Ličba dńi widočnych na liśće artikli, na kere dowoš pozůr:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźień|dńi}}',
 'prefs-watchlist-edits' => 'Ličba půmjyńań pokazywanych we rozšyřůnyj liśće artiklůw, na kere dowoš pozůr:',
 'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
 'prefs-watchlist-token' => 'ID půzorlisty:',
 'prefs-misc' => 'Roztůmajte',
 'prefs-resetpass' => 'Zmjyń hasło',
+'prefs-changeemail' => 'Pomjyno ausdruka e-brif',
+'prefs-setemail' => 'Nastow e-brif',
 'prefs-email' => 'E-brif',
 'prefs-rendering' => 'Wyglůnd',
-'saveprefs' => 'Naškryflej',
+'saveprefs' => 'Spamjyntej',
 'resetprefs' => 'Preferencyje důmyślne',
 'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
 'prefs-editing' => 'Sprowjańy',
@@ -1008,19 +1068,23 @@ $1',
 'youremail' => 'E-brif:',
 'username' => 'Mjano użytkowńika:',
 'uid' => 'ID užytkowńika:',
-'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
+'prefs-memberingroups' => 'Należy do {{PLURAL:$1|grupy|grup:}}',
+'prefs-registration' => 'Czas twůrzyńa kůnta:',
 'yourrealname' => 'Prawdźiwe mjano',
 'yourlanguage' => 'Godka interfejsu',
 'yournick' => 'Twoja šrajba:',
 'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
-'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
+'badsiglength' => 'Twůj szrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
+'yourgender' => 'Płeć',
+'gender-unknown' => 'ńyznana',
 'gender-male' => 'chop',
 'gender-female' => 'baba',
 'email' => 'E-brif',
-'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalÅ\84y): jak Å¾eÅ\9b zdecydowou aže je podoÅ¡, bydům užyte, coby Twoja robota mjoua atrybucyjo.',
+'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalÅ\84y): jak Å¼eÅ\9b zdecydowoÅ\82 aże je podosz, bydům użyte, coby Twoja robota mjoÅ\82a atrybucyjo.',
 'prefs-help-email' => 'Ukozańy e-brifowygo adresu ńy je powinne, nale nutne, coby resetować ausdruk, eli zapomńisz.',
 'prefs-help-email-others' => 'Mogesz tyż uůmożnić inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
 'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
+'prefs-diffs' => 'Diffy',
 
 # User rights
 'userrights' => 'Zařůndzańy prowami užytkowńikůw',
@@ -1039,29 +1103,29 @@ $1',
 'userrights-no-interwiki' => 'Ńy moš dostympu do sprowjańo uprawńyń.',
 'userrights-nodatabase' => 'Baza danych $1 ńy istńije abo ńy je lokalno.',
 'userrights-nologin' => 'Muśiš [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo užytkowńikům.',
-'userrights-notallowed' => 'Ńy moš dostympu do nadawańo uprawńyń užytkowńikům.',
+'userrights-notallowed' => 'Ńy mosz dostympu do nadawańo uprawńyń używaczom.',
 'userrights-changeable-col' => 'Grupy, kere možeš wybrać',
 'userrights-unchangeable-col' => 'Grupy, kerych ńy možeš wybrać',
 
 # Groups
 'group' => 'Grupa:',
-'group-user' => 'UžytkowÅ\84iki',
-'group-autoconfirmed' => 'Autůmatyčńy zatwjerdzůne užytkowńiki',
+'group-user' => 'Używacze',
+'group-autoconfirmed' => 'Autůmatyczńy zatwjerdzůne używacze',
 'group-bot' => 'Boty',
 'group-sysop' => 'Admińi',
 'group-bureaucrat' => 'Bjurokraty',
 'group-suppress' => 'Rewizoře',
 'group-all' => '(wšyjscy)',
 
-'group-user-member' => 'Sprowjorz',
-'group-autoconfirmed-member' => 'Autůmatyčńy zatwjerdzůny užytkowńik',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'Admin',
-'group-bureaucrat-member' => 'Bjurokrata',
-'group-suppress-member' => 'Rewizůr',
+'group-user-member' => '{{GENDER:$1|używacz}}',
+'group-autoconfirmed-member' => 'Autůmatyczńy zatwjerdzůny używacz',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|admin}}',
+'group-bureaucrat-member' => '{{GENDER:$1|bjurokrata}}',
+'group-suppress-member' => '{{GENDER:$1|rewizůr}}',
 
 'grouppage-user' => '{{ns:project}}:Sprowjorze',
-'grouppage-autoconfirmed' => '{{ns:project}}:Autůmatyčńy zatwjerdzyńi užytkowńiki',
+'grouppage-autoconfirmed' => '{{ns:project}}:Autůmatyczńy zatwjerdzyńi używacze',
 'grouppage-bot' => '{{ns:project}}:Boty',
 'grouppage-sysop' => '{{ns:project}}:Admińistratory',
 'grouppage-bureaucrat' => '{{ns:project}}:Bjurokraty',
@@ -1077,6 +1141,7 @@ $1',
 'right-move' => 'Přećepane zajty',
 'right-move-subpages' => 'Přećep zajty wroz s jejich podzajtůma',
 'right-move-rootuserpages' => 'Překludzańy zajtůw uod užytkowńikůw',
+'right-movefile' => 'Przećepańe plikůw',
 'right-suppressredirect' => 'Ńy twůrz przekerowańo ze starygo mjana jak przećepujesz zajta',
 'right-upload' => 'Wćepane pliki',
 'right-reupload' => 'Nadpisuj pliki kere sam juž sům wćepane',
@@ -1138,6 +1203,7 @@ $1',
 'action-move' => 'přećepańe tyj zajty',
 'action-move-subpages' => 'přećepańo tyj zajty uoroz s jeij podzajtůma',
 'action-move-rootuserpages' => 'Překludzańy zajtůw uod užytkowńikůw (nale bes jeich podzajtůw)',
+'action-movefile' => 'przećepańe tygo plika',
 'action-upload' => 'wćepńyńćo tygo plika',
 'action-reupload' => 'nadpisańo tygo plika',
 'action-reupload-shared' => 'nadpisańo tygo plika we wspůlnym repozytorjům',
@@ -1166,7 +1232,7 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|pomjyńańe|pomjyńańa|pomjyńań}}',
 'recentchanges' => 'Ńydowno půmjyńane',
 'recentchanges-legend' => 'Uopcyje ńydowno půmjyńanych',
-'recentchanges-summary' => 'Ta zajta předstawjo historyjo uostatńich půmjyńań na tyj wiki',
+'recentchanges-summary' => 'Ta zajta ukozuje gyszichta uostatńich půmjyńań na tyj wiki.',
 'recentchanges-feed-description' => 'Dowej pozůr na půmjyńane na uostatku na tyj wiki.',
 'recentchanges-label-newpage' => 'Tym sprowjyńym stworzůno nowa zajta',
 'recentchanges-label-minor' => 'To je ńywjelge sprowjyńy',
@@ -1246,6 +1312,9 @@ Přelyź na zajta [[Special:NewFiles|galeryje nowych plikůw]], coby uobejzdře
 'filetype-unwanted-type' => "'''\".\$1\"''' ńy je zalecanym typym plika. Preferowane sům pliki we {{PLURAL:\$3|formaće|formatach}} \$2.",
 'filetype-banned-type' => "'''\".\$1\"''' je ńydozwolůnym typym plika. Dopuščalne sům pliki we {{PLURAL:\$3|formaće|formatach}} \$2.",
 'filetype-missing' => 'Plik ńy mo rozšyřyńo (np. ".jpg").',
+'empty-file' => 'Plik kery wćepałżeś je pusty.',
+'file-too-large' => 'Plik kery wćepałżeś je za srogi.',
+'filename-tooshort' => 'Mjano plika je za krůtkje.',
 'large-file' => 'Zaleco śe coby rozmjar plika ńy bůu wjynkšy jak $1 bajtůw. Tyn plik mo rozmjar $2 bajtůw.',
 'largefileserver' => 'Plik je wjynkšy ńiž maksymalny dozwolůny rozmjar.',
 'emptyfile' => 'Wćepywany plik cheba je pusty. Može to być bez tůž, co žeś wklepou zuo buchštaba w jygo mjańe. Sprowdź, čy mjano kere žeś wklepou je poprawne.',
@@ -1268,13 +1337,14 @@ Idź nazod i wćepej tyn plik pod inkšym mjanym. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Tyn plik je kopjům {{PLURAL:$1|plika|nastypujůncych plikůw:}}',
 'file-deleted-duplicate' => 'Identyczny plik jak tyn plik ([[:$1]]) zostoł wyćepany. Sprowdź historyja wyćepań tamtygo plika ńim wćepńesz go nazod.',
 'uploadwarning' => 'Uostřežyńe uo wćepywańu',
-'savefile' => 'Naškryflej plik',
+'savefile' => 'Spamjyntej plik',
 'uploadedimage' => 'wćepano "[[$1]]"',
-'overwroteimage' => 'wćepano nowšo wersyjo "[[$1]]"',
+'overwroteimage' => 'wćepano nowszo wersyjo "[[$1]]"',
 'uploaddisabled' => 'Wćepywanie sam plikůw je zawarte',
 'uploaddisabledtext' => 'Wćepywańe plikůw je zawarte.',
 'uploadscripted' => 'Tyn plik zawjyro kod HTML abo skrypt kery može zostać felerńe zinterpretowany bez přyglůndarka internetowo.',
 'uploadvirus' => 'W tym pliku je wirus! Ščygůuy: $1',
+'upload-source' => 'Plik zdrzůdłowy',
 'sourcefilename' => 'Mjano oryginalne:',
 'destfilename' => 'Mjano docylowe:',
 'upload-maxfilesize' => 'Maksymalny rozmior plika: $1',
@@ -1366,9 +1436,9 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'filedelete-nofile-old' => "Ńy ma sam zarchiwizowanyj wersje '''$1''' o atrybutach jake žeś podou.",
 'filedelete-otherreason' => 'Inkšy powůd:',
 'filedelete-reason-otherlist' => 'Inkszy powůd',
-'filedelete-reason-dropdown' => '* Nojčynstše powody wyćepańa
-** Narušyńy praw autorskych
-** Kopja plika kery juž sam jest',
+'filedelete-reason-dropdown' => '* Nojczynstsze powody wyćepańa
+** Naruszyńy praw autorskych
+** Kopja plika kery już sam jest',
 'filedelete-edit-reasonlist' => 'Sprowjańe powodůw wyćepańo zajty',
 
 # MIME search
@@ -1507,7 +1577,7 @@ Zajta uznawano je za ujydnoznačńajůnco kej zawiyro šablůn uokreślůny we [
 'specialloguserlabel' => 'Užytkowńik:',
 'speciallogtitlelabel' => 'Titel:',
 'log' => 'Register dźołano',
-'all-logs-page' => 'Wšyjstkie uoperacyje',
+'all-logs-page' => 'Wszyjstke uoperacyje',
 'alllogstext' => 'Wspůlny rejer wszyjstkych typůw uoperacyji do {{SITENAME}}.
 Możesz zawyńźić liczba wyńikůw wybjerajůnc typ rejeru, mjano użytkowńika abo titel zajty (wjelge a mołe buchsztaby majům znoczyńy).',
 'logempty' => 'Ńy ma wpisůw we rejeře',
@@ -1520,15 +1590,16 @@ Możesz zawyńźić liczba wyńikůw wybjerajůnc typ rejeru, mjano użytkowńik
 'prevpage' => 'Popředńo zajta ($1)',
 'allpagesfrom' => 'Zajty začynojůnce śe na:',
 'allpagesto' => 'Zajty uo titlach kere na zadku majům:',
-'allarticles' => 'Wšyskie zajty',
-'allinnamespace' => 'Wšyjstke zajty (we přestřyńi mjan $1)',
-'allnotinnamespace' => 'Wšyjstke zajty (ino bes přestřyńi mjan $1)',
-'allpagesprev' => 'Popředńo',
+'allarticles' => 'Wszyske zajty',
+'allinnamespace' => 'Wszyjstke zajty (we przestrzyńi mjan $1)',
+'allnotinnamespace' => 'Wszyjstke zajty (ino bes przestrzyńi mjan $1)',
+'allpagesprev' => 'Poprzedńo',
 'allpagesnext' => 'Nastympno',
 'allpagessubmit' => 'Ukoż',
-'allpagesprefix' => 'Pokož artikle s prefiksym:',
-'allpagesbadtitle' => 'Podane mjano je felerne, zawjera prefiks mjyndzyprojektowy abo mjyndzyjynzykowy. Može uůne tyž zawjerać jako buchštaba abo inkše znaki, kerych ńy wolno užywać we titlach.',
-'allpages-bad-ns' => '{{GRAMMAR:MS.lp|{{SITENAME}}}} ńy mo přestřyńi mjan „$1”.',
+'allpagesprefix' => 'Ukoż artikle s prefiksym:',
+'allpagesbadtitle' => 'Podane mjano je felerne, zawjera prefiks mjyndzyprojektowy abo mjyndzyjynzykowy. Może uůne tyż zawjerać jako buchsztaba abo inksze znaki, kerych ńy wolno używać we mjanach.',
+'allpages-bad-ns' => '{{GRAMMAR:MS.lp|{{SITENAME}}}} ńy mo przestrzyńi mjan „$1”.',
+'allpages-hide-redirects' => 'Ukoż pukńyńća',
 
 # Special:Categories
 'categories' => 'Kategoryje',
@@ -1558,22 +1629,30 @@ Uobsůgiwane protokoły: <tt>$1</tt>',
 'listusers-submit' => 'Pokož',
 'listusers-noresult' => 'Ńy znejdźůno žodnygo užytkowńika.',
 
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Schrůń boty',
+'activeusers-hidesysops' => 'Schrůń adminy',
+'activeusers-noresult' => 'Ńy sům używacze.',
+
 # Special:Log/newusers
 'newuserlogpage' => 'Nowe użytkowniki',
 'newuserlogpagetext' => 'To je rejer uostatńo utworzůnych kůnt użytkowńikůw',
 
 # Special:ListGroupRights
-'listgrouprights' => 'UprawÅ\84\84o grup užytkowńikůw',
+'listgrouprights' => 'UprawÅ\84\84o grup użytkowńikůw',
 'listgrouprights-summary' => 'Půńiży znojdowo śe spis grup użytkowńikůw zdefińjowanych na tyj wiki, s wyszczygůlńyńym przidźelůnych im prow dostympu.
 Sprowdź zajta [[{{MediaWiki:Listgrouprights-helppage}}|s dodatkowymi informacjami]] uo uprowńyńach użytkowńikůw.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dane uprawńyńy</span>
+* <span class="listgrouprights-revoked">Uodebrane uprawńyńy</span>',
 'listgrouprights-group' => 'Grupa',
 'listgrouprights-rights' => 'Uprawńyńo',
-'listgrouprights-helppage' => 'Help:UprawÅ\84\84o grup užytkowńikůw',
-'listgrouprights-members' => '(lista čuůnkůw grupy)',
+'listgrouprights-helppage' => 'Help:UprawÅ\84\84o grup użytkowńikůw',
+'listgrouprights-members' => '(listo człůnkůw grupy)',
 'listgrouprights-addgroup' => 'Idźe dodać do {{PLURAL:$2|grupy|grup}}: $1',
 'listgrouprights-removegroup' => 'Idźe wyćepać s {{PLURAL:$2|grupy|grup}}: $1',
 'listgrouprights-addgroup-all' => 'Idźe dodać do kożdyj grupy',
 'listgrouprights-removegroup-all' => 'Idźe wyćepać s wszyjstkich grup',
+'listgrouprights-addgroup-self' => 'Je mogebny dać swe konto do {{PLURAL:$2|grupy|grup:}} $1',
 
 # E-mail user
 'mailnologin' => 'Brak adresu',
@@ -1583,9 +1662,15 @@ Sprowdź zajta [[{{MediaWiki:Listgrouprights-helppage}}|s dodatkowymi informacja
 'emailpagetext' => 'Możesz użyć půńiższygo formularza, coby wysłać wjadůmość e-brif do tygo użytkowńika.
 Adres e-brifa, kery zostoł bez Ćebje wkludzůny we [[Special:Preferences|Twojich sztalowańach]], pojawi śe we polu „Uod”, bez cůż uodbjorca bydźe můg Ći uodpedźeć.',
 'usermailererror' => 'Moduu uobsůgi počty zwrůćiu feler:',
-'defemailsubject' => 'Wjadůmość uod {{GRAMMAR:D.pl|{{SITENAME}}}}',
+'defemailsubject' => '{{SITENAME}} - e-brif uod używacza "$1"',
+'usermaildisabled' => 'E-brif używacza ńy załůnczony',
 'noemailtitle' => 'Brak adresu e-brif',
-'noemailtext' => 'Tyn užytkowńik ńy podou poprawnygo adresu e-brif, albo zadecydowou, co ńy chce uotřimywać wjadůmośći e-brif uod inkšych užytkowńikůw',
+'noemailtext' => 'Tyn używacz ńy podoł dobrygo e-brifa, abo zadecydowoł, co ńy chce uotrzimywać wjadůmośći e-brif uod inkszych używaczy.',
+'nowikiemailtitle' => 'E-brify ńyzwolone',
+'nowikiemailtext' => 'Tyn sprowjorz ńy chcy e-brifůw uod inkszych używaczy.',
+'emailtarget' => 'Podej adresata',
+'emailusername' => 'Mjano używacza:',
+'emailusernamesubmit' => 'Poślij',
 'email-legend' => 'Wyślij e-brif ku inkszymu użytkowńikowi {{GRAMMAR:MS.lp|{{SITENAME}}}}',
 'emailfrom' => 'Uod:',
 'emailto' => 'Ku:',
@@ -1686,9 +1771,9 @@ Pomoc:
 'deletecomment' => 'Čymu:',
 'deleteotherreason' => 'Inkšy powůd:',
 'deletereasonotherlist' => 'Inkszy powůd',
-'deletereason-dropdown' => '* Nojčynstše přičyny wyćepańa
+'deletereason-dropdown' => '* Nojczynstsze prziczyny wyćepańa
 ** Prośba autora
-** Narušyńy praw autorskych
+** Naruszyńy praw autorskych
 ** Wandalizm',
 'delete-edit-reasonlist' => 'Sprowjańe listy powodůw wyćepańo zajty',
 'delete-toobig' => 'Ta zajta mo fest dugo historyja sprowjyń, wjyncyj jak $1 {{PLURAL:$1|půmjyńańy|půmjyńańo|půmjyńań}}.
@@ -1865,7 +1950,7 @@ $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' => 'douůnčona šablôna',
+'istemplate' => 'dołůnczony muster',
 'isimage' => 'Link do plika',
 'whatlinkshere-prev' => '{{PLURAL:$1|popředńe|popředńe $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|nastympne|nastympne $1}}',
@@ -2034,7 +2119,7 @@ Wybjer inkše mjano.',
 'movepage-page-moved' => 'Zajta $1 uostoła przekludzůno ku $2.',
 'movepage-page-unmoved' => 'Mjana zajty $1 ńy idźe půmjyńić na $2.',
 'movepage-max-pages' => 'Przekludzůnych uostało $1 {{PLURAL:$1|zajta|zajty|zajtůw}}. Wjynkszyj liczby ńy idźe przekludźić automatyczńy.',
-'movelogpage' => 'Přećepńynte',
+'movelogpage' => 'Przećepńynte',
 'movelogpagetext' => 'Uoto lista zajtůw, kere uostatńo zostouy přećepane.',
 'movereason' => 'Čymu:',
 'revertmove' => 'cofej',
@@ -2741,7 +2826,7 @@ Naškryflej sam mjano plika bez prefiksu „{{ns:file}}:”.',
 'specialpages-group-login' => 'Lůgowańy / rejerowańy',
 'specialpages-group-changes' => 'Pomjyńane na uostatku a rejery',
 'specialpages-group-media' => 'Pliki',
-'specialpages-group-users' => 'Užytkowńiki i uprawńyńa',
+'specialpages-group-users' => 'Użytkowńiki i uprawńyńa',
 'specialpages-group-highuse' => 'Zajty čynsto užywane',
 'specialpages-group-pages' => 'Zajty',
 'specialpages-group-pagetools' => 'Nořyńdźa zajtůw',
index e8d3d01..bed45fd 100644 (file)
@@ -86,7 +86,7 @@ $messages = array(
 'tog-hidepatrolled' => 'அண்மைய மாற்றங்களில் பலமுறை பார்வையிட்ட தொகுப்புகளை மறைக்கவும்',
 'tog-newpageshidepatrolled' => 'பலமுறை பார்வையிட்ட பக்கங்களைப் புதியபக்கங்களின் பட்டியலில் காட்டவேண்டாம்.',
 'tog-extendwatchlist' => 'அனைத்து பொருத்தமான மாற்றங்களைக் காட்டுமாறு கவனிப்புப் பட்டியலை விரிவாக்கு',
-'tog-usenewrc' => 'à®®à¯\87à®®à¯\8dபà®\9fà¯\81தà¯\8dதபà¯\8dபà®\9fà¯\8dà®\9f à®\85ணà¯\8dà®®à¯\88ய à®®à®¾à®±à¯\8dà®±à®\99à¯\8dà®\95ளà¯\8d (ஜாவாஸ்கிரிப்ட் தேவை)',
+'tog-usenewrc' => 'à®\85ணà¯\8dà®®à¯\88ய à®®à®¾à®±à¯\8dà®±à®\99à¯\8dà®\95ளà¯\8d à®®à®±à¯\8dà®±à¯\81à®®à¯\8d à®\95வனிபà¯\8dபà¯\81பà¯\8d à®ªà®\9fà¯\8dà®\9fியலà¯\8d à®ªà®\95à¯\8dà®\95தà¯\8dதிலà¯\8d à®®à®¾à®±à¯\8dà®±à®\99à¯\8dà®\95ளà¯\88 à®ªà®\95à¯\8dà®\95தà¯\8dதà¯\88 à®ªà¯\8aà®±à¯\81தà¯\8dதà¯\81 à®\95à¯\81à®´à¯\81வாà®\95à¯\8dà®\95à¯\81 (ஜாவாஸ்கிரிப்ட் தேவை)',
 'tog-numberheadings' => 'தலைப்புகளுக்கு தானியங்கி இலக்கமிடு',
 'tog-showtoolbar' => 'கருவிப் பட்டையைக் காட்டு (ஜாவாஸ்கிரிப்ட் தேவை)',
 'tog-editondblclick' => 'இரட்டைச் சொடுக்கில் பக்கங்களைத் தொகு (ஜாவாஸ்கிரிப்ட் தேவை)',
@@ -698,9 +698,8 @@ $1 பயனரையோ அல்லது வேறு [[{{MediaWiki:Grouppage
 இந்த புதிய கணக்கிற்கான கடவுச்சொல்லை புகுபதிகை செய்தவுடன் மாற்றிக்கொள்ளவும் ''[[Special:ChangePassword|கடவுச்சொல்லை மாற்று]]''.",
 'newarticle' => '(புதிது)',
 'newarticletext' => 'ஒரு இணைப்பினூடாக நீங்கள் வந்துள்ள இப்பக்கம் இன்னும் உருவாக்கப்படவில்லை. பக்கத்தை உருவாக்குவதற்குக் கீழேயுள்ள கட்டத்துள் தட்டச்சிடத் தொடங்குங்கள். (மேலதிக விபரங்களுக்கு [[{{MediaWiki:Helppage}}|உதவிப் பக்கத்தைப்]] பார்க்கவும்). நீங்கள் தவறுதலாக இங்கே வந்திருந்தால், உங்கள் உலாவியின் பின் செல்வதற்கான பொத்தானைச் சொடுக்கவும்.',
-'anontalkpagetext' => "----''தாங்கள், தமிழ் விக்கிப்பீடியாவின் பயனர் கணக்கு உருவாக்காத புதியவராகவோ அல்லது பயனர் கணக்கு உருவாக்கி, புகுபதிகை செய்ய மறந்த நிலையில் இப்பக்கத்திற்கு வந்தவராகவோ இருக்கலாம். தற்போதைய நிலையில் அடையாளம் காணமுடியாதவராக தாங்கள் இருப்பதால், தங்களைத் தாங்கள் உபயோகித்த இணைய விதிமுறை இலக்கம் (I.P.Number)கொண்டு அடையாளப்படுத்த வேண்டியுள்ளது. இந்த நிலையைத் தவிர்க்கத் தமிழ் விக்கிப்பீடியாவில் தங்களுக்கென ஒரு பயனர் பக்கத்தை உருவாக்கிக் கொள்ளலாம். இந்தப் பயனர் பக்கத்தின் உரையாடல் பக்கம் தங்களுடன் தொடர்பு கொள்வதற்கும், கருத்துப் பரிமாற்றத்திற்கும் உதவியாக இருக்கும். 
-
-தங்களுக்காக ஒரு பயனர் பக்கம் உருவாக்கிக் கொள்வது என்பது மிகவும் எளிதானது. [[Special:UserLogin/signup|இங்கு தங்களுக்கான புதிய கணக்கொன்றைத் தொடங்கி]] உங்களுக்கான பயனர் பக்கத்தை உருவாக்கிக் கொள்ள வேண்டுகிறோம், அல்லது [[Special:UserLogin|புகுபதிகை]] செய்திட வேண்டுகிறோம்.''",
+'anontalkpagetext' => "----''இது இன்னும் கணக்கொன்று ஏற்படுத்தாத அல்லது வழமையாக பயனர் கணக்கை பயன்படுத்தாத பயனர்களுக்குரிய கலந்துரையாடல் பக்கமாகும். அதனால் நாங்கள் இவரை அடையாளம் காண்பதற்கு எண்சார்ந்த ஐபி முகவரியைப் பயன்படுத்த வேண்டியதாய் இருக்கின்றது. இவ்வாறான ஐபி முகவரிகள் பல பயனர்களினால் பகிர்ந்துகொள்ளப்படலாம்.
+நீங்கள் ஒரு முகவரியற்ற பயனராயிருந்து, தொடர்பற்ற கருத்துக்கள் உங்களைக் குறித்துச் சொல்லப்பட்டிருப்பதாக நீங்கள் உணர்ந்தால், முகவரியற்ற ஏனைய பயனர்களுடனான குழப்பங்களை எதிர்காலத்தில் தவிர்ப்பதற்கு, தயவுசெய்து [[Special:UserLogin/signup|புதிய கணக்கொன்றை ஏற்படுத்துங்கள்]] அல்லது [[Special:UserLogin|புகுபதிகை]] செய்யுங்கள்.''",
 'noarticletext' => 'இப் பக்கத்தில் தற்பொழுது உள்ளடக்கம் எதுவுமில்லை. நீங்கள் இப்பக்க [[Special:Search/{{PAGENAME}}|தலைப்பை வேறு பக்கங்களில் தேடவோ]] அல்லது [{{fullurl:{{FULLPAGENAME}}|action=edit}} இப்பக்கத்தை தொகுக்கவோ] முடியும்.',
 'noarticletext-nopermission' => 'தற்பொழுது இப்பக்கத்தில் உரை எதுவும் இல்லை.
 நீங்கள் [[Special:Search/{{PAGENAME}}|பக்கத் தலைப்பை வைத்து]] அல்லது மற்ற பக்கங்களில்,
@@ -995,7 +994,7 @@ $1",
 'mergelogpagetext' => 'பின்வருவது அண்மையில் செய்யப்பட்ட பக்க வரலாறு இணைப்புகளின் பட்டியலாகும்.',
 
 # Diffs
-'history-title' => '"$1" பக்கத்தின் திருத்த வரலாறு',
+'history-title' => 'திருத்த வரலாறு - "$1"',
 'difference-multipage' => 'பக்கங்களுக்கு இடையேயான வேறுபாடு',
 'lineno' => 'வரிசை $1:',
 'compareselectedversions' => 'தெரிவு செய்யப்பட்ட பதிப்புக்களை ஒப்பிடவும்',
@@ -1633,7 +1632,7 @@ $1',
 'file-anchor-link' => 'கோப்பு',
 'filehist' => 'கோப்பு வரலாறு',
 'filehist-help' => 'குறித்த நேரத்தில் இருந்த படிமத்தைப் பார்க்க அந்நேரத்தின் மீது சொடுக்கவும்.',
-'filehist-deleteall' => 'சகலதையும் நீக்கு',
+'filehist-deleteall' => 'à®\9aà®\95லதà¯\8dதà¯\88யà¯\81à®®à¯\8d à®¨à¯\80à®\95à¯\8dà®\95à¯\81',
 'filehist-deleteone' => 'நீக்குக',
 'filehist-revert' => 'முன்நிலையாக்கு',
 'filehist-current' => 'தற்போதைய',
@@ -1960,7 +1959,7 @@ $1',
 'mywatchlist' => 'என் கவனிப்புப் பட்டியல்',
 'watchlistfor2' => '$1 பயனரின் ($2)',
 'nowatchlist' => 'உங்களுடைய கவனிப்புப் பட்டியலில் ஒரு விடயமும் இல்லை.',
-'watchlistanontext' => 'à®\89மதà¯\81 à®\95வனிபà¯\8dபà¯\81பà¯\8d à®ªà®\9fà¯\8dà®\9fியலà¯\88 à®ªà®¾à®°à¯\8dà®\95 à®\85லà¯\8dலதà¯\81 à®¤à¯\8aà®\95à¯\81à®\95à¯\8dà®\95 à®\85à®°à¯\81ளà¯\8d à®\95à¯\82à®°à¯\8dநà¯\8dதà¯\81 $1.',
+'watchlistanontext' => 'à®\89à®\99à¯\8dà®\95ளà¯\8d à®\95வனிபà¯\8dபà¯\81பà¯\8d à®ªà®\9fà¯\8dà®\9fியலà¯\88பà¯\8d à®ªà®¾à®°à¯\8dà®\95à¯\8dà®\95 à®\85லà¯\8dலதà¯\81 à®¤à¯\8aà®\95à¯\81à®\95à¯\8dà®\95 à®\85à®°à¯\81ளà¯\8d à®\95à¯\82à®°à¯\8dநà¯\8dதà¯\81 $1 à®\9aà¯\86யà¯\8dயà¯\81à®\99à¯\8dà®\95ளà¯\8d.',
 'watchnologin' => 'புகுபதிகை செய்யப்படவில்லை.',
 'watchnologintext' => 'உங்கள் கவனிப்புப் பட்டியலில் திருத்தம் செய்வதற்கு, நீங்கள்[[Special:UserLogin|புகுபதிகை செய்திருக்கவேண்டும்]].',
 'addwatch' => 'கவனிப்புப் பட்டியலில் சேர்',
@@ -2144,7 +2143,7 @@ $NEWPAGE
 'undelete' => 'நீக்கப்பட்ட பக்கங்களைப் பார்',
 'undeletepage' => 'பார்ப்பதுடன், நீக்கப்பட்ட பக்கங்களை மீட்டெடு',
 'undeletepagetitle' => "'''[[:$1]] பக்கத்துக்கான நீக்கப்பட்ட திருத்தங்கள் கீழே தரப்பட்டுள்ளன'''.",
-'viewdeletedpage' => 'நà¯\80à®\95à¯\8dà®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9f à®ªà®\95à¯\8dà®\95à®\99à¯\8dà®\95ளà¯\88பà¯\8d à®ªà®¾à®°à¯\8d',
+'viewdeletedpage' => 'நீக்கப்பட்ட பக்கங்களைப் பார்',
 'undeletepagetext' => 'பின்வரும் {{PLURAL:$1|பக்கம் நீக்கப்பட்டுவிட்டது எனினும் அது|$1 பக்கங்கள் நீக்கப்பட்டுவிட்டன எனினும் அவை}} காப்பகத்தில் உள்ளதால், மீட்டெடுக்க முடியும். காப்பகம் காலத்துக்குக் காலம் சுத்தப்படுத்தப்படலாம்.',
 'undelete-fieldset-title' => 'மாற்றங்களை பழையபடிக்கு கொண்டுவரவும்',
 'undeleteextrahelp' => "இந்த பக்கத்தின் முழு வரலாற்றை மீட்டமைக்க அனைத்து தேர்வுகளையும் நீக்கி விட்டு '''''{{int:undeletebtn}}''''' இதனை சொடுக்கவும்.
index f9cd17c..eae871d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Chaduvari
+ * @author Jprmvnvijay5
  * @author Kaganer
  * @author Kiranmayee
  * @author Meno25
@@ -304,23 +305,23 @@ $messages = array(
 'vector-view-history' => 'చరిత్రని చూడండి',
 'vector-view-view' => 'చదువు',
 'vector-view-viewsource' => 'మూలాన్ని చూడండి',
-'actions' => 'à°\9aà°°à±\8dà°¯లు',
-'namespaces' => 'à°¨à±\87à°\82à°¸à±\8dà°ªà±\87à°¸ులు',
-'variants' => 'à°µà±\88విధà±\8dà°¯ాలు',
+'actions' => 'పనà±\81లు',
+'namespaces' => 'à°ªà±\87à°°à±\81బరులు',
+'variants' => 'à°°à°\95à°°à°\95ాలు',
 
 'errorpagetitle' => 'పొరపాటు',
 'returnto' => 'తిరిగి $1కి.',
 'tagline' => '{{SITENAME}} నుండి',
 'help' => 'సహాయం',
-'search' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£',
+'search' => 'à°µà±\86à°¤à±\81à°\95à±\81',
 'searchbutton' => 'వెతుకు',
 'go' => 'వెళ్లు',
 'searcharticle' => 'వెళ్లు',
 'history' => 'పేజీ చరిత్ర',
 'history_short' => 'చరిత్ర',
 'updatedmarker' => 'నేను కిందటిసారి వచ్చిన తరువాత జరిగిన మార్పులు',
-'printableversion' => 'à°®à±\81à°¦à±\8dà°°à°¿à°\82à°\9aà±\81à°\95à±\8bదగ్గ కూర్పు',
-'permalink' => 'శాశà±\8dవత à°²à°¿à°\82à°\95à±\81',
+'printableversion' => 'à°\85à°\9aà±\8dà°\9aà±\81à°¤à±\80à°¯దగ్గ కూర్పు',
+'permalink' => 'శాశà±\8dవత à°²à°\82à°\95à±\86',
 'print' => 'ముద్రించు',
 'view' => 'చూచుట',
 'edit' => 'సవరించు',
@@ -340,12 +341,12 @@ $messages = array(
 'talkpage' => 'ఈ పేజీని చర్చించండి',
 'talkpagelinktext' => 'చర్చ',
 'specialpage' => 'ప్రత్యేక పేజీ',
-'personaltools' => 'à°µà±\8dà°¯à°\95à±\8dతిà°\97à°¤ పనిముట్లు',
+'personaltools' => 'తన పనిముట్లు',
 'postcomment' => 'కొత్త విభాగం',
 'articlepage' => 'విషయపు పేజీని చూడండి',
 'talk' => 'చర్చ',
-'views' => 'à°ªà±\87à°\9cà±\80 à°²à°¿à°\82à°\95ులు',
-'toolbox' => 'పరిà°\95రాలపెట్టె',
+'views' => 'à°\9aà±\82à°ªులు',
+'toolbox' => 'పనిమà±\81à°\9fà±\8dà°² పెట్టె',
 'userpage' => 'వాడుకరి పేజీని చూడండి',
 'projectpage' => 'ప్రాజెక్టు పేజీని చూడు',
 'imagepage' => 'ఫైలు పేజీని చూడండి',
@@ -362,7 +363,7 @@ $messages = array(
 'protectedpage' => 'సంరక్షణలోని పేజీ',
 'jumpto' => 'ఇక్కడికి గెంతు:',
 'jumptonavigation' => 'పేజీకి సంబంధించిన లింకులు',
-'jumptosearch' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£',
+'jumptosearch' => 'à°µà±\86à°¤à±\81à°\95à±\81',
 'view-pool-error' => 'క్షమించండి, ప్రస్తుతం సర్వర్లన్నీ ఓవర్‌లోడ్ అయిఉన్నాయి.
 చాలామంది వాడుకరులు ఈ పేజీని చూస్తున్నారు.
 ఈ పేజీని వీక్షించడానికి కొద్దిసేపు నిరీక్షించండి.
@@ -377,15 +378,15 @@ $1',
 'aboutpage' => 'Project:గురించి',
 'copyright' => 'విషయ సంగ్రహం $1  కి లోబడి లభ్యం.',
 'copyrightpage' => '{{ns:project}}:ప్రచురణ హక్కులు',
-'currentevents' => 'వరà±\8dతమాన à°\98à°\9fà°¨లు',
-'currentevents-url' => 'Project:వరà±\8dతమాన à°\98à°\9fà°¨లు',
+'currentevents' => 'à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dలు',
+'currentevents-url' => 'Project:à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dలు',
 'disclaimers' => 'అస్వీకారములు',
 'disclaimerpage' => 'Project:సాధారణ నిష్పూచీ',
 'edithelp' => 'దిద్దుబాటు సహాయం',
 'edithelppage' => 'Help:దిద్దుబాట్లు ఎలా చెయ్యాలి',
 'helppage' => 'Help:సూచిక',
 'mainpage' => 'మొదటి పేజీ',
-'mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80',
+'mainpage-description' => 'తలపà±\81à°\9f',
 'policy-url' => 'Project:విధానం',
 'portal' => 'సముదాయ పందిరి',
 'portal-url' => 'Project:సముదాయ పందిరి',
@@ -513,6 +514,7 @@ $1',
 'actionthrottledtext' => 'స్పామును తగ్గించటానికి తీసుకున్న నిర్ణయాల వల్ల, మీరు ఈ కార్యాన్ని అతి తక్కువ సమయంలో బోలెడన్ని సార్లు చేయకుండా అడ్డుకుంటున్నాము. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
 'protectedpagetext' => 'ఈ పేజీని మార్చకుండా ఉండేందుకు సంరక్షించారు.',
 'viewsourcetext' => 'మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు:',
+'viewyourtext' => "ఈ పేజీకి '''మీ మార్పుల''' యొక్క మూలాన్ని చూడవచ్చు లేదా కాపీచేసుకోవచ్చు:",
 'protectedinterface' => 'సాఫ్టువేరు ఇంటరుఫేసుకు చెందిన టెక్స్టును ఈ పేజీ అందిస్తుంది. దుశ్చర్యల నివారణ కోసమై దీన్ని లాకు చేసాం.',
 'editinginterface' => "'''హెచ్చరిక''': సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించే పేజీని మీరు సరిదిద్దుతున్నారు.
 ఈ పేజీలో చేసే మార్పుల వల్ల ఇతర వాడుకరులకు ఇంటరుఫేసు కనబడే విధానంలో తేడావస్తుంది.
@@ -546,7 +548,7 @@ $2',
 'securelogin-stick-https' => 'ప్రవేశం తర్వాత కూడా HTTPSకి అనుసంధానమై ఉండు',
 'yourdomainname' => 'మీ డోమైను',
 'externaldberror' => 'డేటాబేసు అధీకరణలో పొరపాటు జరిగింది లేదా మీ బయటి ఖాతాని తాజాకరించడానికి మీకు అనుమతి లేదు.',
-'login' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aండి',
+'login' => 'à°²à±\8bనిà°\95à°¿ à°°ండి',
 'nav-login-createaccount' => 'లోనికి ప్రవేశించండి / ఖాతాని సృష్టించుకోండి',
 'loginprompt' => '{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.',
 'userlogin' => 'ప్రవేశించండి / ఖాతాను సృష్టించుకోండి',
@@ -677,6 +679,7 @@ $2
 'passwordreset-emailelement' => 'వాడుకరిపేరు: $1
 తాత్కాలిక సంకేతపదం: $2',
 'passwordreset-emailsent' => 'జ్ఞాపకం ఈమెయిలు పంపించాం.',
+'passwordreset-emailsent-capture' => 'క్రింద చూపబడిన, గుర్తుచేయు సందేశమును పంపినాము.',
 
 # Special:ChangeEmail
 'changeemail' => 'ఈ-మెయిలు చిరునామా మార్పు',
@@ -761,7 +764,7 @@ $2
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
+'loginreqlink' => 'à°²à±\8bనిà°\95à°¿ à°°à°\82à°¡ి',
 'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
@@ -1061,6 +1064,7 @@ $1",
 
 # Diffs
 'history-title' => '"$1" యొక్క కూర్పుల చరిత్ర',
+'difference-title' => '"$1" యొక్క తిరిగిచూపుల నడుమ తేడాలు',
 'difference-multipage' => '(పేజీల మధ్య తేడా)',
 'lineno' => 'పంక్తి $1:',
 'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
@@ -1070,7 +1074,7 @@ $1",
 'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 
 # Search results
-'searchresults' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£ ఫలితాలు',
+'searchresults' => 'à°µà±\86à°¦à±\81à°\95à±\81లాà°\9f ఫలితాలు',
 'searchresults-title' => '"$1"కి అన్వేషణ ఫలితాలు',
 'searchresulttext' => '{{SITENAME}}లో అన్వేషించే విషయమై మరింత సమాచారం కొరకు [[{{MediaWiki:Helppage}}|{{int:help}}]] చూడండి.',
 'searchsubtitle' => 'మీరు \'\'\'[[:$1]]\'\'\' కోసం వెతికారు ([[Special:Prefixindex/$1|"$1"తో మొదలయ్యే అన్ని పేజీలు]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"కి లింకు ఉన్న అన్ని పేజీలు]])',
@@ -1446,7 +1450,7 @@ $1",
 # Recent changes linked
 'recentchangeslinked' => 'సంబంధిత మార్పులు',
 'recentchangeslinked-feed' => 'సంబంధిత మార్పులు',
-'recentchangeslinked-toolbox' => 'à°¸à°\82à°¬à°\82ధిత మార్పులు',
+'recentchangeslinked-toolbox' => 'à°ªà±\8aà°\82తనà°\97à°² మార్పులు',
 'recentchangeslinked-title' => '$1 కు సంబంధించిన మార్పులు',
 'recentchangeslinked-noresult' => 'మీరిచ్చిన కాలంలో ఇక్కడికి లింకు ఉన్న పేజీలలో ఎటువంటు మార్పులూ జరగలేదు.',
 'recentchangeslinked-summary' => "దీనికి లింకై ఉన్న పేజీల్లో జరిగిన చివరి మార్పులు ఇక్కడ చూడవచ్చు. మీ వీక్షణ జాబితాలో ఉన్న పేజీలు '''బొద్దు'''గా ఉంటాయి.",
@@ -1585,6 +1589,7 @@ $1',
 'backend-fail-delete' => '$1 ఫైలును తొలగించలేకున్నాం.',
 'backend-fail-alreadyexists' => '$1 అనే దస్త్రం ఇప్పటికే ఉంది.',
 'backend-fail-opentemp' => 'తాత్కాలిక దస్త్రాన్ని తెరవలేకపోతున్నాం.',
+'backend-fail-read' => '$1 దస్త్రము చదువలేకపోతిమి.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ఈ ఫైలును ZIP పరీక్ష కోసం తెరవబోతే, ఏదో తెలియని లోపం ఎదురైంది.',
@@ -1880,7 +1885,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 
 # Special:AllPages
 'allpages' => 'అన్ని పేజీలు',
-'alphaindexline' => '$1 నుండి $2',
+'alphaindexline' => '$1 నుండి $2 వరకు',
 'nextpage' => 'తరువాతి పేజీ ($1)',
 'prevpage' => 'మునుపటి పేజీ ($1)',
 'allpagesfrom' => 'ఇక్కడ మొదలు పెట్టి పేజీలు చూపించు:',
@@ -2257,7 +2262,7 @@ $UNWATCHURL కి వెళ్ళండి.
 'sp-contributions-submit' => 'వెతుకు',
 
 # What links here
-'whatlinkshere' => 'ఇక్కడికి లంకెలున్న పుటలు',
+'whatlinkshere' => 'ఇక్కడికి లంకెలున్నవి',
 'whatlinkshere-title' => '"$1"కి లింకున్న పుటలు',
 'whatlinkshere-page' => 'పేజీ:',
 'linkshere' => "కిందనున్న పేజీల నుండి '''[[:$1]]'''కు లింకులు ఉన్నాయి:",
@@ -2276,6 +2281,7 @@ $UNWATCHURL కి వెళ్ళండి.
 'whatlinkshere-filters' => 'వడపోతలు',
 
 # Block/unblock
+'autoblockid' => 'tanaDDu #$1',
 'block' => 'వాడుకరి నిరోధం',
 'unblock' => 'వాడుకరిపై నిరోధాన్ని తీసెయ్యండి',
 'blockip' => 'వాడుకరి నిరోధం',
@@ -2620,10 +2626,10 @@ $UNWATCHURL కి వెళ్ళండి.
 'tooltip-pt-anonlogin' => 'మీరు లోనికి ప్రవేశించడాన్ని ప్రోత్సహిస్తాం; కానీ, అది తప్పనిసరి కాదు',
 'tooltip-pt-logout' => 'నిష్క్రమించండి',
 'tooltip-ca-talk' => 'విషయపు పుట గురించి చర్చ',
-'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°­à°¦à±\8dరపరిచేముందు మునుజూపు బొత్తాన్ని వాడండి.',
+'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°¦à°¾చేముందు మునుజూపు బొత్తాన్ని వాడండి.',
 'tooltip-ca-addsection' => 'కొత్త విభాగాన్ని మొదలుపెట్టండి',
 'tooltip-ca-viewsource' => 'ఈ పుటని సంరక్షించారు. మీరు దీని మూలాన్ని చూడవచ్చు',
-'tooltip-ca-history' => 'à°\88 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\97à°¤ à°\95à±\82à°°à±\8dà°ªà±\81à°²à±\81.',
+'tooltip-ca-history' => 'à°\88 à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°µà±\86à°¨à±\81à°\95à°\9fà°¿ à°\95à±\82à°°à±\8dà°ªà±\81à°²à±\81',
 'tooltip-ca-protect' => 'ఈ పేజీని సంరక్షించండి',
 'tooltip-ca-unprotect' => 'ఈ పేజీ సంరక్షణను మార్చండి',
 'tooltip-ca-delete' => 'ఈ పేజీని తొలగించండి',
@@ -2635,24 +2641,24 @@ $UNWATCHURL కి వెళ్ళండి.
 'tooltip-search-go' => 'ఇదే పేరుతో పేజీ ఉంటే అక్కడికి తీసుకెళ్ళు',
 'tooltip-search-fulltext' => 'పేజీలలో ఈ పాఠ్యం కొరకు వెతుకు',
 'tooltip-p-logo' => 'మొదటి పుటను దర్శించండి',
-'tooltip-n-mainpage' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80ని à°¦à°°à±\8dశిà°\82à°\9aండి',
-'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80ని à°¦à°°à±\8dశిà°\82à°\9aండి',
+'tooltip-n-mainpage' => 'తలపà±\81à°\9fà°¨à±\81 à°\9aà±\82à°¡ండి',
+'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\81à°\9fà°¨à±\81 à°\9aà±\82à°¡ండి',
 'tooltip-n-portal' => 'ప్రాజెక్టు గురించి, మీరేం చేయవచ్చు, సమాచారం ఎక్కడ దొరుకుతుంది',
-'tooltip-n-currentevents' => 'వరà±\8dతమాన à°\98à°\9fనలà°\95à±\81 à°¸à°\82à°¬à°\82ధిà°\82à°\9aà°¿à°¨ à°¸à°®à°¾à°\9aారానà±\8dని à°ªà±\8aà°\82à°¦à°\82à°¡à°¿.',
+'tooltip-n-currentevents' => 'à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dà°² à°¯à±\8aà°\95à±\8dà°\95 à°®à±\81à°¨à±\81à°ªà°\9fà°¿ à°®à°\82దలనà±\81 à°¤à±\86à°²à±\81à°¸à±\81à°\95à±\8aà°¨à±\81à°¡à°¿',
 'tooltip-n-recentchanges' => 'వికీలో ఇటీవల జరిగిన మార్పుల జాబితా.',
 'tooltip-n-randompage' => 'ఓ యాదృచ్చిక పేజీని చూడండి',
 'tooltip-n-help' => 'తెలుసుకోడానికి ఓ మంచి ప్రదేశం.',
-'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°\95à°¿ à°²à°¿à°\82à°\95యి à°\89à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\87à°\9cà±\80లు',
-'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\87à°\9cà±\80à°¨à±\81à°\82à°¡à°¿ à°²à°¿à°\82à°\95à±\81à°¨à±\8dà°¨ à°ªà±\87à°\9cà±\80à°²à°\95à±\81 జరిగిన ఇటీవలి మార్పులు',
+'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°¤à±\8b à°®à±\81డిపడియà±\81à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\81à°\9fà°² à°²à°\82à°\95à±\86లు',
+'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\81à°\9fà°\95à±\81 à°®à±\81డివడియà±\81à°¨à±\8dà°¨ à°ªà±\81à°\9fలలà±\8b జరిగిన ఇటీవలి మార్పులు',
 'tooltip-feed-rss' => 'ఈ పేజీకి RSS ఫీడు',
 'tooltip-feed-atom' => 'ఈ పేజీకి Atom ఫీడు',
 'tooltip-t-contributions' => 'ఈ వాడుకరి యొక్క రచనల జాబితా చూడండి',
 'tooltip-t-emailuser' => 'ఈ వాడుకరికి ఓ ఈమెయిలు పంపండి',
 'tooltip-t-upload' => 'దస్త్రాలను ఎక్కించండి',
 'tooltip-t-specialpages' => 'అన్ని ప్రత్యేక పుటల యొక్క జాబితా',
-'tooltip-t-print' => 'à°\88 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°®à±\81à°¦à±\8dరణా కూర్పు',
-'tooltip-t-permalink' => 'à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°\95à°¿ à°¶à°¾à°¶à±\8dవత à°²à°¿à°\82à°\95à±\81',
-'tooltip-ca-nstab-main' => 'విషయపà±\81 à°ªà±\87à°\9cà±\80ని చూడండి',
+'tooltip-t-print' => 'à°\88 à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°\85à°\9aà±\8dà°\9aà±\81à°¤à±\80యదà°\97à±\8dà°\97 కూర్పు',
+'tooltip-t-permalink' => 'à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°\95à°¿ à°¶à°¾à°¶à±\8dవత à°²à°\82à°\95à±\86',
+'tooltip-ca-nstab-main' => 'à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dà°² à°ªà±\81à°\9fà°¨à±\81 చూడండి',
 'tooltip-ca-nstab-user' => 'వాడుకరి పేజీని చూడండి',
 'tooltip-ca-nstab-media' => 'మీడియా పేజీని చూడండి',
 'tooltip-ca-nstab-special' => 'ఇది ఒక ప్రత్యేక పుట, దీన్ని మీరు సరిదిద్దలేరు',
index f43a031..4ba5883 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tetum (Tetun)
+/** Tetum (tetun)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index bb12ce2..534440a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tajik (Cyrillic script) (Тоҷикӣ)
+/** Tajik (Cyrillic script) (тоҷикӣ)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 325d0ea..2ab317f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tajik (Latin script) (Tojikī)
+/** Tajik (Latin script) (tojikī)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 3e7229d..6c79c31 100644 (file)
@@ -140,7 +140,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ikubli ang napatrolyang mga pagbabagong nasa kamakailang mga pagbabago',
 'tog-newpageshidepatrolled' => 'Itago ang napatrolyang mga pahina mula talaan ng bagong pahina',
 'tog-extendwatchlist' => 'Palawigin ang talaan ng mga binabantayan upang maipakita ang lahat ng mga pagbabago, hindi lamang ang pinakakamakailan lamang',
-'tog-usenewrc' => 'Gamitin ang pinadagdagang huling binago (kailangan ng JavaScript)',
+'tog-usenewrc' => 'Mga pagbabago ng pangkat ayon sa pahina sa kamakailang mga pagbabago at bantayan (nangangailangan ng JavaScript)',
 'tog-numberheadings' => 'Automatikong bilangin ang mga pamagat',
 'tog-showtoolbar' => "Ipakita ang ''toolbar'' ng pagbabago (JavaScript)",
 'tog-editondblclick' => 'Magbago ng mga pahina sa dalawahang pagpindot (JavaScript)',
@@ -159,7 +159,7 @@ $messages = array(
 'tog-enotifwatchlistpages' => 'Padalhan ako ng e-liham kapag nabago ang isa sa mga pahinang binabantayan ko',
 'tog-enotifusertalkpages' => 'Padalhan ako ng e-liham kapag binago ang aking pahina ng usapan',
 'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na pagbabago ng mga pahina',
-'tog-enotifrevealaddr' => 'Ipakita ang adres ng e-liham ko sa loob ng mga e-liham ng pagpapahayag',
+'tog-enotifrevealaddr' => 'Ipakita ang aking direksiyong e-liham sa loob ng mga e-liham ng pagpapahayag',
 'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
 'tog-oldsig' => 'Umiiral na lagda:',
 'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
@@ -390,9 +390,9 @@ $1',
 'badaccess-group0' => 'Hindi ka pinahintulutang isagawa ang hiniling mong kilos.',
 'badaccess-groups' => 'Ang kilos na hiniling mo ay nakatakda lamang para sa mga tagagamit sa {{PLURAL:$2|pangkat na|isa sa mga pangkat na}}: $1.',
 
-'versionrequired' => 'Kinakailangan ang bersyong $1 ng MediaWiki',
+'versionrequired' => 'Kinakailangan ang bersiyong $1 ng MediaWiki',
 'versionrequiredtext' => 'Kinakailangan ang bersyong $1 ng MediaWiki upang magamit ang pahinang ito.
-Tingnan ang [[Special:Version|pahina ng bersyon]].',
+Tingnan ang [[Special:Version|pahina ng bersiyon]].',
 
 'ok' => 'Sige',
 'retrievedfrom' => 'Ikinuha mula sa "$1"',
@@ -413,7 +413,7 @@ Tingnan ang [[Special:Version|pahina ng bersyon]].',
 'collapsible-expand' => 'Ibuka',
 'thisisdeleted' => 'Tingnan o ibalik ang $1?',
 'viewdeleted' => 'Tingnan ang $1?',
-'restorelink' => '{{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
+'restorelink' => '{{PLURAL:$1|isang binurang pagbabago|$1 binurang pagbabago}}',
 'feedlinks' => 'Subo/Karga:',
 'feed-invalid' => 'Hindi tanggap na uri ng serbisyo ng pagpaparating.',
 'feed-unavailable' => 'Walang serbisyo mula sa sindikasyong pangpaglalathala',
@@ -492,6 +492,8 @@ Pakiulat ito sa isang [[Special:ListUsers/sysop|tagapangasiwa]], na ibinibigay a
 'cannotdelete' => 'Hindi mabura ang pahina o talaksang "$1".
 Maaaring ibinura na ito ng iba.',
 'cannotdelete-title' => 'Hindi maibura ang pahinang "$1"',
+'delete-hook-aborted' => 'Pinigil ng sungkit ang pagbura.
+Walang ibinigay na paliwanag.',
 'badtitle' => 'Hindi kanais-nais na pamagat',
 'badtitletext' => 'Ang hiniling na pamagat ng pahina ay hindi katanggap-tanggap, wala, o isang may-maling kawing na pamagat na pangugnayang-wika (interwika) o pangugnayang wiki (interwiki).
 Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaaring gamitin para sa mga pamagat.',
@@ -528,6 +530,8 @@ Ang ibinigay na dahilan ay ''$2''.",
 Ang tagapangasiwang nagkandado nito ay nag-alok ng ganitong paliwanag: "$3".',
 'invalidtitle-knownnamespace' => 'Hindi katanggap-tanggap na pamagat na may puwang na pampangalang "$2" at tekstong "$3"',
 'invalidtitle-unknownnamespace' => 'Hindi katanggap-tanggap na pamagat na mayroong hindi nalalamang bilang na pampuwang ng pangalan na $1 at tekstong "$2"',
+'exception-nologin' => 'Hindi nakalagda',
+'exception-nologin-text' => 'Ang pahina o kilos na ito ay nangangailangan ng paglagda mo sa wiking ito.',
 
 # Virus scanner
 'virus-badscanner' => "Masamang kompigurasyon: hindi kilalang tagahagilap (iskaner) ng birus: ''$1''",
@@ -670,18 +674,18 @@ Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bag
 'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
 'passwordreset-legend' => 'Itakdang muli ang hudyat',
 'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng dato sa ibaba}}',
+'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng datos sa ibaba}}',
 'passwordreset-username' => 'Pangalan ng tagagamit:',
 'passwordreset-domain' => 'Nasasakupan:',
 'passwordreset-capture' => 'Tingnan ang lumabas na e-liham?',
 'passwordreset-capture-help' => 'Kapag tsetsekan mo ang kahong ito, ang e-liham (may pansamantalang hudyat) ay ipapakita sa iyo at ipapadala rin sa tagagamit.',
-'passwordreset-email' => 'Tirahan ng e-liham:',
-'passwordreset-emailtitle' => 'Mga detalye ng akawnt sa {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa tirahan ng IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng akawnt para sa {{SITENAME}} ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+'passwordreset-email' => 'Direksiyong e-liham:',
+'passwordreset-emailtitle' => 'Mga detalye ng kuwenta sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa direksiyong IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng kuwenta para sa {{SITENAME}} ($4). Ang sumusunod na {{PLURAL:$3|kuwenta ng tagagamit ay|mga kuwenta ng tagagamit ay}} may kaugnayan sa direksiyong e-liham na ito:
 
 $2
 
-{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang mga pansamantalang hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
 Dapat kang lumagda at pumili ng isang bagong hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong hudyat, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong hudyat.',
 'passwordreset-emailtext-user' => 'Ang tagagamit na si $1 sa {{SITENAME}} ay humiling ng isang paalala ng iyong mga akawnt ng detalye para sa {{SITENAME}}
 ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
@@ -738,8 +742,8 @@ Pansamantalang hudyat: $2',
 'showlivepreview' => 'Buhay na paunang tingin',
 'showdiff' => 'Ipakita ang mga pagbabago',
 'anoneditwarning' => "'''Babala:''' Hindi ka nakalagda.
-Matatala ang adres ng IP mo sa kasaysayan ng pagbabago ng pahinang ito.",
-'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong adres ng IP sa kasaysayan ng pagbabago ng pahinang ito.''",
+Matatala ang iyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.",
+'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
 'missingsummary' => "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.
 Kapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
 'missingcommenttext' => 'Magbigay ng isang kumento/puna sa ibaba.',
@@ -748,17 +752,18 @@ Kapag pinindot mo uli ang \"{{int:savearticle}}\", masasagip ang pagbabago mo na
 'summary-preview' => 'Paunang tingin sa buod:',
 'subject-preview' => 'Paunang tingin sa paksa/paulo:',
 'blockedtitle' => 'Hinarang ang tagagamit',
-'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o adres ng IP.'''
+'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o direksiyong IP.'''
 
-Ginawa ang pagharang/paghadlang ni $1. Ito ang ibinigay na dahilan: ''$2''.
+Ginawa ni $1 ang pagharang/paghadlang.
+Ito ang ibinigay na dahilan: ''$2''.
 
 * Simula ng pagharang/paghadlang: $8
 * Katapusan ng pagharang/paghadlang: $6
 * Ang hinarang/hinadlangan ay si: $7
 
-Maaari kang makipag-ugnayan kay $1 o sa iba pang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
-Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na adres ng e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
-Ang pangkasalukuyang adres ng IP mo ay $3, at ang ID ay #$5.
+Maaari kang makipag-ugnayan kay $1 o sa ibang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
+Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na direksiyong e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
+Ang kasalukuyan mong direksiyong IP ay $3, at ang ID ng pagharang/paghadlang ay #$5.
 Pakisama ang lahat ng mga detalye sa anumang mga pagtatanong na ginagawa/gagawin mo.",
 'autoblockedtext' => 'Kusang hinadlangan/hinarang ang adres ng IP mo dahil ginamit ito ng ibang tagagamit, na hinadlangan/hinarang ni $1.
 Ang ibinigay na dahilan ay:
@@ -893,7 +898,7 @@ Ang pinakahuling entrada sa talaan ay ibinigay sa baba para sa inyong pagsasangg
 'nocreatetitle' => 'May hangganan ang paglikha ng pahina',
 'nocreatetext' => 'Naglagay ng hangganan (restriksyon/limitasyon) ang {{SITENAME}} sa kakayahang makalikha ng bagong mga pahina.
 Maaari kang bumalik at magbago ng isang umiiral na pahina, o kaya [[Special:UserLogin|lumagda o lumikha ng kuwenta/akawnt]].',
-'nocreate-loggedin' => 'Walang kang pahintulot para lumikha ng bagong mga pahina.',
+'nocreate-loggedin' => 'Wala kang pahintulot para lumikha ng bagong mga pahina.',
 'sectioneditnotsupported-title' => 'Hindi sinusuportahan ang pagpapatnugot ng seksyon',
 'sectioneditnotsupported-text' => 'Hindi sinusuportahan ang pagpapatnugot ng seksyon sa pahinang ito.',
 'permissionserrors' => 'Mga kamalian sa mga pahintulot',
@@ -1220,8 +1225,8 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'prefs-watchlist-token' => 'Balap ng talaan ng mga binabantayan:',
 'prefs-misc' => 'Bala-balaki',
 'prefs-resetpass' => 'Baguhin ang hudyat',
-'prefs-changeemail' => 'Baguhin ang tirahan na para sa e-liham',
-'prefs-setemail' => 'Magtakda ng bagong tirahan ng e-liham',
+'prefs-changeemail' => 'Baguhin ang direksiyong e-liham',
+'prefs-setemail' => 'Magtakda ng direksiyong e-liham',
 'prefs-email' => 'Mga pagpipilian para sa e-liham',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Sagipin',
@@ -1296,7 +1301,7 @@ Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
 Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
 'prefs-help-email' => 'Hindi talaga kailangang may tirahan ng e-liham, subalit kailangan para sa muling pagtatakda ng hudyat, kung makalimutan mo ang hudyat mo.',
 'prefs-help-email-others' => 'Mapipili mo rin na makipag-ugnayan sa iyo ang iba sa pamamagitan ng iyong pahina ng tagagamit o usapan na hindi kailangang ilantad ang katauhan mo.',
-'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'prefs-help-email-required' => 'Kailangan ang direksiyong e-liham.',
 'prefs-info' => 'Payak na kabatiran',
 'prefs-i18n' => 'Internasyonalisasyon',
 'prefs-signature' => 'Lagda',
@@ -1313,8 +1318,8 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'prefs-diffs' => 'Mga pagkakaiba',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang tirahan ng e-liham',
-'email-address-validity-invalid' => 'Magpasok ng isang tanggap na tirahan ng e-liham',
+'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang direkisyong e-liham',
+'email-address-validity-invalid' => 'Magpasok ng isang tanggap na direksiyong e-liham',
 
 # User rights
 'userrights' => 'Pamamahala ng mga karapatan ng tagagamit',
@@ -1344,7 +1349,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'group-autoconfirmed' => 'Mga tagagamit na nakompirma sa kusang paraan (autokompirmasyon)',
 'group-bot' => "Mga ''bot''",
 'group-sysop' => 'Mga tagapangasiwa',
-'group-bureaucrat' => 'Mga burokrato',
+'group-bureaucrat' => 'Mga burokrata',
 'group-suppress' => 'Mga tagapagingat-tago',
 'group-all' => '(lahat)',
 
@@ -1585,8 +1590,8 @@ Hindi lilitaw ang buod na ipapasok mo sa pahina ng paglalarawan.
 Para lumitaw ang buod mo doon, kailangan mong kinakamay na baguhin ito.
 [[$1|thumb]]",
 'fileexists-extension' => "Mayroon talaksan na ganitong pangalan: [[$2|thumb]]
-* Pangalan ng ikakargang talaksan: '''<tt>[[:$1]]</tt>'''
-* Pangalan ng mayroon nang talaksan: '''<tt>[[:$2]]</tt>'''
+* Pangalan ng ikinakargang talaksan: '''<tt>[[:$1]]</tt>'''
+* Pangalan ng umiiral na talaksan: '''<tt>[[:$2]]</tt>'''
 Pumili ng ibang pangalan.",
 'fileexists-thumbnail-yes' => "Mukhang pinaliit ''(thumbnail)'' na larawan ang talaksan. [[$1|thumb]]
 Paki tingin ang talaksan '''<tt>[[:$1]]</tt>'''.
@@ -1742,8 +1747,8 @@ Pakisuring muli kung tama ang URL at kung buhay ang sityo/sayt.',
 Pakisuri kung buhay ang sayt, maghintay ng kaunti at subukin uli.
 Maaaring ibigin mong subukin uli sa isang hindi gaanong abalang panahon.',
 
-'license' => 'Paglilisensya:',
-'license-header' => 'Paglilisensya',
+'license' => 'Paglilisensiya:',
+'license-header' => 'Paglilisensiya',
 'nolicense' => 'Walang napili',
 'license-nopreview' => '(Walang makuhang paunang tingin)',
 'upload_source_url' => ' (isang tanggap at napupuntahan ng publikong URL)',
@@ -1761,7 +1766,7 @@ Kapag sinala ng tagagamit, tanging mga talaksan lang kung saan nagkarga ang taga
 'listfiles_user' => 'Tagagamit',
 'listfiles_size' => 'Sukat',
 'listfiles_description' => 'Paglalarawan',
-'listfiles_count' => 'Mga bersyon',
+'listfiles_count' => 'Mga bersiyon',
 
 # File description page
 'file-anchor-link' => 'Talaksan',
@@ -1941,7 +1946,7 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'prefixindex-namespace' => 'Lahat ng mga pahinang may unlapi ($1 puwang ng pangalan)',
 'shortpages' => 'Mga maiikling pahina',
 'longpages' => 'Mga mahahabang pahina',
-'deadendpages' => 'Mga pahinang walang panloob na ugnay (internal link)',
+'deadendpages' => 'Mga pahinang walang kawing panloob (internal link)',
 'deadendpagestext' => "Ang mga sumusunod na mga pahina'y hindi umuugnay sa ibang mga pahina sa wiking ito.",
 'protectedpages' => 'Mga nakaprotektang pahina',
 'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
@@ -2083,7 +2088,7 @@ Maaaring may mga [[{{MediaWiki:Listgrouprights-helppage}}|karagdagang kabatiran]
 'emailuser' => 'Padalhan ng e-liham ang tagagamit',
 'emailpage' => 'Magpadala ng e-liham sa tagagamit',
 'emailpagetext' => 'Magagamit mo ang pormularyo sa ibaba para makapagpadala ng mensahe sa pamamagitan ng isang e-liham para sa tagagamit na ito.
-Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
+Ang ipinasok mong direksiyong e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
 'usermailererror' => 'Pagkakamaling sanhi ng pagkakabalik ng liham mula sa puntirya:',
 'defemailsubject' => 'E-liham ng {{SITENAME}} mula sa tagagamit na si "$1"',
 'usermaildisabled' => 'Hindi pinagana ang e-liham ng tagagamit',
@@ -2118,7 +2123,7 @@ Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan
 'watchlistfor2' => 'Para sa $1 $2',
 'nowatchlist' => 'Wala kang pahinang binabantayan.',
 'watchlistanontext' => 'Paki $1 upang makita o mabago ang mga aytem sa iyong binabantayan.',
-'watchnologin' => 'Di ka naka-lagda',
+'watchnologin' => 'Hindi nakalagda',
 'watchnologintext' => 'Dapat kang [[Special:UserLogin|nakalagda]] upang mabago ang talaan mo ng mga binabantayan.',
 'addwatch' => 'Idagdag sa bantayan',
 'addedwatchtext' => "Dinagdag na ang pahinang \"[[:\$1]]\" sa iyong [[Special:Watchlist|Babantayan]].
@@ -2158,29 +2163,35 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 'enotif_lastvisited' => 'Tingnan ang $1 para sa lahat ng mga pagbabago magmula noong huling pagdalaw mo.',
 'enotif_lastdiff' => 'Tingnan ang $1 para makita ang pagbabagong ito.',
 'enotif_anon_editor' => 'hindi nakikilalang tagagamit $1',
-'enotif_body' => 'Mahal na $WATCHINGUSERNAME,
+'enotif_body' => 'Mahal naming $WATCHINGUSERNAME,
 
 
-Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
+Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED ni $PAGEEDITOR noong $PAGEEDITDATE, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
 
 $NEWPAGE
 
-Buod mula sa patnugot: $PAGESUMMARY $PAGEMINOREDIT
+Buod ng patnugot: $PAGESUMMARY $PAGEMINOREDIT
 
 Makipagugnayan sa patnugot:
 liham: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
 Wala nang iba pang mga pagpapahayag sa pagkakataon ng pagkakaroon ng karagdagang mga pagbabago maliban na lamang kung dadalawin mo ang pahinang ito.
-Maaari mo ring muling itakda ang mga watawat na pangpag-uulat para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
+Maaari mo ring itakda muli ang mga watawat na pangpagpapabatid para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
 
-             Ang iyong palakaibigang sistemang pangpag-uulat ng {{SITENAME}}
+Ang iyong maginhawang sistema ng pagpapabatid ng {{SITENAME}}
 
 --
-Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan ang
+Upang mabago ang mga katakdaan sa iyong talaan ng mga binabantayan, dalawin ang
+{{canonicalurl:{{#special:Preferences}}}}
+
+Upang baguhin ang mga katakdaan ng bantayan mo, dumalaw sa
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Upang burahin ang pahina mula sa pahina mo ng mga binabantayan, dumalaw sa
 $UNWATCHURL
 
-Balik-tugon at karagdagang tulong:
+Tugon at karagdagang tulong:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2312,8 +2323,8 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
 'undeletepagetext' => 'Ang sumusunod na {{PLURAL:$1|pahina ay nabura na subalit |$1 mga pahina ay nabura na subalit}} nananatili pa rin sa sinupan/arkibo at maaaring bang ibalik mula sa pagkakabura.
 Maaaring palagiang linisin o tanggalan ng laman ang sinupan/arkibo.',
 'undelete-fieldset-title' => 'Ibalik ang mga pagbabago',
-'undeleteextrahelp' => "Para maibalik ang kabuoan ng kasaysayan ng pahina, iwanang walang laman ang mga kahong lagayan ng mga tsek at pindutin ang '''''Ibalik'''''. Para maisagawa ang pagbabalik na may pagpili, lagyan ng tsek ang mga kahong may kaugnayan sa pagpapabalik ng mga pagbabago at pindutin ang '''''Ibalik'''''.
-Malilinis ang pook ng kumento/puna at iba pang mga kahong lagayan ng mga tsek kapag pinindot ang '''''Magtakda uli'''''.",
+'undeleteextrahelp' => "Upang maibalik ang buong kasaysayan ng pahina, iwanang walang mga tsek ang lahat ng mga kahon at lagitikin ang '''''{{int:undeletebtn}}'''''.
+Upang makapagsagawa ng pagpapanumbalik na may pinipili, tsekan ang mga kahon na tumutugma sa mga pagbabagong ibabalik, at pindutin ang '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => 'Sininop/nilagay sa sinupan o arkibo ang $1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
 'undeletehistory' => 'Kapag ibinalik mo ang pahina, ibabalik ang lahat ng mga pagbabago sa kasaysayan.
 Kapag nalikha ang isang bagong pahinang may katulad na pangalan mula noong pagbura, lilitaw ang naibalik na mga pagbabago sa sinaunang kasaysayan.',
@@ -2501,9 +2512,9 @@ Ibinigay sa ibaba ang talaan ng pagharang upang mapagsanggunian:',
 Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
 'blocklogentry' => 'hinarang/hinadlangan si [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
 'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
-'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
-Hindi nakatala rito ang mga awtomatiko/kusang hinarang/hinadlangang mga adres ng IP.
-Tingnan ang [[Special:BlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
+'blocklogtext' => 'Isa itong talaan ng mga gawain ng pagharang at hindi pagharang sa tagagamit.
+Hindi nakalista ang mga tirahan ng IP ng kusang hinadlangan.
+Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuyang may bisa na mga pagbabawal at mga paghadlang.',
 'unblocklogentry' => 'tinanggal ang pagharang/paghadlang kay $1',
 'block-log-flags-anononly' => 'mga di-kilalang tagagamit lamang',
 'block-log-flags-nocreate' => 'Nakapatay ang paglikha ng akawnt',
@@ -2833,7 +2844,7 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'tooltip-upload' => 'Simulan ang pagkarga',
 'tooltip-rollback' => 'Ibinabalik ng "Pagulungin pabalik sa dati" ang (mga) pagbabago sa pahinang ito patungo sa huling bersyon ng huling tagapagambag sa pamamagitan ng isang pindot lamang.',
 'tooltip-undo' => 'Ibinabalit ng "Ibalik" ang pagbabagong ito at binubuksan ang pahinang gawaan ng pagbabago sa anyong paunang-tingin muna.  Nagpapahintulot na makapagdagdag ng dahilan sa buod.',
-'tooltip-preferences-save' => 'Itakda ang mga kagustuhan',
+'tooltip-preferences-save' => 'Sagipin ang mga nais',
 'tooltip-summary' => 'Magbigay ng maikling buod',
 
 # Stylesheets
@@ -2883,6 +2894,7 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
 'spambot_username' => "Paglilinis ng ''spam'' ng MediaWiki",
 'spam_reverting' => "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
 'spam_blanking' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang',
+'spam_deleting' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, binubura',
 
 # Info page
 'pageinfo-title' => 'Kabatiran para sa "$1"',
@@ -3188,6 +3200,7 @@ Likas na nakatakdang itago ang iba pa.
 
 # EXIF attributes
 'exif-compression-1' => 'Walang kompresyon',
+'exif-compression-2' => 'CCITT Pangkat 3 1-kodigo sa haba ng pagtakbo ng Pangdimensiyong Huffman na May Bahagyang Pagbabago',
 'exif-compression-3' => 'Kodigo ng Pangkat 3 ng CCITT',
 'exif-compression-4' => 'Kodigo ng Pangkat 4 ng CCITT',
 
@@ -3800,6 +3813,8 @@ O kaya, maaari mong gamitin ang maginhawang pormularyo sa ibaba. Ang iyong pagpu
 'api-error-empty-file' => 'Walang laman ang ipinasa mong talaksan.',
 'api-error-emptypage' => 'Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.',
 'api-error-fetchfileerror' => 'Panloob na kamalian: may naganap na pagkakamali habang kinukuha ang talaksan.',
+'api-error-fileexists-forbidden' => 'Isang talaksan na may pangalang "$1" ang umiiral na, at hindi maaaring patungan ng muling pagsusulat.',
+'api-error-fileexists-shared-forbidden' => 'Isang talaksang may pangalang "$1" ang umiiral na sa loob ng repository ng pinagsasaluhang talaksan, at hindi maaaring patungan ng muling pagsusulat.',
 'api-error-file-too-large' => 'Napakalaki ng talaksang ipinasa mo.',
 'api-error-filename-tooshort' => 'Napakaiksi ng pangalan ng talaksan.',
 'api-error-filetype-banned' => 'Ipinagbabawal ang ganitong uri ng talaksan.',
@@ -3838,4 +3853,6 @@ O kaya, maaari mong gamitin ang maginhawang pormularyo sa ibaba. Ang iyong pagpu
 'duration-centuries' => '$1 {{PLURAL:$1|daantaon|mga daantaon}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyo|mga milenyo}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Hindi magawang kunin ang mga kandado sa tagapaghain na $1.',
 );
index df6482c..11a673d 100644 (file)
@@ -46,7 +46,7 @@ $messages = array(
 'tog-watchdefault' => 'Зијод кардеј демы дәгиш кардә быә сәһифон бә ноғо доә сијоһи',
 'tog-watchmoves' => 'Зијод кардеј ном дәгиш кардә быә сәһифон бә ноғо доә сијоһи',
 'tog-watchdeletion' => 'Зијод кардеј сәһифон комон аз рәдд кардәме бә ноғо доә сијоһи',
-'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә сәһифон кејнә дәгиш бәбен бәмы е-номә бывығанд',
+'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә кејнә сәһифон дәгиш бәбен бәмы е-номә бывығанд',
 'tog-watchlisthideown' => 'Чымы дәгишон ноғо доә сијһиәдә нијо кардеј',
 'tog-watchlisthidebots' => 'Нијо кардеј ботон дәгишон ноғо доә сијоһиәдә',
 'tog-watchlisthideminor' => 'Нијо кардеј гәдә дәгишон ноғо доә сијоһиәдә',
@@ -138,7 +138,7 @@ $messages = array(
 'qbpageoptions' => 'Ым сәһифә',
 'qbpageinfo' => 'Мәзмун.',
 'qbmyoptions' => 'Чымы сәһифон',
-'qbspecialpages' => 'Хысусиә сәһифон',
+'qbspecialpages' => 'Хысусијә сәһифон',
 'faq' => 'РАП',
 'faqpage' => 'Project:РАП',
 
@@ -188,7 +188,7 @@ $messages = array(
 'newpage' => 'Тожә сәһифә',
 'talkpage' => 'Ым сәһифә мызокирә кардеј',
 'talkpagelinktext' => 'Мызокирә',
-'specialpage' => 'Хысусиә сәһифә',
+'specialpage' => 'Хысусијә сәһифә',
 'personaltools' => 'Шәхси диләгон',
 'postcomment' => 'Нујә ғысм',
 'articlepage' => 'Мәғолә дијә кардеј',
@@ -263,7 +263,7 @@ $messages = array(
 'nstab-main' => 'Мәғолә',
 'nstab-user' => 'Иштирокәкә сәһифә',
 'nstab-media' => 'Медијә сәһифә',
-'nstab-special' => 'Хысусиә сәһифә',
+'nstab-special' => 'Хысусијә сәһифә',
 'nstab-project' => 'Нахшә бәрәдә',
 'nstab-image' => 'Фајл',
 'nstab-template' => 'Ғәлиб',
@@ -479,11 +479,12 @@ $messages = array(
 
 # Preferences page
 'preferences' => 'Чичсә печыније',
-'mypreferences' => 'Ð\9fеÑ\87Ñ\8bниÑ\98е',
+'mypreferences' => 'Ð\9aÑ\83кон',
 'prefsnologin' => 'Ыштәни едаштәнијоне',
 'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
 'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
+'prefs-user-pages' => 'Иштирокәкә сәһифон',
 'prefs-rc' => 'Ән нујә дәгишон',
 'prefs-changeemail' => 'Е-номә дәгиш кардеј',
 'saveprefs' => 'Огәтеј',
@@ -508,7 +509,7 @@ $messages = array(
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|дәгиши|дәгишон}}',
 'recentchanges' => 'Ән нујә дәгишон',
-'recentchanges-legend' => 'Ó\98н Ð½Ñ\83Ñ\98Ó\99 Ð´Ó\99гиÑ\88он Ð¿ÐµÑ\87Ñ\8bниÑ\98е',
+'recentchanges-legend' => 'Ó\98н Ð½Ñ\83Ñ\98Ó\99 Ð´Ó\99гиÑ\88он ÐºÑ\83кон',
 'recentchanges-summary' => 'Тәмшо быкән бы сәһифәдә че вики охоминә дәгишон нишо доә быән.',
 'recentchanges-feed-description' => 'Ым каналәдә быә охонә дәгишон дығғәтәдә огәт.',
 'recentchanges-label-newpage' => 'Де ым дәгиши тожә сәһифә сохтә бе',
@@ -532,6 +533,8 @@ $messages = array(
 'minoreditletter' => 'г',
 'newpageletter' => 'Т',
 'boteditletter' => 'б',
+'rc_categories_any' => 'Һар гылә',
+'newsectionsummary' => '/* $1 */ нујә мывзу',
 'rc-enhanced-expand' => 'Тәфсилотон нишо дој (JavaScript истифодә бедә)',
 'rc-enhanced-hide' => 'Тәфсилотон нијо кардеј',
 
@@ -554,10 +557,21 @@ $messages = array(
 'license' => 'Лисензијә:',
 'license-header' => 'Лисензијә',
 
+# Special:ListFiles
+'imgfile' => 'фајл',
+'listfiles' => 'Фајлон сијоһи',
+'listfiles_thumb' => 'Гәдә шикил',
+'listfiles_name' => 'Фајли ном',
+'listfiles_user' => 'Иштирокәкә',
+'listfiles_size' => 'Улгу',
+'listfiles_description' => 'Тәсвир',
+'listfiles_count' => 'Рәвојәт',
+
 # File description page
 'file-anchor-link' => 'Фајл',
 'filehist' => 'Фајли тарых',
 'filehist-help' => 'Фајли сыфтә рәвојәти виндеј горә бә тарых/вахт егәтән.',
+'filehist-deleteall' => 'һәммәј рәдд кардеј',
 'filehist-revert' => 'Огард',
 'filehist-current' => 'есәтнә',
 'filehist-datetime' => 'Тарых/Вахт',
@@ -677,7 +691,7 @@ $messages = array(
 'whatlinkshere-page' => 'Сәһифә:',
 'linkshere' => "Ым сәһифон сәбон вардән ијо ''[[:$1]]''':",
 'nolinkshere' => "Бә ым сәһифә ҹо сәһифонку сәбонон нин '''[[:$1]]'''.",
-'isredirect' => 'увони дәгиш кардә сәһифәје',
+'isredirect' => 'Ñ\83нвони Ð´Ó\99гиÑ\88 ÐºÐ°Ñ\80дÓ\99 Ñ\81Ó\99һиÑ\84Ó\99Ñ\98е',
 'istemplate' => 'әловә',
 'isimage' => 'фајлинә сәбон',
 'whatlinkshere-prev' => '{{PLURAL:$1|навынәни|навынәни $1}}',
@@ -701,24 +715,29 @@ $messages = array(
 'block-log-flags-nocreate' => 'нујә иштирокәкон ғејд карде ғәдәғәне',
 
 # Move page
+'move-page-legend' => 'Сәһифә номи дәгиш карде',
+'newtitle' => 'Нујә ном:',
+'movepagebtn' => 'Сәһифә номи дәгиш кардеј',
 'movelogpage' => 'Ном дәгиш кардә быә чијон журнал',
 'revertmove' => 'Бә кәно окырније',
 
 # Export
 'export' => 'Сәһифон ихроҹ кардеј',
+'export-addcat' => 'Зијод кардеј',
 
 # Namespace 8 related
 'allmessagesname' => 'Хәбә',
 'allmessagesdefault' => 'Иминә огәтә быә мәтн',
+'allmessages-filter-all' => 'Һаммај',
 
 # Thumbnails
 'thumbnail-more' => 'Һејве кардеј',
-'thumbnail_error' => 'Гәдә шикили туму кардәдә сәһф: $1',
+'thumbnail_error' => 'Гәдә шикили туму кардејәдә сәһв: $1',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Шымә иштирокәкә сәһифә',
 'tooltip-pt-mytalk' => 'Шымә мызокирон сәһифә',
-'tooltip-pt-preferences' => 'ШÑ\8bмÓ\99 Ð¿ÐµÑ\87Ñ\8bниÑ\98Ó\99Ñ\98оне',
+'tooltip-pt-preferences' => 'ШÑ\8bмÓ\99 ÐºÑ\83кон',
 'tooltip-pt-watchlist' => 'Сәһифон сијоһи, конҹо шымә де дығғәти дијә кардејдәјон бә дәгишон',
 'tooltip-pt-mycontris' => 'Шымә гәнҹон сијоһи',
 'tooltip-pt-login' => 'Ијо бәбе ыштәни ғејд кардовнијеј системәдә, интаси ым һукман ни',
@@ -755,6 +774,7 @@ $messages = array(
 'tooltip-t-permalink' => 'Бә ым сәһифә рәвојәти еғрорә сәбон',
 'tooltip-ca-nstab-main' => 'Мәғолә мығдор',
 'tooltip-ca-nstab-user' => 'Иштирок кардәкәси сәһифә',
+'tooltip-ca-nstab-media' => 'Медиа-фајл',
 'tooltip-ca-nstab-special' => 'Ым хыдмәтә сәһифәје бычыми горә дәгиш кардеј әбыни',
 'tooltip-ca-nstab-project' => 'Нәхши сәһифә',
 'tooltip-ca-nstab-image' => 'Фајли сәһифә',
@@ -766,6 +786,7 @@ $messages = array(
 'tooltip-diff' => 'Бешемонә мәтни һәхәдә сохтә быә дәгишон нишо дој.',
 'tooltip-compareselectedversions' => 'Че ым сәһифә ды гылә выжнијә быә рәвојәтон мијонәдә фәрғи едјәсеј.',
 'tooltip-watch' => 'Ым сәһифә зијод кардеј бә ыштә нығо доә сијоһи',
+'tooltip-upload' => 'Бо жәј бино кардеј',
 'tooltip-rollback' => 'Охонә редактори дәгиш кардә быә чијон де и гылә егәте ләғв кардеј',
 'tooltip-undo' => 'Дәғандә дәгиши рәдд кардеј ијән "сыфтәнә нишо дој" окардеј, де ләғви сәбәби нышон дој имкони.',
 'tooltip-summary' => 'Кыртә тәсвир бынывыштән',
@@ -814,6 +835,11 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
+# EXIF tags
+'exif-imagewidth' => 'Һовужи',
+'exif-imagelength' => 'Былынди',
+'exif-languagecode' => 'Зывон',
+
 'exif-gaincontrol-0' => 'Ни',
 
 'exif-saturation-0' => 'Ади',
@@ -836,6 +862,8 @@ $messages = array(
 'duplicate-defaultsort' => '\'\'\'Дыггәт:\'\'\' Еһтимал кардә быә "$2" классификасијә ачари нафконә "$1" классификасијә ачари етиборсоз кардә',
 
 # Special:Version
+'version' => 'Рәвојәт',
+'version-specialpages' => 'Хысусијә сәһифон',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -846,7 +874,7 @@ $messages = array(
 'fileduplicatesearch-submit' => 'Нәве',
 
 # Special:SpecialPages
-'specialpages' => 'Хысусиә сәһифон',
+'specialpages' => 'Хысусијә сәһифон',
 
 # External image whitelist
 'external_image_whitelist' => ' #Ым сәтри огәтәнән чокнәј әв һесте<pre>
index 0b9588d..5e103d6 100644 (file)
@@ -508,7 +508,7 @@ Ko e ʻuhinga loka ko e $1 ia.",
 
 # Recent changes
 'recentchanges' => 'Ngaahi toki liliu',
-'recentchangestext' => 'Fakatotolo ʻa e ngaahi toki liliu ki he wiki ʻi he pēsí ni.',
+'recentchanges-summary' => 'Fakatotolo ʻa e ngaahi toki liliu ki he wiki ʻi he pēsí ni.',
 'rcnote' => 'ʻOku ʻasi ʻi lalo ʻa e liliu fakamuimui ʻe <strong>$1</strong> lolotonga ʻa e ʻaho fakamuimui ʻe <strong>$2</strong> mei he taimi: $4, $5',
 'rcnotefrom' => "ʻOku ʻasi ʻi lalo ʻa e liliu talu mei '''$2''' (aʻu ki he '''$1''').",
 'rclistfrom' => 'ʻAsi mai ha ngaahi liliu foʻou ʻo kamata mei he $1',
index c7ba9d4..308fc66 100644 (file)
@@ -714,8 +714,8 @@ Verilen sebep: ''$2''.",
 # Login and logout pages
 'logouttext' => "'''Oturumu kapattınız.'''
 
-Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz, ya da [[Special:UserLogin|yeniden oturum açabilirsiniz]] (ister aynı kullanıcı adıyla, ister başka bir kullanıcı adıyla).
-Web tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hala oturumunuz açıkmış gibi görünebilir.",
+Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz ya da aynı kullanıcı adıyla ya da ister başka bir kullanıcı adıyla [[Special:UserLogin|yeniden oturum açabilirsiniz]].
+Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ oturumunuz açıkmış gibi görünebilir.",
 'welcomecreation' => '== Hoş geldin, $1! ==
 
 Hesabınız açıldı.
@@ -1258,6 +1258,7 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 
 # Diffs
 'history-title' => '"$1" sayfasının geçmişi',
+'difference-title' => '"$1" sayfasının sürümleri arasındaki fark',
 'difference-multipage' => '(Sayfalar arasındaki fark)',
 'lineno' => '$1. satır:',
 'compareselectedversions' => 'Seçilen sürümleri karşılaştır',
@@ -2142,8 +2143,9 @@ Ayrıca [[Special:WantedCategories|İstenen kategoriler]]'e bakınız.",
 'linksearch-pat' => 'Motif ara:',
 'linksearch-ns' => 'Ad alanı:',
 'linksearch-ok' => 'Ara',
-'linksearch-text' => '"*.wikipedia.org" gibi jokerler kullanılabilir.<br />
-Desteklenen iletişim kuralları: <tt>$1</tt>',
+'linksearch-text' => '"*.wikipedia.org" gibi jokerler kullanılabilir.
+En az bir üst-seviye alan gerekir, örneğin "*.org".<br />
+Desteklenen iletişim kuralları: <tt>$1</tt> (bunların hiçbirini aramanıza eklemeyin).',
 'linksearch-line' => "$1'e $2'den bağlantı verilmiş",
 'linksearch-error' => 'Jokerler sadece ana makine adının başında görünebilir.',
 
index 47bdcd1..3015bec 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1108,6 +1108,7 @@ $1",
 'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
 'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
 'editundo' => 'үткәрмәү',
+'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
 
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
@@ -1119,6 +1120,8 @@ $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|язма|язма}} күрсәтелсен',
 'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Эзләү көйләнмәләре',
@@ -1137,6 +1140,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-score' => 'Релевантлыгы: $1 %',
 'search-redirect' => '(юнәлтү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1632,6 +1636,7 @@ PICT # төрле
 'protectedpages' => 'Якланган битләр',
 'protectedtitles' => 'Тыелган исемнәр',
 'listusers' => 'Кулланучылар исемлеге',
+'usercreated' => '$3 $1 көнне $2 вакытта {{GENDER:$3|теркәлде}}',
 'newpages' => 'Яңа битләр',
 'newpages-username' => 'Кулланучы:',
 'ancientpages' => 'Иң иске битләр',
@@ -1739,6 +1744,7 @@ PICT # төрле
 # Watchlist
 'watchlist' => 'Күзәтү исемлегем',
 'mywatchlist' => 'Күзәтү исемлегем',
+'watchlistfor2' => '$1 $2 өчен',
 'nowatchlist' => 'Күзәтү исемлегегездә битләр юк.',
 'watchnologin' => 'Кермәдегез',
 'watchnologintext' => 'Күзәтү исемлегегезне үзгәртү өчен сез [[Special:UserLogin|керергә]] тиешсез.',
@@ -1923,6 +1929,7 @@ $1',
 'sp-contributions-talk' => 'бәхәс',
 'sp-contributions-search' => 'Кертемне эзләү',
 'sp-contributions-username' => 'Кулланучының IP адресы яки исеме:',
+'sp-contributions-toponly' => 'Соңгы версия булган үзгәртүләрне генә күрсәтергә',
 'sp-contributions-submit' => 'Эзләү',
 
 # What links here
@@ -2426,6 +2433,9 @@ $1',
 'hijri-calendar-m7' => 'Раҗәб',
 'hijri-calendar-m9' => 'Рамазан',
 
+# Core parser functions
+'duplicate-defaultsort' => 'Игътибар. Уйланма куелган "$2" бүлгәләү ачкычы элеккеге уйланма куелган "$1" бүлгәләү ачкычын үзгәртә.',
+
 # Special:Version
 'version' => 'Юрама',
 'version-extensions' => 'Куелган киңәйтүләр',
@@ -2469,6 +2479,16 @@ $1',
 'blankpage' => 'Буш бит',
 'intentionallyblankpage' => 'Бу бит махсус буш калдырылган',
 
+# External image whitelist
+'external_image_whitelist' => '#Бу юлны ничек бар, шулаө калдырыгыз<pre>
+#Монда даими фразаларның фрагментларын куегыз (// арасында торган өлешен)
+#алар тышкы сурәтләрнең URL белән бәйләнерләр.
+#Туры килгәннәре сурәт буларак, туры килмәгәннәре сурәткә сылтама буларак күрсәтеләчәкләр.
+# # билгесе белән башланучы юллар шәрехнамә дип саналалар.
+#Юллар регистрга игътибар бирмиләр.
+
+#Даими фразаларның фрагментларын бу кыр өстендә куегыз. Бу кырны ничек бар, шулай калдырыгыз.</pre>',
+
 # Special:Tags
 'tags' => 'Гамәлдә булучы үзгәртүләр билгеләре',
 'tag-filter' => '[[Special:Tags|Tag]] фильтры:',
index 611be9e..af7b3b2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Latin script) (Tatarça)
+/** Tatar (Latin script) (tatarça)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index c523d24..6dd36aa 100644 (file)
@@ -60,22 +60,24 @@ $fallback8bitEncoding = "windows-1251";
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Холбааны шыяры:',
-'tog-justify' => 'Арынның дооразынга сөзүглелди дескилээри',
+'tog-justify' => 'Арынның дооразының аайы-биле сөзүглелди дескилээри',
 'tog-hideminor' => 'Сөөлгү өскерлиишкиннер арында бичии өскерлиишкиннерни чажырар',
 'tog-hidepatrolled' => 'Амгы өскерлиишкиннер арында истээн өскерлиишкиннерни чажырары',
 'tog-newpageshidepatrolled' => 'Чаа арыннарның даңзындан истээн арыннарны чажырары',
-'tog-usenewrc' => 'Use enhanced recent changes (JavaScript херек)',
+'tog-usenewrc' => 'Чаа өскерлиишкиннерниң өөделеттинген даңзызын ажыглаар (JavaScript херек)',
+'tog-numberheadings' => 'Эгелерин авто-санаар',
 'tog-showtoolbar' => 'Өскертир херекселдерни көргүзер (JavaScript)',
 'tog-editondblclick' => 'Арынны өскертирде ийи катап базар (JavaScript)',
 'tog-editsection' => '[өскертири] деп холбаалар-биле section editing enable.',
-'tog-rememberpassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
-'tog-watchcreations' => 'Мээң чогааткан арыннарымны хайгаарал даңзымга немерелээри.',
-'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымга немерелээри.',
-'tog-watchmoves' => 'Мээң шимчеткен арыннарымны хайгаарал даңзымга немерелээри.',
+'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|хүн|хүн}} ишти)',
+'tog-watchcreations' => 'Мээң чаяан арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchmoves' => 'Мээң катап адаан арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchdeletion' => 'Мээң казаан арыннарымны хайгаарал даңзымче немээри.',
 'tog-oldsig' => 'Амгы хол үжүү:',
-'tog-watchlisthideown' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ð¼Ñ\8dÑ\8dÒ£ Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80Ñ\8bмнÑ\8b Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
-'tog-watchlisthidebots' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ñ\80обоÑ\82Ñ\82аÑ\80нÑ\8bÒ£ Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80Ñ\8bн Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
-'tog-watchlisthideminor' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ð±Ð¸Ñ\87ии Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80нÑ\8b Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
+'tog-watchlisthideown' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ñ\8dдиглеÑ\80имни Ñ\87ажÑ\8bÑ\80',
+'tog-watchlisthidebots' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ñ\80обоÑ\82Ñ\82аÑ\80нÑ\8bÒ£ Ñ\8dдиглеÑ\80ин Ñ\87ажÑ\8bÑ\80',
+'tog-watchlisthideminor' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ð±Ð¸Ñ\87ии Ñ\8dдиглеÑ\80ни Ñ\87ажÑ\8bÑ\80',
 'tog-watchlisthidepatrolled' => 'Хайгаарал даңзындан истээн өскерлиишкиннерны чажырары',
 'tog-showhiddencats' => 'Чажыт бөлүктерни көргүзери',
 
@@ -113,42 +115,43 @@ $messages = array(
 'october' => 'Он ай',
 'november' => 'Он бир ай',
 'december' => 'Он ийи ай',
-'january-gen' => 'Бир ай',
-'february-gen' => 'Ийи ай',
-'march-gen' => 'Үш ай',
-'april-gen' => 'Дөрт ай',
-'may-gen' => 'Беш ай',
-'june-gen' => 'Алды ай',
-'july-gen' => 'Чеди ай',
-'august-gen' => 'Сес ай',
-'september-gen' => 'Тос ай',
-'october-gen' => 'Он ай',
-'november-gen' => 'Он бир ай',
-'december-gen' => 'Он ийи ай',
-'jan' => '1.ай',
-'feb' => '2.ай',
-'mar' => '3.ай',
-'apr' => '4.ай',
-'may' => '5.ай',
-'jun' => '6.ай',
-'jul' => '7.ай',
-'aug' => '8.ай',
-'sep' => '9.ай',
-'oct' => '10.ай',
-'nov' => '11.ай',
-'dec' => '12.ай',
+'january-gen' => 'Бир айның',
+'february-gen' => 'Ийи айның',
+'march-gen' => 'Үш айның',
+'april-gen' => 'Дөрт айның',
+'may-gen' => 'Беш айның',
+'june-gen' => 'Алды айның',
+'july-gen' => 'Чеди айның',
+'august-gen' => 'Сес айның',
+'september-gen' => 'Тос айның',
+'october-gen' => 'Он айның',
+'november-gen' => 'Он бир айның',
+'december-gen' => 'Он ийи айның',
+'jan' => '1 ай',
+'feb' => '2 ай',
+'mar' => '3 ай',
+'apr' => '4 ай',
+'may' => '5 ай',
+'jun' => '6 ай',
+'jul' => '7 ай',
+'aug' => '8 ай',
+'sep' => '9 ай',
+'oct' => '10 ай',
+'nov' => '11 ай',
+'dec' => '12 ай',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Бөлүк|Бөлүктер}}',
 'category_header' => '«$1» деп бөлүктүң арыннары',
-'subcategories' => 'Ð\91иÑ\87ии бөлүктер',
-'category-media-header' => '«$1» деп бөлүкте медиа',
+'subcategories' => 'Ð\90даккÑ\8b бөлүктер',
+'category-media-header' => '«$1» деп бөлүкте файлдар',
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
 'hidden-categories' => '{{PLURAL:$1|Чажыт бөлүк|Чажыт бөлүктер}}',
 'hidden-category-category' => 'Чажыт бөлүктер',
-'category-subcat-count-limited' => 'Ð\91о Ð±Ó©Ð»Ò¯Ðº {{PLURAL:$1|биÑ\80|$1}} Ð±Ð¸Ñ\87ии бөлүктүү.',
+'category-subcat-count-limited' => 'Ð\91о Ð±Ó©Ð»Ò¯Ðº {{PLURAL:$1|биÑ\80|$1}} Ð°Ð´Ð°ÐºÐºÑ\8b бөлүктүү.',
 'listingcontinuesabbrev' => '(уланчы)',
 'noindex-category' => 'Индекстелбес арынар',
+'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
 
 'about' => 'Дугайында',
 'article' => 'Допчу арын',
@@ -166,6 +169,7 @@ $messages = array(
 'qbbrowse' => 'Каралаары',
 'qbedit' => 'Өскертири',
 'qbpageoptions' => 'Бо арын',
+'qbpageinfo' => 'Арын дугайында медээ',
 'qbmyoptions' => 'Мээң арыннарым',
 'qbspecialpages' => 'Тускай арыннар',
 'faq' => 'Бо-ла салыр айтырыглар (БлСА)',
@@ -178,8 +182,8 @@ $messages = array(
 'vector-action-protect' => 'Камгалаары',
 'vector-action-undelete' => 'Эгидер',
 'vector-action-unprotect' => 'Камгалалды өскертири',
-'vector-view-create' => 'ЧогаадÑ\8bры',
-'vector-view-edit' => 'Өскертири',
+'vector-view-create' => 'ЧаÑ\8fары',
+'vector-view-edit' => 'Эдери',
 'vector-view-history' => 'Төөгүнү көөрү',
 'vector-view-view' => 'Номчууру',
 'vector-view-viewsource' => 'Дөзү бижиин көөрү',
@@ -195,18 +199,19 @@ $messages = array(
 'searchbutton' => 'Дилээри',
 'go' => 'Баары',
 'searcharticle' => 'Күүcедири',
-'history' => 'Арынның Төөгүзү',
+'history' => 'Арынның төөгүзү',
 'history_short' => 'Төөгү',
 'printableversion' => 'Саазынга үндүрерин көөрү',
 'permalink' => 'Турум холбаа',
 'print' => 'Саазынга үндүрер',
 'view' => 'Көөрү',
-'edit' => 'Өскертири',
+'edit' => 'Эдери',
 'create' => 'Чогаадыры',
 'editthispage' => 'Бо арынны өскертири',
 'create-this-page' => 'Бо арынны чогаадыры',
 'delete' => 'Ырадыры',
 'deletethispage' => 'Бо арынны ырадыры',
+'undelete_short' => '$1 {{PLURAL:$1|эдигни|эдиглерни}} катап үндүрери',
 'viewdeleted_short' => '{{PLURAL:$1|Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
 'protect' => 'Камгалаары',
 'protect_change' => 'өскертири',
@@ -232,7 +237,9 @@ $messages = array(
 'categorypage' => 'Бөлүктүң арынын көөрү',
 'viewtalkpage' => 'Чугааны көөрү',
 'otherlanguages' => 'Өске дылдарга',
-'lastmodifiedat' => 'Бо арын сөөлгү каттап $2, $1 өскерилген.',
+'redirectedfrom' => '($1 шигленген)',
+'redirectpagesub' => 'шигледир арын',
+'lastmodifiedat' => 'Бо арын сөөлгү катап $1, $2 өскерилген.',
 'protectedpage' => 'Камгалаган арын',
 'jumpto' => 'Шилчиир:',
 'jumptonavigation' => 'навигация',
@@ -247,17 +254,19 @@ $messages = array(
 'currentevents-url' => 'Project:Амгы үеде болуушкуннар',
 'disclaimers' => 'Ажыглаар харысаалгазын чөрчүүрү (ойталаары)',
 'disclaimerpage' => 'Project:Ажыглаар харысаалгазын ойталаары',
-'edithelp' => 'Өскертиринге дуза',
-'edithelppage' => 'Help:Өскертири',
+'edithelp' => 'Эдеринге дуза',
+'edithelppage' => 'Help:Эдери',
 'helppage' => 'Help:Допчузу',
 'mainpage' => 'Кол Арын',
 'mainpage-description' => 'Кол Арын',
-'policy-url' => 'Project:Ð\9fолиÑ\82ика',
+'policy-url' => 'Project:ЧÑ\83Ñ\80Ñ\83м',
 'portal' => 'Ниитилелдиң хаалгазы',
 'portal-url' => 'Project:Ниитилелдиң хаалгазы',
-'privacy' => 'Актыг бүзүрел дугуржулга',
+'privacy' => 'Актыг бүзүрел дугуржулгазы',
 'privacypage' => 'Project:Актыг бүзүрел дугуржулгазы',
 
+'badaccess' => 'Алдаг:Эргеңер чок.',
+
 'versionrequired' => 'МедиаВикиниң $1 үндүреризи херек',
 
 'ok' => 'Чөп',
@@ -266,12 +275,12 @@ $messages = array(
 'newmessageslink' => 'чаа чагаалар',
 'newmessagesdifflink' => 'эрткен өскерлиишкин',
 'youhavenewmessagesmulti' => '«$1» деп арында силерге чаа чагаалар бар.',
-'editsection' => 'өскертири',
-'editold' => 'өскертири',
+'editsection' => 'эдер',
+'editold' => 'эдер',
 'viewsourceold' => 'дөзү кодун көөрү',
-'editlink' => 'өскертири',
+'editlink' => 'эдер',
 'viewsourcelink' => 'дөзү кодун көөрү',
-'editsectionhint' => '«$1» деп салбырны өскертири',
+'editsectionhint' => '«$1» деп салбырны эдер',
 'toc' => 'Допчузу',
 'showtoc' => 'көргүзери',
 'hidetoc' => 'чажырары',
@@ -280,7 +289,7 @@ $messages = array(
 'viewdeleted' => '{{grammar:accusative|$1}} көөр?',
 'restorelink' => '{{PLURAL:$1|$1 балаттынган өскерилгелер}}',
 'feedlinks' => 'Агым:',
-'feed-invalid' => 'Ð\91ижидилгениң Ð°Ð³Ñ\8bм Ñ\8fнзÑ\8b багай-дыр.',
+'feed-invalid' => 'Ð\91ижидилгениң Ð°Ð³Ñ\8bм Ñ\85евиÑ\80и багай-дыр.',
 'site-rss-feed' => '$1 RSS Медээ Агымы',
 'site-atom-feed' => '$1 Atom Медээ Агымы',
 'page-rss-feed' => '«$1» RSS Медээ Агымы',
@@ -319,24 +328,26 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
 'internalerror' => 'Иштики алдаг',
 'internalerror_info' => 'Иштики алдаг: $1',
 'badtitle' => 'Багай ат',
-'viewsource' => 'Ð\91ажÑ\8b көөрү',
+'viewsource' => 'Ð\94өзүн көөрү',
 'actionthrottled' => 'Шеглээн дүрген',
+'sqlhidden' => '(SQL айтырыгны чажырган)',
 
 # Login and logout pages
 'welcomecreation' => '== Кирип моорлаңар, $1! ==
-Your account has been created.
+Силер бүрүткел бижик has been created.
 Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'yourname' => 'Aжыглакчының ады',
 'yourpassword' => 'Чажыт сөс',
 'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
 'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
 'login' => 'Кирери',
-'nav-login-createaccount' => 'Кирери / бүрүткел бижикти бүдүрери',
-'userlogin' => 'Кирери / бүрүткел бижикти бүдүрери',
+'nav-login-createaccount' => 'Кирери / бүрүткел бижикти чогаадыры',
+'userlogin' => 'Кирери / бүрүткел бижикти чогаадыры',
 'userloginnocreate' => 'Кирери',
 'logout' => 'Үнери',
 'userlogout' => 'Үнери',
 'notloggedin' => 'Кирбес',
+'nologin' => 'Силерде бүрүткел бижик чок? $1',
 'nologinlink' => 'Бүрүткел бижикти бүдүрери',
 'createaccount' => 'Бүрүткел бижикти бүдүрери',
 'gotaccount' => "Силер бүрүтекнип алдыңар де? '''$1'''.",
@@ -353,6 +364,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'mailmypassword' => 'Меңээ чаа чажыт сөсту чорудаары',
 'accountcreated' => 'Бүрүткел бижикти бүдүрген',
 'accountcreatedtext' => '«$1» деп ажыглакчының бүрүткел бижиини бүдүрген.',
+'login-abort-generic' => 'Системаже таптыг эвес кирип тур силер',
 'loginlanguagelabel' => 'Дыл: $1',
 
 # E-mail sending
@@ -372,6 +384,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'resetpass-temp-password' => 'Түр чажыт сөс:',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Чажыт атты дүжүр',
 'passwordreset-username' => 'Aжыглакчының ады:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-email' => 'Э-чагааның адреси:',
@@ -380,6 +393,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 
 # Special:ChangeEmail
 'changeemail' => 'Э-чагааның адресин өскертири',
+'changeemail-header' => 'Бүрүткел бижиктиң э-чагааның адресин өскертири',
 'changeemail-oldemail' => 'Амгы э-чагааның адреси:',
 'changeemail-newemail' => 'Чаа э-чагааның адреси:',
 'changeemail-none' => '(чок)',
@@ -403,11 +417,12 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'image_tip' => 'Киир туткан файл',
 'media_sample' => 'Чижек.ogg',
 'media_tip' => 'Файлдың холбаазы',
+'hr_tip' => 'Доора шугум (use sparingly)',
 
 # Edit pages
 'summary' => 'Түңнел:',
 'subject' => 'Кол сөс:',
-'minoredit' => 'Бо өскерлиишкин бичии-дир',
+'minoredit' => 'Бо эдилге бичии-дир',
 'watchthis' => 'Бо арынны хайгаараары',
 'savearticle' => 'Арынны шыгжаары',
 'preview' => 'Чижеглей көөрү',
@@ -424,11 +439,14 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 
 The password for this new account can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
 'newarticle' => '(Чаа)',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» деп ажыглакчы is not registered.
+Please check if you want to create/edit this page.',
+'userpage-userdoesnotexist-view' => '«$1» деп ажыглакчы not registered.',
 'note' => "'''Тайылбыр:'''",
 'previewnote' => "'''Бо чүгле шенеп көөрү-дүр.'''
  Бижик ам-даа шыгжатынмаан!",
-'editing' => '«$1» деп арынны өскертип турар',
-'editingsection' => '«$1» деп арынның салбырын өскертип турар',
+'editing' => '«$1» деп арынны эдери',
+'editingsection' => '«$1» деп арынның салбырын эдери',
 'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
 'yourtext' => 'Силерниң сөзүглелиңер',
 'yourdiff' => 'Ылгалдар',
@@ -506,19 +524,21 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
 'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
 'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнелди|түңнелди}} көргүзери',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
-'searchmenu-new' => "'''Бо вики-проектиге «[[:$1]]» арынны чогаадыры'''",
+'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
+'searchmenu-new' => "'''Бо викиде «[[:$1]]» арынны чогаадыры'''",
 'searchhelp-url' => 'Help:Допчузу',
 'searchprofile-articles' => 'үндезин арыннар',
 'searchprofile-project' => 'Төлевилел биле дуза арыннары',
 'searchprofile-images' => 'Мультимедиа',
 'searchprofile-everything' => 'Бүгүде',
-'searchprofile-advanced' => 'делгем',
+'searchprofile-advanced' => 'Ð\9aалбаÑ\80Ñ\82Ñ\8bÑ\80Ñ\8b',
 'searchprofile-articles-tooltip' => '$1 иштинден дилээри',
 'searchprofile-project-tooltip' => '$1 иштинде дилээри',
 'searchprofile-images-tooltip' => 'Файлдар дилээри',
 'searchprofile-everything-tooltip' => 'Шупту арыннардан дилээри (сумележиишкиннерден база)',
 'searchprofile-advanced-tooltip' => 'Айыткан аттар делгемнеринден дилээри',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сөс}})',
+'search-redirect' => '(шигледир $1)',
 'search-section' => '(«$1» деп салбыр)',
 'search-suggest' => 'Силер «$1» деп бодадыңар чадавас',
 'search-interwiki-more' => '(артык)',
@@ -634,7 +654,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бо арынны номчууру',
-'action-edit' => 'бо арынны өскертири',
+'action-edit' => 'бо арынны эдери',
 'action-createpage' => 'арыннарны чогаадыры',
 'action-createtalk' => 'чугаалажырга арыннарны чогаадыры',
 'action-createaccount' => 'бо бүрүткел бижиктерин бүдүрери',
@@ -650,14 +670,16 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchanges-feed-description' => 'Бо агымда викиниң сөөлгү өскерлиишкиннерин көөрү.',
 'recentchanges-label-newpage' => 'Бо өскерлиишкин чаа арынны чогааткан.',
 'recentchanges-label-minor' => 'Бо өскерлиишкин бичии-дир',
+'recentchanges-label-bot' => 'Бо эдилгени робот күүсетти.',
 'recentchanges-label-unpatrolled' => 'Бо өскерлиишкин истенмейн каан',
+'rclistfrom' => 'Starting from $1 чаа өскерлиишкиннерни көргүзери',
 'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
 'rcshowhidebots' => 'Роботтарну $1',
 'rcshowhideliu' => 'Кирер ажыглакчыларны $1',
 'rcshowhideanons' => 'Ат эвес ажыглакчыларны $1',
 'rcshowhidepatr' => 'истээн өскерлиишкиннерни $1',
 'rcshowhidemine' => 'Мээң өскерлиишкинимни $1',
-'rclinks' => ' $2 буруңу хүнде $1 өскерлиишкиннерни көргүзери<br />$3',
+'rclinks' => '$2 хүнде эрткен $1 өскерлиишкиннерни көргүзери<br />$3',
 'diff' => 'ылгал',
 'hist' => 'төөгү',
 'hide' => 'чажырары',
@@ -673,6 +695,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Recent changes linked
 'recentchangeslinked' => 'Хамааржыр өскерлиишкиннер',
 'recentchangeslinked-toolbox' => 'Хамааржыр өскерлиишкиннер',
+'recentchangeslinked-title' => '«$1» деп арынга хамаарыштырган өскерлиишкиннер',
 'recentchangeslinked-page' => 'Арынның ады:',
 
 # Upload
@@ -717,7 +740,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filehist-revert' => 'эгидип тургузары',
 'filehist-current' => 'амгы',
 'filehist-datetime' => 'Ай, Хүн/Шак',
-'filehist-thumb' => 'Бичии чурук',
+'filehist-thumb' => 'Бичии чурумал',
+'filehist-thumbtext' => 'Бичии чурумал for version as of $1',
 'filehist-user' => 'Ажыглакчы',
 'filehist-dimensions' => 'Хемчээлдери',
 'filehist-filesize' => 'Файл хемчээли',
@@ -739,6 +763,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filedelete-reason-otherlist' => 'Өске чылдагаан',
 
 # MIME search
+'mimetype' => 'MIME хевири:',
 'download' => 'алыры',
 
 # Unwatched pages
@@ -793,6 +818,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'longpages' => 'Узун арыннар',
 'protectedpages' => 'Камгалаган арыннар',
 'listusers' => 'Ажыглакчылар даңзызы',
+'usereditcount' => '$1 {{PLURAL:$1|эдилге}}',
 'newpages' => 'Чаа арыннар',
 'newpages-username' => 'Ажыглакчының ады:',
 'ancientpages' => 'Эң эрги арыннар',
@@ -807,7 +833,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'booksources-go' => 'Күүcедири',
 
 # Special:Log
-'specialloguserlabel' => 'Ð\90жÑ\8bглакÑ\87Ñ\8b:',
+'specialloguserlabel' => 'Ð\9aÒ¯Ò¯Ñ\81едикÑ\87и:',
 'speciallogtitlelabel' => 'Target (aтка азы ажыглакчыга):',
 'log' => 'Журналдар',
 
@@ -824,6 +850,9 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Special:Categories
 'categories' => 'Бөлүктер',
 
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'салыышкыннар',
+
 # Special:LinkSearch
 'linksearch' => 'Даштыкы холбааларга дилээри',
 'linksearch-ns' => 'Аттар делгеми:',
@@ -864,6 +893,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'watchthispage' => 'Бо арынны хайгаараары',
 'unwatch' => 'Хайгааравас',
 'unwatchthispage' => 'Бо арынны хайгаарабас',
+'watchlist-details' => 'Not counting talk pages, хайгаарал даңзыңарда {{PLURAL:$1|$1 арын}} бар.',
 'wlshowlast' => 'Сөөлү $1 шак болгаш $2 хүн иштинде $3 көргүзери',
 'watchlist-options' => 'Хайгаарал даңзының эдиглери',
 
@@ -873,6 +903,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 'enotif_newpagetext' => 'Бо чаа арын-дыр.',
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
+'changed' => 'өскертти',
 'enotif_anon_editor' => 'ат эвес ажыглакчы $1',
 
 # Delete
@@ -919,26 +950,28 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'blanknamespace' => '(Кол)',
 
 # Contributions
-'contributions' => 'Ажыглакчыниң немелделери',
-'contributions-title' => '«$1» деп ажыглакчының немелделери',
-'mycontris' => 'Мээң немелделерим',
+'contributions' => 'Ажыглакчыниң салыышкыннары',
+'contributions-title' => '«$1» деп ажыглакчының салыышкыннары',
+'mycontris' => 'Мээң салыышкыннарым',
 'contribsub2' => '$1 ($2)',
 'uctop' => '(баш)',
 'month' => 'Айдан:',
 'year' => 'Чылдан:',
 
-'sp-contributions-newbies' => 'Чүгле Ñ\87аа ÐºÐ¸Ñ\80еÑ\80илеÑ\80ниң Ð½ÐµÐ¼ÐµÐ»Ð´ÐµÐ»ÐµÑ\80ин ÐºÓ©Ñ\80гүзеÑ\80н',
+'sp-contributions-newbies' => 'Чүгле Ñ\87аа ÐºÐµÐ¶Ð¸Ð³Ò¯Ð½Ð½ÐµÑ\80ниң Ñ\81алÑ\8bÑ\8bÑ\88кÑ\8bннаÑ\80Ñ\8bн ÐºÓ©Ñ\80гүзеÑ\80и',
 'sp-contributions-blocklog' => 'кызыгаарлаашкынның журналы',
 'sp-contributions-uploads' => 'киирген чүүлдер',
 'sp-contributions-logs' => 'журналдар',
 'sp-contributions-talk' => 'чугаалажыры',
-'sp-contributions-search' => 'Ð\9dемелделеÑ\80ин дилээри',
+'sp-contributions-search' => 'СалÑ\8bÑ\8bÑ\88кÑ\8bннаÑ\80Ñ\8bн дилээри',
 'sp-contributions-username' => 'ИП-адрес азы ажыглачының ады:',
 'sp-contributions-submit' => 'Дилээри',
 
 # What links here
 'whatlinkshere' => 'Шөлүлгелерни бээр',
+'whatlinkshere-title' => '«$1» деп арынга шөлүтген арыннар',
 'whatlinkshere-page' => 'Арын:',
+'nolinkshere' => "'''[[:$1]]''' деп арынга шөлүтген арыннар чок.",
 'isredirect' => 'шиглидер арын',
 'istemplate' => 'киирткен арыннар',
 'isimage' => 'файлдың холбаазы',
@@ -952,10 +985,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'whatlinkshere-filters' => 'Шүүрлер',
 
 # Block/unblock
+'block' => 'Ажыглакчыны кызыгаарлаары',
 'blockip' => 'Ажыглакчыны кызыгаарлаары',
+'blockip-title' => 'Ажыглакчыны кызыгаарлаары',
+'blockip-legend' => 'Ажыглакчыны кызыгаарлаары',
 'ipadressorusername' => 'ИП-адрес азы aжыглaкчының aды',
 'ipbreason' => 'Чылдагаан:',
 'ipbreasonotherlist' => 'Өске чылдагаан',
+'ipbsubmit' => 'Бо ажыглакчыны кызыгаарлаары',
 'ipbother' => 'Өске шак:',
 'ipboptions' => '2 шак:2 hours,1 хүн:1 day,3 хүн:3 days,1 чеди-хонук:1 week,2 чеди-хонук:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 чыл:1 year,төнмес-батпас:infinite',
 'ipbotheroption' => 'өске',
@@ -968,7 +1005,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'blocklink' => 'кызыгаарлаары',
 'unblocklink' => 'ажыдып хостаар',
 'change-blocklink' => 'кызыгаарлаашкынны өскертири',
-'contribslink' => 'немелделер',
+'contribslink' => 'салыышкыннар',
 'blocklogpage' => 'Кызыгаарлаашкынның журналы',
 'blocklogentry' => ', [[$1]] $2 дургузунда кызыгаарлаттынган: $3',
 'block-log-flags-anononly' => 'чүгле ат эвес ажыглакчылар',
@@ -1007,6 +1044,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Thumbnails
 'thumbnail-more' => 'Улгаттыр',
+'thumbnail_error' => 'Error creating бичии чурумал: $1',
 
 # Special:Import
 'import-comment' => 'Тайылбыр:',
@@ -1018,11 +1056,11 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-pt-userpage' => 'Силерниң ажыглакчы арыныңнар',
 'tooltip-pt-mytalk' => 'Силерниң чугаалажыр арыныңар',
 'tooltip-pt-preferences' => 'Силерниң шилилгеңер',
-'tooltip-pt-mycontris' => 'Силерниң немелделериңерның даңзызы',
+'tooltip-pt-mycontris' => 'Силерниң салыышкыннарыңарның даңзызы',
 'tooltip-pt-login' => 'Маңаа системаже киир бүрүткенип болур, ынчалза-даа ол албан эвес.',
 'tooltip-pt-logout' => 'Үнери',
 'tooltip-ca-talk' => 'Бо арын дугайында чыгаалажыры',
-'tooltip-ca-edit' => 'Силер бо арынны өскертип болур. Шыгжаар мурунда чижеглеп көрем.',
+'tooltip-ca-edit' => 'Силер бо арынны эдип болур. Шыгжаар мурунда чижеглеп көрем.',
 'tooltip-ca-addsection' => 'Чаа салбыр чаяар',
 'tooltip-ca-viewsource' => 'Бо арын камгалаттырган.
 Дөзү кодун көрүп болур силер.',
@@ -1042,10 +1080,11 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-n-recentchanges' => 'Викиниң энир өскерлиишкиннери',
 'tooltip-n-randompage' => 'Душ арынны көөрү',
 'tooltip-n-help' => 'Төлевилелдиң тайылбыры «{{SITENAME}}»',
+'tooltip-t-whatlinkshere' => 'Бүгү маңаа шөлүтген вики арыннарның даңзызы',
 'tooltip-t-recentchangeslinked' => 'Бо арындан шөлүткен өске арыннарның сөөлгү өскерлиишкиннери',
 'tooltip-feed-rss' => 'Бо арының РСС медээ агымы',
 'tooltip-feed-atom' => 'Бо арының Атом медээ агымы',
-'tooltip-t-contributions' => 'Бо ажыглакчының немелделериниң даңзазын көөрү.',
+'tooltip-t-contributions' => 'Бо ажыглакчының салыышкыннарының даңзазын көөрү.',
 'tooltip-t-emailuser' => 'Бо ажыглакчыга э-чагааны чорудаары',
 'tooltip-t-upload' => 'Файлдарны киирери',
 'tooltip-t-specialpages' => 'Шупту тускай арыннар даңзызы',
@@ -1087,11 +1126,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'nextdiff' => 'Артык чаа үндүрери →',
 
 # Media information
+'thumbsize' => 'Бичии чурумалдың хемчээли:',
 'widthheightpage' => '$1x$2, $3 {{PLURAL:$3|арын}}',
-'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME янзызы: $4',
+'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-nohires' => 'Оон улуг хевири чок',
 'svg-long-desc' => 'SVG файл, $1 x $2 пиксел, файл хемчээли: $3',
-'show-big-image' => 'УлÑ\83г Ñ\87Ñ\83Ñ\80Ñ\83к',
+'show-big-image' => 'УлÑ\83г Ñ\87Ñ\83Ñ\80Ñ\83мал',
 'show-big-image-size' => '$1 × $2 пиксел',
 
 # Special:NewFiles
@@ -1100,6 +1142,31 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'noimages' => 'Nothing to see.',
 'ilsubmit' => 'Дилээр',
 
+# 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 хүн}}',
+'ago' => '$1 бурунгаар',
+
+# Metadata
+'metadata' => 'Чурумал дугайында медээлер',
+'metadata-fields' => 'Чурумал дугайында медээлер listed in this message will be included on image page display when the metadata table is collapsed.
+Others will be hidden by default.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
 # EXIF tags
 'exif-imagewidth' => 'Калбаа',
 'exif-imagelength' => 'Бедик',
@@ -1108,21 +1175,38 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'exif-usercomment' => 'Ажыглакчының тайылбырлары',
 'exif-jpegfilecomment' => 'JPEG фалй тайылбыры',
 'exif-headline' => 'Баш ат',
+'exif-languagecode' => 'Дыл',
 'exif-pngfilecomment' => 'PNG фалй тайылбыры',
 'exif-giffilecomment' => 'GIF фалй тайылбыры',
 
 'exif-subjectdistancerange-2' => 'Чоок көрүш',
 'exif-subjectdistancerange-3' => 'ырак көрүш',
 
+'exif-dc-type' => 'Медиа хевири',
+
+'exif-iimcategory-sci' => 'Эртем база техника',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-wea' => 'Агаар',
+
+# External editor support
+'edit-externally' => 'Бо файлды даштыки application-биле эдер',
+
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'шупту',
 'namespacesall' => 'шупту',
 'monthsall' => 'шупту',
 'limitall' => 'шупту',
 
+# Delete conflict
+'recreate' => 'Катап чогаадыры',
+
 # action=purge
 'confirm_purge_button' => 'Чөп',
 
+# action=watch/unwatch
+'confirm-watch-button' => 'Чөп',
+'confirm-unwatch-button' => 'Чөп',
+
 # Multipage image navigation
 'imgmultipageprev' => '← эрткен арын',
 'imgmultipagenext' => 'дараазында арын →',
@@ -1148,7 +1232,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Даңзы арыннарының өскерлиишкиннери',
-'watchlisttools-edit' => 'Хайгаарал даңзыны көөрү болгаш өскертири',
+'watchlisttools-edit' => 'Хайгаарал даңзыны көөрү/эдери',
 'watchlisttools-raw' => 'Чиг хайгаарал даңзыны өскертири',
 
 # Special:Version
@@ -1164,11 +1248,12 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Файлдың ады:',
 'fileduplicatesearch-submit' => 'Дилээри',
-'fileduplicatesearch-info' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81ел<br />Файл Ñ\85емÑ\87Ñ\8dÑ\8dли: $3<br />MIME Ñ\8fнзÑ\8bзÑ\8b: $4',
+'fileduplicatesearch-info' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81ел<br />Файл Ñ\85емÑ\87Ñ\8dÑ\8dли: $3<br />MIME Ñ\85евиÑ\80и: $4',
 
 # Special:SpecialPages
 'specialpages' => 'Тускай арыннар',
 'specialpages-group-other' => 'Өске тускай арыннар',
+'specialpages-group-pages' => 'Арыннарның даңзызы',
 'specialpages-group-pagetools' => 'Арын херекселдери',
 
 # Special:BlankPage
@@ -1179,6 +1264,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tag-filter-submit' => 'Шүүрү',
 'tags-title' => 'Демдеглелдер',
 'tags-edit' => 'өскертири',
+'tags-hitcount' => '$1 {{PLURAL:$1|өскерлиишкин}}',
 
 # Special:ComparePages
 'comparepages' => 'Арыннарны дөмейлеп көөрү',
@@ -1196,4 +1282,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'feedback-message' => 'Чагаа:',
 'feedback-cancel' => 'Соксаары',
 
+# 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|чүс чыл|чүс чыл}}',
+
 );
index 3fbcce3..ed20cdc 100644 (file)
@@ -354,7 +354,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Приховувати патрульовані редагування у списку нових редагувань',
 'tog-newpageshidepatrolled' => 'Приховувати патрульовані сторінки у списку нових сторінок',
 'tog-extendwatchlist' => 'Розширений список спостереження, що містить усі зміни, а не лише останню',
-'tog-usenewrc' => 'Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ð¿Ð¾ÐºÑ\80аÑ\89ений Ñ\81пиÑ\81ок Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н (JavaScript)',
+'tog-usenewrc' => 'Ð\9dа Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85 Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н Ñ\82а Ð² Ñ\81пиÑ\81кÑ\83 Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f Ð³Ñ\80Ñ\83пÑ\83ваÑ\82и Ñ\80едагÑ\83ваннÑ\8f (поÑ\82Ñ\80Ñ\96бен JavaScript)',
 'tog-numberheadings' => 'Автоматично нумерувати заголовки',
 'tog-showtoolbar' => 'Показувати панель інструментів (JavaScript)',
 'tog-editondblclick' => 'Редагувати сторінки при подвійному клацанні мишкою (JavaScript)',
@@ -470,7 +470,7 @@ $messages = array(
 'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
 'category-article-count' => 'Показано $1 {{PLURAL:$1|сторінку|сторінки|сторінок}} цієї категорії (із $2).',
 'category-article-count-limited' => 'У цій категорії {{PLURAL:$1|$1 сторінка|$1 сторінки|$1 сторінок}}.',
-'category-file-count' => 'Показано $1 {{PLURAL:$1|файл|файли|файлів}} цієї категорії (із $2).}}',
+'category-file-count' => 'Показано $1 {{PLURAL:$1|файл|файли|файлів}} цієї категорії (із $2).',
 'category-file-count-limited' => 'У цій категорії {{PLURAL:$1|$1 файл|$1 файли|$1 файлів}}.',
 'listingcontinuesabbrev' => '(прод.)',
 'index-category' => 'Індексовані сторінки',
@@ -712,6 +712,8 @@ $1',
 'cannotdelete' => 'Неможливо вилучити сторінку або файл "$1".
 Можливо, її (його) вже вилучив хтось інший.',
 'cannotdelete-title' => 'Не вдається видалити сторінку «$1»',
+'delete-hook-aborted' => 'Вилучення було скасовано процедурою-перехоплювачем. 
+Ніяких поясненень надано не було.',
 'badtitle' => 'Неприпустима назва',
 'badtitletext' => 'Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.
 Можливо, в назві використовуються недопустимі символи.',
@@ -727,7 +729,7 @@ $1',
 'actionthrottledtext' => 'Як захід боротьби зі спамом, установлено обмеження на багаторазове застосування цієї дії протягом короткого проміжку часу. Будь ласка, повторіть спробу через кілька хвилин.',
 'protectedpagetext' => 'Ця сторінка закрита для редагування.',
 'viewsourcetext' => 'Ви можете переглянути та скопіювати початковий текст цієї сторінки:',
-'viewyourtext' => "Ви можете переглянути або скопіювати вихідний текст '''ваших редагувань''' на цю сторінку:",
+'viewyourtext' => "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
 'protectedinterface' => 'Ця сторінка є частиною інтерфейсу програмного забезпечення і її можуть редагувати лише адміністратори проекту.',
 'editinginterface' => "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки викличуть зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
 'sqlhidden' => '(SQL запит приховано)',
@@ -740,6 +742,10 @@ $1',
 Зазначена наступна причина: ''$2''.",
 'filereadonlyerror' => "Неможливо змінити файл «$1» тому, що файловий архів «$2» перебуває в режимі «лише для читання».
 Адміністратор, що заблокував його, залишив таке пояснення: «''$3''».",
+'invalidtitle-knownnamespace' => 'Неприйнятна назва у просторі імен «$2» і текстом «$3»',
+'invalidtitle-unknownnamespace' => 'Неправильний заголовок з невідомим номером простору імен ($1) і текстом: «$2»',
+'exception-nologin' => 'Не виконано вхід',
+'exception-nologin-text' => 'Ця сторінка чи дія потребує, щоб Ви ввійшли до цієї Вікі.',
 
 # Virus scanner
 'virus-badscanner' => "Помилка налаштування: невідомий сканер вірусів: ''$1''",
@@ -836,6 +842,7 @@ $1',
 'invalidemailaddress' => 'Уведена адреса не може бути прийнята, бо вона не відповідає формату адрес електронної пошти.
 Будь ласка, введіть коректну адресу або залиште поле порожнім.',
 'cannotchangeemail' => 'У цій вікі не можна міняти свою адресу ел. пошти.',
+'emaildisabled' => 'Цей сайт не може надіслати електронні листи.',
 'accountcreated' => 'Обліковий запис створено.',
 'accountcreatedtext' => 'Обліковий запис для $1 створено.',
 'createaccount-title' => 'Створення облікового запису для {{SITENAME}}',
@@ -1117,6 +1124,7 @@ $2
 'edit-no-change' => 'Ваше редагування відхилене, оскільки в тексті не було зроблено змін.',
 'edit-already-exists' => 'Неможливо створити нову сторінку.
 Вона вже існує.',
+'defaultmessagetext' => 'Текст «за замовчування»',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Увага: Ця сторінка містить дуже багато викликів ресурсомістких функцій.
@@ -1132,6 +1140,12 @@ $2
 'parser-template-loop-warning' => 'Виявлена петля у шаблонах: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Перевищене обмеження глибини рекурсії шаблону ($1)',
 'language-converter-depth-warning' => 'Перевищене обмеження глибини мовного конвертора ($1)',
+'node-count-exceeded-category' => 'Сторінки, на яких перевищено лічильник вузлів',
+'node-count-exceeded-warning' => 'Кількість вузлів препроцесора на сторінці перевищила встановлену межу.',
+'expansion-depth-exceeded-category' => 'Сторінки, де перевищено глибину розгортання',
+'expansion-depth-exceeded-warning' => 'На сторінці перевищено межу глибини вкладеності',
+'parser-unstrip-loop-warning' => 'Виявлено незакритий тег (такий, як <pre>)',
+'parser-unstrip-recursion-limit' => 'Перевищено межу вкладеної рекурсії ($1) для парсера.',
 
 # "Undo" feature
 'undo-success' => 'Редагування може бути скасовано.
@@ -1310,7 +1324,7 @@ $1",
 
 # Diffs
 'history-title' => '$1: Історія змін',
-'difference-title' => '$1: Відмінності між версіями',
+'difference-title' => 'Відмінності між версіями «$1»',
 'difference-title-multipage' => 'Різниця між сторінками «$1» та «$2»',
 'difference-multipage' => '(Різниця між сторінками)',
 'lineno' => 'Рядок $1:',
@@ -1406,6 +1420,7 @@ $1",
 'prefs-beta' => 'Бета-функції',
 'prefs-datetime' => 'Дата й час',
 'prefs-labs' => 'Експериментальні функції',
+'prefs-user-pages' => 'Сторінки користувача',
 'prefs-personal' => 'Особисті дані',
 'prefs-rc' => 'Сторінка останніх редагувань',
 'prefs-watchlist' => 'Список спостереження',
@@ -1894,6 +1909,7 @@ $1',
 'backend-fail-internal' => 'Сталася невідома помилка у сховищі рушія "$1".',
 'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
 'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
+'backend-fail-usable' => 'Файл $1 не може бути записано через недостатні повноваження чи відсутність каталогів (контейнерів).',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Не вдалося підключитися до бази даних журналу для сховища «$1».',
@@ -2018,6 +2034,10 @@ $1',
 Додаткову інформацію можна знайти на [$2 сторінці опису файлу].',
 'sharedupload-desc-here' => 'Цей файл з $1 і може використовуватися в інших проектах.
 Далі наведена інформація з його [$2 сторінки опису].',
+'sharedupload-desc-edit' => 'Цей файл з $1 і може використовуватися в інших проектах. 
+Його опис можна відредагувати [$2 на відповідній сторінці тут].',
+'sharedupload-desc-create' => 'Цей файл з $1 і може використовуватися в інших проектах. 
+Його опис можна зробити [$2 на відповідній сторінці тут].',
 'filepage-nofile' => 'Не існує файлу з такою назвою.',
 'filepage-nofile-link' => 'Не існує файлу з такою назвою, але ви можете [$1 завантажити його].',
 'uploadnewversion-linktext' => 'Завантажити нову версію цього файлу',
@@ -2153,11 +2173,11 @@ $1',
 'wantedfiletext-nocat' => 'Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>.',
 'wantedtemplates' => 'Необхідні шаблони',
 'mostlinked' => 'Сторінки, на які найбільше посилань',
-'mostlinkedcategories' => 'Ð\9aаÑ\82егоÑ\80Ñ\96Ñ\97, Ð½Ð° Ñ\8fкÑ\96 Ð½Ð°Ð¹Ð±Ñ\96лÑ\8cÑ\88е Ð¿Ð¾Ñ\81иланÑ\8c',
+'mostlinkedcategories' => 'Ð\9dайбÑ\96лÑ\8cÑ\88Ñ\96 ÐºÐ°Ñ\82егоÑ\80Ñ\96Ñ\97',
 'mostlinkedtemplates' => 'Найуживаніші шаблони',
 'mostcategories' => 'Статті з найбільшою кількістю категорій',
 'mostimages' => 'Найуживаніші зображення',
-'mostrevisions' => 'СÑ\82аÑ\82Ñ\82Ñ\96 Ð· Ð½Ð°Ð¹Ð±Ñ\96лÑ\8cÑ\88оÑ\8e ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8e Ñ\80едакÑ\86Ñ\96й',
+'mostrevisions' => 'СÑ\82аÑ\82Ñ\82Ñ\96 Ð· Ð½Ð°Ð¹Ð±Ñ\96лÑ\8cÑ\88оÑ\8e ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8e Ñ\80едагÑ\83ванÑ\8c',
 'prefixindex' => 'Покажчик за початком назв сторінок',
 'prefixindex-namespace' => 'Усі сторінки з префіксом (простір назв $1)',
 'shortpages' => 'Короткі статті',
@@ -2211,6 +2231,7 @@ $1',
 Ви можете відфільтрувати результати за типом журналу, іменем користувача (враховується регістр) або зазначеною сторінкою (також враховується регістр).',
 'logempty' => 'В журналі немає подібних записів.',
 'log-title-wildcard' => 'Знайти заголовки, що починаються з цих символів',
+'showhideselectedlogentries' => 'Показати/приховати виділені записи журналу',
 
 # Special:AllPages
 'allpages' => 'Усі сторінки',
@@ -2231,7 +2252,9 @@ $1',
 'allpages-hide-redirects' => 'Сховати перенаправлення',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Ви переглядаєте кешовану версію сторінки, яка могла бути оновлена $1 тому.',
 'cachedspecial-viewing-cached-ts' => 'Ви переглядаєте кешовану версію сторінки, яка могла втратити актуальність',
+'cachedspecial-refresh-now' => 'Показати останні',
 
 # Special:Categories
 'categories' => 'Категорії',
@@ -2414,7 +2437,7 @@ $UNWATCHURL
 'deletepage' => 'Вилучити сторінку',
 'confirm' => 'Підтвердження',
 'excontent' => 'зміст: «$1»',
-'excontentauthor' => 'змÑ\96Ñ\81Ñ\82 Ð±Ñ\83в: Â«$1» (Ñ\94диним Ð°Ð²Ñ\82оÑ\80ом Ð±Ñ\83в [[Special:Contributions/$2|$2]])',
+'excontentauthor' => 'змÑ\96Ñ\81Ñ\82 Ð±Ñ\83в: Â«$1» (Ñ\94диний Ð°Ð²Ñ\82оÑ\80: [[Special:Contributions/$2|$2]])',
 'exbeforeblank' => 'зміст до очистки: «$1»',
 'exblank' => 'стаття була порожньою',
 'delete-confirm' => 'Вилучення «$1»',
@@ -2593,8 +2616,8 @@ $1',
 'contribsub2' => 'Внесок $1 ($2)',
 'nocontribs' => 'Редагувань, що задовольняють заданим умовам не знайдено.',
 'uctop' => ' (остання)',
-'month' => 'Ð\92Ñ\96д Ð¼Ñ\96Ñ\81Ñ\8fÑ\86Ñ\8f (Ñ\96 Ñ\80анÑ\96Ñ\88е):',
-'year' => 'Ð\92Ñ\96д Ñ\80окÑ\83 (Ñ\96 Ñ\80анÑ\96Ñ\88е):',
+'month' => 'Ð\94о Ð¼Ñ\96Ñ\81Ñ\8fÑ\86Ñ\8f (вклÑ\8eÑ\87но):',
+'year' => 'Ð\94о Ñ\80окÑ\83 (вклÑ\8eÑ\87но):',
 
 'sp-contributions-newbies' => 'Показати лише внесок з нових облікових записів',
 'sp-contributions-newbies-sub' => 'Внесок новачків',
@@ -3126,6 +3149,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Очистка спаму',
 'spam_reverting' => 'Відкинути до останньої версії, що не містить посилання на $1',
 'spam_blanking' => 'Всі версії містять посилання на $1, очистка',
+'spam_deleting' => 'Все версії, що містили посилання на $1, вилучаються',
 
 # Info page
 'pageinfo-title' => 'Інформація про " $1 "',
@@ -4007,6 +4031,8 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-software' => 'Установлене програмне забезпечення',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версія',
+'version-entrypoints' => 'URL-адреса точки входу',
+'version-entrypoints-header-entrypoint' => 'Точка входу',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -4160,7 +4186,7 @@ MediaWiki поширюється в надії, що вона буде кори
 
 # API errors
 'api-error-badaccess-groups' => 'Вам не дозволено завантажувати файли до цього вікіпроекту.',
-'api-error-badtoken' => 'Ð\92нÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ð³Ð°Ð½Ð¸Ð¹ Ð·Ð½Ð°Ðº.',
+'api-error-badtoken' => 'Ð\92нÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐºÐ¾Ñ\80екÑ\82ний Ñ\82окен.',
 'api-error-copyuploaddisabled' => 'На цьому сервері вимкнене завантаження за URL-адресою.',
 'api-error-duplicate' => 'Вже {{PLURAL:$1|існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
 'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|був|були}} вилучені.',
@@ -4169,6 +4195,8 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-empty-file' => 'Файл, який ви надіслали, порожній.',
 'api-error-emptypage' => 'Створення нової порожньої сторінки неприпустиме.',
 'api-error-fetchfileerror' => 'Внутрішня помилка: щось пішло не так під час отримання файлу.',
+'api-error-fileexists-forbidden' => 'Файл з назвою «$1» вже існує і його не можна перезаписати.',
+'api-error-fileexists-shared-forbidden' => 'Файл з назвою «$1» вже існує в сховищі спільних файлів, його не можна перезаписати.',
 'api-error-file-too-large' => 'Файл, який ви надіслали, завеликий.',
 'api-error-filename-tooshort' => 'Назва файлу занадто коротка.',
 'api-error-filetype-banned' => 'Цей тип файлів заборонений.',
@@ -4207,4 +4235,6 @@ MediaWiki поширюється в надії, що вона буде кори
 'duration-centuries' => '$1 {{PLURAL:$1|століття|століття|століть}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не вдалося одержати блокування на сервері $1.',
 );
index 068a010..21ff98b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Uzbek (Oʻzbek)
+/** Uzbek (Oʻzbekcha)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -50,6 +50,10 @@ $namespaceAliases = array(
 $linkTrail = '/^([a-zʻʼ“»]+)(.*)$/sDu';
 
 $messages = array(
+# User preference toggles
+'tog-oldsig' => 'Mavjud imzo:',
+'tog-fancysig' => 'Imzoni wikimatn sifatida qara (avtomatik ishoratsiz)',
+
 'underline-always' => 'Har doim',
 'underline-never' => 'Hech qachon',
 
@@ -420,6 +424,10 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 # Recent changes
 'recentchanges' => 'Yangi o‘zgartirishlar',
 'recentchanges-summary' => "Bu sahifada siz oxirgi o'zgartirishlarni ko'rishingiz mumkin.",
+'recentchanges-label-newpage' => 'Bu tahrir yangi sahifani yaratdi',
+'recentchanges-label-minor' => 'Bu kichik tahrir',
+'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
+'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmadi',
 'rcnote' => "Quyida $5, $4ga koʻra oxirgi {{PLURAL:$2|kun|'''$2''' kun}} davomida sodir boʻlgan {{PLURAL:$1|'''1''' oʻzgartirish|'''$1''' oʻzgartirishlar}} koʻrsatilgan.",
 'rclistfrom' => "$1dan boshlab yangi o'zgartirishlarni ko'rsat.",
 'rcshowhideminor' => 'Kichik tahrirlarni $1',
index 6d0f94a..73c51f3 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -3347,28 +3347,28 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
 'sqlite-no-fts' => '$1 sensa la possibilità de riserca completa nel testo',
 
 # New logging system
-'logentry-delete-delete' => '$1 ga scanselà la pajina $3',
+'logentry-delete-delete' => '$1 ga scansełà ła pajina $3',
 'logentry-delete-restore' => '$1 ga ripristinà "$3"',
-'logentry-delete-event' => '$1 ga canbià la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
-'logentry-delete-revision' => '$1 ga canbià la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de la pajina"$3": $4',
-'logentry-delete-event-legacy' => '$1 ga canbià la vixibilità de calche asion del registro de "$3"',
-'logentry-delete-revision-legacy' => '$1 ga canbià la vixibilità par le revixion de la pajina $3',
+'logentry-delete-event' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
+'logentry-delete-revision' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|na revixion|$5 revixion}} de ła pajina"$3": $4',
+'logentry-delete-event-legacy' => '$1 ga canbià ła vixibiłità de calche asion del registro de "$3"',
+'logentry-delete-revision-legacy' => '$1 ga canbià ła vixibiłità par łe revixion de ła pajina $3',
 'logentry-suppress-delete' => '$1 ga sconto la pajina "$3"',
 'logentry-suppress-event' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
 'logentry-suppress-revision' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de "$3": $4',
 'logentry-suppress-event-legacy' => '$1 ga canbià de scondón la vixibilità de calche asion del registro de "$3"',
 'logentry-suppress-revision-legacy' => '$1 ga canbià de scondón la vixibilità de calche revixion de $3',
 'revdelete-content-hid' => 'contegnùo sconto',
-'revdelete-summary-hid' => 'ogeto de la modifega sconto',
+'revdelete-summary-hid' => 'ogeto de ła modifega sconto',
 'revdelete-uname-hid' => 'nome utente sconto',
 'revdelete-content-unhid' => 'contegnùo ripristinà',
 'revdelete-summary-unhid' => 'ogeto ripristinà',
 'revdelete-uname-unhid' => 'nome utente ripristinà',
 'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
 'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
-'logentry-move-move' => '$1 ga spostà la pajina $3 a $4',
-'logentry-move-move-noredirect' => '$1 ga spostà la pajina $3 a $4 sensa metare un rimando',
-'logentry-move-move_redir' => '$1 ga spostà la pajina $3 a $4 metendo un rimando',
+'logentry-move-move' => '$1 ga spostà ła pajina $3 a $4',
+'logentry-move-move-noredirect' => '$1 ga spostà ła pajina $3 a $4 sensa metare un rimando',
+'logentry-move-move_redir' => '$1 ga spostà ła pajina $3 a $4 lasiando un rimando',
 'logentry-move-move_redir-noredirect' => '$1 ga spostà la pajina $3 a $4 al posto de un rimando sensa metare un rimando',
 'logentry-patrol-patrol' => '$1 ga segnà la revixion $4 de la pajina $3 come verifegà',
 'logentry-patrol-patrol-auto' => '$1 ga segnà automategamente la revixion $4 de la pajina $3 come verifegà',
index f067bcb..547bea9 100644 (file)
@@ -301,7 +301,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ẩn sửa đổi đã tuần tra trong trang thay đổi gần đây',
 'tog-newpageshidepatrolled' => 'Ẩn trang đã tuần tra trong danh sách các trang mới',
 'tog-extendwatchlist' => 'Mở rộng danh sách theo dõi để hiển thị tất cả các thay đổi, chứ không chỉ các thay đổi gần đây',
-'tog-usenewrc' => 'Sử dụng Thay đổi gần đây nâng cao (cần JavaScript)',
+'tog-usenewrc' => 'Thu gọn các thay đổi theo trang trong thay đổi gần đây và danh sách theo dõi (cần JavaScript)',
 'tog-numberheadings' => 'Tự động đánh số các đề mục',
 'tog-showtoolbar' => 'Hiển thị thanh định dạng (JavaScript)',
 'tog-editondblclick' => 'Nhấn đúp để sửa đổi trang (JavaScript)',
@@ -457,7 +457,7 @@ $messages = array(
 'vector-view-create' => 'Tạo',
 'vector-view-edit' => 'Sửa',
 'vector-view-history' => 'Xem lịch sử',
-'vector-view-view' => 'Xem',
+'vector-view-view' => 'Đọc',
 'vector-view-viewsource' => 'Xem mã nguồn',
 'actions' => 'Tác vụ',
 'namespaces' => 'Không gian tên',
@@ -652,6 +652,8 @@ Xin hãy báo nó cho một [[Special:ListUsers/sysop|bảo quản viên]], tron
 'badarticleerror' => 'Không thể thực hiện được tác vụ như thế tại trang này.',
 'cannotdelete' => 'Không thể xóa trang hay tập tin “$1”. Có thể nó đã bị ai đó xóa rồi.',
 'cannotdelete-title' => 'Không thể xóa trang “$1”',
+'delete-hook-aborted' => 'Một phần bổ trợ phần mềm đã bỏ qua việc xóa này.
+Không có lý do nào được đưa ra.',
 'badtitle' => 'Tựa trang sai',
 'badtitletext' => 'Tựa trang yêu cầu không đúng, rỗng, hoặc là một liên kết ngôn ngữ hoặc liên kết wiki sai. Nó có thể chứa một hoặc nhiều ký tự mà tựa trang không thể sử dụng.',
 'perfcached' => 'Dữ liệu sau được lấy từ bộ nhớ đệm và có thể đã lỗi thời. Tối đa có sẵn {{PLURAL:$1|một kết quả|$1 kết quả}} trong bộ nhớ đệm.',
@@ -683,6 +685,8 @@ Lý do được cung cấp là ''$2''.",
 Bảo quản viên khóa nó đưa lý do là: “$3”.',
 'invalidtitle-knownnamespace' => 'Tựa trang không hợp lệ có không gian tên “$2” và văn bản “$3”',
 'invalidtitle-unknownnamespace' => 'Tựa trang không hợp lệ có không gian tên số $1 không rõ và văn bản “$2”',
+'exception-nologin' => 'Chưa đăng nhập',
+'exception-nologin-text' => 'Bạn cần phải đăng nhập để truy cập trang hoặc thực hiện tác vụ này tại wiki này.',
 
 # Virus scanner
 'virus-badscanner' => "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
@@ -3041,7 +3045,8 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'spamprotectionmatch' => 'Nội dung sau đây đã kích hoạt bộ lọc thư rác: $1',
 'spambot_username' => 'Bộ dọn dẹp thư rác MediaWiki',
 'spam_reverting' => 'Lùi lại đến phiên bản cuối không chứa liên kết đến $1',
-'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1, đang tẩy trống',
+'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1; tẩy trống',
+'spam_deleting' => 'Tất cả các phiên bản có liên kết đến $1; xóa',
 
 # Info page
 'pageinfo-title' => 'Thông tin về “$1”',
@@ -4017,6 +4022,8 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'api-error-empty-file' => 'Bạn đã gửi tập tin rỗng.',
 'api-error-emptypage' => 'Không cho phép tạo mới các trang rỗng.',
 'api-error-fetchfileerror' => 'Lỗi nội bộ: Việc tải tập tin bị thất bại.',
+'api-error-fileexists-forbidden' => 'Một tập tin với tên “$1” đã tồn tại; không thể ghi đè nó.',
+'api-error-fileexists-shared-forbidden' => 'Một tập tin với tên “$1” đã tồn tại ở kho tập tin dùng chung; không thể ghi đè nó.',
 'api-error-file-too-large' => 'Bạn đã gửi tập tin lớn quá hạn.',
 'api-error-filename-tooshort' => 'Tên tập tin ngắn quá.',
 'api-error-filetype-banned' => 'Kiểu tập tin này đã bị cấm.',
@@ -4055,4 +4062,6 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'duration-centuries' => '$1 thế kỷ',
 'duration-millennia' => '$1 thiên niên kỷ',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Không thể lấy các chìa khóa trên máy chủ $1.',
 );
index 176c3f1..0185aeb 100644 (file)
@@ -10,6 +10,7 @@
  * @author 2Q
  * @author Andrijko Z.
  * @author Comp1089
+ * @author Paivud
  * @author Trần Nguyễn Minh Huy
  */
 
@@ -17,582 +18,783 @@ $fallback = 'fi';
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Gạch chân liên kết:',
+'tog-underline' => 'Link underlining',
+
+'underline-always' => 'Alõzii',
+'underline-never' => 'Eb kõzniid',
 
 # Dates
-'january'       => 'janvaari',
-'february'      => 'fevraaľi',
-'march'         => 'martti',
-'april'         => 'aprilli',
-'may_long'      => 'mai',
-'june'          => 'juńi',
-'july'          => 'juľi',
-'august'        => 'augusti',
-'september'     => 'senťaabri',
-'october'       => 'okťaabri',
-'november'      => 'nojaabri',
-'december'      => 'dekaabri',
-'january-gen'   => 'janvaarii',
-'february-gen'  => 'fevraalii',
-'march-gen'     => 'martii',
-'april-gen'     => 'aprillii',
-'may-gen'       => 'maja',
-'june-gen'      => 'junii',
-'july-gen'      => 'juľii',
-'august-gen'    => 'augustii',
+'sunday' => 'Nätilpäivä',
+'monday' => 'Esmezarci',
+'tuesday' => 'Tõizarci',
+'wednesday' => 'Kõlmõzpäivä',
+'thursday' => 'Nelläzpäivä',
+'friday' => 'Viďďezpäivä',
+'saturday' => 'Laukopäivä',
+'sun' => 'Nät',
+'mon' => 'Esm',
+'tue' => 'Tõi',
+'wed' => 'Kõl',
+'thu' => 'Nel',
+'fri' => 'Viď',
+'sat' => 'Lau',
+'january' => 'janvaari',
+'february' => 'fevraaľi',
+'march' => 'martti',
+'april' => 'aprilli',
+'may_long' => 'mai',
+'june' => 'juńi',
+'july' => 'juľi',
+'august' => 'augusti',
+'september' => 'senťaabri',
+'october' => 'okťaabri',
+'november' => 'nojaabri',
+'december' => 'dekaabri',
+'january-gen' => 'janvaarii',
+'february-gen' => 'fevraalii',
+'march-gen' => 'martii',
+'april-gen' => 'aprillii',
+'may-gen' => 'maja',
+'june-gen' => 'junii',
+'july-gen' => 'juľii',
+'august-gen' => 'augustii',
 'september-gen' => 'senťaabrii',
-'october-gen'   => 'okťaabrii',
-'november-gen'  => 'nojaabrii',
-'december-gen'  => 'dekaabrii',
-'jan'           => 'janvaari',
-'feb'           => 'fevraali',
-'mar'           => 'martti',
-'apr'           => 'aprilli',
-'may'           => 'mai',
-'jun'           => 'juni',
-'jul'           => 'juľi',
-'aug'           => 'augusti',
-'sep'           => 'senťaabri',
-'oct'           => 'okťaabri',
-'nov'           => 'nojaabri',
-'dec'           => 'dekaabri',
+'october-gen' => 'okťaabrii',
+'november-gen' => 'nojaabrii',
+'december-gen' => 'dekaabrii',
+'jan' => 'janvaari',
+'feb' => 'fevraali',
+'mar' => 'martti',
+'apr' => 'aprilli',
+'may' => 'mai',
+'jun' => 'juni',
+'jul' => 'juľi',
+'aug' => 'augusti',
+'sep' => 'senťaabri',
+'oct' => 'okťaabri',
+'nov' => 'nojaabri',
+'dec' => 'dekaabri',
 
 # Categories related messages
-'pagecategories'         => '{{PLURAL:$1|Gruppa|Gruppad}}',
-'category_header'        => 'Tšuľľed, kummad õvad gruppaz "$1"',
-'subcategories'          => 'Alagruppad',
-'hidden-categories'      => '{{PLURAL:$1|Salautõttu gruppa|Salautõtud gruppad}}',
-'category-subcat-count'  => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava alagruppa.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 alagruppaa kuuluvad}} sihee gruppaa. Alagruppaďďe tšisla gruppaza on $2.}}',
-'category-article-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava tšültši.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 tšültšiä kuuluvad}} sihee gruppaa. Tšültšije tšisla gruppaza on $2.}}',
+'pagecategories' => '{{PLURAL:$1|Gruppa|Gruppad}}',
+'category_header' => 'Cuľľed, kummad õvad gruppaz "$1"',
+'subcategories' => 'Alagruppad',
+'category-media-header' => 'Mediafailid, kummad õvad gruppaz "$1"',
+'category-empty' => "''Kase gruppa on tühjä.''",
+'hidden-categories' => '{{PLURAL:$1|Salautõttu gruppa|Salautõtud gruppad}}',
+'category-subcat-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava alagruppa.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 alagruppaa kuuluvad}} sihee gruppaa. Alagruppaďďe cisla gruppaza on $2.}}',
+'category-article-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava cülci.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 tšültšiä kuuluvad}} sihee gruppaa. Cülcije cisla gruppaza on $2.}}',
 'listingcontinuesabbrev' => 'ladvaub',
 
-'newwindow'  => '(avaub uuvvõza akkunaza)',
-'cancel'     => 'Otmeńoit',
-'mytalk'     => 'Minu juttu',
+'about' => 'Täätühsed',
+'newwindow' => '(avaub uuvvõza akkunaza)',
+'cancel' => 'Otmeńoit',
+'mypage' => 'Minu cülci',
+'mytalk' => 'Minu juttu',
 'navigation' => 'Valittsõmin',
+'and' => '&#32;ja',
 
 # Cologne Blue skin
 'qbfind' => 'Etsi',
-
-'errorpagetitle'   => 'Vika',
-'returnto'         => 'Mee takaz tšüľľelle $1.',
-'tagline'          => 'Lähe: {{SITENAME}}',
-'help'             => 'Api',
-'search'           => 'Ettsü',
-'searchbutton'     => 'Etsi',
-'searcharticle'    => 'Mee',
-'history'          => 'Tšüľľee istori',
-'history_short'    => 'Istori',
-'printableversion' => 'Petšatoittõva verzija',
-'permalink'        => 'Postojannoi linkki',
-'edit'             => 'Muuttaa',
-'create'           => 'Loo tšültši',
-'editthispage'     => 'Muutu sitä tšültšiä',
-'delete'           => 'Pühi',
-'protect'          => 'Varjaa',
-'protect_change'   => 'muutu',
-'newpage'          => 'Uusi tšültši',
-'talkpage'         => 'Juttu senessä tšüľľessä',
+'qbedit' => 'Muuttaa',
+'qbpageoptions' => 'Kase cülci',
+'qbspecialpages' => 'Osoobenoid cüľľed',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Vassõn teema',
+'vector-action-delete' => 'Pühi',
+'vector-action-move' => 'Liikut',
+'vector-action-protect' => 'Varjaa',
+'vector-view-create' => 'Loo cülci',
+'vector-view-edit' => 'Muuttaa',
+'vector-view-history' => 'Istori',
+'vector-view-view' => 'Lukõa',
+'vector-view-viewsource' => 'Lähtekoodi',
+'actions' => 'Tekod',
+'namespaces' => 'Nimiruumid',
+
+'errorpagetitle' => 'Vika',
+'returnto' => 'Mee takaz cüľľelle $1.',
+'tagline' => 'Lähe: {{SITENAME}}',
+'help' => 'Api',
+'search' => 'Ettsü',
+'searchbutton' => 'Etsi',
+'go' => 'Mee',
+'searcharticle' => 'Mee',
+'history' => 'Cüľľee istori',
+'history_short' => 'Istori',
+'printableversion' => 'Pecatoittõva verzija',
+'permalink' => 'Postojannoi linkki',
+'view' => 'Prestavleńńõd',
+'edit' => 'Muuttaa',
+'create' => 'Loo cülci',
+'editthispage' => 'Muutu sitä cülciä',
+'delete' => 'Pühi',
+'deletethispage' => 'Pühi kase cülci',
+'protect' => 'Varjaa',
+'protect_change' => 'muutu',
+'newpage' => 'Uusi cülci',
+'talkpage' => 'Juttu senessä cüľľessä',
 'talkpagelinktext' => 'Juttu',
-'personaltools'    => 'Õmad tööriisõd',
-'talk'             => 'Juttu',
-'views'            => 'Prestavleńńõd',
-'toolbox'          => 'Tööriisõd',
-'otherlanguages'   => 'Muilla tšeelillä',
-'redirectedfrom'   => '(Mešaitõttu tšüľľeltä $1)',
-'redirectpagesub'  => 'Mešaituztšültši',
-'lastmodifiedat'   => 'Viimõin muutuz: $2 $1',
-'jumpto'           => 'Hüppä:',
+'specialpage' => 'Osoobennoi cülci',
+'personaltools' => 'Õmad tööriisõd',
+'talk' => 'Juttu',
+'views' => 'Prestavleńńõd',
+'toolbox' => 'Tööriisõd',
+'otherlanguages' => 'Muilla ceelillä',
+'redirectedfrom' => '(Mešaitõttu cüľľeltä $1)',
+'redirectpagesub' => 'Mešaituzcülci',
+'lastmodifiedat' => 'Viimõin muutuz: $2 $1',
+'jumpto' => 'Hüppä:',
 'jumptonavigation' => 'valittsõmisiisõ',
-'jumptosearch'     => 'ettsüse',
+'jumptosearch' => 'ettsüse',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite'            => 'Tääteja {{GRAMMAR:elative|{{SITENAME}}}}',
-'aboutpage'            => 'Project:Täätühsed',
-'copyright'            => 'Sisälto on $1 litsentsii mukka svobodnoi.',
-'copyrightpage'        => '{{ns:project}}:Kopiraitti',
-'disclaimers'          => 'Tšeeltümin vassamizõõ',
-'disclaimerpage'       => 'Project:Tšeeltümin vassamizõõ',
-'edithelp'             => 'Muutuzavid',
-'edithelppage'         => 'Help:Kui muuttaa tšültšiä',
-'helppage'             => 'Help:Sisälto',
-'mainpage'             => 'Esitšültši',
+'aboutsite' => 'Tääteja {{GRAMMAR:elative|{{SITENAME}}}}',
+'aboutpage' => 'Project:Täätühsed',
+'copyright' => 'Sisälto on $1 litsentsii mukka svobodnoi.',
+'copyrightpage' => '{{ns:project}}:Kopiraitti',
+'currentevents' => 'Nücüizõd noovosťi',
+'currentevents-url' => 'Project:Nücüizõd noovosťi',
+'disclaimers' => 'Ceeltümin vassamizõõ',
+'disclaimerpage' => 'Project:Ceeltümin vassamizõõ',
+'edithelp' => 'Muutuzavid',
+'edithelppage' => 'Help:Kui muuttaa cülciä',
+'helppage' => 'Help:Sisälto',
+'mainpage' => 'Esicülci',
 'mainpage-description' => 'Esicülci',
-'privacy'              => 'Salaštrahuituz',
-'privacypage'          => 'Project:Salaštrahuituz',
+'portal' => 'Foorum',
+'portal-url' => 'Project:Foorum',
+'privacy' => 'Salaštrahuituz',
+'privacypage' => 'Project:Salaštrahuituz',
 
-'badaccess' => 'Lupa eeltistü',
+'badaccess' => 'Lupa ceeltistü',
 
-'retrievedfrom'       => 'Jältšinnü adresissa "$1"',
-'youhavenewmessages'  => 'Teill on $1 ($2).',
-'newmessageslink'     => 'Uusiit zapiskoit',
+'ok' => 'OK',
+'retrievedfrom' => 'Jälcinnü adresissa "$1"',
+'youhavenewmessages' => 'Teill on $1 ($2).',
+'newmessageslink' => 'Uusiit zapiskoit',
 'newmessagesdifflink' => 'viimõin muutuz',
-'editsection'         => 'muuttaa',
-'editold'             => 'muuttaa',
-'editlink'            => 'muuttaa',
-'viewsourcelink'      => 'lähtekoodi',
-'editsectionhint'     => 'Muutta alajakkoa $1',
-'toc'                 => 'Sisälto',
-'showtoc'             => 'näüt väľľää',
-'hidetoc'             => 'salauta',
-'site-rss-feed'       => '$1-RSS-söötte',
-'site-atom-feed'      => '$1-Atom-söötte',
-'page-rss-feed'       => '"$1" RSS-söötte',
-'page-atom-feed'      => '"$1" Atom-söötte',
-'red-link-title'      => '$1 (tšültšiä ebõõ)',
+'editsection' => 'muuttaa',
+'editold' => 'muuttaa',
+'viewsourceold' => 'lähtekoodi',
+'editlink' => 'muuttaa',
+'viewsourcelink' => 'lähtekoodi',
+'editsectionhint' => 'Muutta alajakkoa $1',
+'toc' => 'Sisälto',
+'showtoc' => 'näüt väľľää',
+'hidetoc' => 'salauta',
+'site-rss-feed' => '$1-RSS-söötte',
+'site-atom-feed' => '$1-Atom-söötte',
+'page-rss-feed' => '"$1" RSS-söötte',
+'page-atom-feed' => '"$1" Atom-söötte',
+'red-link-title' => '$1 (cülciä ebõõ)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main'     => 'Artikkeli',
-'nstab-user'     => 'Tšäüttijätšültši',
-'nstab-special'  => 'Osoobennoi tšültši',
-'nstab-project'  => 'Projektitšültši',
-'nstab-image'    => 'Faili',
+'nstab-main' => 'Artikkeli',
+'nstab-user' => 'Cäüttijäcülci',
+'nstab-special' => 'Osoobennoi cülci',
+'nstab-project' => 'Projekticülci',
+'nstab-image' => 'Faili',
+'nstab-mediawiki' => 'Ilmottamin',
 'nstab-template' => 'Šablooni',
 'nstab-category' => 'Gruppa',
 
 # General errors
-'missing-article'    => 'Tšüľľee sisältoa eb löütännü täätöbaazassa: $1 $2.
+'error' => 'Vika',
+'missing-article' => 'Cüľľee sisältoa eb löütännü täätöbaazassa: $1 $2.
 
-Ussassi se johtub ustaŕeloi sravńoi- vai istorilinkissä rootšittulõõ tšüľľelee.
+Ussassi se johtub ustaŕeloi sravńoi- vai istorilinkissä roocittulõõ cüľľelee.
 
-Kui tšüsümüssessä ebõõ rootšittu tšültši, võib õlla õlõttõ löütännü ošipkaa sistemalla. Õõ nii üvä ilmuttõma tšüľľee adressia vikii [[Special:ListUsers/sysop|praviťeľalõõ]].',
+Kui cüsümüssessä ebõõ roocittu cülci, võib õlla õlõttõ löütännü ošipkaa sistemalla. Õõ nii üvä ilmuttõma cüľľee adressia vikii [[Special:ListUsers/sysop|praviťeľalõõ]].',
 'missingarticle-rev' => '(verzija: $1)',
-'badtitletext'       => 'Tšüzüttü artikkelizagolofkka õli vilpilliin, tühjä vai väärii linkitettü tšeelijeväliin vai vikiiväliin linkki.',
-'viewsource'         => 'Lähtekoodi',
+'badtitletext' => 'Cüzüttü artikkelizagolofkka õli vilpilliin, tühjä vai väärii linkitettü ceelijeväliin vai vikiiväliin linkki.',
+'viewsource' => 'Lähtekoodi',
 
 # Login and logout pages
-'yourname'                => 'Tšäüttijänimi:',
-'yourpassword'            => 'Salasõna',
-'remembermypassword'      => 'Mäleht minuu (enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'login'                   => 'Tširjut süäme',
-'nav-login-createaccount' => 'Tširjut süäme vai registriiroit tšäüttijässi',
-'userlogin'               => 'Tširjut süäme',
-'logout'                  => 'Tširjut uloz',
-'userlogout'              => 'Tširjut uloz',
-'nologin'                 => "Kui Teille veel ebõõ tšäüttijänimi, '''$1'''.",
-'nologinlink'             => 'võitta loovva luguu',
-'mailmypassword'          => 'Lähet uusi salasõna elektropoštiikaa',
+'yourname' => 'Cäüttijänimi:',
+'yourpassword' => 'Salasõna',
+'remembermypassword' => 'Mäleht minuu (enintään $1 {{PLURAL:$1|päivä|päivää}})',
+'login' => 'Cirjut süäme',
+'nav-login-createaccount' => 'Cirjut süäme vai registriiroit cäüttijässi',
+'userlogin' => 'Cirjut süäme',
+'userloginnocreate' => 'Cirjut süäme',
+'logout' => 'Cirjut uloz',
+'userlogout' => 'Cirjut uloz',
+'nologin' => "Kui Teille veel ebõõ cäüttijänimi, '''$1'''.",
+'nologinlink' => 'võitta loovva luguu',
+'gotaccountlink' => 'Cirjut süäme',
+'createaccountreason' => 'Süü:',
+'mailmypassword' => 'Lähet uusi salasõna elektropoštiikaa',
+'loginlanguagelabel' => 'Ceeli: $1',
+
+# Change password dialog
+'resetpass-submit-cancel' => 'Otmeńoit',
+
+# Special:PasswordReset
+'passwordreset-username' => 'Cäüttijänimi:',
+
+# Special:ChangeEmail
+'changeemail-newemail' => 'Vassõn e-mail:',
+'changeemail-cancel' => 'Otmeńoit',
 
 # Edit page toolbar
-'bold_sample'     => 'Pimmiä teksti',
-'bold_tip'        => 'Pimmiä teksti',
-'italic_sample'   => 'Kursiivoi teksti',
-'italic_tip'      => 'Kursiivi',
-'link_sample'     => 'Linkki',
-'link_tip'        => 'Sisipooliin linkki',
-'extlink_sample'  => 'http://www.example.com linki nimi',
-'extlink_tip'     => 'Eräpooliin linkki (mäleht http:// prefiksi)',
+'bold_sample' => 'Pimmiä teksti',
+'bold_tip' => 'Pimmiä teksti',
+'italic_sample' => 'Kursiivoi teksti',
+'italic_tip' => 'Kursiivi',
+'link_sample' => 'Linkki',
+'link_tip' => 'Sisipooliin linkki',
+'extlink_sample' => 'http://www.example.com linki nimi',
+'extlink_tip' => 'Eräpooliin linkki (mäleht http:// prefiksi)',
 'headline_sample' => 'Zagolofkka-teksti',
-'headline_tip'    => 'Zagolofkka',
-'nowiki_sample'   => 'Lissä formattimatoo teksti tänne',
-'nowiki_tip'      => 'Ignoriiroit viki formatti',
-'image_tip'       => 'Kuva',
-'media_tip'       => 'Faililinkki',
-'sig_tip'         => 'Alatširjutuz aikamerkikaa',
-'hr_tip'          => 'Gorizontalnoi viiru',
+'headline_tip' => 'Zagolofkka',
+'nowiki_sample' => 'Lissä formattimatoo teksti tänne',
+'nowiki_tip' => 'Ignoriiroit viki formatti',
+'image_tip' => 'Kuva',
+'media_tip' => 'Faililinkki',
+'sig_tip' => 'Alacirjutuz aikamerkikaa',
+'hr_tip' => 'Gorizontalnoi viiru',
 
 # Edit pages
-'summary'                          => 'Turvotuz:',
-'subject'                          => 'Teema:',
-'minoredit'                        => 'Kase on peeni muutuz',
-'watchthis'                        => 'Lissä kattsõspiiskaa',
-'savearticle'                      => 'Salvo tšültši',
-'preview'                          => 'Prestavleńńa',
-'showpreview'                      => 'Näüt prestavleńńa',
-'showdiff'                         => 'Näüt muutussõd',
-'anoneditwarning'                  => 'Että õlõ süämme tširjutõnnu. Teďďee IP-adressi tširjuttanes sene tšüľľee muutuzistorisõ.',
-'summary-preview'                  => 'Turvotuhsõ prestavleńńa',
-'newarticle'                       => '(Uusi)',
-'newarticletext'                   => 'Sitä tšültšiä veel ebõõ.
-Võitta loovva tšüľľee tširjuttamall alla õlõvasõõ tilaa. Kui että taho loovva [[{{MediaWiki:Helppage}}|tšültšiä]], menka takaz Web-brauzeraa "back"-napuukaa.',
-'noarticletext'                    => '{{GRAMMAR:inessive|{{SITENAME}}}} ebõõ sene nimissä tšültšiä.
-* Võid [[Special:Search/{{PAGENAME}}|ettsiä tšüľľee nimellä]] muilta tšüľľeltä.
-* Võid tširjuttõma uuvvõõ tšüľľee <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} {{PAGENAME}}]</span>.',
-'previewnote'                      => "'''Kase on ainult prestavleńńa! Tšültšiä ebõõ veel salvotõttu!'''",
-'editing'                          => 'Muutun $1',
-'editingsection'                   => 'Muuttõmizõll on õsa tšüľľess $1',
-'copyrightwarning'                 => "Kõik {{SITENAME}}'lle formittu saatšid katsotaa julkaistussi $2 -litsentsi mukka ($1). Kui että taho, jot Teďďee tširjutussa muutõtaa armõttomassi ja svobodno tšävvää uuvvõllõõ, elä tširjuttõga.<br />Toož, Te luppattõ, jot tširjutittä Teďďee teksti ize, vai kopiiroizitta slobodnoissa tšüľľessä.<br />'''ELÄ TŠÄÜTTEGA TETŠEJÄÕIKUSÕKAA OĎĎÕLTUIT MAŤERIIT ILMA LUPPA!'''",
-'templatesused'                    => 'Sell tšüľľell {{PLURAL:$1|tšäütetüd šabloonid}}:',
-'templatesusedpreview'             => '{{PLURAL:$1|Šabloonid}} sellä prestavleńńalla:',
-'template-protected'               => '(oďďõttu)',
-'template-semiprotected'           => '(varjõttu anonüümeilt ja uusilt tšäüttijilt)',
-'hiddencategories'                 => 'Kase tšültši kuulub {{PLURAL:$1|vahtiaavaa salautõttuu gruppaa|vahtiaavii salautõttuisõõ gruppoisõõ}}:',
+'summary' => 'Turvotuz:',
+'subject' => 'Teema:',
+'minoredit' => 'Kase on peeni muutuz',
+'watchthis' => 'Lissä kattsõspiiskaa',
+'savearticle' => 'Salvo cülci',
+'preview' => 'Prestavleńńa',
+'showpreview' => 'Näüt prestavleńńa',
+'showdiff' => 'Näüt muutussõd',
+'anoneditwarning' => 'Että õlõ süämme cirjutõnnu. Teďďee IP-adressi cirjuttanes sene cüľľee muutuzistorisõ.',
+'summary-preview' => 'Turvotuhsõ prestavleńńa',
+'loginreqlink' => 'cirjut süäme',
+'newarticle' => '(Uusi)',
+'newarticletext' => 'Sitä cülciä veel ebõõ.
+Võitta loovva cüľľee cirjuttamall alla õlõvasõõ tilaa. Kui että taho loovva [[{{MediaWiki:Helppage}}|cülciä]], menka takaz Web-brauzeraa "back"-napuukaa.',
+'noarticletext' => '{{GRAMMAR:inessive|{{SITENAME}}}} ebõõ sene nimissä cülciä.
+* Võid [[Special:Search/{{PAGENAME}}|ettsiä cüľľee nimellä]] muilta cüľľeltä.
+* Võid cirjuttõma uuvvõõ cüľľee <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} {{PAGENAME}}]</span>.',
+'previewnote' => "'''Kase on ainult prestavleńńa.''' Cülciä ebõõ veel salvotõttu!",
+'editing' => 'Muutun $1',
+'editingsection' => 'Muuttõmizõll on õsa cüľľess $1',
+'copyrightwarning' => "Kõik {{SITENAME}}'lle formittu saacid katsotaa julkaistussi $2 -litsentsi mukka ($1). Kui että taho, jot Teďďee cirjutussa muutõtaa armõttomassi ja svobodno cävvää uuvvõllõõ, elä cirjuttõga.<br />Toož, Te luppattõ, jot cirjutittä Teďďee teksti ize, vai kopiiroizitta slobodnoissa cüľľessä.<br />'''ELÄ CÄÜTTEGA TECEJÄÕIKUSÕKAA OĎĎÕLTUIT MAŤERIIT ILMA LUPPA!'''",
+'templatesused' => 'Sell cüľľell {{PLURAL:$1|cäütetüd šabloonid}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Šabloonid}} sellä prestavleńńalla:',
+'template-protected' => '(oďďõttu)',
+'template-semiprotected' => '(varjõttu anonüümeilt ja uusilt cäüttijilt)',
+'hiddencategories' => 'Kase cülci kuulub {{PLURAL:$1|vahtiaavaa salautõttuu gruppaa|vahtiaavii salautõttuisõõ gruppoisõõ}}:',
 'permissionserrorstext-withaction' => 'Teill ebõõ luppa $2 {{PLURAL:$1|vahtiaavass süüss|vahtiaaviss süiss}} peräss:',
-'moveddeleted-notice'              => "Kase tšültši on pühittü. Alla on sene tšüľľee pühi'istori.",
+'moveddeleted-notice' => "Kase cülci on pühittü. Alla on sene cüľľee pühi'istori.",
 
 # History pages
-'viewpagelogs'           => 'Näüt sene tšüľľee logid',
-'currentrev-asof'        => 'Nütšüin verzija $1',
-'revisionasof'           => 'Verzija $1',
-'previousrevision'       => '← Vanõpi verzija',
-'nextrevision'           => 'Uuvvõpi verzija →',
-'currentrevisionlink'    => 'Nütšüin verzija',
-'cur'                    => 'nütš.',
-'last'                   => 'entin',
-'histlegend'             => "Merkid: ({{int:cur}}) = vahõ nütšüizese verzijaa, ({{int:last}}) = vahõ entiizese verzijaa, '''{{int:minoreditletter}}''' = peeni muutuz",
+'viewpagelogs' => 'Näüt sene cüľľee logid',
+'currentrev' => 'Nücüin verzija',
+'currentrev-asof' => 'Nücüin verzija $1',
+'revisionasof' => 'Verzija $1',
+'previousrevision' => '← Vanõpi verzija',
+'nextrevision' => 'Uuvvõpi verzija →',
+'currentrevisionlink' => 'Nücüin verzija',
+'cur' => 'nüc.',
+'last' => 'entin',
+'histlegend' => "Merkid: ({{int:cur}}) = vahõ nütšüizese verzijaa, ({{int:last}}) = vahõ entiizese verzijaa, '''{{int:minoreditletter}}''' = peeni muutuz",
 'history-fieldset-title' => 'Ľistvoit muutuzistoria',
-'histfirst'              => 'Kõikkõa varaizõpid',
-'histlast'               => 'Kõikkõa viimõizõpid',
+'histfirst' => 'Kõikkõa varaizõpid',
+'histlast' => 'Kõikkõa viimõizõpid',
 
 # Revision deletion
-'rev-delundel'   => 'näüt/salauta',
-'revdel-restore' => 'muutu nätšüvüss',
+'rev-delundel' => 'näüt/salauta',
+'rev-showdeleted' => 'näüt väľľää',
+'revdelete-show-file-submit' => 'Daa',
+'revdelete-radio-set' => 'Daa',
+'revdelete-radio-unset' => 'Eb',
+'revdelete-log' => 'Süü:',
+'revdel-restore' => 'muutu näcüvüss',
+'pagehist' => 'Cüľľee istori',
+'revdelete-reasonotherlist' => 'Muu süü',
+
+# History merging
+'mergehistory-reason' => 'Süü:',
 
 # Merge log
 'revertmerge' => 'Kummut ühesüz',
 
 # Diffs
-'history-title'           => 'Tšüľľee $1 muutuzistori',
-'difference'              => '(Vahõd verzijoďďee väliz)',
-'lineno'                  => 'Viiru $1:',
+'history-title' => 'Cüľľee $1 muutuzistori',
+'lineno' => 'Viiru $1:',
 'compareselectedversions' => 'Võrrõõ valitsõttuit verzijoit',
-'editundo'                => 'kummut',
+'editundo' => 'kummut',
 
 # Search results
-'searchresults'             => 'Etsüü tulõmuhsõd',
-'searchresults-title'       => 'Etsü tulõmuhsõd ettsüsõnalõõ "$1"',
-'searchresulttext'          => 'Lisäsoobšeńńad ettsimizessä on [[{{MediaWiki:Helppage}}|praavilatšüľľellä]].',
-'searchsubtitle'            => 'Etsizid fraaza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kõikõd tšüľľed, kummad alkõa fraazaakaa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõikõd tšüľľed näütteväd tšüľľelee "$1"]])',
-'searchsubtitleinvalid'     => "Ettsizittä: '''$1'''",
-'notitlematches'            => 'Eb löütännü miltäiss tšültšiä sene ettsüsõnaaka',
-'notextmatches'             => 'Ettsisõnaa eb löütünnü tšüľľee tekstiissä',
-'prevn'                     => '{{PLURAL:$1|edellinen|$1 entiiss}}',
-'nextn'                     => '{{PLURAL:$1|$1}} vahtiaava →',
-'viewprevnext'              => 'Näüt ($1 {{int:pipe-separator}} $2) ($3)',
-'search-result-size'        => '$1 ({{PLURAL:$2|1 sõna|$2 sõna}})',
-'search-redirect'           => '(mešaituz $1)',
-'search-section'            => '(alajako $1)',
-'search-suggest'            => 'Tähetidko: $1',
-'search-interwiki-caption'  => 'Sõzarprojektid',
-'search-interwiki-default'  => 'tulõmuhsõd $1:',
-'search-interwiki-more'     => '(lisä)',
-'search-mwsuggest-enabled'  => 'tarittsõmisijõkaa',
+'searchresults' => 'Etsüü tulõmuhsõd',
+'searchresults-title' => 'Etsü tulõmuhsõd ettsüsõnalõõ "$1"',
+'searchresulttext' => 'Lisäsoobšeńńad ettsimizessä on [[{{MediaWiki:Helppage}}|praavilacüľľellä]].',
+'searchsubtitle' => 'Etsizid fraaza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kõikõd cüľľed, kummad alkõa fraazaakaa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõikõd cüľľed näütteväd cüľľelee "$1"]])',
+'searchsubtitleinvalid' => "Ettsizittä: '''$1'''",
+'notitlematches' => 'Eb löütännü miltäiss cülciä sene ettsüsõnaaka',
+'notextmatches' => 'Ettsisõnaa eb löütünnü cüľľee tekstiissä',
+'prevn' => '{{PLURAL:$1|edellinen|$1 entiiss}}',
+'nextn' => '{{PLURAL:$1|$1}} vahtiaava →',
+'viewprevnext' => 'Näüt ($1 {{int:pipe-separator}} $2) ($3)',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Kõik',
+'searchprofile-project-tooltip' => 'Etsi "$1":az',
+'search-result-size' => '$1 ({{PLURAL:$2|1 sõna|$2 sõna}})',
+'search-redirect' => '(mešaituz $1)',
+'search-section' => '(alajako $1)',
+'search-suggest' => 'Tähetidko: $1',
+'search-interwiki-caption' => 'Sõzarprojektid',
+'search-interwiki-default' => 'tulõmuhsõd $1:',
+'search-interwiki-more' => '(lisä)',
+'search-mwsuggest-enabled' => 'tarittsõmisijõkaa',
 'search-mwsuggest-disabled' => 'tarittsõmizõtta',
-'nonefound'                 => "'''Zametšańńa''': Ettsü etsib anult osiss nimiruumii.
-Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taas juttutšüľľeekaa, sablooniikaa, jne.), vai tarvittõga nimiruumi niku prefiksi.",
-'powersearch'               => 'Etenennü ettsü',
-'powersearch-legend'        => 'Etenennü ettsü',
-'powersearch-ns'            => 'Etsi nimiruumõssa:',
-'powersearch-redir'         => 'Spiiska mešaitussijõ',
-'powersearch-field'         => 'Etsi',
+'searchall' => 'kõik',
+'nonefound' => "'''Zametšańńa''': Ettsü etsib anult osiss nimiruumii.
+Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taas juttucüľľeekaa, sablooniikaa, jne.), vai tarvittõga nimiruumi niku prefiksi.",
+'powersearch' => 'Etenennü ettsü',
+'powersearch-legend' => 'Etenennü ettsü',
+'powersearch-ns' => 'Etsi nimiruumõssa:',
+'powersearch-redir' => 'Spiiska mešaitussijõ',
+'powersearch-field' => 'Etsi',
+
+# Quickbar
+'qbsettings-none' => 'Eb õõ',
 
 # Preferences page
-'preferences'   => 'Koozid',
+'preferences' => 'Koozid',
 'mypreferences' => 'Minu koozid',
+'skin-preview' => 'Prestavleńńa',
+'prefs-datetime' => 'Kuupäivä i aika',
+'prefs-user-pages' => 'Cäüttijäcülcid',
+'prefs-rc' => 'Viimõizõd muutussõd',
+'searchresultshead' => 'Etsi',
+'timezoneregion-africa' => 'Afrikka',
+'timezoneregion-america' => 'Ameerika',
+'timezoneregion-asia' => 'Aazija',
+'timezoneregion-australia' => 'Avstraaľija',
+'timezoneregion-europe' => 'Evrooppaa',
+'prefs-files' => 'Failid',
+'youremail' => 'E-mail:',
+'username' => 'Cäüttijänimi:',
+'yourrealname' => 'Minu nimi:',
+'yourlanguage' => 'Ceeli:',
+'yourgender' => 'Sukupooli',
+'gender-male' => 'Mehin',
+'gender-female' => 'Naisin',
+'email' => 'E-mail',
+
+# User rights
+'userrights-reason' => 'Süü:',
 
 # Groups
+'group-user' => 'Сäüttijäd',
 'group-sysop' => 'Praviťeľad',
 
+'group-user-member' => 'cäüttijä',
+
+'grouppage-user' => '{{ns:project}}:Сäüttijäd',
 'grouppage-sysop' => '{{ns:project}}:Praviťeľad',
 
 # User rights log
-'rightslog' => 'Tšäütteminõikuslogi',
+'rightslog' => 'Cäütteminõikuslogi',
+'rightsnone' => '(eb õõ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-edit' => 'muutu sitä tšültšiä',
+'action-edit' => 'muutu sitä cülciä',
 
 # Recent changes
-'nchanges'                       => '$1 {{PLURAL:$1|muutuz|muutussõd}}',
-'recentchanges'                  => 'Viimõizõd muutussõd',
-'recentchanges-legend'           => 'Viimass muutuhsõss valimizõd',
+'nchanges' => '$1 {{PLURAL:$1|muutuz|muutussõd}}',
+'recentchanges' => 'Viimõizõd muutussõd',
+'recentchanges-legend' => 'Viimass muutuhsõss valimizõd',
 'recentchanges-feed-description' => 'Sell sivull võib vahtia uutizijõ muutuhsiit.',
-'rcnote'                         => 'Alla on {{PLURAL:$1|ühsi muutuz|viimeiziit $1 muutussiit}} viimeize {{PLURAL:$2|ühee päivää|$2 päivää}}, $4 $5.',
-'rclistfrom'                     => 'Näüt uuvvõd muutuhsõd $1 alguss',
-'rcshowhideminor'                => '$1 peened muutussõd',
-'rcshowhidebots'                 => '$1 botid',
-'rcshowhideliu'                  => '$1 süäme tširjutõnnud tšäüttijäd',
-'rcshowhideanons'                => '$1 anonüümid tšäüttijäd',
-'rcshowhidemine'                 => '$1 õmad muutussõd',
-'rclinks'                        => 'Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.<br />$3',
-'diff'                           => 'vahõ',
-'hist'                           => 'istori',
-'hide'                           => 'Salauta',
-'show'                           => 'Näüt väľľää',
-'minoreditletter'                => 'p',
-'newpageletter'                  => 'U',
-'boteditletter'                  => 'b',
-'rc-enhanced-expand'             => 'Näüt detaaľiit (JavaScript on tarviz)',
-'rc-enhanced-hide'               => 'Salauta detaaľiit',
+'recentchanges-label-minor' => 'Kase on peeni muutuz',
+'rcnote' => 'Alla on {{PLURAL:$1|ühsi muutuz|viimeiziit $1 muutussiit}} viimeize {{PLURAL:$2|ühee päivää|$2 päivää}}, $4 $5.',
+'rclistfrom' => 'Näüt uuvvõd muutuhsõd $1 alguss',
+'rcshowhideminor' => '$1 peened muutussõd',
+'rcshowhidebots' => '$1 botid',
+'rcshowhideliu' => '$1 süäme cirjutõnnud cäüttijäd',
+'rcshowhideanons' => '$1 anonüümid cäüttijäd',
+'rcshowhidemine' => '$1 õmad muutussõd',
+'rclinks' => 'Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.<br />$3',
+'diff' => 'vahõ',
+'hist' => 'istori',
+'hide' => 'Salauta',
+'show' => 'Näüt väľľää',
+'minoreditletter' => 'p',
+'newpageletter' => 'U',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Näüt detaaľiit (JavaScript on tarviz)',
+'rc-enhanced-hide' => 'Salauta detaaľiit',
 
 # Recent changes linked
-'recentchangeslinked'         => 'Sukulaizõd muutussõd.',
-'recentchangeslinked-title'   => 'Tšüľľelt $1 linkitettüďďe tšültšije muutuhsõd.',
-'recentchangeslinked-summary' => "Kase osoobennoi tšültši näütteb muutusõd tšültšillä, kummalõõ on seltä tšüľľeltä näüteltü.
-Tšüľľed, kummad õmad teďďellä [[Special:Watchlist|kattsõspiizgalla]] on tširjuttõnnu '''pimmiässi'''.",
-'recentchangeslinked-page'    => 'Tšüľľee nimi:',
-'recentchangeslinked-to'      => 'Näüt muutuhsõd tšültšiisee, kummall on linkki annõttuu tšültšesee',
+'recentchangeslinked' => 'Sukulaizõd muutussõd.',
+'recentchangeslinked-feed' => 'Sukulaizõd muutussõd',
+'recentchangeslinked-toolbox' => 'Sukulaizõd muutussõd',
+'recentchangeslinked-title' => 'Cüľľelt $1 linkitettüďďe cülcije muutuhsõd.',
+'recentchangeslinked-summary' => "Kase osoobennoi cülci näütteb muutusõd cülcillä, kummalõõ on seltä cüľľeltä näüteltü.
+Cüľľed, kummad õmad teďďellä [[Special:Watchlist|kattsõspiizgalla]] on cirjuttõnnu '''pimmiässi'''.",
+'recentchangeslinked-page' => 'Cüľľee nimi:',
+'recentchangeslinked-to' => 'Näüt muutuhsõd cülciisee, kummall on linkki annõttuu cülcesee',
 
 # Upload
-'upload'        => 'Laajõngoit failia ülez',
+'upload' => 'Laajõngoit failia ülez',
+'uploadbtn' => 'Laajõngoit failia ülez',
 'uploadlogpage' => 'Faililogi',
+'filename' => 'Failinimi',
+'filedesc' => 'Turvotuz',
+'fileuploadsummary' => 'Turvotuz:',
 'uploadedimage' => '"[[$1]]" on laajõngoitõttu ülez',
 
+# Special:ListFiles
+'imgfile' => 'faili',
+'listfiles_thumb' => 'Peenikuva',
+'listfiles_date' => 'Kuupäivä',
+'listfiles_name' => 'Nimi',
+'listfiles_user' => 'Сäüttijä',
+
 # File description page
-'filehist'                  => 'Failii istori',
-'filehist-help'             => 'Štšolkoittõga Päivätšisla/Tšelloaika näe miltäin faili õli sell aiga pilkall.',
-'filehist-current'          => 'nütšüin',
-'filehist-datetime'         => 'Päivätšisla/Tšelloaika',
-'filehist-thumb'            => 'Peenikuva',
-'filehist-thumbtext'        => 'Peenikuva $1 verzijalõõ',
-'filehist-user'             => 'Tšäüttijä',
-'filehist-dimensions'       => 'Mitad',
-'filehist-comment'          => 'Zametšańńa',
-'imagelinks'                => 'Faililinkid',
-'linkstoimage'              => 'Selle kuvallõ {{PLURAL:$1|näütteeb kase tšültši|näütteväd kaned tšüľľed}}:',
-'sharedupload'              => "Kase faili on $1'lt ja muud projektõd saavad tšäüttää sitä.",
+'file-anchor-link' => 'Faili',
+'filehist' => 'Failii istori',
+'filehist-help' => 'Šcolkoittõga Päiväcisla/Celloaika näe miltäin faili õli sell aiga pilkall.',
+'filehist-deleteone' => 'pühi',
+'filehist-revert' => 'kummut',
+'filehist-current' => 'nücüin',
+'filehist-datetime' => 'Päiväсisla/Сelloaika',
+'filehist-thumb' => 'Peenikuva',
+'filehist-thumbtext' => 'Peenikuva $1 verzijalõõ',
+'filehist-user' => 'Сäüttijä',
+'filehist-dimensions' => 'Mitad',
+'filehist-comment' => 'Zametšańńa',
+'imagelinks' => 'Faililinkid',
+'linkstoimage' => 'Selle kuvallõ {{PLURAL:$1|näütteeb kase сülсi|näütteväd kaned сüľľed}}:',
+'sharedupload' => 'Kase faili on $1:lt ja muud projektõd saavad cäüttää sitä.',
 'uploadnewversion-linktext' => 'Laajõngoit uusi verzija seness failiss ülez',
 
+# File reversion
+'filerevert-comment' => 'Süü:',
+'filerevert-submit' => 'Kummut',
+
+# File deletion
+'filedelete-comment' => 'Süü:',
+'filedelete-submit' => 'Pühi',
+
+# Random page
+'randompage' => 'Satunnain lehocülci',
+
 # Statistics
 'statistics' => 'Staťisťikka',
+'statistics-pages' => 'Cülcid',
+
+'brokenredirects-edit' => 'muuttaa',
+'brokenredirects-delete' => 'pühi',
+
+'withoutinterwiki-submit' => 'Näüt väľľää',
 
 # Miscellaneous special pages
-'nbytes'        => '$1 {{PLURAL:$1|baitti|baittia}}',
-'nmembers'      => '$1 {{PLURAL:$1|selttsilain|selttsilaizõd}}',
-'prefixindex'   => 'Kõik tšüľľed prefiksiikaa',
-'newpages'      => 'Uuvvõd tšüľľed',
-'move'          => 'Liikut',
-'movethispage'  => 'Liikut kase tšültši',
+'nbytes' => '$1 {{PLURAL:$1|baitti|baittia}}',
+'nmembers' => '$1 {{PLURAL:$1|selttsilain|selttsilaizõd}}',
+'prefixindex' => 'Kõik cüľľed prefiksiikaa',
+'newpages' => 'Uuvvõd cüľľed',
+'newpages-username' => 'Cäüttijänimi:',
+'move' => 'Liikut',
+'movethispage' => 'Liikut kase cülci',
 'pager-newer-n' => '{{PLURAL:$1|uuvvõpi 1|uuvvõpad $1}}',
 'pager-older-n' => '{{PLURAL:$1|vanöpi 1|vanõpad $1}}',
 
 # Book sources
-'booksources'               => 'TÅ¡irjalähed',
-'booksources-search-legend' => 'Etsi irjalähteit',
-'booksources-go'            => 'Mee',
+'booksources' => 'Сirjalähed',
+'booksources-search-legend' => 'Etsi сirjalähteit',
+'booksources-go' => 'Mee',
 
 # Special:Log
 'log' => 'Logid',
 
 # Special:AllPages
-'allpages'       => 'Kõik artikkelid',
+'allpages' => 'Kõik artikkelid',
 'alphaindexline' => '$1 ... $2',
-'prevpage'       => 'Entin tšültši ($1)',
-'allpagesfrom'   => 'Tšüľľelt',
-'allpagesto'     => 'Tšüľľessaa',
-'allarticles'    => 'Kõikõd tšüľľed',
+'prevpage' => 'Entin сülсi ($1)',
+'allpagesfrom' => 'Сüľľelt',
+'allpagesto' => 'Сüľľessaa',
+'allarticles' => 'Kõikõd cüľľed',
 'allpagessubmit' => 'Mee',
 
+# Special:Categories
+'categories' => 'Gruppad',
+
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'Minu avittamizõd',
+
 # Special:LinkSearch
 'linksearch' => 'Ulkopoolizõd linkid',
+'linksearch-ns' => 'Nimiruumi:',
+'linksearch-ok' => 'Etsi',
+
+# Special:ListUsers
+'listusers-submit' => 'Näüt väľľää',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Uuvvõd äüttijäd',
+'newuserlogpage' => 'Uuvvõd cäüttijäd',
 
 # Special:ListGroupRights
 'listgrouprights-members' => '(selttsilainspiiska)',
 
 # E-mail user
-'emailuser' => 'Lähettega elektropoštia selle tšäüttijälle',
+'emailuser' => 'Lähettega elektropoštia selle cäüttijälle',
+'emailusername' => 'Cäüttijänimi:',
+'emailmessage' => 'Ilmottamin:',
 
 # Watchlist
-'watchlist'         => 'Minu kattsõspiiska',
-'mywatchlist'       => 'Minu kattsõspiiska',
-'addedwatchtext'    => "Tšültši \"[[:\$1]]\" on lisättü Teďďee [[Special:Watchlist|kattsospiizgallõ]].
-Tšültšese ja sene juttutšültšese tehäväd tulõvaizõd muutuhsõd leeväd tšisloitõtud siäll.
-Tšültši leeb tširjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall viimeizije muutuhsijõ]].",
-'removedwatchtext'  => 'Tšültši "[[:$1]]" on pantu [[Special:Watchlist|teďďee kattsõspiizgalt]] poiz.',
-'watch'             => 'Katso',
-'watchthispage'     => 'Katso sitä tšültšiä',
-'unwatch'           => 'Lõpõt kattsõõmin',
-'watchlist-details' => 'Kattsõspiizgall on {{PLURAL:$1|$1 tšültši|$1 tšültšiä}} (ilma juttutšültšiit).',
-'wlshowlast'        => 'Näüt viimeized $1 tunnia vai $2 päivää $3',
+'watchlist' => 'Minu kattsõspiiska',
+'mywatchlist' => 'Minu kattsõspiiska',
+'addedwatchtext' => "Cülci \"[[:\$1]]\" on lisättü Teďďee [[Special:Watchlist|kattsospiizgallõ]].
+Cülcese ja sene juttucülcese tehäväd tulõvaizõd muutuhsõd leeväd cisloitõtud siäll.
+Cülci leeb cirjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall viimeizije muutuhsijõ]].",
+'removedwatchtext' => 'Cülci "[[:$1]]" on pantu [[Special:Watchlist|teďďee kattsõspiizgalt]] poiz.',
+'watch' => 'Katso',
+'watchthispage' => 'Katso sitä cülciä',
+'unwatch' => 'Lõpõt kattsõõmin',
+'watchlist-details' => 'Kattsõspiizgall on {{PLURAL:$1|$1 cülci|$1 cülciä}} (ilma juttucülciit).',
+'wlshowlast' => 'Näüt viimeized $1 tunnia vai $2 päivää $3',
 'watchlist-options' => 'Kattsõspiizgaa valimizõd',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching'   => 'Kattsõõn…',
+'watching' => 'Kattsõõn…',
 'unwatching' => 'Kattsõõmizõõ lõpõttõmin…',
 
+'enotif_newpagetext' => 'Kase on vassõn cülci.',
+
 # Delete
-'deletepage'            => 'Pühi tšültši',
-'confirmdeletetext'     => 'Õlõtta pühtšimässä tšüľľee vai failii ja kõigõ sene istorii. Õlka nii üvä, kõvissõga jot tahotta sitä tehä, jot saatta arvoa sledstvijäd jot pühtšimüz on [[{{MediaWiki:Policy-url}}|poolissaa]] mukka.',
-'actioncomplete'        => 'Töö tehtü lõppuu',
-'deletedtext'           => '"$1" on pühittü.
-Tšüľľellä $2 on spiiska viimeiziss pühtšimühsiiss.',
-'dellogpage'            => 'Pühitüd tšüľľed',
-'deletecomment'         => 'Süü',
-'deleteotherreason'     => 'Muu vai lisä süü',
+'deletepage' => 'Pühi cülci',
+'delete-legend' => 'Pühi',
+'confirmdeletetext' => 'Õlõtta pühcimässä cüľľee vai failii ja kõigõ sene istorii. Õlka nii üvä, kõvissõga jot tahotta sitä tehä, jot saatta arvoa sledstvijäd jot pühcimüz on [[{{MediaWiki:Policy-url}}|poolissaa]] mukka.',
+'actioncomplete' => 'Töö tehtü lõppuu',
+'deletedtext' => '"$1" on pühittü.
+Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
+'dellogpage' => 'Pühitüd cüľľed',
+'deletecomment' => 'Süü',
+'deleteotherreason' => 'Muu vai lisä süü',
 'deletereasonotherlist' => 'Muu süü',
 
 # Rollback
+'rollback_short' => 'Vääntega',
 'rollbacklink' => 'vääntega',
 
 # Protect
-'protectlogpage'              => 'Varjõtud tšüľľed',
-'protectedarticle'            => '"[[$1]]" on nüd varjõttu',
-'modifiedarticleprotection'   => 'muuti tšüľľee [[$1]] varjauztasoa',
-'protectcomment'              => 'Süü',
-'protectexpiry'               => 'Lõpub:',
-'protect_expiry_invalid'      => 'Lõppuaika eb kõlpa.',
-'protect_expiry_old'          => 'Lõppuaika on meneväz.',
-'protect-text'                => "Võitta kattsoa ja muuttaa tšüľľee '''$1''' lupoit.",
-'protect-locked-access'       => "Että või muuttaa tšüľľee varjauztasoa. All on tšüľľee \"'''\$1'''\" nütšüized varjauztazod:",
-'protect-cascadeon'           => 'Kase tšültši on varjõttu, ku on sisällütettü all {{PLURAL:$1|õlõvaa jadgotussi varjõttuhõõ tšültšese|õlõvii jadgotussi varjõttuisõ tšültšiise}}. Võitta muuttaa sene tšüľľee varjuztasoa, mutta se eb vaikuta jadgotõttuu varjuhsiise.',
-'protect-default'             => 'Salli kõik tšäüttijäd',
-'protect-fallback'            => 'Treebuit $1-õikuz',
-'protect-level-autoconfirmed' => 'Piättee uuvvõd ja anonüümed tšäüttijäd',
-'protect-level-sysop'         => 'Ainult praviťeľad',
-'protect-summary-cascade'     => 'jadgotõltu',
-'protect-expiring'            => 'lõpub $1',
-'protect-cascade'             => 'Varjaa jõka tšültši, kumpa on tänne tšültšesee sisällütennü.',
-'protect-cantedit'            => 'Että või muuttaa tšüľľee varjauztasoa, ku tüü että saa muuttaa tšültšiä.',
-'restriction-type'            => 'Rajauz',
-'restriction-level'           => 'Varjauz',
+'protectlogpage' => 'Varjõtud cüľľed',
+'protectedarticle' => '"[[$1]]" on nüd varjõttu',
+'modifiedarticleprotection' => 'muuti cüľľee [[$1]] varjauztasoa',
+'protectcomment' => 'Süü',
+'protectexpiry' => 'Lõpub:',
+'protect_expiry_invalid' => 'Lõppuaika eb kõlpa.',
+'protect_expiry_old' => 'Lõppuaika on meneväz.',
+'protect-text' => "Võitta kattsoa ja muuttaa cüľľee '''$1''' lupoit.",
+'protect-locked-access' => "Että või muuttaa cüľľee varjauztasoa. All on cüľľee \"'''\$1'''\" nücüized varjauztazod:",
+'protect-cascadeon' => 'Kase cülci on varjõttu, ku on sisällütettü all {{PLURAL:$1|õlõvaa jadgotussi varjõttuhõõ cülcese|õlõvii jadgotussi varjõttuisõ cülciise}}. Võitta muuttaa sene cüľľee varjuztasoa, mutta se eb vaikuta jadgotõttuu varjuhsiise.',
+'protect-default' => 'Salli kõik cäüttijäd',
+'protect-fallback' => 'Treebuit $1-õikuz',
+'protect-level-autoconfirmed' => 'Piättee uuvvõd ja anonüümed cäüttijäd',
+'protect-level-sysop' => 'Ainult praviťeľad',
+'protect-summary-cascade' => 'jadgotõltu',
+'protect-expiring' => 'lõpub $1',
+'protect-expiry-indefinite' => 'iciin',
+'protect-cascade' => 'Varjaa jõka cülci, kumpa on tänne cülcesee sisällütennü.',
+'protect-cantedit' => 'Että või muuttaa cüľľee varjauztasoa, ku tüü että saa muuttaa cülciä.',
+'protect-otherreason-op' => 'Muu süü',
+'protect-expiry-options' => '1 tunni:1 hour,1 päivä:1 day,1 näteľi:1 week,2 näteľiä:2 weeks,1 kuu:1 month,3 kuut:3 months,6 kuut:6 months,1 voosi:1 year,iciin:infinite',
+'restriction-type' => 'Rajauz',
+'restriction-level' => 'Varjauz',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Muuttaa',
+'restriction-move' => 'Liikut',
+'restriction-create' => 'Loo cülci',
 
 # Undelete
 'undeletelink' => 'näüt/vääntee',
+'undeleteviewlink' => 'prestavleńńõd',
+'undeletecomment' => 'Süü:',
+'undelete-search-submit' => 'Etsi',
+'undelete-show-file-submit' => 'Daa',
 
 # Namespace form on various pages
-'namespace'      => 'Nimiruumi:',
-'invert'         => 'Tšäänn nimiruumivalimin päävassaizõssi',
+'namespace' => 'Nimiruumi:',
+'invert' => 'Cäänn nimiruumivalimin päävassaizõssi',
 'blanknamespace' => '(Artikkelid)',
 
 # Contributions
-'contributions'       => 'Tšäüttijää avittamizõd',
-'contributions-title' => 'äüttijää $1 avittamizõd',
-'mycontris'           => 'Minu avittamizõd',
-'contribsub2'         => 'Tšäüttijää $1 ($2) avittamizõd',
-'uctop'               => '(ülez)',
-'month'               => 'Kuu',
-'year'                => 'Voosi:',
-
-'sp-contributions-newbies'  => 'Näüt uusijõõ tšäüttijee muutuhsõd',
+'contributions' => 'Cäüttijää avittamizõd',
+'contributions-title' => 'Cäüttijää $1 avittamizõd',
+'mycontris' => 'Minu avittamizõd',
+'contribsub2' => 'Cäüttijää $1 ($2) avittamizõd',
+'uctop' => '(ülez)',
+'month' => 'Kuu',
+'year' => 'Voosi:',
+
+'sp-contributions-newbies' => 'Näüt uusijõõ cäüttijee muutuhsõd',
 'sp-contributions-blocklog' => 'piättelemized',
-'sp-contributions-search'   => 'Etsi avittamisiit',
-'sp-contributions-username' => 'IP-adressi vai tšäüttijänimi',
-'sp-contributions-submit'   => 'Etsi',
+'sp-contributions-logs' => 'logid',
+'sp-contributions-talk' => 'Juttu',
+'sp-contributions-search' => 'Etsi avittamisiit',
+'sp-contributions-username' => 'IP-adressi vai cäüttijänimi',
+'sp-contributions-submit' => 'Etsi',
 
 # What links here
-'whatlinkshere'            => 'Linkid tänne',
-'whatlinkshere-title'      => 'Tšüľľed, kummad näütellä tšüľľelle "$1"',
-'whatlinkshere-page'       => 'Tšültši:',
-'linkshere'                => "Vahtiaavilt tšültšiilt on linkki tšüľľelle '''[[:$1]]''':",
-'isredirect'               => 'mešaituztšültši',
-'istemplate'               => 'sisällütüz šabloonii',
-'isimage'                  => 'kuvalinkki',
-'whatlinkshere-prev'       => '{{PLURAL:$1|entiin tšültši|$1 entiiss tšültšiä}}',
-'whatlinkshere-next'       => '{{PLURAL:$1|vahtiaava tšültši|$1 vahtiaava tšültšiä}}',
-'whatlinkshere-links'      => '← linkid',
+'whatlinkshere' => 'Linkid tänne',
+'whatlinkshere-title' => 'Cüľľed, kummad näütellä cüľľelle "$1"',
+'whatlinkshere-page' => 'Cülci:',
+'linkshere' => "Vahtiaavilt cülciilt on linkki cüľľelle '''[[:$1]]''':",
+'isredirect' => 'mešaituzcülci',
+'istemplate' => 'sisällütüz šabloonii',
+'isimage' => 'kuvalinkki',
+'whatlinkshere-prev' => '{{PLURAL:$1|entiin cülci|$1 entiiss cülciä}}',
+'whatlinkshere-next' => '{{PLURAL:$1|vahtiaava cülci|$1 vahtiaava cülciä}}',
+'whatlinkshere-links' => '← linkid',
 'whatlinkshere-hideredirs' => '$1 mešaituhsõd',
-'whatlinkshere-hidetrans'  => '$1 sisällütühsed',
-'whatlinkshere-hidelinks'  => '$1 linkid',
-'whatlinkshere-filters'    => 'Fiľtrad',
+'whatlinkshere-hidetrans' => '$1 sisällütühsed',
+'whatlinkshere-hidelinks' => '$1 linkid',
+'whatlinkshere-hideimages' => '$1 faililinkid',
+'whatlinkshere-filters' => 'Fiľtrad',
 
 # Block/unblock
-'blockip'                  => 'Piättee tšäüttijää',
-'ipboptions'               => '2 tunnia:2 hours,1 päivä:1 day,3 päivää:3 days,1 näteľi:1 week,2 näteľiä:2 weeks,1 kuu:1 month,3 kuut:3 months,6 kuut:6 months,1 voosi:1 year,itšiin:infinite',
-'ipblocklist'              => 'Piäteltüd IP-adressid ja tšäüttijänimed',
-'blocklink'                => 'piättee',
-'unblocklink'              => 'rootši piäsüss',
-'change-blocklink'         => 'muutu piätüss',
-'contribslink'             => 'avittamizõd',
-'blocklogpage'             => 'Piätüzlogi',
-'blocklogentry'            => 'piätteli tšäüttijää vai IP-tšislaa [[$1]]. Piättelemin lõpub $2 $3',
-'unblocklogentry'          => 'rootši tšäüttijält $1 muutuzpiäsüss',
+'blockip' => 'Piättee cäüttijää',
+'ipbreason' => 'Süü:',
+'ipboptions' => '2 tunnia:2 hours,1 päivä:1 day,3 päivää:3 days,1 näteľi:1 week,2 näteľiä:2 weeks,1 kuu:1 month,3 kuut:3 months,6 kuut:6 months,1 voosi:1 year,iciin:infinite',
+'ipbotheroption' => 'muu',
+'ipblocklist' => 'Piäteltüd IP-adressid ja cäüttijänimed',
+'blocklist-reason' => 'Süü',
+'ipblocklist-submit' => 'Etsi',
+'infiniteblock' => 'iciin',
+'blocklink' => 'piättee',
+'unblocklink' => 'rooci piäsüss',
+'change-blocklink' => 'muutu piätüss',
+'contribslink' => 'avittamizõd',
+'blocklogpage' => 'Piätüzlogi',
+'blocklogentry' => 'piätteli cäüttijää vai IP-cislaa [[$1]]. Piättelemin lõpub $2 $3',
+'unblocklogentry' => 'rooci cäüttijält $1 muutuzpiäsüss',
 'block-log-flags-nocreate' => 'lukuloomin piäteltü',
+'proxyblocksuccess' => 'On tehtü.',
 
 # Move page
-'movepagetext'     => "Alla õlõvall ruumõll võitta anta tšüľľelle uutt nimiä; kõik tšüľľee istori leeb liikutõttu uuvvõ nimee alle.
-Vanass tšüľľess nõizõb tulõma mešaituztšültši, kumpa näütteeb uuvvõsõ tšültšese.
-Võitta obnovoittaa tšültšese silmell lüüvvävä mešaituhsõd avtomaattisessi uuvõllõ nimelle.
-Kui että taho sitä tehävää avtomaattisessi, mälehtega ettsiää [[Special:DoubleRedirects|kahskõrtaissit]] vai [[Special:BrokenRedirects|katiit]] mešaituhsiit.
+'movepagetext' => "Alla õlõvall ruumõll võitta anta cüľľelle uutt nimiä; kõik cüľľee istori leeb liikutõttu uuvvõ nimee alle.
+Vanass cüľľess nõizõb tulõma mešaituzcülci, kumpa näütteeb uuvvõsõ cülcese.
+Võitta obnovoittaa cülcese silmell lüüvvävä mešaituhsõd avtomaattisessi uuvõllõ nimelle.
+Kui että taho sitä tehävää avtomaattisessi, mälehtega ettsiää [[Special:DoubleRedirects|kahskõrtaissit]] vai [[Special:BrokenRedirects|katciit]] mešaituhsiit.
 Õlõtta vastuussa sihee, jot linkid näütteeväd sinne, kuhõõ ned pitäiziväd näütellää.
 
-Tšültšiä '''eb''' nõizõ liikuttama, kui uusi nimi on jo tšäütennü, muut kuiva kui tšültši on tühjä vai on mešaituz, kummall ebõõ muutuzistoria.
-See täheteb sitä, jot võitta liikuttaa tšüľľee takaz vanalle nimelle kui öhsünettä, mutta että või tširjuttaa eloz õlõvaa tšüľľee päälle.
+Cülciä '''eb''' nõizõ liikuttama, kui uusi nimi on jo cäütennü, muut kuiva kui cülci on tühjä vai on mešaituz, kummall ebõõ muutuzistoria.
+See täheteb sitä, jot võitta liikuttaa cüľľee takaz vanalle nimelle kui öhsünettä, mutta että või cirjuttaa eloz õlõvaa cüľľee päälle.
 
-See saattab õlla suuri ja oottõmizõtoi muutuz populaarnoille tšüľľelle. Õlka nii üvä, obespetšoittõga, jot saatta arvoa sledstvijäd ennee kui liikutta tšüľľee.",
-'movepagetalktext' => "Tšültši ja sene juttutšültši leeväd liikutõtud ühez, '''va kui''':
-*Tseeľitšüľľell on eloz juttutšültši, kumpa ebõõ tühjä, vai
+See saattab õlla suuri ja oottõmizõtoi muutuz populaarnoille cüľľelle. Õlka nii üvä, obespecoittõga, jot saatta arvoa sledstvijäd ennee kui liikutta cüľľee.",
+'movepagetalktext' => "Cülci ja sene juttucülci leeväd liikutõtud ühez, '''va kui''':
+*Tseeľicüľľell on eloz juttucülci, kumpa ebõõ tühjä, vai
 *Jätättä all õlõvaa ruuoo merkkittämättä.
 
-Neill kõhtoill piättä liikuttaa vai ühissää tšüľľee tšäzi.",
-'movearticle'      => 'Liikut tšültši',
-'newtitle'         => 'Uusi nimi tšüľľelee',
-'move-watch'       => 'Katso sitä tšültšiä',
-'movepagebtn'      => 'Liikut tšültši',
-'pagemovedsub'     => 'Liikka tuli valmessi',
-'movepage-moved'   => '\'\'\'"$1" on liikuttu nimelee "$2"\'\'\'',
-'articleexists'    => 'Tseeľitšültši on jo eloz, vai võõbornoi nimi eb kõlpa. Õlka nii üvä ja valittsõga uusi nimi.',
-'talkexists'       => "'''Tšüľľee liikka tuli valmessi, a juttitšültšiä eb õli liikutõttu, ku uuvvõ zagolofkaa all on jo juttutšültši. Juttutšültšije sisälto piättä ühinessä tšäzi.'''",
-'movedto'          => 'liikutõttu',
-'movetalk'         => 'Liikut toož juttutšültši',
-'movelogpage'      => 'Liikkalogi',
-'movereason'       => 'Süü',
-'revertmove'       => 'kummut',
+Neill kõhtoill piättä liikuttaa vai ühissää cüľľee cäzi.",
+'movearticle' => 'Liikut cülci',
+'newtitle' => 'Uusi nimi cüľľelee',
+'move-watch' => 'Katso sitä cülciä',
+'movepagebtn' => 'Liikut cülci',
+'pagemovedsub' => 'Liikka tuli valmessi',
+'movepage-moved' => '\'\'\'"$1" on liikuttu nimelee "$2"\'\'\'',
+'articleexists' => 'Tseeľicülci on jo eloz, vai võõbornoi nimi eb kõlpa. Õlka nii üvä ja valittsõga uusi nimi.',
+'talkexists' => "'''Cüľľee liikka tuli valmessi, a jutticülciä eb õli liikutõttu, ku uuvvõ zagolofkaa all on jo juttucülci. Juttucülcije sisälto piättä ühinessä cäzi.'''",
+'movedto' => 'liikutõttu',
+'movetalk' => 'Liikut toož juttucülci',
+'movelogpage' => 'Liikkalogi',
+'movereason' => 'Süü',
+'revertmove' => 'kummut',
 
 # Export
-'export' => 'Tšültšiďďee väľľää veto',
+'export' => 'Cülciďďee väľľää veto',
+
+# Namespace 8 related
+'allmessagesname' => 'Nimi',
+'allmessages-language' => 'Ceeli:',
+'allmessages-filter-submit' => 'Mee',
 
 # Thumbnails
 'thumbnail-more' => 'Suurõt',
 
+# Special:Import
+'import-upload-filename' => 'Failinimi:',
+'import-comment' => 'Zamecańńa:',
+
 # Tooltip help for the actions
-'tooltip-pt-userpage'             => 'Teďďee tšäüttijätšültši',
-'tooltip-pt-mytalk'               => 'Teďďee juttu-tšültši',
-'tooltip-pt-preferences'          => 'Teďďee koozid',
-'tooltip-pt-watchlist'            => 'Spiiska tšültšissä, kummad muutussia kattsõõtta',
-'tooltip-pt-mycontris'            => 'Spiiska teďďee avittamisiit',
-'tooltip-pt-login'                => 'Müü taritsõmmõ teit süäme tširjuttõma, a ebõõ tarvitõttõva',
-'tooltip-pt-logout'               => 'Tširjut uloz',
-'tooltip-ca-talk'                 => 'Juttu sisällossa',
-'tooltip-ca-edit'                 => 'Tüü võittõ muuttaa sitä tšültšiä.
+'tooltip-pt-userpage' => 'Teďďee cäüttijäcülci',
+'tooltip-pt-mytalk' => 'Teďďee juttu-cülci',
+'tooltip-pt-preferences' => 'Teďďee koozid',
+'tooltip-pt-watchlist' => 'Spiiska cülcissä, kummad muutussia kattsõõtta',
+'tooltip-pt-mycontris' => 'Spiiska teďďee avittamisiit',
+'tooltip-pt-login' => 'Müü taritsõmmõ teit süäme cirjuttõma, a ebõõ tarvitõttõva',
+'tooltip-pt-logout' => 'Cirjut uloz',
+'tooltip-ca-talk' => 'Juttu sisällossa',
+'tooltip-ca-edit' => 'Tüü võittõ muuttaa sitä cülciä.
 Õõ nii üvä, ennee salvomiss, retsenziroittiga!',
-'tooltip-ca-addsection'           => 'Lissä uusi alaõsa',
-'tooltip-ca-viewsource'           => 'Kase tšültši on varjõttu.
-Että või muuttaa tšültšia, mutta võittõ kattsoa sene lähtekoodi.',
-'tooltip-ca-history'              => 'Sene tšüľľee vanad verzijad',
-'tooltip-ca-protect'              => 'Varjaa kase tšültši',
-'tooltip-ca-delete'               => 'Pühi kase tšültši',
-'tooltip-ca-move'                 => 'Liikut kase tšültši',
-'tooltip-ca-watch'                => 'Lissä kase tšültši kattsõspiiskalõõ',
-'tooltip-ca-unwatch'              => 'Paa kase tšültši Teďďee kattsõspiizgalt poiz',
-'tooltip-search'                  => 'Etsi vikissa',
-'tooltip-search-go'               => 'Mee tšüľľelee, kummall on vakurat sesama nimi (kui eloz on)',
-'tooltip-search-fulltext'         => 'Etsi tšültšiltä sitä tekstiä',
-'tooltip-n-mainpage'              => 'Mee esitšüľľelee',
-'tooltip-n-mainpage-description'  => 'Mee esitšüľľelee',
-'tooltip-n-portal'                => 'Juttua projektissa: Mitä tüü võittõ tehä, kuza levvette mitä',
-'tooltip-n-currentevents'         => 'Lugõ soobšeńńad nütšüizess kõhtoiss',
-'tooltip-n-recentchanges'         => 'Spiiska uusissa muutussissa',
-'tooltip-n-randompage'            => 'Avaa tšültšia kõhtõissi',
-'tooltip-n-help'                  => 'Praavila',
-'tooltip-t-whatlinkshere'         => 'Spiiska kõikkissa tšültšissä, kummad tänne näütellä',
-'tooltip-t-recentchangeslinked'   => 'Viimõizõd muuttussõd tšültšillä, kummalõõ on siittä näüteltü',
-'tooltip-feed-rss'                => 'RSS-söötte selle tšüľľelle',
-'tooltip-feed-atom'               => 'Atom-söötte selle tšüľľelle',
-'tooltip-t-contributions'         => 'Näüt spiiska sene tšäüttijää avittamiss',
-'tooltip-t-emailuser'             => 'Lähettega elektropoštia selle tšäüttijälle',
-'tooltip-t-upload'                => 'Laajõngoit failia ülez (загружать файл)',
-'tooltip-t-specialpages'          => 'Spiiska kõikkissa osoobenoissa tšültšissä',
-'tooltip-t-print'                 => 'Sene tšüľľee petšatoittõva verzija',
-'tooltip-t-permalink'             => 'Postojannoi linkki tšüľľee selle verzijalõõ',
-'tooltip-ca-nstab-main'           => 'Näüt artikkelia',
-'tooltip-ca-nstab-user'           => 'Näüt tšäüttijätšültši',
-'tooltip-ca-nstab-special'        => 'Kase on osoobennoi tšültši, tüü ed saa sitä muuttõma',
-'tooltip-ca-nstab-project'        => 'Näüt projektitšültši',
-'tooltip-ca-nstab-image'          => 'Näüt failitšültši',
-'tooltip-ca-nstab-template'       => 'Näüt šablooni',
-'tooltip-ca-nstab-category'       => 'Näüt gruppatšültši',
-'tooltip-minoredit'               => 'Merkit kase peenessi muutuhsõssi',
-'tooltip-save'                    => 'Salvo muutussõd',
-'tooltip-preview'                 => 'Retsenziroitta muutuss. Õõ nii üvä, ennee salvomiss, retsenziroittiga!',
-'tooltip-diff'                    => 'Näüt tehtüd muutuhsõd',
+'tooltip-ca-addsection' => 'Lissä uusi alaõsa',
+'tooltip-ca-viewsource' => 'Kase cülci on varjõttu.
+Että või muuttaa cülcia, mutta võittõ kattsoa sene lähtekoodi.',
+'tooltip-ca-history' => 'Sene cüľľee vanad verzijad',
+'tooltip-ca-protect' => 'Varjaa kase cülci',
+'tooltip-ca-delete' => 'Pühi kase cülci',
+'tooltip-ca-move' => 'Liikut kase cülci',
+'tooltip-ca-watch' => 'Lissä kase cülci kattsõspiiskalõõ',
+'tooltip-ca-unwatch' => 'Paa kase cülci Teďďee kattsõspiizgalt poiz',
+'tooltip-search' => 'Etsi vikissa',
+'tooltip-search-go' => 'Mee cüľľelee, kummall on vakurat sesama nimi (kui eloz on)',
+'tooltip-search-fulltext' => 'Etsi cülciltä sitä tekstiä',
+'tooltip-p-logo' => 'Mee esicüľľelee',
+'tooltip-n-mainpage' => 'Mee esicüľľelee',
+'tooltip-n-mainpage-description' => 'Mee esicüľľelee',
+'tooltip-n-portal' => 'Juttua projektissa: Mitä tüü võittõ tehä, kuza levvette mitä',
+'tooltip-n-currentevents' => 'Lugõ soobšeńńad nücüizess kõhtoiss',
+'tooltip-n-recentchanges' => 'Spiiska uusissa muutussissa',
+'tooltip-n-randompage' => 'Avaa cülcia kõhtõissi',
+'tooltip-n-help' => 'Praavila',
+'tooltip-t-whatlinkshere' => 'Spiiska kõikkissa cülcissä, kummad tänne näütellä',
+'tooltip-t-recentchangeslinked' => 'Viimõizõd muuttussõd cülcillä, kummalõõ on siittä näüteltü',
+'tooltip-feed-rss' => 'RSS-söötte selle cüľľelle',
+'tooltip-feed-atom' => 'Atom-söötte selle cüľľelle',
+'tooltip-t-contributions' => 'Näüt spiiska sene cäüttijää avittamiss',
+'tooltip-t-emailuser' => 'Lähettega elektropoštia selle cäüttijälle',
+'tooltip-t-upload' => 'Laajõngoit failia ülez',
+'tooltip-t-specialpages' => 'Spiiska kõikkissa osoobenoissa cülcissä',
+'tooltip-t-print' => 'Sene cüľľee pecatoittõva verzija',
+'tooltip-t-permalink' => 'Postojannoi linkki cüľľee selle verzijalõõ',
+'tooltip-ca-nstab-main' => 'Näüt artikkelia',
+'tooltip-ca-nstab-user' => 'Näüt cäüttijäcülci',
+'tooltip-ca-nstab-special' => 'Kase on osoobennoi cülci, tüü ed saa sitä muuttõma',
+'tooltip-ca-nstab-project' => 'Näüt projekticülci',
+'tooltip-ca-nstab-image' => 'Näüt failicülci',
+'tooltip-ca-nstab-template' => 'Näüt šablooni',
+'tooltip-ca-nstab-category' => 'Näüt gruppacülci',
+'tooltip-minoredit' => 'Merkit kase peenessi muutuhsõssi',
+'tooltip-save' => 'Salvo muutussõd',
+'tooltip-preview' => 'Retsenziroitta muutuss. Õõ nii üvä, ennee salvomiss, retsenziroittiga!',
+'tooltip-diff' => 'Näüt tehtüd muutuhsõd',
 'tooltip-compareselectedversions' => 'Näütää vahõd 2 valitsõttuďďõ verzijoďďõ väliz',
-'tooltip-watch'                   => 'Lissä kase tšültši kattsõspiizgallõ',
-'tooltip-rollback'                => 'Vääntega tšüľľee teksti vanõmpi verzijalõõ',
-'tooltip-undo'                    => '"Kummut" väänteeb kasene muutusõõ ja avab artikkelii prestavleńńaa.
+'tooltip-watch' => 'Lissä kase cülci kattsõspiizgallõ',
+'tooltip-rollback' => 'Vääntega cüľľee teksti vanõmpi verzijalõõ',
+'tooltip-undo' => '"Kummut" väänteeb kasene muutusõõ ja avab artikkelii prestavleńńaa.
 Toož, võittõ tširjutta väänteüssee süü.',
+'tooltip-summary' => 'Turvotuz',
+
+# Info page
+'pageinfo-subjectpage' => 'Cülci',
 
 # Browsing diffs
 'previousdiff' => '← Vanõpi muutuz',
-'nextdiff'     => 'Uuvvõpi muutuz →',
+'nextdiff' => 'Uuvvõpi muutuz →',
 
 # Media information
 'file-info-size' => '$1 × $2 px, $3, MIME-sortta: $4',
-'file-nohires'   => 'Suurõpaa kuva ebõõ.',
-'svg-long-desc'  => 'SVG-faili $1 × $2 px, failii suuruz: $3',
+'file-nohires' => 'Suurõpaa kuva ebõõ.',
+'svg-long-desc' => 'SVG-faili $1 × $2 px, failii suuruz: $3',
 'show-big-image' => 'Kõrka-rezoľuuttsiin verzija',
 
+# Special:NewFiles
+'ilsubmit' => 'Etsi',
+
 # Bad image list
 'bad_image_list' => 'Spiizgaa formatti on:
 
@@ -601,12 +803,12 @@ Esimein linkki viirulla piäb õllaa linkki kahõpäälizõlõõ faililõõ.
 Kõik muud linkid leeväd pantu panõlõõ nii ku ero.',
 
 # Metadata
-'metadata'          => 'Sisältokuvõtuz',
-'metadata-help'     => 'Kase faili sisältäb lisäinformatsijaa, mikä on lizättü tsifrovoi kamera vai skanera poolt.
+'metadata' => 'Sisältokuvõtuz',
+'metadata-help' => 'Kase faili sisältäb lisäinformatsijaa, mikä on lizättü tsifrovoi kamera vai skanera poolt.
 Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull failill.',
-'metadata-expand'   => 'Näüt lontsõkait detaaľiit',
+'metadata-expand' => 'Näüt lontsõkait detaaľiit',
 'metadata-collapse' => 'Salauta lontsõkait detaaľiit',
-'metadata-fields'   => 'Vahtiaavad platsid õvad vällez kuvatšüľľell, ku sisältotabľittsa on peenettettü.
+'metadata-fields' => 'Vahtiaavad platsid õvad vällez kuvacüľľell, ku sisältotabľittsa on peenettettü.
 * make
 * model
 * datetimeoriginal
@@ -621,21 +823,67 @@ Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull fa
 * gpslongitude
 * gpsaltitude',
 
+# EXIF tags
+'exif-gpstimestamp' => 'GPS-aika',
+'exif-languagecode' => 'Ceeli',
+'exif-iimcategory' => 'Gruppa',
+
+'exif-meteringmode-255' => 'Muu',
+
+'exif-gaincontrol-0' => 'Eb õõ',
+
+'exif-iimcategory-ace' => 'Kunsti ja kulttuuri',
+'exif-iimcategory-hth' => 'Terveüz',
+'exif-iimcategory-pol' => 'Politiikka',
+'exif-iimcategory-wea' => 'Ilma',
+
 # External editor support
-'edit-externally'      => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
+'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
 'edit-externally-help' => '(Kattsoga [//www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'koko istori',
 'namespacesall' => 'kõik',
-'monthsall'     => 'kõik',
+'monthsall' => 'kõik',
+'limitall' => 'kõik',
+
+# action=purge
+'confirm_purge_button' => 'OK',
+
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
+# Table pager
+'table_pager_first' => 'Esimein cülci',
+'table_pager_last' => 'Viimein cülci',
+'table_pager_limit_submit' => 'Mee',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Näüt muutuhsõd',
 'watchlisttools-edit' => 'Muuttaa spiiskaa',
-'watchlisttools-raw'  => 'Muut lähtefaili',
+'watchlisttools-raw' => 'Muut lähtefaili',
+
+# Special:FilePath
+'filepath-page' => 'Faili:',
+'filepath-submit' => 'Mee',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch-filename' => 'Failinimi:',
+'fileduplicatesearch-submit' => 'Etsi',
 
 # Special:SpecialPages
-'specialpages' => 'Osoobenoid tšüľľed',
+'specialpages' => 'Osoobenoid cüľľed',
+
+# Special:Tags
+'tags-edit' => 'muuttaa',
+
+# HTML forms
+'htmlform-selectorother-other' => 'Muu',
+
+# Feedback
+'feedback-message' => 'Ilmottamin:',
+'feedback-cancel' => 'Otmeńoit',
+'feedback-close' => 'On tehtü',
 
 );
index 618a958..0ec7dbe 100644 (file)
@@ -84,7 +84,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
 'tog-newpageshidepatrolled' => 'Èn nén mostrer el djivêye des novelès pådjes les cenes dedja patrouyeyes',
 'tog-extendwatchlist' => "Ragrandi l' djivêye po mostrer tos les candjmints, nén seulmint les dierins",
-'tog-usenewrc' => 'Eployî les ramidrés dierins candjmints (i fåt JavaScript)',
+'tog-usenewrc' => "Relére par pådje dins les dierins candjmints et l' djivêye des shuvous (i fåt JavaScript)",
 'tog-numberheadings' => 'Limerotaedje otomatike des tites',
 'tog-showtoolbar' => "Mostrer l' bår d' usteyes e môde candjmint (JavaScript)",
 'tog-editondblclick' => 'Candjî les pådjes avou on dobe-clitch (JavaScript)',
@@ -249,6 +249,7 @@ $messages = array(
 'printableversion' => 'Modêye sicrirece-amiståve',
 'permalink' => 'Hårdêye viè cisse modêye ci',
 'print' => 'Imprimer',
+'view' => 'Vey',
 'edit' => 'Candjî',
 'create' => 'Ahiver',
 'editthispage' => "Candjî l' pådje",
@@ -279,7 +280,7 @@ $messages = array(
 'otherlanguages' => 'Ôtes lingaedjes',
 'redirectedfrom' => '(Redjiblé di $1)',
 'redirectpagesub' => 'Pådje di redjiblaedje',
-'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.',
+'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2 a $1.',
 'viewcount' => 'Cisse pådje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.',
 'protectedpage' => 'Pådje protedjeye',
 'jumpto' => 'Potchî a:',
@@ -334,6 +335,8 @@ $1",
 'restorelink' => '{{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}',
 'feedlinks' => 'Sindicåcion:',
 'feed-invalid' => 'Sôre di sindicåcion nén valide.',
+'site-atom-feed' => 'Floûs Atom di $1',
+'page-atom-feed' => 'Floûs Atom di «$1»',
 'red-link-title' => '$1 (nén co ataké)',
 'sort-descending' => 'Discrexhant relijhaedje',
 'sort-ascending' => 'Acrexhant relijhaedje',
@@ -374,7 +377,14 @@ a pårti del fonccion «$2».
 Li båze di dnêyes a rtourné l' aroke «$3: $4».",
 'laggedslavemode' => "Asteme: I s' pout ki l' pådje n' åye nén co les dierins candjmints.",
 'readonly' => 'Li båze di dnêyes est aclawêye',
+'missing-article' => "Li båze di dnêyes n' a nén trové l' tecse d' ene pådje k' åreut dvou esse trovêye, lomêye «$1» $2.
+
+Çoula arive cwand on shût on loyén po ene diferince k' est houte ou viè l' istwere d' ene pådej disfacêye.
+
+Si c' est nén çoula, motoit k' vos avoz trové on bug dins l' programe.
+Adon dijhoz l' a on [[Special:ListUsers/sysop|manaedjeu]], sins rovyî d' mete li hårdêye (URL) ki mostere l' aroke.",
 'missingarticle-rev' => '(l° del modêye: $1)',
+'missingarticle-diff' => '(dif: $1, $2)',
 'internalerror' => 'Divintrinne aroke',
 'internalerror_info' => 'Divintrinne aroke: $1',
 'filecopyerror' => "Dji n' a savou copyî l' fitchî «$1» viè «$2».",
@@ -413,7 +423,7 @@ Notez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz
 
 Vosse conte a stî ahivé.
 Èn rovyîz nén di candjî les [[Special:Preferences|preferinces di {{SITENAME}}]] a vosse môde.',
-'yourname' => "Vosse no d' elodjaedje",
+'yourname' => "Vosse no d' elodjaedje:",
 'yourpassword' => 'Vosse sicret',
 'yourpasswordagain' => 'Ritapez vosse sicret',
 'remembermypassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
@@ -431,6 +441,7 @@ Vosse conte a stî ahivé.
 'createaccount' => 'Ahiver on novea conte',
 'gotaccount' => "Vos avoz ddja on conte so ç' wiki ci? '''$1'''.",
 'gotaccountlink' => 'Elodjîz vs',
+'userlogin-resetlink' => "Avoz rovyî vos detays d' elodjaedje?",
 'createaccountmail' => 'pa emile',
 'createaccountreason' => 'Råjhon:',
 'badretype' => 'Vos avoz dné deus screts diferins.',
@@ -686,6 +697,7 @@ Li dierinne intrêye do djournå est håynêye chal pa dzo po referince:",
 'templatesusedsection' => '{{PLURAL:$1|Modele eployî|Modeles eployîs}} e cisse seccion ci:',
 'template-protected' => '(protedjî)',
 'template-semiprotected' => '(dimey-protedjî)',
+'hiddencategories' => "Cisse pådje ci est mimbe {{PLURAL:$1|d' ene categoreye catcheye|di $1 categoreyes catcheyes}}:",
 'nocreatetitle' => 'Ahivaedje di pådjes limité',
 'nocreatetext' => "{{SITENAME}} a limité l' possibilité d' ahiver des novelès pådjes.
 Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
@@ -700,6 +712,11 @@ Motoit k' elle a stî tapêye evoye.",
 'edit-no-change' => "Vosse sicrijhaedje n' a nén passé, paski rén n' a stî candjî al modêye di dvant.",
 'edit-already-exists' => "Li novele pâdje n' a savou esse ahivêye, ca cisse pâdje la egzistêye dedja.",
 
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Asteme:''' I gn a trop di modeles dins cisse pådje ci.
+Sacwants di zels ni seront nén eployîs.",
+'post-expand-template-inclusion-category' => "Pådjes ki l' inclusion d' modeles est foû limite",
+
 # Account creation failure
 'cantcreateaccounttitle' => "Vos n' ploz nén ahiver-st on conte.",
 
@@ -733,6 +750,9 @@ Ledjinde: '''({{int:cur}})''' = diferince avou l' modêye d' asteure, '''({{int:
 'history-feed-title' => 'Istwere des modêyes',
 'history-feed-description' => 'Istwere des candjmints di cisse pådje ci sol wiki',
 'history-feed-item-nocomment' => '$1 li $2',
+'history-feed-empty' => "Li pådje ki vos vloz drovi n' egzistêye nén.
+Elle a motoit stî  disfacêye ou k' elle a rcandjî d' no.
+Asprouvez do [[Special:Search|ricweri sol wiki]] po trover des pådjes vijhenes.",
 
 # Revision deletion
 'rev-deleted-comment' => '(rascourti di candjmint oisté)',
@@ -743,6 +763,7 @@ Vos ploz vey les ca et les ma sol [{{fullurl:{{#Special:Log}}/suppress|page={{FU
 Vos l' poloz co vey; i gn a des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
 'rev-delundel' => 'mostrer/catchî',
 'revisiondelete' => 'Disfacer/rapexhî des modêyes',
+'revdelete-show-file-submit' => 'Oyi',
 'revdelete-selected' => "'''{{PLURAL:$2|Tchoezeye modêye|Tchoezeyès modêyes}} di [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås:'''",
 'revdelete-text' => "'''Les disfacés avenmints et modêyes vont continouwer d' aparexhe dins l' pådje di l' istwere, mins leu contnou n' serè nén veyåve do publik.'''
@@ -753,8 +774,13 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'revdelete-hide-comment' => "Catchî l' comintaire di candjmint",
 'revdelete-hide-user' => "Catchî l' no d' uzeu/adresse IP do candjeu",
 'revdelete-hide-restricted' => "Oister foû les dnêyes ossu bén po les manaedjeus k' po les ôtes",
+'revdelete-radio-set' => 'Oyi',
+'revdelete-radio-unset' => 'Neni',
 'revdelete-log' => 'Råjhon:',
 'revdelete-submit' => 'Apliker {{PLURAL:$1|al modêye tchoezeye|åzès modêyes tchoezeyes}}',
+'revdel-restore' => "candjî l' veyåvisté",
+'revdel-restore-deleted' => 'disfacêyès modêyes',
+'revdel-restore-visible' => 'veyåvès modêyes',
 'deletedhist' => 'Istwere disfacêye',
 
 # History merging
@@ -763,6 +789,9 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'mergehistory-no-source' => "Li pådje sourdant $1 n' egzistêye nén.",
 'mergehistory-reason' => 'Råjhon:',
 
+# Merge log
+'revertmerge' => 'Dispårti',
+
 # Diffs
 'history-title' => 'Istwere des candjmints po «$1»',
 'lineno' => 'Roye $1:',
@@ -1067,7 +1096,13 @@ Ciste infôrmacion serè publike po tertos.",
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|candjmint|candjmints}}',
 'recentchanges' => 'Dierins candjmints',
+'recentchanges-legend' => 'Tchuzes po les dierins candjmints',
 'recentchanges-summary' => "Shuvoz chal les dierins candjmints k' i gn a yeu dsu {{SITENAME}}.",
+'recentchanges-feed-description' => "Shuvoz so ç' canå ci les dierins candjmints k' i gn a yeu sol wiki.",
+'recentchanges-label-newpage' => "Ci candjmint la est èn ahivaedje d' ene nouve pådje",
+'recentchanges-label-minor' => "Ci n' est k' on ptit candjmint",
+'recentchanges-label-bot' => 'Ci candjmint la a stî fwait pa on robot',
+'recentchanges-label-unpatrolled' => "Ci candjmint la n' a nén co stî patrouyî",
 'rcnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|do dierin djoû|des '''$2''' dierins djoûs}}, disk' å $4 a $5.",
 'rcnotefrom' => "Chal pa dzo les candjmints dispoy li '''$2''' (disk' a '''$1''' di mostrés).",
 'rclistfrom' => "Mostrer les candjmints k' i gn a yeu a pårti do $1",
@@ -1083,16 +1118,25 @@ Ciste infôrmacion serè publike po tertos.",
 'hide' => 'catch.',
 'show' => 'håy.',
 'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[shuvou pa $1 {{PLURAL:$1|uzeu|uzeus}}]',
 'rc_categories' => 'Limiter åzès categoreyes (separer avou des «|»)',
 'rc_categories_any' => 'Totes',
 'rc-change-size-new' => "$1 {{PLURAL:$1|octet|octets}} après l' candjmint",
 'newsectionsummary' => '/* $1 */ novele seccion',
+'rc-enhanced-expand' => 'Mostrer les detays (i fåt JavaScript)',
+'rc-enhanced-hide' => 'Catchî les detays',
 
 # Recent changes linked
 'recentchangeslinked' => 'Candjmints aloyîs',
 'recentchangeslinked-feed' => 'Candjmints aloyîs',
 'recentchangeslinked-toolbox' => 'Candjmints aloyîs',
+'recentchangeslinked-title' => 'Candjmints aloyîs a «$1»',
+'recentchangeslinked-summary' => "Çouchal c' est ene djivêye des candjmints k' ont stî fwaits dierinnmint a des pådjes aloyeyes a pårti d' ene pådje dinêye (ou mimbes d' ene categoreye dinêye).
+Les pådjes ki [[Special:Watchlist|vos shuvoz]] sont-st e '''cråssès letes'''.",
+'recentchangeslinked-page' => 'No del pådje:',
+'recentchangeslinked-to' => "Mostere les candjmints des pådjes avou on loyén viè l' pådje dinêye purade k' å rviè",
 
 # Upload
 'upload' => 'Eberweter on fitchî',
@@ -1102,9 +1146,9 @@ Ciste infôrmacion serè publike po tertos.",
 'uploadnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] por vos pleur eberweter des fitchîs.',
 'upload_directory_read_only' => "Li sierveu waibe èn pout nén scrire sol ridant d' eberwetaedje ($1).",
 'uploaderror' => "Aroke d' eberwetaedje",
-'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des noveas fitchîs.
-Po håyner ou cweri des fitchîs k' ont ddja stî rçuvous, alez sol [[Special:FileList|djivêye des fitchîs ddja eberweté]].
-Les (r)eberwetaedjes sont eto metos sol [[Special:Log/uplozf|djournå des eberwetaedjes]], les disfaçaedjes sol [[Special:Log/upload|ci des disfaçaedjes]].
+'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des fitchîs.
+Po håyner ou cweri des fitchîs k' ont ddja stî rçuvous, alez sol [[Special:FileList|djivêye des fitchîs ddja eberwetés]].
+Les (r)eberwetaedjes sont eto metos sol [[Special:Log/upload|djournå des eberwetaedjes]], les disfaçaedjes sol [[Special:Log/delete|ci des disfaçaedjes]].
 
 Po mete on fitchî dins ene pådje, eployîz on loyén del fôme:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.jpg]]</nowiki></tt>''' po-z eployî l' modêye e grandeu oridjinnåle do fitchî
@@ -1149,6 +1193,7 @@ Rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos
 'upload-file-error' => 'Divintrinne aroke',
 
 'license' => 'Licince:',
+'license-header' => 'Licince',
 'nolicense' => 'Nole licince tchoezeye',
 'upload_source_file' => ' (on fitchî sol copiutrece da vosse)',
 
@@ -1165,7 +1210,7 @@ Rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos
 'listfiles_count' => 'Modêyes',
 
 # File description page
-'file-anchor-link' => 'Imådje',
+'file-anchor-link' => 'Fitchî',
 'filehist' => 'Istwere do fitchî',
 'filehist-help' => "Clitchîz so ene date ey ene eure po vey kimint ki l' fitchî esteut adon.",
 'filehist-deleteall' => 'disfacer ttafwait',
@@ -1237,7 +1282,7 @@ Rimimbrez vs di verifyî s' i n' a nén des ôtes loyéns divant delzès disface
 'statistics-mostpopular' => 'Pådjes les pus veyowes',
 
 'disambiguations' => "Pådjes avou des loyéns viè des pådjes d' omonimeye",
-'disambiguationspage' => 'Template:Omonimeye',
+'disambiguationspage' => 'Template:omonimeye',
 'disambiguations-text' => "Ces pådjes ci loynut eviè ene '''pådje d' omonimeye'''.
 Ele divrént purade raloyî direk å mwaisse sudjet.<br />
 Ene pådje est waiteye come pådje d' omonimeye s' ele eploye on modele k' est loyî a [[MediaWiki:Disambiguationspage]].",
@@ -1246,12 +1291,20 @@ Ene pådje est waiteye come pådje d' omonimeye s' ele eploye on modele k' est l
 'doubleredirectstext' => "Cisse pådje ci mostere les dobes redjiblaedjes (pådjes ki redjiblèt viè ene ôte pådje di redjiblaedje).
 Tchaeke roye a-st on loyén viè l' prumî eyet l' deujhinme redjiblaedje, avou on mostraedje del såme do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l' prumî redjiblaedje divreut evoyî viè lu.
 Lis intrêyes <del>bårêyes</del> otn ddja stî coridjeyes.",
+'double-redirect-fixed-move' => "[[$1]] a stî displaecî.
+Asteure c' est on redjiblaedje viè [[$2]].",
+'double-redirect-fixer' => 'Coridjaedje des dobes redjiblaedjes',
 
 'brokenredirects' => 'Pierdous redjiblaedjes',
 'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén:",
 'brokenredirects-edit' => 'candjî',
 'brokenredirects-delete' => 'disfacer',
 
+'withoutinterwiki' => 'Pådjes sins loyéns eterwiki',
+'withoutinterwiki-summary' => "Les pådjes shuvantes n' ont nén des loyéns viè ds ôtes lingaedjes.",
+'withoutinterwiki-legend' => 'Betchete',
+'withoutinterwiki-submit' => 'Vey',
+
 'fewestrevisions' => "Årtikes k' on n' î a waire bodjî",
 
 # Miscellaneous special pages
@@ -1274,6 +1327,8 @@ Lis intrêyes <del>bårêyes</del> otn ddja stî coridjeyes.",
 'popularpages' => 'Pådjes les pus léjhowes',
 'wantedcategories' => 'Categoreyes les pus rcwerowes',
 'wantedpages' => 'Pådjes les pus rcwerowes',
+'wantedfiles' => 'Fitchîs les pus rcwerous',
+'wantedtemplates' => 'Modeles ricwerous',
 'mostlinked' => 'Pådjes les pus loyeyes',
 'mostlinkedcategories' => 'Categoreyes les pus loyeyes',
 'mostlinkedtemplates' => 'Modeles les pus eployîs',
@@ -1284,7 +1339,15 @@ Lis intrêyes <del>bårêyes</del> otn ddja stî coridjeyes.",
 'shortpages' => 'Coûtès pådjes',
 'longpages' => 'Longowès pådjes',
 'deadendpages' => 'Pådjes sins nou loyén wiki',
+'deadendpagestext' => "Les pådjes shuvantes n' ont nou loyén viè ds ôtès pådjes di {{SITENAME}}.",
 'protectedpages' => 'Pådjes protedjeyes',
+'protectedpages-indef' => "Seulmint les protedjaedje disk' a todi",
+'protectedpages-cascade' => 'Seulmint les protedjaedjes e cascåde',
+'protectedpagestext' => "Les pådjes shuvantes sont protedjeyes siconte li displaeçaedje ou l' candjmint do tecse",
+'protectedpagesempty' => 'I gn a pol moumint nole pådje sifwaitmint protedjeye.',
+'protectedtitles' => 'Tites protedjîs',
+'protectedtitlestext' => "Les tites shuvants sont protedjîs, ça fwait k' on n' pout nén ahiver ene pådje lomêye inla.",
+'protectedtitlesempty' => 'I gn a pol moumint nou tite sifwaitmint protedjî.',
 'listusers' => 'Djivêye des uzeus',
 'usereditcount' => '$1 candjmint{{PLURAL:$1||s}}',
 'usercreated' => '{{GENDER:$3|Edjîstré|Edjîstrêye}} li $1 a $2',
@@ -1301,6 +1364,8 @@ Notez tot l' minme ki d' ôtès waibes polèt aveur des loyéns viè ces imådje
 
 # Book sources
 'booksources' => 'Sourdants po les lives',
+'booksources-search-legend' => 'Cweri des sourdants po des lives',
+'booksources-go' => 'I va',
 
 # Special:Log
 'specialloguserlabel' => 'Fwait pa:',
@@ -1333,15 +1398,38 @@ Vos ploz defini l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' u
 [[Special:UnusedCategories|Les categoreyes nén eployeyes]] èn sont nén håynêyes chal.
 Loukîz eto [[Special:WantedCategories|les categoreyes dimandêyes]].',
 'categoriesfrom' => 'Håyner les categoreyes a pårti di:',
+'special-categories-sort-count' => 'relére pa nombe di cayets',
+'special-categories-sort-abc' => 'relére alfabeticmint',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'Contribouwaedjes disfacés',
 'deletedcontributions-title' => 'Contribouwaedjes disfacés',
+'sp-deletedcontributions-contribs' => 'contribouwaedjes',
+
+# Special:LinkSearch
+'linksearch' => 'Cweri des dfoûtrinnès hårdêyes',
+'linksearch-pat' => 'Patron pol cweraedje:',
+'linksearch-ns' => 'Espåce di lomaedje:',
+'linksearch-ok' => 'Cweri',
+'linksearch-text' => 'Des caracteres «djokers» polèt esse eployîs, metans «*.wikipedia.org».
+Mins i fåt pol moens on dominne di prumî livea, metans «*.org»<br />
+Protocoles ricnoxhous: <tt>$1</tt> (nelzès metoz nén dins vosse tchinne di cweraedje).',
+'linksearch-line' => "$1 est loyî a pårti d' $2",
+'linksearch-error' => "Les caracteres djokers èn polèt esse eployîs k' a l' atake d' on no d' dominne ou d' lodjoe.",
+
+# Special:ListUsers
+'listusersfrom' => 'Håyner les uzeus a pårti di:',
+'listusers-submit' => 'Vey',
+'listusers-noresult' => 'Nol uzeu di trové.',
+'listusers-blocked' => '({{GENDER:$1|bloké|blokêye}})',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Djournå des noveas uzeus',
 'newuserlogpagetext' => "Chal pa dzo c' est ene djivêye des uzeus novelmint eredjîstrés.",
 
+# Special:ListGroupRights
+'listgrouprights-members' => '(djivêye des mimbes)',
+
 # E-mail user
 'mailnologin' => "Nole adresse d' evoyeu",
 'mailnologintext' => "Po-z evoyî èn emile a èn ôte uzeu i vs fåt esse [[Special:UserLogin|elodjî]] eyet aveur ene adresse emile d' evoyeu ki soeye valide dins vos [[Special:Preferences|preferinces]].",
@@ -1368,6 +1456,7 @@ po ki l' riçuveu poye risponde.",
 # Watchlist
 'watchlist' => 'Pådjes shuvowes',
 'mywatchlist' => 'Pådjes shuvowes',
+'watchlistfor2' => 'Pa $1 ($2)',
 'nowatchlist' => 'Vosse djivêye des pådjes a shuve est vude.',
 'watchlistanontext' => 'I vs fåt $1 po vey ou candjî les cayets di vosse djivêye des shuvous.',
 'watchnologin' => "Vos n' estoz nén elodjî",
@@ -1394,6 +1483,7 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 'iteminvalidname' => "Åk n' a nén stî avou «$1», li no n' est nén valide...",
 'wlnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' å $3 a $4.",
 'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs ou $3',
+'watchlist-options' => 'Tchuzes del djivêye des shuvous',
 
 'enotif_mailer' => 'Notifiaedje pa emile di {{SITENAME}}',
 'enotif_reset' => 'Mårker totes les pådjes come vizitêyes',
@@ -1485,21 +1575,49 @@ Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
 'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.
 Loukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey les protedjaedjes ki sont en alaedje pol moumint.",
 'protectedarticle' => '«[[$1]]» protedjî',
+'modifiedarticleprotection' => "a candjî l' livea d' protedjaedje di «[[$1]]»",
 'unprotectedarticle' => 'a disprotedjî «[[$1]]»',
+'movedarticleprotection' => 'a displaecî les parametes di protedjaedje di «[[$1]]» eviè «[[$2]]»',
 'protect-title' => 'Protedjant «$1»',
+'protect-title-notallowed' => "Livea d' protedjaedje di «$1»",
 'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
+'protect-badnamespace-title' => 'Espåce di lomaedjé nén protedjåve',
+'protect-badnamespace-text' => "Les pådjes e cist espåce di lomaedje ci n' polèt nén esse protedjeyes.",
 'protect-legend' => "Acertinez l' protedjaedje",
 'protectcomment' => 'Råjhon:',
+'protectexpiry' => 'Termene:',
+'protect-unchain-permissions' => "Disclawer d' ôtès tchuzes di protedjaedje",
 'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''$1'''.",
 'protect-default' => 'Permete a tos les uzeus',
 'protect-level-autoconfirmed' => 'Bloker les noveas uzeus et les cis nén edjîstrés',
 'protect-level-sysop' => 'Seulmint les manaedjeus',
+'protect-summary-cascade' => 'e cascåde',
+'protect-expiring' => 'finixh li $1 (UTC)',
+'protect-expiring-local' => 'finixh li $1',
+'protect-expiry-indefinite' => 'po todi',
+'protect-cascade' => 'Protedjî eto les modeles eployîs so cisse pådje ci (protedjaedje e cascåde)',
+'protect-othertime' => 'Date di fén:',
+'protect-othertime-op' => 'ôte (a vos del diner)',
+'protect-existing-expiry' => 'Li protedjaedje finixh li $2 a $3',
+'protect-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'protect-otherreason-op' => 'Ôte råjhon',
 'protect-expiry-options' => '1 eure:1 hour,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'restriction-type' => 'Permission po:',
+'restriction-level' => "Livea d' protedjaedje:",
+'minimum-size' => 'Grandeu minimom',
+'maximum-size' => 'Grandeu macsimom:',
 'pagesize' => '(octets)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Candjî',
-'restriction-move' => 'Displaecî',
+'restriction-edit' => 'candjî',
+'restriction-move' => 'displaecî',
+'restriction-create' => 'ahiver',
+'restriction-upload' => 'eberweter',
+
+# Restriction levels
+'restriction-level-sysop' => 'protedjaedje complet',
+'restriction-level-autoconfirmed' => 'dimey-protedjaedje',
+'restriction-level-all' => 'tos les liveas',
 
 # Undelete
 'undelete' => 'Rapexhî des disfacêyès pådjes',
@@ -1507,6 +1625,7 @@ Loukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey le
 'viewdeletedpage' => 'Vey les disfacêyès pådjes',
 'undeletepagetext' => '{{PLURAL:$1|Li pådje shuvante a stî disfacêye mins elle est co ezès årtchives, do côp ele pout esse rapexheye|Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes}}.
 Les årtchives polèt esse rnetieyes di tinzintins.',
+'undelete-fieldset-title' => 'Rapexhî les modêyes',
 'undeleteextrahelp' => "Po rapexhî l' istwere etire del pådje, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''{{int:undeletebtn}}'''».
 Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''{{int:undeletebtn}}'''».",
 'undeleterevisions' => '$1 modêye{{PLURAL:$1||s}} ezès årtchives',
@@ -1519,6 +1638,7 @@ candjî l' pådje divant do disfaçaedje. Li tecse di ces modêyes disfacêyes
 ni pout esse veyou ki des manaedjeus.",
 'undeletebtn' => 'Rapexhî',
 'undeletelink' => 'vey/rapexhî',
+'undeleteviewlink' => 'vey',
 'undeletereset' => 'Netyî',
 'undeletecomment' => 'Råjhon:',
 'undeletedrevisions' => '{{PLURAL:$1|1 modêye|$1 modêyes}} di rapexheyes',
@@ -1530,7 +1650,7 @@ ni pout esse veyou ki des manaedjeus.",
 Loukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des dierins disfaçaedjes eyet rapexhaedjes.",
 'undelete-search-submit' => 'Cweri',
 'undelete-filename-mismatch' => 'Nén possibe di rapexhî li fitchî do $1 : on nel ritrove nén.',
-'undelete-bad-store-key' => "Nén possibe d' aler rapexhî li fitchî daté do $1 : i n' esteut nén la divant li disfaçaedje.",
+'undelete-bad-store-key' => "Nén possibe d' aler rapexhî li fitchî daté do $1: i n' esteut nén la divant li disfaçaedje.",
 'undelete-missing-filearchive' => "Nén possibe d' aler rapexhî li fitchî avou l’ ID $1 pask' i n' est nén dins l' båze di dnêyes. Motoit k' il a ddja stî rapexhî dvant.",
 
 # Namespace form on various pages
@@ -1567,11 +1687,12 @@ Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrm
 
 # What links here
 'whatlinkshere' => 'Pådjes ki loynut chal',
-'whatlinkshere-title' => 'Pådjes ki loynut aviè « $1 »',
+'whatlinkshere-title' => 'Pådjes ki loynut aviè «$1»',
 'whatlinkshere-page' => 'Pådje:',
 'linkshere' => "Les pådjes ki shuvèt ont des loyéns viè '''[[:$1]]''':",
 'nolinkshere' => "Nole pådje avou des loyéns viè '''[[:$1]]'''.",
 'isredirect' => 'pådje di redjiblaedje',
+'isimage' => "loyén viè l' fitchî",
 'whatlinkshere-prev' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
 'whatlinkshere-next' => '{{PLURAL:$1|shuvant|$1 shuvants}}',
 'whatlinkshere-links' => '← loyaedjes',
@@ -1604,24 +1725,37 @@ stî vandalijheyes).",
 Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po verifyî les blocaedjes.',
 'unblockip' => 'Disbloker èn uzeu',
 'unblockiptext' => "Rimplixhoz les tchamps chal pa dzo po ridner accès e scrijhaedje a èn uzeu ou adresse IP k' estént blokés.",
-'ipusubmit' => "Risaetchî l' blocaedje",
+'ipusubmit' => "Rissaetchî l' blocaedje",
 'unblocked' => '«[[User:$1|$1]]» a stî disbloké',
+'unblocked-range' => '$1 a stî disbloké',
 'unblocked-id' => 'Li blocaedje $1 a stî rsaetchî',
+'blocklist' => 'Uzeus blokés',
 'ipblocklist' => 'Uzeus blokés',
+'ipblocklist-legend' => 'Cweri après èn uzeu bloké',
+'blocklist-userblocks' => 'Catchî les blocaedjes des contes',
+'blocklist-tempblocks' => 'Catchî les blocaedjes timporaires',
+'blocklist-addressblocks' => "Catchî les blocaedjes d' ene seule adresse IP",
+'blocklist-rangeblocks' => 'Catchî les blocaedjes di fortchetes',
+'blocklist-timestamp' => 'Date et eure',
+'blocklist-target' => 'Såme',
 'blocklist-reason' => 'Råjhon',
 'ipblocklist-submit' => 'Cweri',
+'ipblocklist-localblock' => 'Blocaedje locå',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ôte blocaedje|Ôtes blocaedjes}}',
 'infiniteblock' => 'po todi',
 'expiringblock' => "disk' å $1 a $2",
 'blocklink' => 'bloker',
 'unblocklink' => 'disbloker',
+'change-blocklink' => "candjî l' blocaedje",
 'contribslink' => 'contribouwaedjes',
+'emaillink' => 'evoyî èn emile',
 'autoblocker' => "Bloké otomaticmint paski vos eployîz li minme adresse IP ki «[[User:$1|$1]]». Råjhon do blocaedje «'''$2'''».",
 'blocklogpage' => 'Djournå des blocaedjes',
 'blocklogentry' => 'a bloké «[[$1]]» po ene termene di $2 $3',
 'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus.
 Les adresses IP blokêyes otomaticmint èn sont nén håynêyes.
 Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po vey les blocaedjes èn alaedje pol moumint.",
-'unblocklogentry' => '«$1» a stî disbloké',
+'unblocklogentry' => 'a disbloké «$1»',
 'range_block_disabled' => "Li possibilité po les manaedjeus di bloker des fortchetes d' adresses IP a stî dismetowe.",
 'ipb_expiry_invalid' => 'Tins di blocaedje nén valide.',
 'ip_range_invalid' => "Fortchete d' adresses IP nén valide.",
@@ -1632,6 +1766,10 @@ Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po vey les blocaedjes 
 'sorbs_create_account_reason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL. Vos n' poloz nén ahiver on conte d' uzeu.",
 
 # Developer tools
+'lockdb' => 'Aclawaedje del båze di dnêyes',
+'lockdbsuccesssub' => "L' aclawaedje del båze di dnêyes a stî comifåt",
+'lockdbsuccesstext' => 'Li båze di dnêyes a stî aclawêye.<br />
+Ni rovyîz nén del [[Special:UnlockDB|disserer]] cwand vos åroz tot fwait avou voste etertinaedje.',
 'lockedbyandtime' => '(pa $1 li $2 a $3)',
 
 # Move page
@@ -1682,7 +1820,7 @@ L' årtike såme «[[:$1]]» egzistêye dedja. El voloz vs disfacer po vs permet
 'delete_and_move_confirm' => "Oyi, disfacer l' pådje",
 'delete_and_move_reason' => 'Disfacé po permete li displaeçaedje di «[[$1]]»',
 'selfmove' => 'Les tites sourdant et såme sont les minmes; ene pådje ni pout nén esse displaeceye so leye minme.',
-'fix-double-redirects' => "Rapontyî les rdjiblaedjes ki loynut aviè l' mwaisse tite",
+'fix-double-redirects' => "Rapontyî eto les rdjiblaedjes ki loynut aviè l' mwaisse tite",
 
 # Export
 'export' => 'Ricopyî des pådjes foû',
@@ -1734,7 +1872,7 @@ Et s' el schaper so voste éndjole, et poy li ristitchî droci.",
 'importstart' => "Dj' enonde li ristitchaedje...",
 'import-revision-count' => '{{PLURAL:$1|1 modêye|$1 modêyes}}',
 'importnopages' => 'Nole pådje a ristitchî.',
-'importfailed' => 'Li ristitchaedje a fwait berwete: $1',
+'importfailed' => 'Li ristitchaedje a fwait berwete: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Sourdant nén cnoxhou pol ristitchaedje',
 'importcantopen' => "Dji n' sai drovi l' fitchî a ristitchî",
 'importbadinterwiki' => 'Cron loyén eterwiki',
@@ -1800,12 +1938,12 @@ Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
 'tooltip-ca-nstab-media' => 'Vey li pådje di media',
 'tooltip-ca-nstab-special' => "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leye-minme.",
 'tooltip-ca-nstab-project' => 'Vey li pådje di pordjet',
-'tooltip-ca-nstab-image' => "Vey li pådje d' imådje",
+'tooltip-ca-nstab-image' => 'Vey li pådje do fitchî',
 'tooltip-ca-nstab-mediawiki' => 'Vey li messaedje ratournåve do sistinme',
 'tooltip-ca-nstab-template' => 'Vey li modele',
 'tooltip-ca-nstab-help' => "Vey li pådje d' aidance",
 'tooltip-ca-nstab-category' => 'Vey li pådje di categoreye',
-'tooltip-minoredit' => "Mete çouci come on ptit candjmint d' rén do tot [alt-i]",
+'tooltip-minoredit' => "Mete çouci come on ptit candjmint d' rén do tot",
 'tooltip-save' => 'Schaper vos candjmints [alt-s]',
 'tooltip-preview' => "Prévey vos candjmints, fijhoz l' divant d' schaper s' i vs plait! [alt-p]",
 'tooltip-diff' => 'Mostrer les candjmints ki vos avoz fwait e tecse. [alt-v]',
@@ -1815,6 +1953,7 @@ Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
 'tooltip-rollback' => "Li loyén «{{int:rollbacklink}}» permete di disfé d' on seu clitch tos les candjmints(s) fwaits sol pådje på dierin uzeu.",
 'tooltip-undo' => "Li loyén «{{int:editundo}}» permete di disfé li candjmint et drouve li boesse di candjmint e môde prévoeyaedje.
 Dj' ô bén, ça permete di disfé l' candjmint et d' mete on messaedje dins l' boesse di rascourti.",
+'tooltip-summary' => 'Dinez on ptit rascourti',
 
 # Stylesheets
 'common.css' => '/* li côde CSS metou chal serè eployî pa totes les peas et tos les uzeus */',
@@ -1826,7 +1965,7 @@ Dj' ô bén, ça permete di disfé l' candjmint et d' mete on messaedje dins l'
 # Attribution
 'anonymous' => '{{PLURAL:$1|Uzeu anonime|Uzeus anonimes}} di {{SITENAME}}',
 'siteuser' => "$1, {{GENDER:$2|uzeu d'|uzeuse di}} {{SITENAME}}",
-'anonuser' => '$1, {{GENDER:$2|uzeu|uzeuse}} anonime di {{SITENAME}}',
+'anonuser' => '$1, uzeu anonime di {{SITENAME}}',
 'lastmodifiedatby' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1 pa $3.',
 'othercontribs' => "Båzé so l' ovraedje da $1.",
 'others' => 'co ds ôtes',
@@ -1871,6 +2010,8 @@ Si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
 'thumbsize' => 'Grandeu po les imådjetes (thumb):',
 'widthheightpage' => '$1 × $2, $3 pådje{{PLURAL:$3||s}}',
 'file-info-size' => '$1 × $2 picsels, groxheur do fitchî: $3, del sôre "MIME": $4',
+'file-nohires' => "I n' a nén di pus grande finté.",
+'svg-long-desc' => 'Fitchî SVG, finté di $1 × $2 picsels, grandeu: $3',
 'show-big-image' => "Imådje a si grandeur d' oridjinne",
 
 # Special:NewFiles
@@ -1889,6 +2030,13 @@ Si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
 'days' => '$1 djoû{{PLURAL:$1||s}}',
 'ago' => 'i gn a $1',
 
+# Bad image list
+'bad_image_list' => "Li fôrmat est l' shuvant:
+
+Seulmint les intrêyes di djivêye (dj' ô bén, les royes ki cmincèt avou ene sitoele «*») sont acontêyes.
+Li prumî loén d' ene roye doet esse on loyén viè on fitchî k' on vout bloker si eployaedje.
+Les ôtes loyéns dnés sol minme roye sont veyous come des foû-rîle, dj' ô bén les pådjes wice ki l' fitchî pout esse eployî",
+
 # Metadata
 'metadata' => 'Meta-dnêyes',
 'metadata-help' => "Ci fitchî chal a des infôrmåcions di rawete, motoit bén radjoutêyes pa l' aparey foto limerike ou l' sicanrece eployeye po fé l' imådje.
@@ -2113,10 +2261,20 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 # Watchlist editor
 'watchlistedit-raw-titles' => 'Tites:',
 
+# Watchlist editing tools
+'watchlisttools-edit' => "Vey et candjî l' djivêye des shuvous",
+
 # Special:Version
 'version' => 'Modêye des programes',
+'version-extensions' => "Rawetes d' astalêyes",
+'version-specialpages' => 'Pådjes sipeciåles',
+'version-variables' => 'Variåves',
+'version-antispam' => 'Siconte do spam',
 'version-skins' => 'Peas',
 'version-other' => 'Ôtes',
+'version-license' => 'Licince',
+'version-software' => 'Programes astalés',
+'version-software-product' => 'Prodût',
 'version-software-version' => 'Modêye',
 
 # Special:FilePath
@@ -2132,12 +2290,18 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'specialpages-group-other' => 'Ôtès pådjes especiåles',
 'specialpages-group-login' => "S' elodjî / si rashire",
 'specialpages-group-changes' => 'Dierins candjmints et djournås',
+'specialpages-group-media' => 'Rapoirts et eberwetaedjes multimedia',
 'specialpages-group-users' => 'Uzeus et abondroets',
 'specialpages-group-highuse' => 'Eployaedje timpesse des pådjes',
+'specialpages-group-pages' => 'Djivêyes di pådjes',
+'specialpages-group-pagetools' => 'Usteyes po les pådjes',
+'specialpages-group-wiki' => 'Usteyes et dnêyes do wiki',
 'specialpages-group-redirects' => 'Ridjiblaedjes di pådjes sipeciåles',
+'specialpages-group-spam' => 'Usteyes siconte do spam',
 
 # Special:BlankPage
 'blankpage' => 'Vude pådje',
+'intentionallyblankpage' => 'Cisse pådje ci est vude en esprès.',
 
 # Special:Tags
 'tag-filter' => 'Passete po ls [[Special:Tags|etiketes]]:',
@@ -2154,6 +2318,38 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'compare-rev2' => 'Modêye 2',
 'compare-submit' => 'Comparer',
 
+# New logging system
+'logentry-delete-delete' => "$1 a disfacé l' pådje $3",
+'logentry-delete-restore' => "$1 a rapexhî l' pådje $3",
+'logentry-delete-event' => "$1 a candjî l' veyåvisté d' {{PLURAL:$5| èn evenmint|$5 evenmints}} do djournå åd fwait di $3: $4",
+'logentry-delete-revision' => "$1 a candjî l' veyåvisté d' {{PLURAL:$5| on candjmint|$5 candjmints}} åd fwait di $3: $4",
+'logentry-delete-event-legacy' => "$1 a candjî l' veyåvisté d' evenmints do djournå åd fwait di $3",
+'logentry-delete-revision-legacy' => "$1 a candjî l' veyåvisté des candjmints so $3",
+'logentry-suppress-delete' => "$1 a disfacé l' pådje $3",
+'logentry-suppress-event' => "$1 a catcheymint candjî l' veyåvisté d' {{PLURAL:$5| èn evenmint|$5 evenmints}} do djournå åd fwait di $3: $4",
+'logentry-suppress-revision' => "$1 a catcheymint candjî l' veyåvisté d' {{PLURAL:$5| on candjmint|$5 candjmints}} åd fwait di $3: $4",
+'logentry-suppress-event-legacy' => "$1 a catcheymint candjî l' veyåvisté d' evenmints do djournå åd fwait di $3",
+'logentry-suppress-revision-legacy' => "$1 a catcheymint candjî l' veyåvisté des candjmints so $3",
+'revdelete-content-hid' => 'contnou catchî',
+'revdelete-summary-hid' => 'rascourti catchî',
+'revdelete-uname-hid' => "no d' uzeu catchî",
+'revdelete-content-unhid' => 'contnou discatchî',
+'revdelete-summary-unhid' => 'rascourti discatchî',
+'revdelete-uname-unhid' => "no d' uzeu discatchî",
+'revdelete-restricted' => 'restriccions aplikêyes ås manaedjeus',
+'revdelete-unrestricted' => 'restriccions ås manaedjeus rsaetcheyes',
+'logentry-move-move' => "$1 a displaecî l' pådje $3 viè $4",
+'logentry-move-move-noredirect' => "$1 a displaecî l' pådje $3 viè $4 sins leyî d' redjiblaedje",
+'logentry-move-move_redir' => "$1 a displaecî l' pådje $3 viè $4 pa dzeu d' on redjiblaedje",
+'logentry-move-move_redir-noredirect' => "$1 a displaecî l' pådje $3 viè $4 pa dzeu d' on redjiblaedje et sins leyî d' redjblaedje",
+'logentry-patrol-patrol' => "$1 a marké come patrouyî l' candjmint $4 del pådje $3",
+'logentry-patrol-patrol-auto' => "$1 a marké otomaticmint come patrouyî l' candjmint $4 del pådje $3",
+'logentry-newusers-newusers' => "$1 a-st ahivé on conte d' uzeu",
+'logentry-newusers-create' => "$1 a-st ahivé on conte d' uzeu",
+'logentry-newusers-create2' => "$1 a-st ahivé on conte d' uzeu $3",
+'logentry-newusers-autocreate' => 'li conte $1 a stî ahivé otomaticmint',
+'newuserlog-byemail' => "emilaedje d' on scret",
+
 # Feedback
 'feedback-subject' => 'Sudjet',
 'feedback-message' => 'Messaedje',
@@ -2161,6 +2357,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'feedback-submit' => "Evoyî l' vosse",
 'feedback-adding' => 'Vosse messaedje a stî håyné sol pådje...',
 'feedback-error2' => "Aroke : Li candjaedje n' a nén stî",
+'feedback-close' => 'Fwait',
 
 # API errors
 'api-error-badaccess-groups' => "Vos n' avoz nén l' droet d' eberweter des fitchîs so ç' wiki cial",
@@ -2170,11 +2367,13 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'api-error-duplicate-archive-popup-title' => "Ricopyî {{PLURAL:$1|l' fitchî|les fitchîs}} k' {{PLURAL:$1|a stî rsaetchî|k' ont stî rsaetchîs}}",
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|fitchî|fitchîs}} a dobe',
 'api-error-empty-file' => 'Vosse fitchî est vude.',
+'api-error-emptypage' => "C' est nén permetou d' ahiver ene novele pådje et l' leyî vude.",
 'api-error-fetchfileerror' => 'Aroke divintrinne : ene sacwè a fwait berwete cwand on-z a volou rawè vosse fitchî',
 'api-error-file-too-large' => 'Vosse fitchî est trop pezant',
 'api-error-filename-tooshort' => 'Li no do fitchî est trop court',
 'api-error-filetype-banned' => "On n' pout nén eberweter des sfwaits fitchîs",
 'api-error-filetype-missing' => 'I manke li cawete do fitchî',
+'api-error-hookaborted' => 'Li candjmint ki vos vlîz fé a stî espaitchî pa on module di rawete.',
 'api-error-http' => 'Aroke divintrinne : nou raloyaedje å sierveu',
 'api-error-illegal-filename' => "On n' pout nén prinde ci no la pol fitchî",
 'api-error-internal-error' => "Aroke divintrinne : gn a ene sacwè k' a må stî tins d' l' eredjistrumint d' vost eberwetêye",
@@ -2190,7 +2389,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'api-error-stashfailed' => 'Aroke divintrinne : li sierveu a pierdou les dnêyes provizweres',
 'api-error-timeout' => "Li sierveu n' a nén respondou dins les tins",
 'api-error-unclassified' => 'Aroke nén cnoxhowe',
-'api-error-unknown-code' => 'Aroke nén cnoxhowe : « $1 »',
+'api-error-unknown-code' => 'Aroke nén cnoxhowe: «$1».',
 'api-error-unknown-error' => "Aroke divintrinne : gn a ene sacwè ki n' a nén stî tins d' l' eberwetaedje",
 'api-error-unknown-warning' => 'Adviertixhmint nén cnoxhou: «$1».',
 'api-error-unknownerror' => 'Aroke nén cnoxhowe: «$1».',
index 8c6f606..ba70453 100644 (file)
@@ -70,7 +70,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Tago-a in mga gin-patrol o binantayan nga mga pagliwat ha mga dipala naiha nga mga kabag-ohan',
 'tog-newpageshidepatrolled' => 'Tago-a an mga gin-patrol o binantayan nga mga pakli tikang han talaan hin bag-o nga pakli',
 'tog-extendwatchlist' => 'Padako-a an angay timan-an agod makita an tanan nga kabag-ohan, diri la an gibag-ohi',
-'tog-usenewrc' => 'Gamit hin mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)',
+'tog-usenewrc' => 'Gamitin mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)',
 'tog-numberheadings' => 'Auto-nga-ihap nga mga pagngaran',
 'tog-showtoolbar' => 'Igpakita an edit toolbar (nakinahanglan hin JavaScript)',
 'tog-editondblclick' => 'Igliwat in mga pakli ha doble nga klik (nakinahanglan hin JavaScript)',
@@ -542,14 +542,18 @@ Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bi
 'accmailtitle' => 'Ginpadara na an tigaman-pagsulod.',
 'newarticle' => '(Bag-o)',
 'newarticletext' => "Ginsunod mo an pakli nga waray pa kahihimo.  Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [[{{MediaWiki:Helppage}}|nabulig nga pakli]] para han kadugangan nga pananabutan).  Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.",
+'noarticletext' => 'Waray yana nahasurat hini nga pakli.
+Puyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],
+o [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.',
 'noarticletext-nopermission' => 'Ha yana waray surat ini nga pakli.
 Puydi nimo [[Special:Search/{{PAGENAME}}|pamilngon ini nga titulo han pakli]] ha iba nga mga pakli,
 o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilngon ha mga kasumpay nga talaan]</span>.',
 'userpage-userdoesnotexist-view' => "An akawnt han gumaramit ni ''$1'' in diri nakarehistro.",
 'updated' => '(Ginbag-ohan)',
 'note' => "'''Pahibaro:'''",
-'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas la ini.'''
-An imo mga ginbag-o in waray pa katipig!",
+'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas pa la ini.'''
+¡Waray pa katipig an imo mga ginbag-o!",
 'editing' => 'Ginliliwat an $1',
 'editingsection' => 'Ginliliwat an $1 (bahin)',
 'editingcomment' => 'Ginliliwat an $1 (bag-o nga bahin)',
@@ -1349,6 +1353,8 @@ An bisan ano nga masunod nga mga sumpay ha kapareho nga bagis in igtratrato nga
 
 # Metadata
 'metadata' => 'Metadata',
+'metadata-help' => 'Iní nga paypay mayda dugang nga pagpasabot, nga bangin gindugáng tikang han digital nga camera o iskaner nga gin-gamit paghimo o pag-digitar hini.
+Kon an paypay ginliwat tikang han orihinal nga kamutangan, mayda mga detalye nga bangin diri magpakita han ginliwat nga paypay',
 'metadata-fields' => 'An mga rumbay han hulagway han metadato nga nakatala dinhi nga mensahe in iglalakip ha padayag hin hulagway nga pakli kun an taramdan metadato in nakalukot.
 An iba in daan nakatago.
 * make
@@ -1505,6 +1511,16 @@ An iba in daan nakatago.
 'blankpage' => 'Blanko nga pakli',
 'intentionallyblankpage' => 'Ini nga pakli gintuyo pagpabilin nga blanko.',
 
+# External image whitelist
+'external_image_whitelist' => '#Pabay-i ini nga linea nga sugad gud la <pre>
+#Igbutang in mga regular nga expresyon nga mga fragment (iton bahin nga ada ha butnga han //) ha ubos
+#Ini igpapadis han mga URL han mga ha gawas (gin-hotlink) nga mga hulagway
+#An mga nasakto igpapakita nga mga hulagway, kon diri, sumpay la ngadto han hulagway an igpapakita
+#Mga linea nga natikang hin  # ginta-tratar nga mga komento
+# Case-insensitive ini
+
+#Igbutang an mga regex nga fragment ha igbaw hini nga linea. Pabay-i ini nga linea nga sugad gud la</pre>',
+
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] panara:',
 'tag-filter-submit' => 'Panara',
index 1b0d4df..e578859 100644 (file)
@@ -242,9 +242,9 @@ $messages = array(
 'editfont-serif' => 'סעריף שריפֿט',
 
 # Dates
-'sunday' => '×\96×\95× ×\98×\90ג',
+'sunday' => '×\96×\95× ×\98×\99ג',
 'monday' => 'מאָנטיג',
-'tuesday' => '×\93×\99נס×\98×\90ג',
+'tuesday' => '×\93×\99נס×\98×\99ג',
 'wednesday' => 'מיטװאָך',
 'thursday' => 'דאָנערשטאג',
 'friday' => 'פרייטיג',
@@ -258,7 +258,7 @@ $messages = array(
 'sat' => 'שבת',
 'january' => 'יאַנואַר',
 'february' => 'פֿעברואַר',
-'march' => '×\9e×\90Ö·רץ',
+'march' => '×\9e×¢רץ',
 'april' => 'אַפּריל',
 'may_long' => 'מײַ',
 'june' => 'יוני',
@@ -282,7 +282,7 @@ $messages = array(
 'december-gen' => 'דעצעמבער',
 'jan' => 'יאַנ׳',
 'feb' => 'פֿעב׳',
-'mar' => '×\9e×\90Ö·ר׳',
+'mar' => '×\9e×¢ר׳',
 'apr' => 'אַפּר׳',
 'may' => 'מײַ',
 'jun' => 'יונ׳',
@@ -606,8 +606,8 @@ $2',
 'userlogout' => 'אַרױסלאָגירן',
 'notloggedin' => 'נישט איינגעשריבן',
 'nologin' => "איר האט נישט קיין קאנטע? '''$1'''.",
-'nologinlink' => '×\91×\90ש×\90פֿ×\98 ×\90 קאנטע',
-'createaccount' => '×\91×\90ש×\90פֿ×\98 ×\90 × ×\99×\99ע קאנטע',
+'nologinlink' => 'ש×\90ַפֿ×\9f ×\90Ö· קאנטע',
+'createaccount' => 'ש×\90ַפֿ×\9f ×\90Ö· × ×²Ö·ע קאנטע',
 'gotaccount' => "האסטו שוין א קאנטע? '''$1'''.",
 'gotaccountlink' => 'אַרײַנלאגירן',
 'userlogin-resetlink' => 'פארגעסן אײַערע אַרײַנלאָגירן פרטים?',
@@ -632,7 +632,7 @@ $2',
 'loginsuccess' => "'''איר זענט אַצינד אַרײַנלאָגירט אין {{SITENAME}} ווי \"\$1\".'''",
 'nosuchuser' => 'נישטא קיין באניצער מיטן נאמען  "$1".
 
-ק×\95ק×\98 ×\90×\99×\91ער ×\90×\99×\99ער ×\90×\95×\99ס×\9c×\99×\99×\92, ×\90×\93ער [[Special:UserLogin/signup|×\91×\90ש×\90פֿ×\98 ×\90 × ×\99×\99ע קאנטע]].',
+ק×\95ק×\98 ×\90×\99×\91ער ×\90ײַער ×\90×\95×\99ס×\9c×\99×\99×\92, ×\90×\93ער [[Special:UserLogin/signup|ש×\90ַפֿ×\98 ×\90 × ×²Ö·ע קאנטע]].',
 'nosuchusershort' => 'נישטאָ קיין באַניצער מיטן נאָמען "$1". 
 ביטע באַשטעטיקט דעם אויסלייג.',
 'nouserspecified' => 'איר ברויכט ספעציפֿיצירן א באַניצער-נאָמען.',
@@ -839,7 +839,7 @@ $2
 'newarticletext' => "איר זענט געקומען צו אַ בלאַט וואָס עקזיסטירט נאָך נישט!
 כדי שאַפֿן דעם בלאַט, קלאַפט אַרײַן טעקסט אין דעם קעסטל אונטן (זעט דעם [[{{MediaWiki:Helppage}}|הילף בלאַט]] פֿאַר מער אינפֿארמאַציע).
 אויב איר זענט אַהערגעקומען בטעות, דרוקט דאָס '''Back''' קנעפל אין אײַער בלעטערער.",
-'anontalkpagetext' => "----'''דאס איז א רעדן בלאט פון א אן אנאנימען באַניצער וואס האט נאך נישט באַשאַפֿן קיין קאנטע, אדער באניצט זיך נישט דערמיט. דערוועגן, מוזן מיר זיך באניצן מיט זיין IP אדרעס כדי אים צו אידענטיפיצירן. עס קען זיין אז עטלעכע אנדערע ניצן אויך דעם  IP אדרעס. אויב זענט איר אן אנאנימער באַניצער וואס שפירט אז איר האט באקומען מעלדונגען וואס זענען נישט שייך צו אייך, ביטע [[Special:UserLogin/signup|באַשאַפֿט א קאנטע]] אדער [[Special:UserLogin|טוט זיך אריינלאגירן]] כדי צו פארמיידן דאס אין די עתיד זיך פארמישן מיט אנדערע אנאנימע באַניצערס.'''",
+'anontalkpagetext' => "----'''דאָס איז א רעדן בלאַט פון א אַן אַנאנימען באַניצער וואָס האט נאך נישט געשאַפֿן קיין קאנטע, אדער באניצט זיך נישט דערמיט. דערוועגן, מוזן מיר זיך באניצן מיט זיין IP אדרעס כדי אים צו אידענטיפיצירן. עס קען זיין אז עטלעכע אנדערע ניצן אויך דעם  IP אדרעס. אויב זענט איר אן אנאנימער באַניצער וואס שפירט אז איר האט באקומען מעלדונגען וואס זענען נישט שייך צו אייך, ביטע [[Special:UserLogin/signup|שאַפֿט א קאנטע]] אדער [[Special:UserLogin|טוט זיך אריינלאגירן]] כדי צו פארמיידן דאס אין די עתיד זיך פארמישן מיט אנדערע אַנאנימע באַניצערס.'''",
 'noarticletext' => 'דערווייל איז נישט פאַרהאן קיין שום טעקסט אין דעם בלאט.
 איר קענט [[Special:Search/{{PAGENAME}}|זוכן דעם בלאט טיטל]] אין אנדערע בלעטער,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} זוכן די רעלעוואנטע לאגביכער],
@@ -933,13 +933,13 @@ $2
 'hiddencategories' => 'דער דאזיגער בלאט געהערט צו {{PLURAL:$1|איין באהאלטענער קאטעגאריע|$1 באהאלטענע קאטעגאריעס}}:',
 'edittools' => '<!-- טעקסט דא וועט געוויזן ווערן אונטער ענדערן און ארויפלאדירן פארעמס. -->',
 'nocreatetitle' => 'בלאט באשאפן באגרעניצט',
-'nocreatetext' => '×\93×\99 ×¡×\99×\99×\98 ×\94×\90×\98 ×\91×\90×\92רענ×\99צ×\98 ×\93×\99 ×\9e×¢×\92×\9c×\99×\9bק×\99×\99×\98 ×¦×\95 ×\91×\90ש×\90פ×\9f × ×\99×\99×¢ ×\91×\9c×¢×\98ער.
\90×\99ר ×§×¢× ×\98 ×¦×\95ר×\99ק×\92×\99×\99×\9f ×\90×\95×\9f ×¢× ×\93ער×\9f ×\93×\99 ×¢×§×\96×\99ס×\98×\99רנ×\93×¢ ×\91×\9c×\90×\98, ×\90×\93ער [[Special:UserLogin|×\9c×\90×\92×\99ר×\98 ×\96×\99×\9a ×\90ר×\99×\99×\9f ×\90×\95×\9f ×\91×\90שאפט א קאנטע]].',
+'nocreatetext' => 'די סייט האט באגרעניצט די מעגליכקייט צו שאפן נייע בלעטער.
\90×\99ר ×§×¢× ×\98 ×¦×\95ר×\99ק×\92×\99×\99×\9f ×\90×\95×\9f ×¢× ×\93ער×\9f ×\93×¢×\9d ×¢×§×\96×\99ס×\98×\99רנ×\93×\9f ×\91×\9c×\90×\98, ×\90×\93ער [[Special:UserLogin|×\9c×\90×\92×\99ר×\98 ×\96×\99×\9a ×\90ר×\99×\99×\9f ×\90×\93ער שאפט א קאנטע]].',
 'nocreate-loggedin' => 'איר זענט נישט ערלויבט צו שאַפֿן נײַע בלעטער.',
 'sectioneditnotsupported-title' => 'רעדאקטירן אפטיילונגען נישט געשטיצט.',
 'sectioneditnotsupported-text' => 'רעדאַקטירן אָפטיילונגען נישט געשטיצט אויף דעם בלאַט',
-'permissionserrors' => 'ער×\9c×\95×\99×\91×¢× ×\99ש×\9f ×¤×¢×\99×\9cערס',
-'permissionserrorstext' => 'איר זענט נישט ערלויבט צו טון דאס, פֿאַר  {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:',
+'permissionserrors' => 'ערלויבענישן פעלערס',
+'permissionserrorstext' => 'איר זענט נישט ערלויבט צו טון דאס, פֿאַר {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:',
 'permissionserrorstext-withaction' => 'איר זענט נישט ערלויבט צו $2, וועגן {{PLURAL:$1|דער פֿאלגנדער סיבה| די פֿאלגנדע סיבות}}:',
 'recreate-moveddeleted-warn' => "'''ווארענונג: איר שאפט א נייעם בלאט וואס איז שוין איינמאל  געווארן אויסגעמעקט.'''
 
@@ -1062,6 +1062,8 @@ $2
 'revdelete-show-file-submit' => 'יא',
 'revdelete-selected' => "'''{{PLURAL:$2|אויסדערוויילטע ווערסיע| אויסדערוויילטע ווערסיעס}} פון [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1| אויסדערוויילטע לאג אקציע|אויסדערוויילטע לאג אקציעס}}:'''",
+'revdelete-text' => "'''אויסגעמעקטע רעוויזיעס און געשעענישן וועלן בלייבן אין דער בלאט היסטאריע און די לאגביכער, אבער טיילן פון זייער אינהאלט וועט ווערן אומגרייכלעך צום קהל. '''
+אנדערע סיסאפן אויף {{SITENAME}} וועלן נאך האבן צוטריט צום באהאלטענעם אינהאלט און קענען אים צוריקשטעלן דורך דעם זעלבן אייבערפלאך,  אחוץ ווען מען שטעלט נאך באגרענעצונגען.",
 'revdelete-suppress-text' => "באהאלטן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגענדע פעלער:
 * אויפדעקונג פון פריוואטקייט אינפארמאציע
 * ''היים אדרעסן, טעלעפאן נומערן, אדער סאשעל סעקיורעטי, א.א.וו.:'''",
@@ -1445,6 +1447,7 @@ $1",
 'right-userrights' => 'רעדאַקטירן אלע באַניצער רעכטן',
 'right-userrights-interwiki' => 'רעדאַקטירן באַניצער רעכטן פֿון באַניצער אויף אנדערע וויקיס',
 'right-siteadmin' => 'פארשליס און שליס-אויף די דאטעבאזע',
+'right-override-export-depth' => 'עקספארטירן בלעטער כולל געלינקטע בלעטער ביז א טיף פון 5',
 'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
 'right-passwordreset' => 'באַקוקן פאַסווארט צוריקשטעלן ע־בריוו',
 
@@ -1461,13 +1464,14 @@ $1",
 'action-createpage' => 'שאַפֿן בלעטער',
 'action-createtalk' => 'שאַפֿן שמועס בלעטער',
 'action-createaccount' => 'שאַפֿן די באַניצער קאנטע',
-'action-minoredit' => 'באַצייכנען די רעדאַקטירונג ווי מינערדיק',
+'action-minoredit' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\93×\99 ×¨×¢×\93×\90ַק×\98×\99ר×\95× ×\92 ×\95×\95×\99 ×\9e×\99נער×\93×\99ק',
 'action-move' => 'באַוועגן דעם בלאַט',
 'action-move-subpages' => 'באַוועגן דעם בלאַט מיט זײַנע אונטערבלעטער',
 'action-move-rootuserpages' => 'באַוועגן באַניצער הויפטבלעטער',
 'action-movefile' => 'באַוועגן די טעקע',
 'action-upload' => 'אַרויפֿלאָדן די טעקע',
 'action-reupload' => 'איבערשרײַבן די עקזיסטירנדע טעקע',
+'action-reupload-shared' => 'אריבערשרייבן די טעקע אין א געמיינזאמער רעפאזיטאריע',
 'action-upload_by_url' => 'ארויפֿלאָדן די טעקע פֿון א URL',
 'action-writeapi' => 'ניצן דעם שרײַבן API',
 'action-delete' => 'אויסמעקן דעם בלאַט',
@@ -1479,6 +1483,7 @@ $1",
 'action-suppressionlog' => 'באקוקן דעם פריוואטן לאג',
 'action-block' => 'בלאקירן דעם באַניצער פֿון רעדאַקטירן',
 'action-protect' => 'ענדערן שיצונג ניוואען פֿאַר דעם בלאַט',
+'action-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
 'action-import' => 'אימפארטירן דעם בלאַט פֿון אַן אַנדער וויקי',
 'action-importupload' => 'אימפארטירן דעם בלאַט דורך ארויפֿלאָדן אַ טעקע',
 'action-patrol' => "אנצייכענען אנדערס' רעדאקטירונגן אלס נאכגעקוקט",
@@ -1544,6 +1549,7 @@ $1",
 'upload-tryagain' => 'פֿאָרלייגן מאדיפֿיצירטע טעקע באַשרײַבונג',
 'uploadnologin' => 'נישט אַרײַנלאגירט',
 'uploadnologintext' => 'איר מוזט זײַן [[Special:UserLogin| אַרײַנלאָָגירט]] כדי ארויפֿצולאָדן טעקעס',
+'upload_directory_missing' => 'די ארויפלאד דירעקטאריע ($1) פעלט און דער וועבסערווירער קען זי נישט שאפן.',
 'upload_directory_read_only' => 'דער וועבסארווער קען נישט שרייבן צום ארויפלאדן ארכיוו "$1".',
 'uploaderror' => 'אַרויפֿלאָדן פֿעלער',
 'upload-recreate-warning' => "'''ווארענונג: א טעקע מיט דעם נאמען איז געווארן אויסגעמעקט אדער באוועגט.'''
@@ -1579,6 +1585,8 @@ $1",
 'badfilename' => 'טעקע נאמען איז געטוישט צו "$1".',
 'filetype-mime-mismatch' => 'טעקע סופֿיקס ".$1" שטימט נישט מיטן MIME טיפ פון דער טעקע($2).',
 'filetype-badmime' => 'טעקעס מיטן  MIME טיפ "$1" טאר מען נישט ארויפלאדן.',
+'filetype-unwanted-type' => "'''\".\$1\"''' איז אן אומרעקאמענדירטער טעקע־טיפ. {{PLURAL:\$3|רעקאמענדירטער טעקע־טיפ איז|רעקאמענדירטע טעקע־טיפן זענען}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|איז נישט קיין דערלויבטער טעקע־טיפ |זענען נישט קיין דערלויבטע טעקע־טיפן}}. {{PLURAL:$3|דערלויבטער טעקע־טיפ איז|דערלויבטע טעקע־טיפן זענען}} $2.',
 'filetype-missing' => 'די טעקע האט נישט קיין פארברייטערונג (למשל ".jpg").',
 'empty-file' => 'די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.',
 'file-too-large' => 'די טעקע וואָס איר האט אײַנגעגעבן איז צו גרויס.',
@@ -1663,8 +1671,13 @@ $1",
 # Lock manager
 'lockmanager-notlocked' => 'מ\'קען נישט אויפֿשליסן "$1"; ער איז נישט פֿארשלאסן.',
 
+# ZipDirectoryReader
+'zip-wrong-format' => 'ספעציפירטע טעקע איז נישט קיין ZIP טעקע.',
+
 # Special:UploadStash
 'uploadstash' => 'אַרויפֿלאָד רעזערוו',
+'uploadstash-clear' => 'אויסמעקן טעקעס פון זאפאס',
+'uploadstash-nofiles' => 'איר האט נישט קיין טעקעס אין זאפאס.',
 'uploadstash-refresh' => 'דערפֿרישן די רשימה פון טעקעס',
 
 # img_auth script messages
@@ -2082,12 +2095,12 @@ $1",
 'watcherrortext' => 'א גרײַז האט פאסירט ביים ענדערן אײַערע אויפֿפאסן ליסטע אײַנשטעלונגען פֿאר "$1".',
 
 'enotif_mailer' => 'נאטיפאקאציע שיקער {{SITENAME}}',
-'enotif_reset' => 'באַצייכן אלע בלעטער שוין געזען',
+'enotif_reset' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9c×¢ ×\91×\9c×¢×\98ער ×©×\95×\99×\9f ×\92×¢×\96×¢×\9f',
 'enotif_newpagetext' => 'דאס איז א נייער בלאט.',
-'enotif_impersonal_salutation' => 'באנוצער {{SITENAME}}',
+'enotif_impersonal_salutation' => '{{SITENAME}} באַניצער',
 'changed' => 'געטוישט',
-'created' => '×\91×\90ש×\90פן',
-'enotif_subject' => 'דער בלאט $PAGETITLE אין {{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED דורך $PAGEEDITOR',
+'created' => '×\92עש×\90ַפֿן',
+'enotif_subject' => 'דער בלאט $PAGETITLE אין {{SITENAME}} $CHANGEDORCREATED דורך $PAGEEDITOR',
 'enotif_lastvisited' => 'זעט $1 פֿאַר אלע ענדערונגען זינט אײַער לעצטן וויזיט.',
 'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
 'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
@@ -2122,7 +2135,7 @@ $UNWATCHURL
 'deletepage' => 'מעק אויס בלאט',
 'confirm' => 'באַשטעטיגן',
 'excontent' => 'אינהאלט געווען: "$1"',
-'excontentauthor' => "×\90×\99× ×\94×\90×\9c×\98 ×\92×¢×\95×\95×¢×\9f: '$1' (×\90×\95×\9f ×\93ער ×\90×\99×\99נצ×\99×\92ס×\98ער ×\91×\90ר×\91×\99×\99טער איז געווען '[[Special:Contributions/$2|$2]]')",
+'excontentauthor' => "×\90×\99× ×\94×\90×\9c×\98 ×\92×¢×\95×\95×¢×\9f: '$1' (×\90×\95×\9f ×\93ער ×\90×\99×\99נצ×\99×\92ס×\98ער ×\91×\90×\90ר×\91×¢טער איז געווען '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => 'אינהאַלט בעפֿאַרן אויסליידיגן איז געווען: "$1"',
 'exblank' => 'בלאט איז געווען ליידיג',
 'delete-confirm' => 'אויסמעקן $1',
@@ -2462,6 +2475,7 @@ $1',
 'proxyblocker-disabled' => 'די  פֿונקציע איז אומאַקטיווירט.',
 'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
 'proxyblocksuccess' => 'געטאן.',
+'cant-block-while-blocked' => 'איר קען נישט בלאקירן קיין אנדערע באניצער ווען איר זענט אליין בלאקירט.',
 'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
 
 # Developer tools
@@ -2679,6 +2693,8 @@ $1',
 'javascripttest-disabled' => 'די  פֿונקציע איז אומאַקטיווירט אין דער דאזיקער וויקי.',
 'javascripttest-title' => 'דורכפירנדיק $1 בדיקות',
 'javascripttest-pagetext-skins' => 'קלויבט א באניצער־אייבערפלאך מיט וואס דורכצופירן די בדיקות:',
+'javascripttest-qunit-intro' => 'זעט [$1 דאקומענטאציע פאר טעסטן] בײַ mediawiki.org.',
+'javascripttest-qunit-heading' => 'מעדיעוויקי JavaScript QUnit קאנטראל־פראגראם',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'אייער באניצער בלאט',
@@ -2734,8 +2750,8 @@ $1',
 'tooltip-ca-nstab-template' => 'זעט דעם מוסטער',
 'tooltip-ca-nstab-help' => 'זעט דעם הילף בלאַט',
 'tooltip-ca-nstab-category' => 'באקוקט דעם קאטעגאריע בלאט',
-'tooltip-minoredit' => 'באצייכן דאס אלס מינערדיגע ענדערונג',
-'tooltip-save' => '×\94×\99×\98 ×\90×\95×\99×£ אייערע ענדערונגען',
+'tooltip-minoredit' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\93×\90ס ×\90×\9cס ×\9e×\99נער×\93×\99×\92×¢ ×¢× ×\93ער×\95× ×\92',
+'tooltip-save' => '×\90×\95×\99פֿ×\94×\99×\98×\9f אייערע ענדערונגען',
 'tooltip-preview' => 'פֿארויסדיגע ווײַזונג, זײַט אזוי גוט באניצט די געלעגנהייט פֿארן אויפֿהיטן!',
 'tooltip-diff' => 'ווײַזן אייערע ענדערונגען צום טעקסט',
 'tooltip-compareselectedversions' => 'פארגלײַכם די צוויי ווערסיעס פון דעם בלאט',
@@ -2809,10 +2825,10 @@ $1',
 'skinname-vector' => 'וועקטאר',
 
 # Patrolling
-'markaspatrolleddiff' => 'באצייכנען אלס פאטראלירט',
-'markaspatrolledtext' => 'באצייכנען בלאט אלס פאטראלירט',
+'markaspatrolleddiff' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
+'markaspatrolledtext' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\91×\9c×\90×\98 ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
 'markedaspatrolled' => 'באצייכנט אלס פאטראלירט',
-'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\92עצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90לס פאַטארלירט.',
+'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\91×\90ַצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90Ö·לס פאַטארלירט.',
 'rcpatroldisabled' => 'פאַטראלירן ענדערונגען איז  מבוטל געווארן',
 'rcpatroldisabledtext' => 'די לעצטע ענדערונגען פאַטראלירן אייגנקייט איז אצינד בטל.',
 'markedaspatrollederror' => 'נישט מעגלעך צו צייכענען אלס פאַטראלירט',
@@ -2959,24 +2975,34 @@ $1',
 'exif-focallength-format' => '$1 מ"מ',
 'exif-subjectarea' => 'סוביעקט געגנט',
 'exif-flashenergy' => 'פלעש ענערגיע',
-'exif-focalplanexresolution' => 'פאקאל פלעין עקס רעזאלוציע',
-'exif-focalplaneresolutionunit' => 'פאקאל פלעין רעזאלוציע מאס',
-'exif-exposureindex' => 'עקספאוזשער אינדעקס',
+'exif-focalplanexresolution' => 'פאקוס־שטח האריזאנטאל',
+'exif-focalplaneyresolution' => 'פאקוס־שטח ווערטיקאל',
+'exif-focalplaneresolutionunit' => 'פאקוס־שטח רעזאלוציע איינהייט',
+'exif-subjectlocation' => 'סוביעקט ארט',
+'exif-exposureindex' => 'באַלײַכטן אינדעקס',
+'exif-sensingmethod' => 'דערשפירן מעטאד',
 'exif-filesource' => 'מקור פֿון דער טעקע',
 'exif-scenetype' => 'סצענע טיפ',
 'exif-customrendered' => 'קאסטעם בילד פראצעסירונג',
 'exif-exposuremode' => 'באַלײַכטן מצב',
-'exif-digitalzoomratio' => 'דיזשיטאלער זום ראשיאו',
+'exif-whitebalance' => 'ווײַס באַלאַנס',
+'exif-digitalzoomratio' => 'דיגיטאלער זום פארהעלטעניש',
 'exif-focallengthin35mmfilm' => 'פאקאל לענג אין 35 מ"מ פילם',
+'exif-scenecapturetype' => 'סצענע אויפנעם טיפ',
 'exif-gaincontrol' => 'סצענע קאנטראל',
 'exif-contrast' => 'קאנטראסט',
 'exif-devicesettingdescription' => 'זאך סעטינגס אראפמאלונג',
-'exif-gpslatitude' => 'לאטיטוד',
+'exif-gpslatituderef' => 'צפון אדער דרום גארטל־ליניע',
+'exif-gpslatitude' => 'גארטל־ליניע',
 'exif-gpslongituderef' => 'מזרח אדער מערב לענג',
 'exif-gpslongitude' => 'געאגראַפֿישע לענג',
 'exif-gpsaltituderef' => 'אלטיטוט רעפערענץ',
-'exif-gpsaltitude' => 'אלטיטוט',
+'exif-gpsaltitude' => 'הייך',
+'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
+'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
 'exif-gpsdop' => 'מאס פוקנטליכקייט',
+'exif-gpsspeedref' => 'גיך איינהייט',
+'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
 'exif-gpsimgdirectionref' => 'רעפערענץ פאר ריכטונג פון בילד',
 'exif-gpsimgdirection' => 'ריכטונג פון בילד',
 'exif-gpsdestlatituderef' => 'רעפֿערענץ פֿאַר ברייט־ליניע פון ציל',
@@ -2987,15 +3013,21 @@ $1',
 'exif-gpsdestbearing' => 'ריכטונג פֿון ציל',
 'exif-gpsdestdistanceref' => 'רעפֿערענץ פֿאַר ווײַטקייט פֿון ציל',
 'exif-gpsdestdistance' => 'ווײַטקייט צום ציל',
+'exif-gpsprocessingmethod' => 'נאמען פון GPS פראצעסירן מעטאד',
 'exif-gpsareainformation' => 'נאמען פון GPS געגענט',
-'exif-gpsdatestamp' => 'דאטום GPS',
-'exif-gpsdifferential' => 'דיפראנציאלע קאקרעקציע GPS',
+'exif-gpsdatestamp' => 'GPS דאטע',
+'exif-gpsdifferential' => 'GPS דיפראנציאלע קאקרעקציע',
+'exif-jpegfilecomment' => 'JPEG טעקע הערה',
+'exif-keywords' => 'שליסלווערטער',
+'exif-worldregioncreated' => "וועלטראיאן וואו מ'האט גענומען דאס בילד",
+'exif-countrycreated' => "לאנד וואו מ'האט געמאכט דאס בילד",
 'exif-provinceorstatecreated' => "פראווינץ אדער שטאַט וואו מ'האט גענומען דאס בילד",
-'exif-citycreated' => "שטאַט וואו מ'האט געמאכט דאס בילד",
+'exif-citycreated' => "שטאָט וואו מ'האט געמאכט דאס בילד",
+'exif-worldregiondest' => 'וועלטראיאן געוויזן',
 'exif-countrydest' => 'לאנד געוויזן',
 'exif-countrycodedest' => 'קאד פאר לאנד געוויזן',
 'exif-provinceorstatedest' => 'פראווינץ אדער שטאַט געוויזן',
-'exif-citydest' => 'געוויזענע שטאט',
+'exif-citydest' => 'געוויזענע שטָאט',
 'exif-objectname' => 'קורצער טיטל',
 'exif-source' => 'מקור',
 'exif-editstatus' => 'רעדאקציאנעלער סטאטוס פון בילד',
@@ -3024,6 +3056,7 @@ $1',
 'exif-licenseurl' => 'URL פֿאר קאפירעכט ליצענץ',
 'exif-morepermissionsurl' => 'אלטערנאטיווע ליצענצירן אינפארמאציע',
 'exif-pngfilecomment' => 'PNG טעקע הערה',
+'exif-contentwarning' => 'אינהאלט ווארענונג',
 'exif-giffilecomment' => 'GIF טעקע הערה',
 'exif-intellectualgenre' => 'ארט  איינהייט',
 'exif-subjectnewscode' => 'טעמע קאד',
@@ -3095,7 +3128,7 @@ $1',
 
 'exif-contrast-0' => 'נארמאל',
 'exif-contrast-1' => 'ווייך',
-'exif-contrast-2' => 'הארט',
+'exif-contrast-2' => 'האַרט',
 
 'exif-saturation-0' => 'נארמאַל',
 
@@ -3347,7 +3380,7 @@ $5
 'hebrew-calendar-m6b' => "אדר ב'",
 'hebrew-calendar-m7' => 'ניסן',
 'hebrew-calendar-m8' => 'אייר',
-'hebrew-calendar-m9' => 'ס×\99×\95×\95×\9f',
+'hebrew-calendar-m9' => 'סיון',
 'hebrew-calendar-m10' => 'תמוז',
 'hebrew-calendar-m11' => 'אב',
 'hebrew-calendar-m12' => 'אלול',
index c647a61..e6a6d6c 100644 (file)
@@ -277,7 +277,7 @@ $messages = array(
 'tog-hidepatrolled' => '在最近更改中隐藏已巡查编辑',
 'tog-newpageshidepatrolled' => '在新页面列表中隐藏已巡查页面',
 'tog-extendwatchlist' => '扩大监视列表以显示所有更改而不仅是最近更改',
-'tog-usenewrc' => '启用增强最近更改(需要JavaScript)',
+'tog-usenewrc' => '根据页面分组最近更改和监视列表(需要JavaScript)',
 'tog-numberheadings' => '标题自动编号',
 'tog-showtoolbar' => '显示编辑工具条(需要JavaScript)',
 'tog-editondblclick' => '双击时编辑页面(需要JavaScript)',
@@ -535,7 +535,7 @@ $1',
 'youhavenewmessages' => '你有$1($2)。',
 'newmessageslink' => '新信息',
 'newmessagesdifflink' => '最后更改',
-'youhavenewmessagesmulti' => '您在$1有一条新信息',
+'youhavenewmessagesmulti' => '你在$1有新信息',
 'editsection' => '编辑',
 'editold' => '编辑',
 'viewsourceold' => '查看源代码',
@@ -557,7 +557,7 @@ $1',
 'site-atom-feed' => '$1的Atom',
 'page-rss-feed' => '“$1”的RSS订阅',
 'page-atom-feed' => '“$1”的Atom订阅',
-'red-link-title' => '$1(尚未撰写)',
+'red-link-title' => '$1(页面不存在)',
 'sort-descending' => '降序',
 'sort-ascending' => '升序',
 
@@ -651,6 +651,8 @@ $2',
 管理员对锁定它给出的解释是:“$3”。',
 'invalidtitle-knownnamespace' => '使用名字空间“$2”和文本“$3”的无效标题',
 'invalidtitle-unknownnamespace' => '使用未知名字空间编号$1和文本“$2”的无效标题',
+'exception-nologin' => '未登陆',
+'exception-nologin-text' => '此动作需要先登陆到此 wiki',
 
 # Virus scanner
 'virus-badscanner' => "错误的配置:未知的病毒扫描程序:''$1''",
@@ -662,7 +664,7 @@ $2',
 
 您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份[[Special:UserLogin|登录]]。请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
 'welcomecreation' => '== 欢迎,$1! ==
-您的账户已经建立。别忘了设置您的[[Special:Preferences|{{SITENAME}}个人参数]]。',
+你的账户已创建。请别忘记更改你的[[Special:Preferences|{{SITENAME}}系统设置]]。',
 'yourname' => '用户名:',
 'yourpassword' => '密码:',
 'yourpasswordagain' => '再次输入密码:',
@@ -812,7 +814,7 @@ $2
 'italic_tip' => '斜体文字',
 'link_sample' => '链接文字',
 'link_tip' => '内部链接',
-'extlink_sample' => 'http://www.example.com é\93¾æ\8e¥æ \87é¢\98',
+'extlink_sample' => 'http://www.example.com é\93¾æ\8e¥æ\96\87å­\97',
 'extlink_tip' => '外部链接(加前缀 http://)',
 'headline_sample' => '大标题文字',
 'headline_tip' => '2级标题文字',
@@ -821,7 +823,7 @@ $2
 'image_tip' => '插入文件',
 'media_tip' => '文件链接',
 'sig_tip' => '带时间戳的签名',
-'hr_tip' => '水平线 (小心使用)',
+'hr_tip' => '水平线(请小心使用)',
 
 # Edit pages
 'summary' => '摘要:',
@@ -836,7 +838,7 @@ $2
 'anoneditwarning' => "'''警告:'''您没有登录。
 您的IP地址将记录在此页的编辑历史中。",
 'anonpreviewwarning' => "''您没有登录。保存页面将会把您的IP地址记录在此页的编辑历史中。''",
-'missingsummary' => "'''提示:''' 您没有提供一个编辑摘要。如果您再次单击“{{int:savearticle}}”,您的编辑将不带编辑摘要保存。",
+'missingsummary' => "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
 'missingcommenttext' => '请在下面输入评论。',
 'missingcommentheader' => "'''提示:''' 您没有为此评论提供一个标题。如果您再次单击“{{int:savearticle}}”,您的编辑将不带标题保存。",
 'summary-preview' => '摘要预览:',
@@ -883,12 +885,12 @@ $2
 请在创建/编辑该页之前进行核对。',
 'userpage-userdoesnotexist-view' => '用户账户“$1”未曾创建。',
 'blocked-notice-logextract' => '这位用户目前已被封禁。以下提供最近的封禁日志以供参考:',
-'clearyourcache' => "'''注意:在保存以后,您必须绕过浏览器缓存才能看到所作出的改变。'''
-* '''火狐(Firefox)/Safari''':按住“Shift”键再点击“刷新”,或按下“Ctrl-F5”或“Ctrl-R”(Mac上为“⌘-R”)
-* '''谷歌浏览器(Google Chrome)''':按下“Ctrl-Shift-R”(Mac上为“⌘-Shift-R”)
-* '''Internet Explorer''':按住“Ctrl”键再点击“刷新”,或按下“Ctrl-F5”
-* '''Konqueror''':点击“刷新”或按下“F5”
-* '''Opera''':在“工具→首选项”中清除缓存",
+'clearyourcache' => "'''注意:'''保存之后,你必须清除浏览器缓存才能看到做出的更改。
+* '''火狐(Firefox)/Safari:'''按住“Shift”,同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
+* '''谷歌浏览器(Google Chrome):'''按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
+* '''Internet Explorer:'''按住“Ctrl”,同时单击“刷新”,或按“Ctrl-F5”
+* '''Konqueror:'''点击“刷新”或按“F5”
+* '''Opera:'''在“工具→首选项”中清除缓存",
 'usercssyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
 'userjsyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
 'usercsspreview' => "'''记住您只是在预览您的个人 CSS。'''
@@ -946,8 +948,8 @@ $2
 
 锁定数据库的管理员有如下解释:$1",
 'protectedpagewarning' => "'''警告:本页面已被保护,只有拥有管理员权限的用户可以编辑。'''下面提供最后的日志条目以供参考:",
-'semiprotectedpagewarning' => "'''注意:''' 本页面已被保护,只有注册用户可以编辑。下面提供最后的日志条目以供参考:",
-'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''æ\9c¬é¡µé\9d¢å·²è¢«ä¿\9dæ\8a¤ï¼\8cå\8fªæ\9c\89æ\8b¥æ\9c\89管ç\90\86å\91\98æ\9d\83é\99\90ç\9a\84ç\94¨æ\88·å\8f¯ä»¥ç¼\96è¾\91ï¼\8cå\9b ä¸ºå\85¶å\8c\85å\90«äº\8eä¸\8bå\88\97受连锁保护的{{PLURAL:$1|页面}}:",
+'semiprotectedpagewarning' => "'''注意:'''本页面已被保护,只有注册用户可以编辑。下面提供最后的日志条目以供参考:",
+'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''æ\9c¬é¡µé\9d¢å·²è¢«ä¿\9dæ\8a¤ï¼\8cå\8fªæ\9c\89æ\8b¥æ\9c\89管ç\90\86å\91\98æ\9d\83é\99\90ç\9a\84ç\94¨æ\88·å\8f¯ä»¥ç¼\96è¾\91ï¼\8cå\9b ä¸ºå\85¶å\8c\85å\90«äº\8e以ä¸\8b受连锁保护的{{PLURAL:$1|页面}}:",
 'titleprotectedwarning' => "'''警告:本页面已被保护,创建本页面需要[[Special:ListGroupRights|特定权限]]。'''下面提供最后的日志条目以供参考:",
 'templatesused' => '该页面使用的{{PLURAL:$1|模板}}:',
 'templatesusedpreview' => '本预览使用的{{PLURAL:$1|模板}}:',
@@ -955,14 +957,14 @@ $2
 'template-protected' => '(保护)',
 'template-semiprotected' => '(半保护)',
 'hiddencategories' => '本页面属于$1个隐藏分类:',
-'edittools' => '<!-- 这里的文字将显示在编辑和上传表单下方。 -->',
+'edittools' => '<!-- 这里的文字将显示在编辑和上传表格下面。 -->',
 'nocreatetitle' => '创建页面受限',
 'nocreatetext' => '{{SITENAME}}限制了创建新页面的功能。你可以返回并编辑已有的页面,或者[[Special:UserLogin|登录或创建新账户]]。',
 'nocreate-loggedin' => '你没有权限创建新页面。',
 'sectioneditnotsupported-title' => '段落编辑不支持',
 'sectioneditnotsupported-text' => '本页面不支持段落编辑。',
 'permissionserrors' => '权限错误',
-'permissionserrorstext' => '根据下列{{PLURAL:$1|原因}},你没有权限进行本操作:',
+'permissionserrorstext' => '因为以下{{PLURAL:$1|原因}},你没有权限进行该操作:',
 'permissionserrorstext-withaction' => '因为以下{{PLURAL:$1|原因}},你没有权限$2:',
 'recreate-moveddeleted-warn' => "'''警告:你正在重新创建曾经被删除的页面。'''
 
@@ -1044,14 +1046,14 @@ $3的理由是''$2''",
 尝试[[Special:Search|搜索本站]]获得相关的新建页面。',
 
 # Revision deletion
-'rev-deleted-comment' => '(编辑摘要删除)',
-'rev-deleted-user' => '(用户名删除)',
-'rev-deleted-event' => '(日志条目删除)',
-'rev-deleted-user-contribs' => '[用户名或IP地址已移除 - 从贡献中隐藏编辑]',
+'rev-deleted-comment' => '(编辑摘要删除)',
+'rev-deleted-user' => '(用户名删除)',
+'rev-deleted-event' => '(日志条目删除)',
+'rev-deleted-user-contribs' => '[用户名或IP地址被删除 - 编辑在贡献中隐藏]',
 'rev-deleted-text-permission' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]。",
 'rev-deleted-text-unhide' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。如果你想继续操作,你仍然可以[$1 查看本版本]。",
 'rev-suppressed-text-unhide' => "该页面修订已经被'''监督隐藏'''。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
-'rev-deleted-text-view' => "该页面修订已经被'''删除'''。您可以查看它。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到详细的信息。",
+'rev-deleted-text-view' => "本页面版本已被'''删除'''。你可以查看它,详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
 'rev-suppressed-text-view' => "该页面修订已经被'''监督隐藏'''。您可以查看它。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。",
 'rev-deleted-no-diff' => "因为其中一次修订已被'''删除''',您不可以查看这个差异。
 在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到更多的信息。",
@@ -1153,7 +1155,7 @@ $1",
 'mergelog' => '合并日志',
 'pagemerge-logentry' => '合并[[$1]]至[[$2]](版本截至$3)',
 'revertmerge' => '解除合并',
-'mergelogpagetext' => '以ä¸\8bæ\98¯ä¸\80个æ\9c\80è¿\91ç\94±ä¸\80个页é\9d¢ç\9a\84修订å\8e\86å\8f²å\90\88并å\88°å\8f¦ä¸\80个页é\9d¢的列表。',
+'mergelogpagetext' => 'ä¸\8bé\9d¢æ\98¯æ\9c\80è¿\91ç\9a\84页é\9d¢å\8e\86å\8f²å\90\88并的列表。',
 
 # Diffs
 'history-title' => '“$1”的版本历史',
@@ -1205,7 +1207,7 @@ $1",
 'search-redirect' => '(重定向自“$1”)',
 'search-section' => '(“$1”段落)',
 'search-suggest' => '您是不是要找:$1',
-'search-interwiki-caption' => 'å§\90妹项目',
+'search-interwiki-caption' => 'å§\8a妹项目',
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
 'search-mwsuggest-enabled' => '有建议',
@@ -1217,7 +1219,7 @@ $1",
 'searchall' => '所有',
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
-'showingresultsheader' => "对'''$4'''ç\9a\84{{PLURAL:$5|第'''$1'''è\87³ç¬¬'''$3'''项ç»\93æ\9e\9c|第'''$1'''è\87³ç¬¬'''$2'''项ç»\93æ\9e\9cï¼\8cå\85±'''$3'''项结果}}",
+'showingresultsheader' => "å\85³äº\8e'''$4'''ç\9a\84{{PLURAL:$5|第'''$1'''æ\9d¡è\87³ç¬¬'''$3'''æ\9d¡ç»\93æ\9e\9c|第'''$1'''æ\9d¡è\87³ç¬¬'''$2'''æ\9d¡ç»\93æ\9e\9cï¼\8cå\85±'''$3'''æ\9d¡结果}}",
 'nonefound' => "'''注意''':只有部分名字空间的页面会被默认搜索。尝试在您的搜索语句前添加“all:”前缀,这样可以搜索全部页面(包括讨论页、模板等),或者亦可使用所需名字空间作为前缀。",
 'search-nonefound' => '找不到和查询相匹配的结果。',
 'powersearch' => '高级搜索',
@@ -1249,9 +1251,9 @@ $1",
 'changepassword' => '更改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
-'datedefault' => '默认',
+'datedefault' => '默认格式',
 'prefs-beta' => '测试版特色',
-'prefs-datetime' => '日期时间',
+'prefs-datetime' => '日期时间',
 'prefs-labs' => '实验室特色',
 'prefs-user-pages' => '用户页面',
 'prefs-personal' => '用户资料',
@@ -1266,7 +1268,7 @@ $1",
 'prefs-resetpass' => '更改密码',
 'prefs-changeemail' => '更改电子邮件地址',
 'prefs-setemail' => '设置电子邮件地址',
-'prefs-email' => '电子邮件选项',
+'prefs-email' => '电子邮件',
 'prefs-rendering' => '显示',
 'saveprefs' => '保存',
 'resetprefs' => '清除未保存的更改',
@@ -1277,21 +1279,21 @@ $1",
 'columns' => '列:',
 'searchresultshead' => '搜索',
 'resultsperpage' => '每页显示链接数:',
-'stub-threshold' => '<a href="#" class="stub">ç\9f­é¡µé\9d¢é\93¾æ\8e¥</a>æ ¼å¼\8fé\97¨æ§\9b值(字节):',
+'stub-threshold' => '<a href="#" class="stub">ç\9f­é¡µé\9d¢é\93¾æ\8e¥</a>æ ¼å¼\8fé\98\88值(字节):',
 'stub-threshold-disabled' => '已停用',
-'recentchangesdays' => '最近更改中的显示日数:',
-'recentchangesdays-max' => '最多$1{{PLURAL:$1|天}}',
+'recentchangesdays' => '最近更改中显示的天数:',
+'recentchangesdays-max' => '最多$1',
 'recentchangescount' => '默认显示的编辑数:',
-'prefs-help-recentchangescount' => 'è¿\99个å\8c\85æ\8b¬æ\9c\80è¿\91æ\9b´æ\94¹ã\80\81页é\9d¢å\8e\86å\8f²ä»¥å\8f\8a日志。',
+'prefs-help-recentchangescount' => '该项å\8c\85å\90«æ\9c\80è¿\91æ\9b´æ\94¹ã\80\81页é\9d¢å\8e\86å\8f²å\92\8c日志。',
 'prefs-help-watchlist-token' => '此栏填写的密钥可以生成您监视列表的RSS源。任何知晓本栏密钥的人都能阅读您的监视列表,因此请使用安全的数值。这里已提供了一个随机生成的数值供您选择:$1',
-'savedprefs' => '您的个人参数设置已经保存。',
+'savedprefs' => '你的系统设置已经保存。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时间:',
 'timezoneuseserverdefault' => '使用wiki默认值($1)',
 'timezoneuseoffset' => '其它(指定时差)',
 'timezoneoffset' => '时差¹:',
 'servertime' => '服务器时间:',
-'guesstimezone' => 'ä»\8eæµ\8fè§\88å\99¨å¡«å\86\99',
+'guesstimezone' => '使ç\94¨æµ\8fè§\88å\99¨è®¾ç½®',
 'timezoneregion-africa' => '非洲',
 'timezoneregion-america' => '美洲',
 'timezoneregion-antarctica' => '南极洲',
@@ -1311,7 +1313,7 @@ $1",
 'prefs-custom-css' => '自定义CSS',
 'prefs-custom-js' => '自定义JavaScript',
 'prefs-common-css-js' => '所有皮肤共用的CSS/JavaScript:',
-'prefs-reset-intro' => '您可以利用这个页面去重设您的参数设置到网站默认值。这个动作无法复原。',
+'prefs-reset-intro' => '你可以使用本页面重置你的系统设置为网站默认值。该操作不能撤销。',
 'prefs-emailconfirm-label' => '电子邮件确认:',
 'prefs-textboxsize' => '编辑框大小',
 'youremail' => '电子邮件:',
@@ -1324,22 +1326,20 @@ $1",
 'yourvariant' => '内容语言变种:',
 'prefs-help-variant' => '您希望用于显示本站内容的语种或拼写语系。',
 'yournick' => '新签名:',
-'prefs-help-signature' => '在讨论页上的发言应该使用“<nowiki>~~~~</nowiki>”签名,它会被自动转换成你的签名并附带时间戳。',
+'prefs-help-signature' => '讨论页面上的评论应该使用“<nowiki>~~~~</nowiki>”签名,它会自动转换为你的签名及时间戳。',
 'badsig' => '错误的原始签名。请检查HTML标签。',
-'badsiglength' => '签名过长。
-它的长度不可超过$1个字符。',
+'badsiglength' => '签名过长。请不超过$1个字符。',
 'yourgender' => '性别:',
 'gender-unknown' => '不指明',
 'gender-male' => '男',
 'gender-female' => '女',
-'prefs-help-gender' => '可选:用以软件中的性别指定。此项资料将会被公开。',
-'email' => '电子邮箱',
-'prefs-help-realname' => '真实姓名为选填项。
-如果提供,可用于贡献署名。',
+'prefs-help-gender' => '选填项目。使软件使用正确的性别称呼。该信息将会公开。',
+'email' => '电子邮件',
+'prefs-help-realname' => '真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。',
 'prefs-help-email' => '电子邮件地址是选填项目。但是在你忘记密码需要重置密码时需要电子邮件地址。',
 'prefs-help-email-others' => '你亦可以选择让其他用户通过你的用户页或讨论页上的链接用电子邮件联系你。其他用户联系你时你的电子邮件地址不会显示。',
-'prefs-help-email-required' => '需要电子邮件地址。',
-'prefs-info' => '基本资料',
+'prefs-help-email-required' => '电子邮件地址是必填项目。',
+'prefs-info' => '基本信息',
 'prefs-i18n' => '界面语言',
 'prefs-signature' => '签名',
 'prefs-dateformat' => '日期格式',
@@ -1349,14 +1349,14 @@ $1",
 'prefs-advancedrendering' => '高级选项',
 'prefs-advancedsearchoptions' => '高级选项',
 'prefs-advancedwatchlist' => '高级选项',
-'prefs-displayrc' => '显示选项',
-'prefs-displaysearchoptions' => '显示选项',
-'prefs-displaywatchlist' => '显示选项',
-'prefs-diffs' => '差异',
+'prefs-displayrc' => '显示',
+'prefs-displaysearchoptions' => '显示',
+'prefs-displaywatchlist' => '显示',
+'prefs-diffs' => '差异对比',
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => '电子邮件地址有效',
-'email-address-validity-invalid' => '请提供一个有效的电子邮件地址',
+'email-address-validity-invalid' => '请输入有效的电子邮件地址',
 
 # User rights
 'userrights' => '用户权限管理',
@@ -1368,10 +1368,10 @@ $1",
 'saveusergroups' => '保存用户组',
 'userrights-groupsmember' => '用户组:',
 'userrights-groupsmember-auto' => '自动用户组:',
-'userrights-groups-help' => '可以更改该用户的用户组:
-* é\92©é\80\89的选项框表示该用户属于该用户组。
-* æ\9cªé\92©é\80\89的选项框表示该用户不属于该用户组。
-* æ \87æ\98\9få\8f·ï¼\88*ï¼\89ç\9a\84项ç\9b®è¡¨ç¤ºä½ ä¸\80æ\97¦æ·»å\8a è¯¥ç\94¨æ\88·ç»\84å\90\8eä¸\8dè\83½å\88 é\99¤。',
+'userrights-groups-help' => '可以更改该用户的用户组:
+* é\80\89中的选项框表示该用户属于该用户组。
+* æ\9cªé\80\89中的选项框表示该用户不属于该用户组。
+* æ\98\9få\8f·ï¼\88*ï¼\89表示ä¸\80æ\97¦æ·»å\8a è¯¥ç\94¨æ\88·ç»\84å\90\8eä¸\8dè\83½å\88 é\99¤ï¼\8cå\8f\8dä¹\8b亦ç\84。',
 'userrights-reason' => '原因:',
 'userrights-no-interwiki' => '您并没有权限去编辑在其它wiki上的用户权限。',
 'userrights-nodatabase' => '数据库$1不存在或并非为本地的。',
@@ -1415,60 +1415,60 @@ $1",
 'right-move-subpages' => '移动页面及其子页面',
 'right-move-rootuserpages' => '移动根用户页面',
 'right-movefile' => '移动文件',
-'right-suppressredirect' => '移å\8a¨é¡µé\9d¢æ\97¶ä¸\8då\9c¨æº\90页é\9d¢å\88\9b建重定向',
+'right-suppressredirect' => '移å\8a¨é¡µé\9d¢æ\97¶ä¸\8då\88\9b建æ\9d¥è\87ªæ\9d¥æº\90页é\9d¢ç\9a\84重定向',
 'right-upload' => '上传文件',
-'right-reupload' => '覆盖已有文件',
-'right-reupload-own' => '覆盖由同一位上传的文件',
-'right-reupload-shared' => '于本地无视共用媒体文件库上的文件',
-'right-upload_by_url' => '由一个URL上传文件',
-'right-purge' => '不需要确认之下清除网站快取',
+'right-reupload' => '覆盖现存文件',
+'right-reupload-own' => '覆盖自己上传的文件',
+'right-reupload-shared' => '本地覆盖共享文件库的文件',
+'right-upload_by_url' => 'URL上传文件',
+'right-purge' => '无确认清除页面缓存',
 'right-autoconfirmed' => '编辑半保护页面',
-'right-bot' => 'è§\86为ä¸\80个è\87ªå\8a¨ç¨\8båº\8f',
-'right-nominornewtalk' => '小编辑不引发新信息提示',
-'right-apihighlimits' => '在API查询中使用更高的上限',
-'right-writeapi' => '使用编写的API',
+'right-bot' => '被è§\86为è\87ªå\8a¨è¿\87ç¨\8b',
+'right-nominornewtalk' => '不使小编辑在讨论页面引发新信息提示',
+'right-apihighlimits' => '在API问题中使用更高的限制',
+'right-writeapi' => '使用书写API',
 'right-delete' => '删除页面',
-'right-bigdelete' => '删除大量历史之页面',
-'right-deleterevision' => 'å\88 é\99¤å\8f\8aå\90\8cå\8f\8då\88 é\99¤é¡µé\9d¢ä¸­ç\9a\84æ\8c\87å®\9a修订',
-'right-deletedhistory' => '查看已删除的历史项目,不含关联的文本',
-'right-deletedtext' => '查看已删除修订中之已删除的字以及更改',
-'right-browsearchive' => '搜索已删除之页面',
+'right-bigdelete' => '删除有大型历史的页面',
+'right-deleterevision' => 'å\88 é\99¤å\92\8cæ\81¢å¤\8d页é\9d¢ç\9a\84ç\89¹å®\9aç\89\88æ\9c¬',
+'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
+'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
+'right-browsearchive' => '搜索被删除的页面',
 'right-undelete' => '恢复页面',
-'right-suppressrevision' => '查看和恢复由管理员隐藏的修订',
-'right-suppressionlog' => '查看私人的日志',
-'right-block' => '封锁其他用户防止编辑',
-'right-blockemail' => '封锁用户不可发电邮',
-'right-hideuser' => '封锁用户名,对公众隐藏',
-'right-ipblock-exempt' => 'ç»\95è¿\87IPå°\81é\94\81ã\80\81è\87ªå\8a¨å°\81é\94\81以å\8f\8aè\8c\83å\9b´å°\81é\94\81',
-'right-proxyunbannable' => 'ç»\95è¿\87Proxyç\9a\84è\87ªå\8a¨å°\81é\94\81',
-'right-unblockself' => '自æ\88\91解é\99¤å°\81é\94\81',
-'right-protect' => 'æ\9b´æ\94¹ä¿\9dæ\8a¤ç­\89级以å\8f\8aç¼\96è¾\91保护页面',
+'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
+'right-suppressionlog' => '查看非公开日志',
+'right-block' => '阻止其他用户编辑',
+'right-blockemail' => '阻止用户电邮联系',
+'right-hideuser' => '封禁并隐藏用户名',
+'right-ipblock-exempt' => 'é\81¿å¼\80IPå°\81ç¦\81ã\80\81è\87ªå\8a¨å°\81ç¦\81å\92\8cIP段å°\81ç¦\81',
+'right-proxyunbannable' => 'é\81¿å¼\80代ç\90\86æ\9c\8då\8a¡å\99¨ç\9a\84è\87ªå\8a¨å°\81ç¦\81',
+'right-unblockself' => '自己解å°\81',
+'right-protect' => 'æ\9b´æ\94¹ä¿\9dæ\8a¤çº§å\88«å\92\8cç¼\96è¾\91å\8f\97保护页面',
 'right-editprotected' => '编辑保护页面(无连锁保护)',
 'right-editinterface' => '编辑用户界面',
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-rollback' => '快速回退最后对特定页面作出的编辑的用户的所有编辑',
-'right-markbotedits' => '将回退编辑标记为机器人编辑动作',
-'right-noratelimit' => '没有使用频率限制',
-'right-import' => '由其它wiki中导入页面',
-'right-importupload' => '由文件上传中导入页面',
-'right-patrol' => '标他人的编辑为已巡查',
-'right-autopatrol' => '将自己的编辑自动标示为已巡查的',
-'right-patrolmarks' => '查看最近巡查标记更改',
-'right-unwatchedpages' => '查看未监视页面列表',
+'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'right-markbotedits' => '标记回退编辑为机器人编辑',
+'right-noratelimit' => '不受速率限制影响',
+'right-import' => '从其他wiki导入页面',
+'right-importupload' => '从文件上传导入页面',
+'right-patrol' => '标他人的编辑为已巡查',
+'right-autopatrol' => '使自己的编辑自动标记为已巡查',
+'right-patrolmarks' => '查看最近更改的巡查标记',
+'right-unwatchedpages' => '查看未受监视页面的列表',
 'right-mergehistory' => '合并页面历史',
 'right-userrights' => '编辑所有用户的权限',
-'right-userrights-interwiki' => 'ç¼\96è¾\91å\9c¨å\85¶å®\83wikiä¸\8a的用户权限',
-'right-siteadmin' => 'é\94\81å®\9aå\92\8c解é\99¤é\94\81å®\9a数据库',
-'right-override-export-depth' => '导出含有五层深度链接页面之页面',
-'right-sendemail' => '发电子邮件给其他用户',
-'right-passwordreset' => '查看重置密码邮件',
+'right-userrights-interwiki' => 'ç¼\96è¾\91å\85¶å®\83wikiç\9a\84ç\94¨æ\88·的用户权限',
+'right-siteadmin' => 'é\94\81å®\9aå\92\8c解é\94\81数据库',
+'right-override-export-depth' => '导出含有链接页面深度为5的页面',
+'right-sendemail' => '电邮联系其他用户',
+'right-passwordreset' => '查看密码重置电子邮件',
 
 # User rights log
 'rightslog' => '用户权限日志',
 'rightslogtext' => '这是用户权限更改的日志。',
-'rightslogentry' => '更改$1的用户组自$2至$3',
+'rightslogentry' => '将$1的用户组由$2更改为$3',
 'rightslogentry-autopromote' => '被自动提升自$2至$3',
 'rightsnone' => '(无)',
 
@@ -1482,32 +1482,32 @@ $1",
 'action-move' => '移动本页',
 'action-move-subpages' => '移动本页及其子页面',
 'action-move-rootuserpages' => '移动根用户页面',
-'action-movefile' => '移动文件',
-'action-upload' => '上传文件',
-'action-reupload' => '覆盖这个现有的文件',
-'action-reupload-shared' => 'è¦\86ç\9b\96å\9c¨å\85±ç\94¨æ\96\87件åº\93ä¸\8aç\9a\84文件',
-'action-upload_by_url' => '由一个URL中上传文件',
+'action-movefile' => '移动文件',
+'action-upload' => '上传文件',
+'action-reupload' => '覆盖文件',
+'action-reupload-shared' => 'è¦\86ç\9b\96å\85±äº«æ\96\87件åº\93ç\9a\84æ\9c¬文件',
+'action-upload_by_url' => '从URL上传本文件',
 'action-writeapi' => '使用书写API',
-'action-delete' => '删除这个页面',
-'action-deleterevision' => '删除这次修订',
-'action-deletedhistory' => '查看这个页面的删除历史',
-'action-browsearchive' => '搜索删除的页面',
-'action-undelete' => '反删除这个页面',
-'action-suppressrevision' => '翻查和恢复这次隐藏修订',
-'action-suppressionlog' => '查看这个私有日志',
-'action-block' => '封锁这位用户的编辑',
-'action-protect' => '更改这个页面的保护等级',
-'action-rollback' => '快速回退最后对特定页面作出的编辑的用户的所有编辑',
-'action-import' => '由另一个wiki导入这个页面',
-'action-importupload' => '由一个文件上传中导入这个页面',
-'action-patrol' => '标示其它的编辑为已巡查的',
-'action-autopatrol' => '将您的编辑标示为已巡查的',
-'action-unwatchedpages' => '查看未监视页面列表',
-'action-mergehistory' => '合并这个页面的历史',
-'action-userrights' => '编辑所有的权限',
-'action-userrights-interwiki' => 'ç¼\96è¾\91å\9c¨å\85¶å®\83wikiä¸\8aç\94¨æ\88·ç\9a\84权限',
-'action-siteadmin' => '锁定和解除锁定数据库',
-'action-sendemail' => '发送电邮',
+'action-delete' => '删除本页',
+'action-deleterevision' => '删除本版本',
+'action-deletedhistory' => '查看本页面被删除的历史',
+'action-browsearchive' => '搜索删除的页面',
+'action-undelete' => '恢复本页',
+'action-suppressrevision' => '审查和恢复本隐藏版本',
+'action-suppressionlog' => '查看本非公开日志',
+'action-block' => '阻止该用户编辑',
+'action-protect' => '更改本页面的保护级别',
+'action-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'action-import' => '从其他wiki导入本页面',
+'action-importupload' => '从文件上传导入本页面',
+'action-patrol' => '标记他人的编辑为已巡查',
+'action-autopatrol' => '使你的编辑标记为已巡查',
+'action-unwatchedpages' => '查看未受监视页面的列表',
+'action-mergehistory' => '合并页面的历史',
+'action-userrights' => 'ç¼\96è¾\91æ\89\80æ\9c\89ç\94¨æ\88·ç\9a\84æ\9d\83é\99\90',
+'action-userrights-interwiki' => 'ç¼\96è¾\91å\85¶å®\83wikiç\9a\84ç\94¨æ\88·ç\9a\84ç\94¨æ\88·权限',
+'action-siteadmin' => '锁定或解锁数据库',
+'action-sendemail' => '电邮联系其他用户',
 
 # Recent changes
 'nchanges' => '$1次更改',
@@ -1518,7 +1518,7 @@ $1",
 'recentchanges-label-newpage' => '这次编辑建立了一个新页面',
 'recentchanges-label-minor' => '这是一个小编辑',
 'recentchanges-label-bot' => '这次编辑是由机器人进行',
-'recentchanges-label-unpatrolled' => 'è¿\99次ç¼\96è¾\91å°\9aæ\9cªå·¡æ\9f¥è¿\87',
+'recentchanges-label-unpatrolled' => '该ç¼\96è¾\91å°\9aæ\9cªå·¡æ\9f¥',
 'rcnote' => "下面是最后'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
 'rcnotefrom' => "下面是自'''$2'''起的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示自$1起的新更改',
@@ -1569,10 +1569,9 @@ $1",
 'upload-recreate-warning' => "'''警告:一个相同名字的文件曾经被删除或者移动至别处。'''
 
 这个页面的删除和移动日志在这里提供以便参考:",
-'uploadtext' => "使用下面的表单来上传文件。
-要查看或搜索以前上传的文件,可以进入[[Special:FileList|文件上传列表]],(重新)上传也将在[[Special:Log/upload|上传日志]]中记录,而删除将在[[Special:Log/delete|删除日志]]中记录。
+'uploadtext' => "请使用下面的表格上传文件。要查看或搜索以前上传的文件,可以进入[[Special:FileList|文件上传列表]],(重新)上传也将在[[Special:Log/upload|上传日志]]中记录,而删除将在[[Special:Log/delete|删除日志]]中记录。
 
-要在页面中加入文件,使用以下其中一种形式的链接:
+要在页面中加入文件,请使用一种以下形式的链接:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>'''使用文件的完整版本
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|替换文字]]</nowiki></tt>'''使用放置于左侧的一个框内的200像素宽的图片,同时使用“替换文字”作为描述
 * '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''直接链接到文件而不显示文件",
@@ -1581,8 +1580,7 @@ $1",
 'upload-prohibited' => '禁止的文件类型:$1。',
 'uploadlog' => '上传日志',
 'uploadlogpage' => '上传日志',
-'uploadlogpagetext' => '以下是一个最近上传文件的列表。
-查看[[Special:NewFiles|新文件画廊]]去看更富图像的总览。',
+'uploadlogpagetext' => '下面是最近的文件上传的列表。图像概览请见[[Special:NewFiles|新文件库]]。',
 'filename' => '文件名',
 'filedesc' => '文件说明',
 'fileuploadsummary' => '摘要:',
@@ -1590,7 +1588,7 @@ $1",
 'filestatus' => '著作权状况:',
 'filesource' => '来源:',
 'uploadedfiles' => '已上传文件',
-'ignorewarning' => '忽略警告并保存文件',
+'ignorewarning' => '忽视警告并继续保存文件',
 'ignorewarnings' => '忽略所有警告',
 'minlength1' => '文件名至少要有一个字符。',
 'illegalfilename' => '文件名“$1”包含在页面标题中不允许使用的字符。请重命名该文件,然后重新上传。',
@@ -1867,7 +1865,7 @@ $1',
 'filedelete-maintenance-title' => '无法删除文件',
 
 # MIME search
-'mimesearch' => 'MIME 搜索',
+'mimesearch' => 'MIME搜索',
 'mimesearch-summary' => '本页面启用文件MIME类型过滤器。输入:内容类型/子类型,如 <tt>image/jpeg</tt>。',
 'mimetype' => 'MIME 类型:',
 'download' => '下载',
@@ -1912,7 +1910,7 @@ $1',
 'statistics-users-active-desc' => '在前$1天中操作过的用户',
 'statistics-mostpopular' => '浏览最多的页面',
 
-'disambiguations' => '链接消歧义页的页面',
+'disambiguations' => '链接消歧义页的页面',
 'disambiguationspage' => 'Template:消歧义',
 'disambiguations-text' => "以下的页面都有到'''消歧义页'''的链接,但它们应该链接到适当的页面。<br />一个页面如果使用了[[MediaWiki:Disambiguationspage]]内的模板,则会被视为消歧义页。",
 
@@ -1953,7 +1951,7 @@ $1',
 'unusedcategories' => '未使用分类',
 'unusedimages' => '未使用图像',
 'popularpages' => '热点页面',
-'wantedcategories' => '待撰分类',
+'wantedcategories' => '需要的分类',
 'wantedpages' => '待撰页面',
 'wantedpages-badtitle' => '在结果组上的无效标题:$1',
 'wantedfiles' => '需要的文件',
@@ -2011,14 +2009,13 @@ $1',
 'booksources-invalid-isbn' => '提供的ISBN号码并不正确,请检查原始复制来源号码是否有误。',
 
 # Special:Log
-'specialloguserlabel' => 'æ\93\8dä½\9c者:',
+'specialloguserlabel' => 'æ\89§è¡\8c者:',
 'speciallogtitlelabel' => '目标(标题或用户):',
 'log' => '日志',
 'all-logs-page' => '所有公开日志',
-'alllogstext' => '综合显示{{SITENAME}}所有的可用日志。
-您可以选择日志类型,用户名(区分大小写)或者相关页面(区分大小写)来缩小查询范围。',
+'alllogstext' => '所有{{SITENAME}}公开日志的联合展示。你可以通过选择日志类型、输入用户名(区分大小写)或相关页面(区分大小写)筛选日志条目。',
 'logempty' => '在日志中不存在匹配项。',
-'log-title-wildcard' => 'æ\90\9c索以è¿\99个æ\96\87å­\97å¼\80å§\8b的标题',
+'log-title-wildcard' => 'æ\90\9c索以该æ\96\87å­\97å¼\80头的标题',
 'showhideselectedlogentries' => '显示/隐藏所选日志项',
 
 # Special:AllPages
@@ -2085,14 +2082,14 @@ $1',
 
 # Special:Log/newusers
 'newuserlogpage' => '用户创建日志',
-'newuserlogpagetext' => '本日志是显示新注册用户的日志',
+'newuserlogpagetext' => '这是用户创建的日志。',
 
 # Special:ListGroupRights
 'listgrouprights' => '用户组权限',
 'listgrouprights-summary' => '以下面是一个在这个wiki中定义出来的用户权限列表,以及它们的访问权。
 更多有关个别权限的细节可以在[[{{MediaWiki:Listgrouprights-helppage}}|这里]]找到。',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">授予的权限</span>
-* <span class="listgrouprights-revoked">已撤除的权限</span>',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">授予的权限</span>
+* <span class="listgrouprights-revoked">被取消的权限</span>',
 'listgrouprights-group' => '用户组',
 'listgrouprights-rights' => '权限',
 'listgrouprights-helppage' => 'Help:用户组权限',
@@ -2111,8 +2108,7 @@ $1',
 'mailnologintext' => '你必须[[Special:UserLogin|登录]]并在你的[[Special:Preferences|系统设置]]中拥有有效的电子邮件地址才能向其他用户发送电子邮件。',
 'emailuser' => '电邮联系',
 'emailpage' => '电邮联系',
-'emailpagetext' => '您可以用下面的表格去寄一封电邮给这位用户。
-您在[[Special:Preferences|您的参数设置]]中所输入的电子邮箱地址将出现在邮件“发件人”一栏中,这样该用户就可以回复您。',
+'emailpagetext' => '你可以使用下面的表格向该用户发送电子邮件信息。你在[[Special:Preferences|你的系统设置]]中输入的电子邮件地址将显示为邮件的“发件人”地址,所以该用户将可以直接回复你。',
 'usermailererror' => 'Mail 对象返回错误:',
 'defemailsubject' => '{{SITENAME}}来自用户“$1”的电子邮件',
 'usermaildisabled' => '用户电邮已停用',
@@ -2229,7 +2225,7 @@ $UNWATCHURL
 'actionfailed' => '操作失败',
 'deletedtext' => '“$1”已经被删除。最近删除的记录请参见$2。',
 'dellogpage' => '删除日志',
-'dellogpagetext' => '以ä¸\8b是最近的删除的列表。',
+'dellogpagetext' => 'ä¸\8bé\9d¢是最近的删除的列表。',
 'deletionlog' => '删除记录',
 'reverted' => '恢复到早期版本',
 'deletecomment' => '原因:',
@@ -2239,7 +2235,7 @@ $UNWATCHURL
 ** 作者申请
 ** 侵犯著作权
 ** 破坏行为',
-'delete-edit-reasonlist' => '编辑删除理由',
+'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
 
@@ -2265,9 +2261,9 @@ $UNWATCHURL
 
 # Protect
 'protectlogpage' => '保护日志',
-'protectlogtext' => '以ä¸\8bæ\98¯é¡µé\9d¢ä¿\9dæ\8a¤ç\9a\84æ\9b´æ\94¹æ\97¥å¿\97ã\80\82[[Special:ProtectedPages|ä¿\9dæ\8a¤é¡µå\88\97表]]å\88\97å\87ºç\9b®å\89\8då­\98å\9c¨ç\9a\84页é\9d¢ä¿\9dæ\8a¤。',
+'protectlogtext' => 'ä¸\8bé\9d¢æ\98¯é¡µé\9d¢ä¿\9dæ\8a¤æ\9b´æ\94¹ç\9a\84å\88\97表ã\80\82请è§\81[[Special:ProtectedPages|å\8f\97ä¿\9dæ\8a¤é¡µé\9d¢å\88\97表]]æ\9f¥ç\9c\8bç\9b®å\89\8dæ­£å\9c¨è¿\9bè¡\8cç\9a\84页é\9d¢ä¿\9dæ\8a¤ç\9a\84å\88\97表。',
 'protectedarticle' => '保护“[[$1]]”',
-'modifiedarticleprotection' => 'æ\9b´æ\94¹â\80\9c[[$1]]â\80\9dç\9a\84ä¿\9dæ\8a¤çº§å\88«',
+'modifiedarticleprotection' => 'æ\9b´æ\94¹â\80\9c[[$1]]â\80\9dç\9a\84ä¿\9dæ\8a¤ç­\89级',
 'unprotectedarticle' => '删除“[[$1]]”的保护',
 'movedarticleprotection' => '移动保护设置自“[[$2]]”至“[[$1]]”',
 'protect-title' => '更改“$1”的保护等级',
@@ -2306,7 +2302,7 @@ $UNWATCHURL
 ** 过多垃圾信息
 ** 负面的编辑战
 ** 高流量页面',
-'protect-edit-reasonlist' => '编辑保护理由',
+'protect-edit-reasonlist' => '编辑保护原因',
 'protect-expiry-options' => '1小时:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,无限期:infinite',
 'restriction-type' => '权限:',
 'restriction-level' => '限制级别:',
@@ -2326,7 +2322,7 @@ $UNWATCHURL
 'restriction-level-all' => '任何级别',
 
 # Undelete
-'undelete' => '查看删除页面',
+'undelete' => '查看删除页面',
 'undeletepage' => '浏览及恢复被删页面',
 'undeletepagetitle' => "'''以下包含[[:$1]]的已删除之修订版本'''。",
 'viewdeletedpage' => '查看被删页面',
@@ -2393,7 +2389,7 @@ $1',
 'sp-contributions-newbies' => '只显示新账户的贡献',
 'sp-contributions-newbies-sub' => '新手',
 'sp-contributions-newbies-title' => '新手的用户贡献',
-'sp-contributions-blocklog' => '封禁记录',
+'sp-contributions-blocklog' => '封禁日志',
 'sp-contributions-deleted' => '已删除的用户贡献',
 'sp-contributions-uploads' => '上传',
 'sp-contributions-logs' => '日志',
@@ -2412,7 +2408,7 @@ $1',
 'whatlinkshere' => '链入页面',
 'whatlinkshere-title' => '链接至“$1”的页面',
 'whatlinkshere-page' => '页面:',
-'linkshere' => "ä¸\8bå\88\97页面链接至'''[[:$1]]''':",
+'linkshere' => "以ä¸\8b页面链接至'''[[:$1]]''':",
 'nolinkshere' => "没有页面链接至'''[[:$1]]'''。",
 'nolinkshere-ns' => "在所选的名字空间内没有页面链接到'''[[:$1]]'''。",
 'isredirect' => '重定向页',
@@ -2428,7 +2424,7 @@ $1',
 'whatlinkshere-filters' => '过滤器',
 
 # Block/unblock
-'autoblockid' => '自动查封 #$1',
+'autoblockid' => '自动封禁#$1',
 'block' => '封禁用户',
 'unblock' => '解封用户',
 'blockip' => '封禁用户',
@@ -2449,7 +2445,7 @@ $1',
 ** 恐吓行为/骚扰
 ** 滥用多个账户
 ** 不能接受的用户名',
-'ipb-hardblock' => 'é\98²æ­¢å·²ç\99»å½\95ç\9a\84ç\94¨æ\88·ä»\8e该IP地址编辑',
+'ipb-hardblock' => 'é\98»æ­¢ç\99»å½\95ç\94¨æ\88·ä½¿ç\94¨该IP地址编辑',
 'ipbcreateaccount' => '阻止创建新账号',
 'ipbemailban' => '阻止用户发送电邮',
 'ipbenableautoblock' => '自动封禁该用户最后使用的IP地址,以及他们随后试图用于编辑的所有IP地址',
@@ -2459,8 +2455,8 @@ $1',
 'ipbotheroption' => '其他',
 'ipbotherreason' => '其他/附加原因:',
 'ipbhidename' => '在编辑及列表中隐藏用户名',
-'ipbwatchuser' => 'ç\9b\91è§\86è¿\99ä½\8dç\94¨æ\88·ç\9a\84ç\94¨æ\88·é¡µé\9d¢ä»¥å\8f\8aå\85¶å¯¹è¯\9d页面',
-'ipb-disableusertalk' => '禁止被封禁用户编辑自己的对话页',
+'ipbwatchuser' => 'ç\9b\91è§\86该ç\94¨æ\88·ç\9a\84ç\94¨æ\88·é¡µé\9d¢å\92\8c讨论页面',
+'ipb-disableusertalk' => '阻止用户在封禁期间编辑自己的讨论页面',
 'ipb-change-block' => '使用这些设置重新封禁用户',
 'ipb-confirm' => '确认封禁',
 'badipaddress' => '无效IP地址',
@@ -2469,7 +2465,7 @@ $1',
 参见[[Special:BlockList|封禁列表]]以复核封禁。',
 'ipb-blockingself' => '您将要封禁自己!确实要这样做吗?',
 'ipb-confirmhideuser' => '您即将在封禁用户的同时启用“隐藏账户”功能。这将从所有列表和日志记录中隐藏这个用户名。您确认这样做吗?',
-'ipb-edit-dropdown' => '编辑封禁理由',
+'ipb-edit-dropdown' => '编辑封禁原因',
 'ipb-unblock-addr' => '解封$1',
 'ipb-unblock' => '解封用户名或IP地址',
 'ipb-blocklist' => '查看现有封禁',
@@ -2482,48 +2478,48 @@ $1',
 'unblocked-id' => '封禁$1已被解除',
 'blocklist' => '被封禁用户',
 'ipblocklist' => '被封禁用户',
-'ipblocklist-legend' => '查找封禁用户',
+'ipblocklist-legend' => '查找封禁用户',
 'blocklist-userblocks' => '隐藏帐户封禁',
 'blocklist-tempblocks' => '隐藏临时封禁',
 'blocklist-addressblocks' => '隐藏单个IP封禁',
 'blocklist-rangeblocks' => '隐藏IP段封禁',
-'blocklist-timestamp' => '时间',
+'blocklist-timestamp' => '时间',
 'blocklist-target' => '目标',
-'blocklist-expiry' => '期',
-'blocklist-by' => '执行者',
-'blocklist-params' => 'å°\81ç¦\81设置',
+'blocklist-expiry' => '期',
+'blocklist-by' => '封禁管理员',
+'blocklist-params' => 'å°\81ç¦\81è\8c\83å\9b´',
 'blocklist-reason' => '原因',
 'ipblocklist-submit' => '搜索',
 'ipblocklist-localblock' => '本地封禁',
 'ipblocklist-otherblocks' => '其他{{PLURAL:$1|封禁}}',
 'infiniteblock' => '无限期',
 'expiringblock' => '$1 $2到期',
-'anononlyblock' => '仅匿名用户',
-'noautoblockblock' => '禁用自动封禁',
-'createaccountblock' => '禁止创建账户',
-'emailblock' => 'ç¦\81æ­¢ç\94µå­\90é\82®ä»¶',
-'blocklist-nousertalk' => '禁止编辑自己的用户讨论页',
+'anononlyblock' => '仅匿名用户',
+'noautoblockblock' => '自动封禁停用',
+'createaccountblock' => '账户创建停用',
+'emailblock' => 'ç\94µå­\90é\82®ä»¶å\81\9cç\94¨',
+'blocklist-nousertalk' => '不能编辑自己的讨论页面',
 'ipblocklist-empty' => '封禁列表为空。',
 'ipblocklist-no-results' => '请求的IP地址或用户名没有被封禁。',
 'blocklink' => '封禁',
-'unblocklink' => '解é\99¤å°\81ç¦\81',
+'unblocklink' => '解å°\81',
 'change-blocklink' => '更改封禁',
 'contribslink' => '贡献',
 'emaillink' => '发送电邮',
 'autoblocker' => '由于您与“[[User:$1|$1]]”共享一个IP地址而被自动封禁。
 $1被封禁的理由是:“$2”',
 'blocklogpage' => '封禁日志',
-'blocklog-showlog' => '此用户曾被封禁。以下列出封禁日志以供参考:',
-'blocklog-showsuppresslog' => '此用户曾被封禁并隐藏。以下列出隐藏日志以供参考:',
-'blocklogentry' => '封禁[[$1]],终止时间为$2$3',
-'reblock-logentry' => '更改[[$1]]的封禁终止时间 $2 $3',
-'blocklogtext' => '此处给出了封禁和解封用户的操作日志,被自动封禁的IP地址不在此表。请查看[[Special:BlockList|封禁列表]]获知当前被封禁的用户和IP地址。',
-'unblocklogentry' => '已解封 $1',
+'blocklog-showlog' => '该用户曾被封禁。下面提供封禁日志以供参考:',
+'blocklog-showsuppresslog' => '该用户曾被封禁并隐藏。下面提供封锁日志以供参考:',
+'blocklogentry' => '封禁[[$1]],到期时间为$2后$3',
+'reblock-logentry' => '更改[[$1]]的封禁设置,到期时间为$2后$3',
+'blocklogtext' => '这是用户封禁和解封操作的日志。自动封禁IP地址没有列出。请见[[Special:BlockList|封禁列表]]查看目前正在进行的阻止和封禁的列表。',
+'unblocklogentry' => '解封$1',
 'block-log-flags-anononly' => '仅限匿名用户',
-'block-log-flags-nocreate' => '停用账户创建',
-'block-log-flags-noautoblock' => '禁用自动封禁',
-'block-log-flags-noemail' => 'ç¦\81æ­¢ç\94µå­\90é\82®ä»¶',
-'block-log-flags-nousertalk' => '禁止编辑自己的用户讨论页',
+'block-log-flags-nocreate' => '账户创建停用',
+'block-log-flags-noautoblock' => '自动封禁停用',
+'block-log-flags-noemail' => 'ç\94µå­\90é\82®ä»¶å\81\9cç\94¨',
+'block-log-flags-nousertalk' => '不能编辑自己的讨论页面',
 'block-log-flags-angry-autoblock' => '已启用增强型自动封禁',
 'block-log-flags-hiddenname' => '隐藏用户名',
 'range_block_disabled' => '管理员执行段封禁的权限已被禁用。',
@@ -2605,16 +2601,16 @@ $1被封禁的理由是:“$2”',
 
 在这些情况下,您在必要时必须手工移动或合并页面。",
 'movearticle' => '移动页面:',
-'moveuserpage-warning' => "'''警告:'''您将会移动一个用户页面。请留意该页面在移动后该用户的名字是''不会''变更的。",
+'moveuserpage-warning' => "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
 'movenologin' => '未登录',
 'movenologintext' => '您必须是一名登记用户并且[[Special:UserLogin|登录]]
 后才可移动一个页面。',
-'movenotallowed' => '您并没有权限去移动页面。',
-'movenotallowedfile' => '您并没有权限去移动文件。',
-'cant-move-user-page' => '您并没有许可权去移动用户页面(它的子页面除外)。',
-'cant-move-to-user-page' => '您并没有许可权去移动到用户页面(它的子页面除外)。',
+'movenotallowed' => '你没有权限移动页面。',
+'movenotallowedfile' => '你没有权限移动文件。',
+'cant-move-user-page' => '你没有权限移动用户页面(子页面除外)。',
+'cant-move-to-user-page' => '你没有权限移动页面至用户页面(用户子页面除外)。',
 'newtitle' => '新标题:',
-'move-watch' => '监视来源以及目标页',
+'move-watch' => '监视来源页面和目标页面',
 'movepagebtn' => '移动页面',
 'pagemovedsub' => '移动成功',
 'movepage-moved' => "'''“$1”已移动到“$2”'''",
@@ -2632,8 +2628,8 @@ $1被封禁的理由是:“$2”',
 'movepage-page-unmoved' => '页面$1无法移动到$2。',
 'movepage-max-pages' => '所移动$1个页面的数量已达最大限额,无法同时自动移动更多页面。',
 'movelogpage' => '移动日志',
-'movelogpagetext' => '以ä¸\8bæ\98¯æ\89\80æ\9c\89移å\8a¨ç\9a\84页é\9d¢å\88\97表ï¼\9a',
-'movesubpage' => '{{PLURAL:$1|子页面|子页面}}',
+'movelogpagetext' => 'ä¸\8bé\9d¢æ\98¯æ\89\80æ\9c\89页é\9d¢ç§»å\8a¨ç\9a\84å\88\97表ã\80\82',
+'movesubpage' => '{{PLURAL:$1|子页面}}',
 'movesubpagetext' => '这个页面有$1个子页面,列示如下。',
 'movenosubpage' => '这个页面没有子页面。',
 'movereason' => '原因:',
@@ -2656,10 +2652,8 @@ $1被封禁的理由是:“$2”',
 'imageinvalidfilename' => '目标文件名称无效',
 'fix-double-redirects' => '更新所有指向原始标题的重定向',
 'move-leave-redirect' => '保留重定向',
-'protectedpagemovewarning' => "'''警告:'''这个页面已经被保护,只有拥有管理员权限的用户才可以移动它。
-最近的日志在下面提供以便参考:",
-'semiprotectedpagemovewarning' => "'''注意:'''这个页面已经被保护,只有已经注册的用户才可以移动它。
-最近的日志在下面提供以便参考:",
+'protectedpagemovewarning' => "'''警告:'''本页面已被保护,只有拥有管理员权限的用户可以移动。下面提供最后的日志条目以供参考:",
+'semiprotectedpagemovewarning' => "'''注意:'''本页面已被保护,只有注册用户可以移动。下面提供最后的日志条目以供参考:",
 'move-over-sharedrepo' => '== 文件已存在 ==
 [[:$1]]已于共享资源存在,将文件移动到此标题会覆盖共享资源中的文件。',
 'file-exists-sharedrepo' => '同名文件已于共享资源存在。
@@ -2680,9 +2674,9 @@ $1被封禁的理由是:“$2”',
 '''注意:'''由于性能原因,从此表单导出页面的全部历史已被禁用。",
 'exportlistauthors' => '为每个页面包含贡献者的完整列表',
 'export-submit' => '导出',
-'export-addcattext' => '由分类中添加页面:',
+'export-addcattext' => '从分类添加页面:',
 'export-addcat' => '添加',
-'export-addnstext' => '由名字空间中添加页面:',
+'export-addnstext' => '从名字空间添加页面:',
 'export-addns' => '添加',
 'export-download' => '另存为文件',
 'export-templates' => '包含模板',
@@ -2691,7 +2685,7 @@ $1被封禁的理由是:“$2”',
 # Namespace 8 related
 'allmessages' => '系统信息',
 'allmessagesname' => '名称',
-'allmessagesdefault' => '默认消息文本',
+'allmessagesdefault' => '默认信息文字',
 'allmessagescurrent' => '当前消息文本',
 'allmessagestext' => '此处列出了MediaWiki名字空间下的所有有效系统消息。
 如果想为MediaWiki的本地化贡献翻译,请访问[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[//translatewiki.net translatewiki.net]。',
@@ -2763,10 +2757,10 @@ $1被封禁的理由是:“$2”',
 
 # Import log
 'importlogpage' => '导入日志',
-'importlogpagetext' => 'ç\94±ç®¡ç\90\86å\91\98ä»\8eå\85¶ä»\96wiki导å\85¥ç\9a\84带æ\9c\89ç¼\96è¾\91å\8e\86å\8f²ç\9a\84页é\9d¢。',
-'import-logentry-upload' => '通过文件上传导入的[[$1]]',
+'importlogpagetext' => '管ç\90\86æ\80§ç\9a\84æ\9c\89ç¼\96è¾\91å\8e\86å\8f²ç\9a\84页é\9d¢è\87ªå\85¶ä»\96ç»´å\9fºç\9a\84导å\85¥。',
+'import-logentry-upload' => '以文件上传导入[[$1]]',
 'import-logentry-upload-detail' => '$1个版本',
-'import-logentry-interwiki' => 'è·¨ç«\99导å\85¥ $1',
+'import-logentry-interwiki' => '跨维å\9fº$1',
 'import-logentry-interwiki-detail' => '来自$2的$1个修订',
 
 # JavaScriptTest
@@ -2903,6 +2897,7 @@ $1被封禁的理由是:“$2”',
 'spambot_username' => 'MediaWiki垃圾链接清理器',
 'spam_reverting' => '恢复到不包含链接的最近修订版本$1',
 'spam_blanking' => '消隐所有包含链接至$1的修订',
+'spam_deleting' => '正在删除所有包含至$1的版本',
 
 # Info page
 'pageinfo-title' => '"$1" 的信息',
@@ -2937,7 +2932,7 @@ $1被封禁的理由是:“$2”',
 
 # Patrol log
 'patrol-log-page' => '巡查日志',
-'patrol-log-header' => 'è¿\99æ\98¯å·²å·¡æ\9f¥ç\9a\84修订ç\89\88æ\9c¬ç\9a\84æ\97¥å¿\97ã\80\82',
+'patrol-log-header' => '这是已巡查版本的日志。',
 'log-show-hide-patrol' => '$1巡查纪录',
 
 # Image deletion
@@ -3075,7 +3070,7 @@ Variants for Chinese language
 'exif-model' => '相机型号',
 'exif-software' => '使用软件',
 'exif-artist' => '作者',
-'exif-copyright' => '著作权所有',
+'exif-copyright' => '著作权所有',
 'exif-exifversion' => 'Exif版本',
 'exif-flashpixversion' => '支持的Flashpix版本',
 'exif-colorspace' => '色彩空间',
@@ -3611,10 +3606,10 @@ $5
 'version-specialpages' => '特殊页面',
 'version-parserhooks' => '解析器钩',
 'version-variables' => '变量',
-'version-antispam' => 'å\9e\83å\9c¾é\98²止',
+'version-antispam' => 'å\9e\83å\9c¾é\98»止',
 'version-skins' => '皮肤',
 'version-other' => '其他',
-'version-mediahandlers' => '媒体处理器',
+'version-mediahandlers' => '媒体文件处理器',
 'version-hooks' => '钩',
 'version-extension-functions' => '扩展函数',
 'version-parser-extensiontags' => '解析器扩展标签',
@@ -3633,8 +3628,8 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'version-software' => '已安装的软件',
 'version-software-product' => '产品',
 'version-software-version' => '版本',
-'version-entrypoints' => '入口点 URL',
-'version-entrypoints-header-entrypoint' => '入口点',
+'version-entrypoints' => '接入点URL',
+'version-entrypoints-header-entrypoint' => '接入点',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -3657,9 +3652,8 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 # Special:SpecialPages
 'specialpages' => '特殊页面',
 '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' => '登录/注册',
@@ -3678,27 +3672,27 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'intentionallyblankpage' => '这个页面被故意留为空白',
 
 # External image whitelist
-'external_image_whitelist' => ' #请保留此行文本<pre>
-#在下方书写正则表达式(//中间的部份)
+'external_image_whitelist' => ' #请原样保留本行文字<pre>
+#在下方书写正则表达式片段(//中间的部份)
 #这些规则将与外部(盗链)图像的URL匹配
 #匹配的URL将被显示为图像,否则只会显示链向图像的链接
-#以#开头的行会被视为注释
-#大小写不敏感
+#以#开头的行视为评论
+#不区分大小写
 
-#å\9c¨æ­¤è¡\8cä¸\8aæ\96¹è¾\93å\85¥æ\89\80æ\9c\89ç\9a\84æ­£å\88\99表达å¼\8fã\80\82请ä¿\9dç\95\99æ­¤è¡\8cæ\96\87æ\9c¬</pre>',
+#å\9c¨æ\9c¬è¡\8cä¸\8aé\9d¢è¾\93å\85¥æ\89\80æ\9c\89æ­£å\88\99表达å¼\8fã\80\82请å\8e\9fæ ·ä¿\9dç\95\99æ\9c¬è¡\8cæ\96\87å­\97</pre>',
 
 # Special:Tags
 'tags' => '有效的更改标签',
 'tag-filter' => '[[Special:Tags|标签]]过滤器:',
 'tag-filter-submit' => '过滤器',
 'tags-title' => '标签',
-'tags-intro' => '本页面列出了建站软件可能用来标记编辑的标签及它们的含义。',
+'tags-intro' => '本页面列出了软件可能用于标记编辑的标签和它们的含义。',
 'tags-tag' => '标签名称',
 'tags-display-header' => '更改列表中的表现形式',
 'tags-description-header' => '完整含义说明',
-'tags-hitcount-header' => '标记的更改',
+'tags-hitcount-header' => '标记的更改',
 'tags-edit' => '编辑',
-'tags-hitcount' => '$1更改',
+'tags-hitcount' => '$1更改',
 
 # Special:ComparePages
 'comparepages' => '对比页面',
@@ -3815,7 +3809,7 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'api-error-overwrite' => '不允许覆盖现有文件。',
 'api-error-stashfailed' => '内部错误:服务器保存临时文件失败。',
 'api-error-timeout' => '服务器没有在预期内响应。',
-'api-error-unclassified' => 'å\8f\91ç\94\9fæ\9cªç\9f¥é\94\99误',
+'api-error-unclassified' => 'å\87ºç\8e°æ\9cªç\9f¥é\94\99误ã\80\82',
 'api-error-unknown-code' => '未知错误:$1',
 'api-error-unknown-error' => '内部错误:尝试上传文件时出错。',
 'api-error-unknown-warning' => '未知的警告:$1',
@@ -3824,14 +3818,16 @@ 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|0年|0年}}',
-'duration-centuries' => '$1{{PLURAL:$1|00年|00年}}',
-'duration-millennia' => '$1{{PLURAL:$1|千年|千年}}',
-
+'duration-seconds' => '$1秒',
+'duration-minutes' => '$1分',
+'duration-hours' => '$1小时',
+'duration-days' => '$1天',
+'duration-weeks' => '$1周',
+'duration-years' => '$1年',
+'duration-decades' => '$10年',
+'duration-centuries' => '$1个世纪',
+'duration-millennia' => '$1千年',
+
+# Unknown messages
+'lockmanager-fail-svr-acquire' => '无法在服务器 $1 上获得锁',
 );
index a454586..5f2566f 100644 (file)
@@ -216,7 +216,7 @@ $messages = array(
 'tog-hidepatrolled' => '於最近更改中隱藏巡查過的編輯',
 'tog-newpageshidepatrolled' => '於新頁面清單中隱藏巡查過的頁面',
 'tog-extendwatchlist' => '展開監視清單以顯示所有更改,不只是最近的',
-'tog-usenewrc' => '使用增強最近更改 (需要JavaScript)',
+'tog-usenewrc' => '在最近更改和監視列表中整合同一頁的修改 (需要JavaScript)',
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '顯示編輯工具欄 (需要JavaScript)',
 'tog-editondblclick' => '雙擊編輯頁面 (需要JavaScript)',
@@ -496,7 +496,7 @@ $1',
 'site-atom-feed' => '$1的Atom訂閱',
 'page-rss-feed' => '「$1」的RSS訂閱',
 'page-atom-feed' => '「$1」的Atom訂閱',
-'red-link-title' => '$1 (頁面未存在)',
+'red-link-title' => '$1(頁面未存在)',
 'sort-descending' => '倒序排列',
 'sort-ascending' => '升序排序',
 
@@ -596,6 +596,8 @@ $2',
 管理員鎖定它的解釋是:" $3 "。',
 'invalidtitle-knownnamespace' => '使用名字空間“$2”和文本“$3”的無效標題',
 'invalidtitle-unknownnamespace' => '使用未知名字空間編號$1和文本“$2”的無效標題',
+'exception-nologin' => '未登入',
+'exception-nologin-text' => '你需要登錄此wiki查閲此頁或進行操作。',
 
 # Virus scanner
 'virus-badscanner' => "損壞設定: 未知的病毒掃瞄器: ''$1''",
@@ -1999,7 +2001,7 @@ Template:消除歧義',
 'specialloguserlabel' => '操作者:',
 'speciallogtitlelabel' => '目標(標題或用戶):',
 'log' => '日誌',
-'all-logs-page' => '所有公日誌',
+'all-logs-page' => '所有公日誌',
 'alllogstext' => '綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。',
 'logempty' => '在日誌中不存在匹配項。',
 'log-title-wildcard' => '搜尋以這個文字開始的標題',
@@ -2908,6 +2910,7 @@ $1被封禁的理由是“$2”',
 'spambot_username' => 'MediaWiki 廣告清除',
 'spam_reverting' => '恢復到不包含連結至$1的最近修訂版本',
 'spam_blanking' => '所有包含連結至$1的修訂,清空',
+'spam_deleting' => '所有包含連結至$1的修訂,刪除中',
 
 # Info page
 'pageinfo-title' => '" $1 "的信息',
@@ -3799,6 +3802,8 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'api-error-empty-file' => '您提交的檔案是空的。',
 'api-error-emptypage' => '不許創建沒有內容的新頁面。',
 'api-error-fetchfileerror' => '內部錯誤:獲取文件時發生錯誤。',
+'api-error-fileexists-forbidden' => '以" $1 "命名的檔案已經存在,並且不能被重寫。',
+'api-error-fileexists-shared-forbidden' => '以" $1 "命名的檔案已經存在於共用檔案儲存庫上,並且不能被重寫。',
 'api-error-file-too-large' => '您提交的檔案太大了。',
 'api-error-filename-tooshort' => '檔案名過短。',
 'api-error-filetype-banned' => '這種類型的檔案是被禁止的。',
@@ -3837,4 +3842,6 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'duration-centuries' => '$1世紀',
 'duration-millennia' => '$1千年',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => '無法取得伺服器$1上的鎖。',
 );
index 6e09671..78cae8c 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * quick hackjob to fix damages imports on wikisource
- * page records have page_latest wrong
+ * Corrects wrong values in the `page_latest` field in the database.
  *
  * Copyright © 2005 Brion Vibber <brion@pobox.com>
  * http://www.mediawiki.org/
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to correct wrong values in the `page_latest` field
+ * in the database.
+ *
+ * @ingroup Maintenance
+ */
 class AttachLatest extends Maintenance {
 
        public function __construct() {
index cfcac40..e4063f9 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to change the password of a given user.
+ *
+ * @ingroup Maintenance
+ */
 class ChangePassword extends Maintenance {
        public function __construct() {
                parent::__construct();
index d199b6f..ea6c09f 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check classes definitions in the autoloader.
+ *
+ * @ingroup Maintenance
+ */
 class CheckAutoLoader extends Maintenance {
        public function __construct() {
                parent::__construct();
index bac2ff6..f8b8955 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * CheckBadRedirects - See if pages marked as being redirects
- * really are.
+ * Check that pages marked as being redirects really are.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check that pages marked as being redirects really are.
+ *
+ * @ingroup Maintenance
+ */
 class CheckBadRedirects extends Maintenance {
        public function __construct() {
                parent::__construct();
index 484217d..d7463ec 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Check images to see if they exist, are readable, etc etc
+ * Check images to see if they exist, are readable, etc.
  *
  * 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
  */
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check images to see if they exist, are readable, etc.
+ *
+ * @ingroup Maintenance
+ */
 class CheckImages extends Maintenance {
 
        public function __construct() {
index 6137a95..3019b84 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check syntax of all PHP files in MediaWiki.
+ *
+ * @ingroup Maintenance
+ */
 class CheckSyntax extends Maintenance {
 
        // List of files we're going to check
index 9b98721..6a9294a 100644 (file)
@@ -1,8 +1,6 @@
 <?php
 /**
- * This script verifies that database usernames are actually valid.
- * An existing usernames can become invalid if User::isValidUserName()
- * is altered or if we change the $wgMaxNameChars
+ * Check that database usernames are actually valid.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check that database usernames are actually valid.
+ *
+ * An existing usernames can become invalid if User::isValidUserName()
+ * is altered or if we change the $wgMaxNameChars
+ *
+ * @ingroup Maintenance
+ */
 class CheckUsernames extends Maintenance {
 
        public function __construct() {
diff --git a/maintenance/cleanupPreferences.php b/maintenance/cleanupPreferences.php
new file mode 100755 (executable)
index 0000000..4a52d10
--- /dev/null
@@ -0,0 +1,29 @@
+<?php\r
+/**\r
+ * Description: This script takes $wgHiddenPrefs and removes their preference from the DB. [[bugzilla:30976]]\r
+ * @author TyA <tya.wiki@gmail.com>\r
+ * @ingroup Maintenance\r
+ */\r
+\r
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );\r
+\r
+class CleanupPreferences extends Maintenance {\r
+       public function execute() {\r
+               global $wgHiddenPrefs;\r
+\r
+               $dbw = wfGetDB( DB_MASTER );\r
+               $dbw->begin();\r
+               foreach( $wgHiddenPrefs as $item ) {\r
+                       $dbw->delete(\r
+                               'user_properties',\r
+                               array( 'up_property' => $item ),\r
+                               __METHOD__\r
+                       );\r
+               };\r
+               $dbw->commit();\r
+               $this->output( "Finished!\n" );\r
+       }\r
+}\r
+\r
+$maintClass = 'CleanupPreferences'; // Tells it to run the class\r
+require_once( RUN_MAINTENANCE_IF_MAIN );\r
index 8a760cd..f104899 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CleanupSpam extends Maintenance {
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Cleanup all spam from a given hostname";
                $this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
-               $this->addArg( 'hostname', 'Hostname that was spamming' );
+               $this->addOption( 'delete', 'Delete pages containing only spam instead of blanking them' );
+               $this->addArg( 'hostname', 'Hostname that was spamming, single * wildcard in the beginning allowed' );
        }
 
        public function execute() {
@@ -108,15 +110,19 @@ class CleanupSpam extends Maintenance {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->begin( __METHOD__ );
                        $page = WikiPage::factory( $title );
-                       if ( !$rev ) {
-                               // Didn't find a non-spammy revision, blank the page
-                               $this->output( "blanking\n" );
-                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
-                       } else {
+                       if ( $rev ) {
                                // Revert to this revision
                                $this->output( "reverting\n" );
                                $page->doEdit( $rev->getText(), wfMsgForContent( 'spam_reverting', $domain ),
                                        EDIT_UPDATE, $rev->getId() );
+                       } elseif ( $this->hasOption( 'delete' ) ) {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "deleting\n" );
+                               $page->doDeleteArticle( wfMsgForContent( 'spam_deleting', $domain ) );
+                       } else {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "blanking\n" );
+                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
                        }
                        $dbw->commit( __METHOD__ );
                }
index 85ef5c8..275d8fa 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * Convert from the old links schema (string->ID) to the new schema (ID->ID)
- * The wiki should be put into read-only mode while this script executes
+ * Convert from the old links schema (string->ID) to the new schema (ID->ID).
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to convert from the old links schema (string->ID)
+ * to the new schema (ID->ID).
+ *
+ * The wiki should be put into read-only mode while this script executes.
+ *
+ * @ingroup Maintenance
+ */
 class ConvertLinks extends Maintenance {
        private $logPerformance;
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Convert from the old links schema (string->ID) to the new schema (ID->ID)
+               $this->mDescription = "Convert from the old links schema (string->ID) to the new schema (ID->ID).
 The wiki should be put into read-only mode while this script executes";
 
                $this->addArg( 'logperformance', "Log performance to perfLogFilename.", false );
index da6ff9b..e666b65 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Do each user sequentially, since accounts can't be deleted
+ * Convert user options to the new `user_properties` table.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to convert user options to the new `user_properties` table.
+ *
+ * Do each user sequentially, since accounts can't be deleted
+ *
+ * @ingroup Maintenance
+ */
 class ConvertUserOptions extends Maintenance {
 
        private $mConversionCount = 0;
index 314318f..530b5ca 100644 (file)
@@ -1,12 +1,6 @@
 <?php
 /**
- * Copy all files in one container of one backend to another.
- *
- * This can also be used to re-shard the files for one backend using the
- * config of second backend. The second backend should have the same config
- * as the first, except for it having a different name and different sharding
- * configuration. The backend should be made read-only while this runs.
- * After this script finishes, the old files in the containers can be deleted.
+ * Copy all files in some containers of one backend to another.
  *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Copy all files in one container of one backend to another.
+ *
+ * This can also be used to re-shard the files for one backend using the
+ * config of second backend. The second backend should have the same config
+ * as the first, except for it having a different name and different sharding
+ * configuration. The backend should be made read-only while this runs.
+ * After this script finishes, the old files in the containers can be deleted.
+ *
+ * @ingroup Maintenance
+ */
 class CopyFileBackend extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Copy all the files in one backend to another.";
+               $this->mDescription = "Copy files in one backend to another.";
                $this->addOption( 'src', 'Backend containing the source files', true, true );
                $this->addOption( 'dst', 'Backend where files should be copied to', true, true );
                $this->addOption( 'containers', 'Pipe separated list of containers', true, true );
-               $this->addOption( 'fast', 'Skip SHA-1 checks on pre-existing files' );
+               $this->addOption( 'subdir', 'Only do items in this child directory', false, true );
+               $this->setBatchSize( 50 );
        }
 
        public function execute() {
                $src = FileBackendGroup::singleton()->get( $this->getOption( 'src' ) );
                $dst = FileBackendGroup::singleton()->get( $this->getOption( 'dst' ) );
-
                $containers = explode( '|', $this->getOption( 'containers' ) );
+               $subDir = $this->getOption( rtrim( 'subdir', '/' ), '' );
+
+               $count = 0;
                foreach ( $containers as $container ) {
-                       $this->output( "Doing container $container...\n" );
+                       if ( $subDir != '' ) {
+                               $backendRel = "$container/$subDir";
+                               $this->output( "Doing container '$container', directory '$subDir'...\n" );
+                       } else {
+                               $backendRel = $container;
+                               $this->output( "Doing container '$container'...\n" );
+                       }
 
-                       $srcPathsRel = $src->getFileList(
-                               array( 'dir' => $src->getRootStoragePath() . "/$container" ) );
+                       $dir = $src->getRootStoragePath() . "/$backendRel";
+                       $srcPathsRel = $src->getFileList( array( 'dir' => $dir ) );
                        if ( $srcPathsRel === null ) {
                                $this->error( "Could not list files in $container.", 1 ); // die
                        }
-                       foreach ( $srcPathsRel as $srcPathRel ) {
-                               $srcPath = $src->getRootStoragePath() . "/$container/$srcPathRel";
-                               $dstPath = $dst->getRootStoragePath() . "/$container/$srcPathRel";
 
-                               if ( $dst->fileExists( array( 'src' => $dstPath, 'latest' => 1 ) ) ) {
-                                       if ( $this->hasOption( 'fast' ) ) {
-                                               $this->output( "Already have $dstPath.\n" );
-                                               continue; // assume already copied...
-                                       }
-                                       $srcSha1 = $src->getFileSha1Base36( array( 'src' => $srcPath ) );
-                                       $dstSha1 = $dst->getFileSha1Base36( array( 'src' => $dstPath ) );
-                                       if ( $srcSha1 && $srcSha1 === $dstSha1 ) {
-                                               $this->output( "Already have $dstPath.\n" );
-                                               continue; // already copied...
-                                       }
+                       $batchPaths = array();
+                       foreach ( $srcPathsRel as $srcPathRel ) {
+                               $batchPaths[$srcPathRel] = 1; // remove duplicates
+                               if ( count( $batchPaths ) >= $this->mBatchSize ) {
+                                       $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst );
+                                       $batchPaths = array(); // done
                                }
+                               ++$count;
+                       }
+                       if ( count( $batchPaths ) ) { // left-overs
+                               $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst );
+                               $batchPaths = array(); // done
+                       }
 
-                               $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) );
-                               if ( !$fsFile ) {
-                                       $this->error( "Could not get local copy of $srcPath.", 1 ); // die
-                               }
+                       if ( $subDir != '' ) {
+                               $this->output( "Finished container '$container', directory '$subDir'.\n" );
+                       } else {
+                               $this->output( "Finished container '$container'.\n" );
+                       }
+               }
 
-                               $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) );
-                               $status->merge( $dst->store(
-                                       array( 'src' => $fsFile->getPath(), 'dst' => $dstPath ),
-                                       array( 'nonLocking' => 1, 'nonJournaled' => 1 )
-                               ) );
-                               if ( !$status->isOK() ) {
-                                       print_r( $status->getErrorsArray() );
-                                       $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die
-                               }
+               $this->output( "Done [$count file(s)].\n" );
+       }
 
-                               $this->output( "Copied $srcPath to $dstPath.\n" );
+       protected function copyFileBatch(
+               array $srcPathsRel, $backendRel, FileBackend $src, FileBackend $dst
+       ) {
+               $ops = array();
+               $fsFiles = array();
+               foreach ( $srcPathsRel as $srcPathRel ) {
+                       $srcPath = $src->getRootStoragePath() . "/$backendRel/$srcPathRel";
+                       $dstPath = $dst->getRootStoragePath() . "/$backendRel/$srcPathRel";
+                       if ( $this->filesAreSame( $src, $dst, $srcPath, $dstPath ) ) {
+                               $this->output( "Already have $srcPathRel.\n" );
+                               continue; // assume already copied...
+                       }
+                       // Note: getLocalReference() is fast for FS backends
+                       $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) );
+                       if ( !$fsFile ) {
+                               $this->error( "Could not get local copy of $srcPath.", 1 ); // die
+                       }
+                       $fsFiles[] = $fsFile; // keep TempFSFile objects alive as needed
+                       // Note: prepare() is usually fast for key/value backends
+                       $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) );
+                       if ( !$status->isOK() ) {
+                               $this->error( print_r( $status->getErrorsArray(), true ) );
+                               $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die
                        }
+                       $ops[] = array( 'op' => 'store',
+                               'src' => $fsFile->getPath(), 'dst' => $dstPath, 'overwrite' => 1 );
                }
+
+               $status = $dst->doOperations( $ops, array( 'nonJournaled' => 1 ) );
+               if ( !$status->isOK() ) {
+                       $this->error( print_r( $status->getErrorsArray(), true ) );
+                       $this->error( "Could not copy file batch.", 1 ); // die
+               } else {
+                       $this->output( "Copied these file(s):\n" . implode( "\n", $srcPathsRel ) . "\n\n" );
+               }
+       }
+
+       protected function filesAreSame( FileBackend $src, FileBackend $dst, $sPath, $dPath ) {
+               return (
+                       ( $src->fileExists( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->fileExists( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit
+                       ) && ( $src->getFileSize( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->getFileSize( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit
+                       ) && ( $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) )
+                       )
+               );
        }
 }
 
index 0d7de9a..3f328f9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Maintenance script to create an account and grant it administrator rights
+ * Creates an account and grant it administrator rights.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to create an account and grant it administrator rights.
+ *
+ * @ingroup Maintenance
+ */
 class CreateAndPromote extends Maintenance {
 
        public function __construct() {
@@ -76,4 +81,4 @@ class CreateAndPromote extends Maintenance {
 }
 
 $maintClass = "CreateAndPromote";
-require_once( RUN_MAINTENANCE_IF_MAIN );
\ No newline at end of file
+require_once( RUN_MAINTENANCE_IF_MAIN );
index 2eacb73..728997d 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  */
 
+/**
+ * Core functions for deleteArchivedFiles.php
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedFilesImplementation {
        static public function doDelete( $output, $force ) {
                # Data should come off the master, wrapped in a transaction
@@ -62,4 +68,4 @@ class DeleteArchivedFilesImplementation {
                $dbw->commit( __METHOD__ );
                $output->handleOutput( "Done! [$count file(s)]\n" );
        }
-}
\ No newline at end of file
+}
index 6067c80..8709ee8 100644 (file)
@@ -1,8 +1,9 @@
 <?php
-
 /**
  * Delete archived (non-current) files from the database
  *
+ * Based on deleteOldRevisions.php by Rob Church.
+ *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  * @author Aaron Schulz
- * Based on deleteOldRevisions.php by Rob Church
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 require_once( dirname( __FILE__ ) . '/deleteArchivedFiles.inc' );
 
+/**
+ * Maintenance script to delete archived (non-current) files from the database.
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedFiles extends Maintenance {
        public function __construct() {
                parent::__construct();
index 0faa0ab..353661a 100644 (file)
@@ -1,8 +1,9 @@
 <?php
-
 /**
  * Delete archived (deleted from public) revisions from the database
  *
+ * Shamelessly stolen from deleteOldRevisions.php by Rob Church :)
+ *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  * @author Aaron Schulz
- * Shamelessly stolen from deleteOldRevisions.php by Rob Church :)
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 require_once( dirname( __FILE__ ) . '/deleteArchivedRevisions.inc' );
 
+/**
+ * Maintenance script to delete archived (deleted from public) revisions
+ * from the database.
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedRevisions extends Maintenance {
        public function __construct() {
                parent::__construct();
index 6b29c5f..2bb2a0f 100644 (file)
@@ -93,6 +93,11 @@ if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
 {
        require( MWInit::interpretedPath( 'AdminSettings.php' ) );
 }
+
+if ( $maintenance->getDbType() === Maintenance::DB_NONE ) {
+       if ( $wgLocalisationCacheConf['storeClass'] === false && ( $wgLocalisationCacheConf['store'] == 'db' || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) ) )
+               $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+}
 $maintenance->finalSetup();
 // Some last includes
 require_once( MWInit::compiledPath( 'includes/Setup.php' ) );
index b3bb50c..fa98813 100644 (file)
@@ -1,5 +1,21 @@
 <?php
 /**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @ingroup Maintenance
  */
 
index 0dc200e..0ce9388 100644 (file)
@@ -2,6 +2,22 @@
 /**
  * Maintenance script to import all scripts in the MediaWiki namespace from a
  * local site.
+ *
+ * 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
  */
index 65d6a70..8e0b2e1 100644 (file)
@@ -39,7 +39,7 @@ class CommandLineInstaller extends Maintenance {
                $this->addArg( 'name', 'The name of the wiki', true);
 
                $this->addArg( 'admin', 'The username of the wiki administrator (WikiSysop)', true );
-               $this->addOption( 'pass', 'The password for the wiki administrator. You will be prompted for this if it isn\'t provided', false, true );
+               $this->addOption( 'pass', 'The password for the wiki administrator.', true, true );
                /* $this->addOption( 'email', 'The email for the wiki administrator', false, true ); */
                $this->addOption( 'scriptpath', 'The relative path of the wiki in the web server (/wiki)', false, true );
 
index 2e4f40f..4cb90ff 100644 (file)
@@ -1,5 +1,22 @@
 <?php
 /**
+ * Maintenance script to generate first letter data files for Collation.php.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
  * @ingroup Maintenance
  * @file
  */
index 493fcc5..2e381aa 100644 (file)
@@ -387,6 +387,7 @@ $wgMessageStructure = array(
                'badarticleerror',
                'cannotdelete',
                'cannotdelete-title',
+               'delete-hook-aborted',
                'badtitle',
                'badtitletext',
                'perfcached',
@@ -412,6 +413,8 @@ $wgMessageStructure = array(
                'filereadonlyerror',
                'invalidtitle-knownnamespace',
                'invalidtitle-unknownnamespace',
+               'exception-nologin',
+               'exception-nologin-text',
        ),
        'virus' => array(
                'virus-badscanner',
@@ -1407,6 +1410,7 @@ $wgMessageStructure = array(
                'lockmanager-fail-deletelock',
                'lockmanager-fail-acquirelock',
                'lockmanager-fail-openlock',
+               'lockmanager-fail-acquirelock',
                'lockmanager-fail-releaselock',
                'lockmanager-fail-db-bucket',
                'lockmanager-fail-db-release',
@@ -2634,6 +2638,7 @@ $wgMessageStructure = array(
                'spambot_username',
                'spam_reverting',
                'spam_blanking',
+               'spam_deleting',
        ),
        'info' => array(
                'pageinfo-title',
@@ -3697,6 +3702,8 @@ $wgMessageStructure = array(
                'api-error-empty-file',
                'api-error-emptypage',
                'api-error-fetchfileerror',
+               'api-error-fileexists-forbidden',
+               'api-error-fileexists-shared-forbidden',
                'api-error-file-too-large',
                'api-error-filename-tooshort',
                'api-error-filetype-banned',
index 50b939c..ba778f4 100644 (file)
@@ -1,12 +1,28 @@
 <?php
 /**
+ * Simple lock server daemon that accepts lock/unlock requests.
+ *
+ * This code should not require MediaWiki setup or PHP files.
+ *
+ * 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 LockManager Maintenance
  */
 
-/**
- * This code should not require MediaWiki setup or PHP files.
- */
 if ( php_sapi_name() !== 'cli' ) {
        die( "This is not a valid entry point.\n" );
 }
index 876f28e..464de10 100644 (file)
@@ -66,7 +66,8 @@ class CLIParser extends Maintenance {
                $input_file = $this->getArg( 0, $php_stdin );
 
                if( $input_file === $php_stdin ) {
-                       $this->error( basename(__FILE__) .": warning: reading wikitext from STDIN\n" );
+                       $ctrl = wfIsWindows() ? 'CTRL+Z' : 'CTRL+D';
+                       $this->error( basename(__FILE__) .": warning: reading wikitext from STDIN. Press $ctrl to parse.\n" );
                }
 
                return file_get_contents( $input_file );
index 9c5f32b..10892c4 100644 (file)
@@ -1,6 +1,21 @@
 <?php
 /**
- * Command line script to check for an open proxy at a specified location
+ * Command line script to check for an open proxy at a specified location.
+ *
+ * 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
index 4d775f9..84a2b51 100644 (file)
@@ -1,7 +1,25 @@
 <?php
 /**
- * @ingroup Maintenance
+ * Maintenance script to remove old objects from the parser cache.
+ * This only works when the parser cache is in an SQL database.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
  * @file
+ * @ingroup Maintenance
  */
 
 require( dirname( __FILE__ ) . '/Maintenance.php' );
index fc9a6a8..ec7b081 100644 (file)
@@ -1,7 +1,22 @@
 <?php
 /**
- * @ingroup Maintenance Memcached
+ * 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 Memcached
  */
 
 require_once( dirname( __FILE__ ) . '/commandLine.inc' );
index a75696a..9c1ad29 100644 (file)
@@ -79,6 +79,7 @@ class RunJobs extends Maintenance {
                                wfWaitForSlaves();
                                $t = microtime( true );
                                $offset = $job->id;
+                               $this->runJobsLog( $job->toString() . " STARTING" );
                                $status = $job->run();
                                $t = microtime( true ) - $t;
                                $timeMs = intval( $t * 1000 );
index 5887a75..29904db 100644 (file)
@@ -388,7 +388,8 @@ class CheckStorage {
        }
 
        function restoreText( $revIds, $xml ) {
-               global $wgTmpDirectory, $wgDBname;
+               global $wgDBname;
+               $tmpDir = wfTempDir();
 
                if ( !count( $revIds ) ) {
                        return;
@@ -396,8 +397,8 @@ class CheckStorage {
 
                print "Restoring text from XML backup...\n";
 
-               $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
-               $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
+               $revFileName = "$tmpDir/broken-revlist-$wgDBname";
+               $filteredXmlFileName = "$tmpDir/filtered-$wgDBname.xml";
 
                // Write revision list
                if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
@@ -481,4 +482,3 @@ class CheckStorage {
                $this->errors['fixed'][$id] = true;
        }
 }
-
index 36fb8ee..ca0f95d 100644 (file)
@@ -1,14 +1,31 @@
 <?php
-
 /**
- * @ingroup Testing
- *
  * Set of classes to help with test output and such. Right now pretty specific
  * to the parser tests but could be more useful one day :)
  *
+ * 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 Testing
  * @todo Fixme: Make this more generic
  */
 
+/**
+ * Terminal that supports ANSI escape sequences.
+ */
 class AnsiTermColorer {
        function __construct() {
        }
@@ -37,7 +54,9 @@ class AnsiTermColorer {
        }
 }
 
-/* A colour-less terminal */
+/**
+ * A colour-less terminal
+ */
 class DummyTermColorer {
        public function color( $color ) {
                return '';
index 6160a30..fd425fe 100644 (file)
@@ -79,13 +79,19 @@ TEXT;
                                        $collationConds,
                                        __METHOD__
                                );
-
-                               if ( $count == 0 ) {
-                                       $this->output( "Collations up-to-date.\n" );
-                                       return;
-                               }
-                               $this->output( "Fixing collation for $count rows.\n" );
+                       } else {
+                               $count = $dbw->estimateRowCount(
+                                       'categorylinks',
+                                       '',
+                                       $collationConds,
+                                       __METHOD__
+                               );
+                       }
+                       if ( $count == 0 ) {
+                               $this->output( "Collations up-to-date.\n" );
+                               return;
                        }
+                       $this->output( "Fixing collation for $count rows.\n" );
                }
 
                $count = 0;
index b9fdb0f..0e85050 100644 (file)
@@ -655,21 +655,9 @@ return array(
        'mediawiki.action.view.rightClickEdit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
        ),
+       // Alias for backwards compatibility
        'mediawiki.action.watch.ajax' => array(
-               'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js',
-               'dependencies' => array(
-                       'mediawiki.api.watch',
-                       'mediawiki.util',
-               ),
-               'messages' => array(
-                       'watch',
-                       'unwatch',
-                       'watching',
-                       'unwatching',
-                       'tooltip-ca-watch',
-                       'tooltip-ca-unwatch',
-                       'watcherrortext',
-               ),
+               'dependencies' => 'mediawiki.page.watch.ajax'
        ),
 
        /* MediaWiki Language */
@@ -708,12 +696,9 @@ return array(
                        'mk' => 'resources/mediawiki.language/languages/mk.js',
                        'mo' => 'resources/mediawiki.language/languages/mo.js',
                        'mt' => 'resources/mediawiki.language/languages/mt.js',
-                       'nl' => 'resources/mediawiki.language/languages/nl.js',
                        'nso' => 'resources/mediawiki.language/languages/nso.js',
                        'os' => 'resources/mediawiki.language/languages/os.js',
                        'pl' => 'resources/mediawiki.language/languages/pl.js',
-                       'pt' => 'resources/mediawiki.language/languages/pt.js',
-                       'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
                        'ro' => 'resources/mediawiki.language/languages/ro.js',
                        'ru' => 'resources/mediawiki.language/languages/ru.js',
                        'se' => 'resources/mediawiki.language/languages/se.js',
@@ -770,7 +755,23 @@ return array(
                ),
                'position' => 'top',
        ),
-
+       'mediawiki.page.watch.ajax' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.watch.ajax.js',
+               'dependencies' => array(
+                       'mediawiki.page.startup',
+                       'mediawiki.api.watch',
+                       'mediawiki.util'
+               ),
+               'messages' => array(
+                       'watch',
+                       'unwatch',
+                       'watching',
+                       'unwatching',
+                       'tooltip-ca-watch',
+                       'tooltip-ca-unwatch',
+                       'watcherrortext',
+               ),
+       ),
 
        /* MediaWiki Special pages */
 
@@ -815,6 +816,11 @@ return array(
        'mediawiki.special.search' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/mediawiki.special/mediawiki.special.search.css',
+               'messages' => array(
+                       'powersearch-togglelabel',
+                       'powersearch-toggleall',
+                       'powersearch-togglenone',
+               ),
        ),
        'mediawiki.special.undelete' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
index 9a80e94..fef8c4b 100644 (file)
Binary files a/resources/jquery.tipsy/images/tipsy.png and b/resources/jquery.tipsy/images/tipsy.png differ
index e46467b..28eb1fc 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-disabled-blue.png and b/resources/jquery.ui/themes/vector/images/button-disabled-blue.png differ
index 7125691..0e29d85 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-disabled-green.png and b/resources/jquery.ui/themes/vector/images/button-disabled-green.png differ
index 9d01bbc..ede6998 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-disabled-red.png and b/resources/jquery.ui/themes/vector/images/button-disabled-red.png differ
index bfaf84e..e4e4ec1 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-disabled.png and b/resources/jquery.ui/themes/vector/images/button-disabled.png differ
index 781a281..766e574 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-down-blue.png and b/resources/jquery.ui/themes/vector/images/button-down-blue.png differ
index 60bba29..90969c3 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-down-green.png and b/resources/jquery.ui/themes/vector/images/button-down-green.png differ
index 54c847d..f625729 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-down-red.png and b/resources/jquery.ui/themes/vector/images/button-down-red.png differ
index 29508a0..c646757 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-down.png and b/resources/jquery.ui/themes/vector/images/button-down.png differ
index a5fdd7d..109907f 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-off-green.png and b/resources/jquery.ui/themes/vector/images/button-off-green.png differ
index 89a0e9a..cc5eb11 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-off.png and b/resources/jquery.ui/themes/vector/images/button-off.png differ
index fbde737..47a0b1b 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-over-green.png and b/resources/jquery.ui/themes/vector/images/button-over-green.png differ
index b2d4c0b..a244536 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-over-red.png and b/resources/jquery.ui/themes/vector/images/button-over-red.png differ
index 2400f62..558f1f8 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/button-over.png and b/resources/jquery.ui/themes/vector/images/button-over.png differ
index b36dafb..ef0dd9e 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/close.png and b/resources/jquery.ui/themes/vector/images/close.png differ
index 2146cb0..09de537 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_flat_15_cd0a0a_40x100.png differ
index 6ff03d5..c06dd56 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_flat_70_000000_40x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_flat_70_000000_40x100.png differ
index 28b566c..5308b46 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png differ
index dac8462..0c8997f 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png differ
index ad7f982..3149255 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png differ
index 8169ec3..09b2376 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_100_ffffff_1x100.png differ
index 54aff0c..66627c1 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_highlight-soft_25_ffef8f_1x100.png differ
index 3d87ac7..ccb6dc0 100644 (file)
Binary files a/resources/jquery.ui/themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png and b/resources/jquery.ui/themes/vector/images/ui-bg_inset-hard_100_f0f0f0_1x100.png differ
index 2af4c94..83d6ff8 100644 (file)
Binary files a/resources/jquery/images/jquery.arrowSteps.divider-ltr.png and b/resources/jquery/images/jquery.arrowSteps.divider-ltr.png differ
index 6aba7f2..529d7b8 100644 (file)
Binary files a/resources/jquery/images/jquery.arrowSteps.divider-rtl.png and b/resources/jquery/images/jquery.arrowSteps.divider-rtl.png differ
index 45df39a..d8f4bfc 100644 (file)
                        // that affects the next each() iteration as well.
                        elLimit = limit === undefined ? $el.prop( 'maxLength' ) : limit;
        
+                       // If there is no (valid) limit passed or found in the property,
+                       // skip this. The < 0 check is required for Firefox, which returns
+                       // -1  (instead of undefined) for maxLength if it is not set.
+                       if ( !elLimit || elLimit < 0 ) {
+                               return;
+                       }
+
                        // Update/set attribute value, but only if there is no callback set.
                        // If there's a callback set, it's possible that the limit being enforced
                        // is too low (ie. if the callback would return "Foo" for "User:Foo").
                                $el.removeProp( 'maxLength' );
                        }
        
-                       // Nothing passed and/or empty attribute, return without binding an event.
-                       if ( elLimit === undefined ) {
-                               return;
-                       }
-       
                        // Save function for reference
                        $el.data( 'byteLimit-callback', fn );
        
index 79317f7..6d5974a 100644 (file)
@@ -1,96 +1,47 @@
-/**
- * Cookie plugin
+/*!
+ * jQuery Cookie Plugin
+ * https://github.com/carhartl/jquery-cookie
  *
- * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
- * Dual licensed under the MIT and GPL licenses:
+ * Copyright 2011, Klaus Hartl
+ * Dual licensed under the MIT or GPL Version 2 licenses.
  * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
+ * http://www.opensource.org/licenses/GPL-2.0
  */
+(function($) {
+    $.cookie = function(key, value, options) {
 
-/**
- * Create a cookie with the given name and value and other optional parameters.
- *
- * @example $.cookie('the_cookie', 'the_value');
- * @desc Set the value of a cookie.
- * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
- * @desc Create a cookie with all available options.
- * @example $.cookie('the_cookie', 'the_value');
- * @desc Create a session cookie.
- * @example $.cookie('the_cookie', null);
- * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
- *       used when the cookie was set.
- *
- * @param String name The name of the cookie.
- * @param String value The value of the cookie.
- * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
- * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
- *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
- *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
- *                             when the the browser exits.
- * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
- * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
- * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
- *                        require a secure protocol (like HTTPS).
- * @type undefined
- *
- * @name $.cookie
- * @cat Plugins/Cookie
- * @author Klaus Hartl/klaus.hartl@stilbuero.de
- */
+        // key and at least value given, set cookie...
+        if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
+            options = $.extend({}, options);
 
-/**
- * Get the value of a cookie with the given name.
- *
- * @example $.cookie('the_cookie');
- * @desc Get the value of a cookie.
- *
- * @param String name The name of the cookie.
- * @return The value of the cookie.
- * @type String
- *
- * @name $.cookie
- * @cat Plugins/Cookie
- * @author Klaus Hartl/klaus.hartl@stilbuero.de
- */
-jQuery.cookie = function(name, value, options) {
-    if (typeof value != 'undefined') { // name and value given, set cookie
-        options = options || {};
-        if (value === null) {
-            value = '';
-            options.expires = -1;
-        }
-        var expires = '';
-        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
-            var date;
-            if (typeof options.expires == 'number') {
-                date = new Date();
-                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
-            } else {
-                date = options.expires;
+            if (value === null || value === undefined) {
+                options.expires = -1;
             }
-            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
-        }
-        // CAUTION: Needed to parenthesize options.path and options.domain
-        // in the following expressions, otherwise they evaluate to undefined
-        // in the packed version for some reason...
-        var path = options.path ? '; path=' + (options.path) : '';
-        var domain = options.domain ? '; domain=' + (options.domain) : '';
-        var secure = options.secure ? '; secure' : '';
-        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
-    } else { // only name given, get cookie
-        var cookieValue = null;
-        if (document.cookie && document.cookie != '') {
-            var cookies = document.cookie.split(';');
-            for (var i = 0; i < cookies.length; i++) {
-                var cookie = jQuery.trim(cookies[i]);
-                // Does this cookie string begin with the name we want?
-                if (cookie.substring(0, name.length + 1) == (name + '=')) {
-                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
-                    break;
-                }
+
+            if (typeof options.expires === 'number') {
+                var days = options.expires, t = options.expires = new Date();
+                t.setDate(t.getDate() + days);
             }
+
+            value = String(value);
+
+            return (document.cookie = [
+                encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
+                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+                options.path    ? '; path=' + options.path : '',
+                options.domain  ? '; domain=' + options.domain : '',
+                options.secure  ? '; secure' : ''
+            ].join(''));
+        }
+
+        // key and possibly options given, get cookie...
+        options = value || {};
+        var decode = options.raw ? function(s) { return s; } : decodeURIComponent;
+
+        var pairs = document.cookie.split('; ');
+        for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
+            if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
         }
-        return cookieValue;
-    }
-};
+        return null;
+    };
+})(jQuery);
index 5abb869..2db0629 100644 (file)
@@ -1,19 +1,85 @@
 /**
- * jQuery QUnit CompletenessTest 0.3
+ * jQuery QUnit CompletenessTest 0.4
  *
  * Tests the completeness of test suites for object oriented javascript
  * libraries. Written to be used in environments with jQuery and QUnit.
- * Requires jQuery 1.5.2 or higher.
- *
- * Globals: jQuery, QUnit, console.log
+ * Requires jQuery 1.7.2 or higher.
  *
  * Built for and tested with:
- * - Safari 5
+ * - Chrome 19
  * - Firefox 4
+ * - Safari 5
  *
- * @author Timo Tijhof, 2011
+ * @author Timo Tijhof, 2011-2012
  */
-( function( $ ) {
+/*global jQuery, QUnit */
+/*jshint eqeqeq:false, eqnull:false, forin:false */
+( function ( $ ) {
+       "use strict";
+
+       var util,
+               hasOwn = Object.prototype.hasOwnProperty,
+               log = (window.console && window.console.log)
+                       ? function () { return window.console.log.apply(window.console, arguments); }
+                       : function () {};
+
+       // Simplified version of a few jQuery methods, except that they don't
+       // call other jQuery methods. Required to be able to run the CompletenessTest
+       // on jQuery itself as well.
+       util = {
+               keys: Object.keys || function ( object ) {
+                       var key, keys = [];
+                       for ( key in object ) {
+                               if ( hasOwn.call( object, key ) ) {
+                                       keys.push( key );
+                               }
+                       }
+                       return keys;
+               },
+               extend: function () {
+                       var options, name, src, copy,
+                               target = arguments[0] || {},
+                               i = 1,
+                               length = arguments.length;
+
+                       for ( ; i < length; i++ ) {
+                               // Only deal with non-null/undefined values
+                               if ( (options = arguments[ i ]) != null ) {
+                                       // Extend the base object
+                                       for ( name in options ) {
+                                               src = target[ name ];
+                                               copy = options[ name ];
+
+                                               // Prevent never-ending loop
+                                               if ( target === copy ) {
+                                                       continue;
+                                               }
+
+                                               if ( copy !== undefined ) {
+                                                       target[ name ] = copy;
+                                               }
+                                       }
+                               }
+                       }
+
+                       // Return the modified object
+                       return target;
+               },
+               each: function ( object, callback ) {
+                       var name;
+                       for ( name in object ) {
+                               if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+                                       break;
+                               }
+                       }
+               },
+               // $.type and $.isEmptyObject are safe as is, they don't call
+               // other $.* methods. Still need to be derefenced into `util`
+               // since the CompletenessTest will overload them with spies.
+               type: $.type,
+               isEmptyObject: $.isEmptyObject
+       };
+
 
 /**
  * CompletenessTest
@@ -33,67 +99,103 @@ var CompletenessTest = function ( masterVariable, ignoreFn ) {
 
        // Keep track in these objects. Keyed by strings with the
        // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
+       this.injectionTracker = {};
        this.methodCallTracker = {};
        this.missingTests = {};
 
-       this.ignoreFn = undefined === ignoreFn ? function(){ return false; } : ignoreFn;
+       this.ignoreFn = undefined === ignoreFn ? function () { return false; } : ignoreFn;
 
        // Lazy limit in case something weird happends (like recurse (part of) ourself).
-       this.lazyLimit = 1000;
+       this.lazyLimit = 2000;
        this.lazyCounter = 0;
 
        var that = this;
 
        // Bind begin and end to QUnit.
-       QUnit.begin = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
-       };
+       QUnit.begin( function () {
+               that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
+               log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+       });
+
+       QUnit.done( function () {
+               that.populateMissingTests();
+               log( 'CompletenessTest/populateMissingTests', that );
+
+               var toolbar, testResults, cntTotal, cntCalled, cntMissing;
+
+               cntTotal = util.keys( that.injectionTracker ).length;
+               cntCalled = util.keys( that.methodCallTracker ).length;
+               cntMissing = util.keys( that.missingTests ).length;
 
-       QUnit.done = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_CHECK );
-               console.log( 'CompletenessTest.ACTION_CHECK', that );
+               function makeTestResults( blob, title, style ) {
+                       var elOutputWrapper, elTitle, elContainer, elList, elFoot;
 
-               // Build HTML representing the outcome from CompletenessTest
-               // And insert it into the header.
+                       elTitle = document.createElement( 'strong' );
+                       elTitle.textContent = title || 'Values';
 
-               var makeList = function( blob, title, style ) {
-                       title = title || 'Values';
-                       var html = '<strong>' + mw.html.escape(title) + '</strong>';
-                       $.each( blob, function( key ) {
-                               html += '<br />' + mw.html.escape(key);
+                       elList = document.createElement( 'ul' );
+                       util.each( blob, function ( key ) {
+                               var elItem = document.createElement( 'li' );
+                               elItem.textContent = key;
+                               elList.appendChild( elItem );
                        });
-                       html += '<br /><br /><em>&mdash; CompletenessTest</em>';
-                       var     $oldResult = $( '#qunit-completenesstest' ),
-                               $result = $oldResult.length ? $oldResult : $( '<div id="qunit-completenesstest"></div>' );
-                       return $result.css( style ).html( html );
-               };
 
-               if ( $.isEmptyObject( that.missingTests ) ) {
+                       elFoot = document.createElement( 'p' );
+                       elFoot.innerHTML = '<em>&mdash; CompletenessTest</em>';
+
+                       elContainer = document.createElement( 'div' );
+                       elContainer.appendChild( elTitle );
+                       elContainer.appendChild( elList );
+                       elContainer.appendChild( elFoot );
+
+                       elOutputWrapper = document.getElementById( 'qunit-completenesstest' );
+                       if ( !elOutputWrapper ) {
+                               elOutputWrapper = document.createElement( 'div' );
+                               elOutputWrapper.id = 'qunit-completenesstest';
+                       }
+                       elOutputWrapper.appendChild( elContainer );
+
+                       util.each( style, function ( key, value ) {
+                               elOutputWrapper.style[key] = value;
+                       });
+                       return elOutputWrapper;
+               }
+
+               if ( cntMissing === 0 ) {
                        // Good
-                       var $testResults = makeList(
-                               { 'No missing tests!': true },
-                               'missingTests',
+                       testResults = makeTestResults(
+                               {},
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. No missing tests!',
                                {
-                                       background: '#D2E0E6',
+                                       backgroundColor: '#D2E0E6',
                                        color: '#366097',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                } else {
                        // Bad
-                       var $testResults = makeList(
+                       testResults = makeTestResults(
                                that.missingTests,
-                               'missingTests',
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. ' + cntMissing + ' methods not covered:',
                                {
-                                       background: '#EE5757',
+                                       backgroundColor: '#EE5757',
                                        color: 'black',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                }
 
-               $( '#qunit-testrunner-toolbar' ).prepend( $testResults );
-       };
+               toolbar = document.getElementById( 'qunit-testrunner-toolbar' );
+               if ( toolbar ) {
+                       toolbar.insertBefore( testResults, toolbar.firstChild );
+               }
+       });
 
        return this;
 };
@@ -106,7 +208,7 @@ CompletenessTest.ACTION_CHECK = 501;
 CompletenessTest.fn = CompletenessTest.prototype = {
 
        /**
-        * CompletenessTest.fn.checkTests
+        * CompletenessTest.fn.walkTheObject
         *
         * This function recursively walks through the given object, calling itself as it goes.
         * Depending on the action it either injects our listener into the methods, or
@@ -121,92 +223,86 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         *  masterVariable. Not including currName.
         * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
         */
-       checkTests: function( currName, currVar, masterVariable, parentPathArray, action ) {
-
-               // Handle the lazy limit
-               this.lazyCounter++;
-               if ( this.lazyCounter > this.lazyLimit ) {
-                       console.log( 'CompletenessTest.fn.checkTests> Limit reached: ' + this.lazyCounter );
-                       return null;
-               }
+       walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
 
-               var     type = $.type( currVar ),
+               var key, value, tmpPathArray,
+                       type = util.type( currVar ),
                        that = this;
 
                // Hard ignores
                if ( this.ignoreFn( currVar, that, parentPathArray ) ) {
                        return null;
+               }
 
-               // Functions
-               } else  if ( type === 'function' ) {
-
-                       /* CHECK MODE */
-
-                       if ( action === CompletenessTest.ACTION_CHECK ) {
-
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
-
-                                       that.hasTest( parentPathArray.join( '.' ) );
+               // Handle the lazy limit
+               this.lazyCounter++;
+               if ( this.lazyCounter > this.lazyLimit ) {
+                       log( 'CompletenessTest.fn.walkTheObject> Limit reached: ' + this.lazyCounter, parentPathArray );
+                       return null;
+               }
 
-                               // We don't support checking object constructors yet...
-                               } else {
+               // Functions
+               if ( type === 'function' ) {
 
-                                       // ...the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
+                       if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
 
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                                               that.hasTest( tmpPathArray.join( '.' ) );
+                                       that.injectionTracker[ parentPathArray.join( '.' ) ] = true;
+                                       that.injectCheck( masterVariable, parentPathArray, function () {
+                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
                                        } );
                                }
 
-                       /* INJECT MODE */
-
-                       } else if ( action === CompletenessTest.ACTION_INJECT ) {
+                       // We don't support checking object constructors yet...
+                       // ...we can check the prototypes fine, though.
+                       } else {
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+                                       for ( key in currVar.prototype ) {
+                                               if ( hasOwn.call( currVar.prototype, key ) ) {
+                                                       value = currVar.prototype[key];
+                                                       if ( key === 'constructor' ) {
+                                                               continue;
+                                                       }
 
-                                       // Inject check
-                                       that.injectCheck( masterVariable, parentPathArray, function() {
-                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
-                                       } );
+                                                       // Clone and break reference to parentPathArray
+                                                       tmpPathArray = util.extend( [], parentPathArray );
+                                                       tmpPathArray.push( 'prototype' );
+                                                       tmpPathArray.push( key );
 
-                               // We don't support checking object constructors yet...
-                               } else {
+                                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                                               }
+                                       }
 
-                                       // ... the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
-
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
-
-                                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
-                                       } );
                                }
-
                        }
 
-               // Recursively. After all, this *is* the completeness test
-               } else if ( type === 'object' ) {
-
-                       $.each( currVar, function( key, value ) {
-
-                               // Clone and break reference to parentPathArray
-                               var tmpPathArray = $.extend( [], parentPathArray );
-                               tmpPathArray.push( key );
+               }
 
-                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
+               // Recursively. After all, this is the *completeness* test
+               if ( type === 'function' || type === 'object' ) {
+                       for ( key in currVar ) {
+                               if ( hasOwn.call( currVar, key ) ) {
+                                       value = currVar[key];
 
-                       } );
+                                       // Clone and break reference to parentPathArray
+                                       tmpPathArray = util.extend( [], parentPathArray );
+                                       tmpPathArray.push( key );
 
+                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                               }
+                       }
                }
        },
 
+       populateMissingTests: function () {
+               var ct = this;
+               util.each( ct.injectionTracker, function ( key ) {
+                       ct.hasTest( key );
+               });
+       },
+
        /**
         * CompletenessTest.fn.hasTest
         *
@@ -217,7 +313,7 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param fnName {String}
         * @return {Boolean}
         */
-       hasTest: function( fnName ) {
+       hasTest: function ( fnName ) {
                if ( !( fnName in this.methodCallTracker ) ) {
                        this.missingTests[fnName] = true;
                        return false;
@@ -235,19 +331,24 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param objectPathArray {Array}
         * @param injectFn {Function}
         */
-       injectCheck: function( masterVariable, objectPathArray, injectFn ) {
-               var     prev,
-                       curr = masterVariable,
-                       lastMember;
+       injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
+               var i, len, prev, memberName, lastMember,
+                       curr = masterVariable;
+
+               // Get the object in question through the path from the master variable,
+               // We can't pass the value directly because we need to re-define the object
+               // member and keep references to the parent object, member name and member
+               // value at all times.
+               for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
+                       memberName = objectPathArray[i];
 
-               $.each( objectPathArray, function( i, memberName ) {
                        prev = curr;
                        curr = prev[memberName];
                        lastMember = memberName;
-               });
+               }
 
                // Objects are by reference, members (unless objects) are not.
-               prev[lastMember] = function() {
+               prev[lastMember] = function () {
                        injectFn();
                        return curr.apply( this, arguments );
                };
index 5b1af33..5684a44 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.7.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.8.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
index 7805abc..c1570c2 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.7.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.8.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
@@ -12,6 +12,7 @@
 
 var QUnit,
        config,
+       onErrorFnPrev,
        testId = 0,
        fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
        toString = Object.prototype.toString,
@@ -256,6 +257,8 @@ Test.prototype = {
                });
 
                QUnit.reset();
+
+               config.current = undefined;
        },
 
        queue: function() {
@@ -469,11 +472,13 @@ QUnit.assert = {
                        expected = null;
                }
 
+               config.current.ignoreGlobalErrors = true;
                try {
                        block.call( config.current.testEnvironment );
                } catch (e) {
                        actual = e;
                }
+               config.current.ignoreGlobalErrors = false;
 
                if ( actual ) {
                        // we don't want to validate thrown error
@@ -576,7 +581,13 @@ config = {
        }
 
        QUnit.urlParams = urlParams;
+
+       // String search anywhere in moduleName+testName
        config.filter = urlParams.filter;
+
+       // Exact match of the module name
+       config.module = urlParams.module;
+
        config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
 
        // Figure out if we're running the tests from a server or not
@@ -760,6 +771,10 @@ extend( QUnit, {
        },
 
        pushFailure: function( message, source ) {
+               if ( !config.current ) {
+                       throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
+               }
+
                var output,
                        details = {
                                result: false,
@@ -933,15 +948,36 @@ QUnit.load = function() {
 
 addEvent( window, "load", QUnit.load );
 
-// addEvent(window, "error" ) gives us a useless event object
-window.onerror = function( message, file, line ) {
-       if ( QUnit.config.current ) {
-               QUnit.pushFailure( message, file + ":" + line );
-       } else {
-               QUnit.test( "global failure", function() {
-                       QUnit.pushFailure( message, file + ":" + line );
-               });
+// `onErrorFnPrev` initialized at top of scope
+// Preserve other handlers
+onErrorFnPrev = window.onerror;
+
+// Cover uncaught exceptions
+// Returning true will surpress the default browser handler,
+// returning false will let it run.
+window.onerror = function ( error, filePath, linerNr ) {
+       var ret = false;
+       if ( onErrorFnPrev ) {
+               ret = onErrorFnPrev( error, filePath, linerNr );
        }
+
+       // Treat return value as window.onerror itself does,
+       // Only do our handling if not surpressed.
+       if ( ret !== true ) {
+               if ( QUnit.config.current ) {
+                       if ( QUnit.config.current.ignoreGlobalErrors ) {
+                               return true;
+                       }
+                       QUnit.pushFailure( error, filePath + ":" + linerNr );
+               } else {
+                       QUnit.test( "global failure", function() {
+                               QUnit.pushFailure( error, filePath + ":" + linerNr );
+                       });
+               }
+               return false;
+       }
+
+       return ret;
 };
 
 function done() {
@@ -1011,15 +1047,21 @@ function done() {
        });
 }
 
+/** @return Boolean: true if this test should be ran */
 function validTest( test ) {
        var include,
                filter = config.filter && config.filter.toLowerCase(),
+               module = config.module,
                fullName = (test.module + ": " + test.testName).toLowerCase();
 
        if ( config.testNumber ) {
                return test.testNumber === config.testNumber;
        }
 
+       if ( module && test.module !== module ) {
+               return false;
+       }
+
        if ( !filter ) {
                return true;
        }
index ea86b64..08272a5 100644 (file)
@@ -60,7 +60,7 @@
 
        /* Local scope */
 
-       var     ts,
+       var ts,
                parsers = [];
 
        /* Parser utility functions */
 
        function getElementText( node ) {
                var $node = $( node ),
-                       data = $node.attr( 'data-sort-value' );
-               if ( data !== undefined ) {
-                       return data;
+                       // Use data-sort-value attribute.
+                       // Use data() instead of attr() so that live value changes
+                       // are processed as well (bug 38152).
+                       data = $node.data( 'sortValue' );
+
+               if ( data !== null && data !== undefined ) {
+                       // Cast any numbers or other stuff to a string, methods
+                       // like charAt, toLowerCase and split are expected.
+                       return String( data );
                } else {
                        return $node.text();
                }
 
        function buildDateTable() {
                var regex = [];
-               ts.monthNames = [
-                       [],
-                       []
-               ];
+               ts.monthNames = {};
 
                for ( var i = 1; i < 13; i++ ) {
-                       ts.monthNames[0][i] = mw.config.get( 'wgMonthNames' )[i].toLowerCase();
-                       ts.monthNames[1][i] = mw.config.get( 'wgMonthNamesShort' )[i].toLowerCase().replace( '.', '' );
-                       regex.push( $.escapeRE( ts.monthNames[0][i] ) );
-                       regex.push( $.escapeRE( ts.monthNames[1][i] ) );
+                       var name = mw.config.get( 'wgMonthNames' )[i].toLowerCase();
+                       ts.monthNames[name] = i;
+                       regex.push( $.escapeRE( name ) );
+                       name = mw.config.get( 'wgMonthNamesShort' )[i].toLowerCase().replace( '.', '' );
+                       ts.monthNames[name] = i;
+                       regex.push( $.escapeRE( name ) );
                }
 
                // Build piped string
 
                // Build RegEx
                // Any date formated with . , ' - or /
-               ts.dateRegex[0] = new RegExp( /^\s*\d{1,2}[\,\.\-\/'\s]{1,2}\d{1,2}[\,\.\-\/'\s]{1,2}\d{2,4}\s*?/i);
+               ts.dateRegex[0] = new RegExp( /^\s*(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{2,4})\s*?/i);
 
                // Written Month name, dmy
-               ts.dateRegex[1] = new RegExp( '^\\s*\\d{1,2}[\\,\\.\\-\\/\'\\s]*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i' );
+               ts.dateRegex[1] = new RegExp( '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*(\\d{2,4})\\s*$', 'i' );
 
                // Written Month name, mdy
-               ts.dateRegex[2] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{1,2}[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i' );
+               ts.dateRegex[2] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*(\\d{1,2})[\\,\\.\\-\\/\'\\s]*(\\d{2,4})\\s*$', 'i' );
 
        }
 
                        },
 
                        dateRegex: [],
-                       monthNames: [],
+                       monthNames: {},
 
                        /**
                         * @param $tables {jQuery}
                                                        explodeRowspans( $table );
                                                        // try to auto detect column type, and store in tables config
                                                        table.config.parsers = buildParserCache( table, $headers );
-                                                       // build the cache for the tbody cells
-                                                       cache = buildCache( table );
                                                }
+
+                                               // Build the cache for the tbody cells
+                                               // to share between calculations for this sort action.
+                                               // Re-calculated each time a sort action is performed due to possiblity
+                                               // that sort values change. Shouldn't be too expensive, but if it becomes
+                                               // too slow an event based system should be implemented somehow where
+                                               // cells get event .change() and bubbles up to the <table> here
+                                               cache = buildCache( table );
+
                                                var totalRows = ( $table[0].tBodies[0] && $table[0].tBodies[0].rows.length ) || 0;
                                                if ( !table.sortDisabled && totalRows > 0 ) {
 
                format: function( s, table ) {
                        s = $.trim( s.toLowerCase() );
 
-                       for ( var i = 1, j = 0; i < 13 && j < 2; i++ ) {
-                               s = s.replace( ts.monthNames[j][i], i );
-                               if ( i == 12 ) {
-                                       j++;
-                                       i = 0;
+                       var match;
+                       if ( ( match = s.match( ts.dateRegex[0] ) ) !== null ) {
+                               if ( mw.config.get( 'wgDefaultDateFormat' ) == 'mdy' || mw.config.get( 'wgContentLanguage' ) == 'en' ) {
+                                       s = [ match[3], match[1], match[2] ];
+                               } else if ( mw.config.get( 'wgDefaultDateFormat' ) == 'dmy' ) {
+                                       s = [ match[3], match[2], match[1] ];
                                }
+                       } else if ( ( match = s.match( ts.dateRegex[1] ) ) !== null ) {
+                               s = [ match[3], '' + ts.monthNames[match[2]], match[1] ];
+                       } else if ( ( match = s.match( ts.dateRegex[2] ) ) !== null ) {
+                               s = [ match[3], '' + ts.monthNames[match[1]], match[2] ];
+                       } else {
+                               // Should never get here
+                               return '99999999';
                        }
 
-                       s = s.replace( /[\-\.\,' ]/g, '/' );
-
-                       // Replace double slashes
-                       s = s.replace( /\/\//g, '/' );
-                       s = s.replace( /\/\//g, '/' );
-                       s = s.split( '/' );
-
                        // Pad Month and Day
-                       if ( s[0] && s[0].length == 1 ) {
-                               s[0] = '0' + s[0];
-                       }
-                       if ( s[1] && s[1].length == 1 ) {
+                       if ( s[1].length == 1 ) {
                                s[1] = '0' + s[1];
                        }
-                       var y;
+                       if ( s[2].length == 1 ) {
+                               s[2] = '0' + s[2];
+                       }
 
-                       if ( !s[2] ) {
-                               // Fix yearless dates
-                               s[2] = 2000;
-                       } else if ( ( y = parseInt( s[2], 10) ) < 100 ) {
+                       var y;
+                       if ( ( y = parseInt( s[0], 10) ) < 100 ) {
                                // Guestimate years without centuries
                                if ( y < 30 ) {
-                                       s[2] = 2000 + y;
+                                       s[0] = 2000 + y;
                                } else {
-                                       s[2] = 1900 + y;
+                                       s[0] = 1900 + y;
                                }
                        }
-                       // Resort array depending on preferences
-                       if ( mw.config.get( 'wgDefaultDateFormat' ) == 'mdy' || mw.config.get( 'wgContentLanguage' ) == 'en' ) {
-                               s.push( s.shift() );
-                               s.push( s.shift() );
-                       } else if ( mw.config.get( 'wgDefaultDateFormat' ) == 'dmy' ) {
-                               var d = s.shift();
-                               s.push( s.shift() );
-                               s.push(d);
+                       while ( s[0].length < 4 ) {
+                               s[0] = '0' + s[0];
                        }
                        return parseInt( s.join( '' ), 10 );
                },
diff --git a/resources/mediawiki.action/mediawiki.action.watch.ajax.js b/resources/mediawiki.action/mediawiki.action.watch.ajax.js
deleted file mode 100644 (file)
index 090e4c3..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * Animate watch/unwatch links to use asynchronous API requests to
- * watch pages, rather than navigating to a different URI.
- */
-( function ( $, mw, undefined ) {
-
-       /**
-        * The name of the page to watch or unwatch.
-        */
-       var title = mw.config.get( 'wgRelevantPageName', mw.config.get( 'wgPageName' ) );
-
-       /**
-        * Update the link text, link href attribute and (if applicable)
-        * "loading" class.
-        *
-        * @param $link {jQuery} Anchor tag of (un)watch link.
-        * @param action {String} One of 'watch', 'unwatch'.
-        * @param state {String} [optional] 'idle' or 'loading'. Default is 'idle'.
-        */
-       function updateWatchLink( $link, action, state ) {
-               var accesskeyTip, msgKey, $li;
-
-               // message keys 'watch', 'watching', 'unwatch' or 'unwatching'.
-               msgKey = state === 'loading' ? action + 'ing' : action;
-               accesskeyTip = $link.attr( 'title' ).match( mw.util.tooltipAccessKeyRegexp );
-               $li = $link.closest( 'li' );
-
-               $link
-                       .text( mw.msg( msgKey ) )
-                       .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
-                               ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
-                       )
-                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
-                                       title: title,
-                                       action: action
-                               })
-                       );
-
-               // Special case for vector icon
-               if ( $li.hasClass( 'icon' ) ) {
-                       if ( state === 'loading' ) {
-                               $link.addClass( 'loading' );
-                       } else {
-                               $link.removeClass( 'loading' );
-                       }
-               }
-       }
-
-       /**
-        * @todo This should be moved somewhere more accessible.
-        * @param url {String}
-        * @return {String} The extracted action, defaults to 'view'.
-        */
-       function mwUriGetAction( url ) {
-               var action, actionPaths, key, i, m, parts;
-
-               actionPaths = mw.config.get( 'wgActionPaths' );
-
-               // @todo: Does MediaWiki give action path or query param
-               // precedence ? If the former, move this to the bottom
-               action = mw.util.getParamValue( 'action', url );
-               if ( action !== null ) {
-                       return action;
-               }
-
-               for ( key in actionPaths ) {
-                       if ( actionPaths.hasOwnProperty( key ) ) {
-                               parts = actionPaths[key].split( '$1' );
-                               for ( i = 0; i < parts.length; i += 1 ) {
-                                       parts[i] = $.escapeRE( parts[i] );
-                               }
-                               m = new RegExp( parts.join( '(.+)' ) ).exec( url );
-                               if ( m && m[1] ) {
-                                       return key;
-                               }
-
-                       }
-               }
-
-               return 'view';
-       }
-
-       $( document ).ready( function () {
-               var $links = $( '.mw-watchlink a, a.mw-watchlink, ' +
-                       '#ca-watch a, #ca-unwatch a, #mw-unwatch-link1, ' +
-                       '#mw-unwatch-link2, #mw-watch-link2, #mw-watch-link1' );
-
-               // Allowing people to add inline animated links is a little scary
-               $links = $links.filter( ':not( #bodyContent *, #content * )' );
-
-               $links.click( function ( e ) {
-                       var action, api, $link;
-
-                       action = mwUriGetAction( this.href );
-
-                       if ( action !== 'watch' && action !== 'unwatch' ) {
-                               // Could not extract target action from link url,
-                               // let native browsing handle it further
-                               return true;
-                       }
-                       e.preventDefault();
-                       e.stopPropagation();
-
-                       $link = $( this );
-
-                       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.util.jsMessage( watchResponse.message, 'ajaxwatch' );
-
-                                       // Set link to opposite
-                                       updateWatchLink( $link, otherAction );
-
-                                       // Most common ID style
-                                       if ( $li.prop( 'id' ) === 'ca-' + otherAction || $li.prop( 'id' ) === 'ca-' + action ) {
-                                               $li.prop( 'id', 'ca-' + 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' ).removeProp( 'checked' );
-                                       }
-                               },
-                               // Error
-                               function () {
-                                       var cleanTitle, html, 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.wikiGetlink( title ),
-                                                       title: cleanTitle
-                                               }, cleanTitle
-                                       );
-                                       html = mw.msg( 'watcherrortext', link );
-
-                                       // Report to user about the error
-                                       mw.util.jsMessage( html, 'ajaxwatch' );
-
-                               }
-                       );
-               });
-       });
-
-}( jQuery, mediaWiki ) );
index 225093b..74306d5 100644 (file)
                 * @return {jqXHR}
                 */
                ajax: function( parameters, ajaxOptions ) {
+                       var token;
                        parameters = $.extend( {}, this.defaults.parameters, parameters );
                        ajaxOptions = $.extend( {}, this.defaults.ajax, ajaxOptions );
 
+                       // Ensure that token parameter is last (per [[mw:API:Edit#Token]]).
+                       if ( parameters.token ) {
+                               token = parameters.token;
+                               delete parameters.token;
+                       }
                        // Some deployed MediaWiki >= 1.17 forbid periods in URLs, due to an IE XSS bug
                        // So let's escape them here. See bug #28235
                        // This works because jQuery accepts data as a query string or as an Object
                        ajaxOptions.data = $.param( parameters ).replace( /\./g, '%2E' );
-
+                       // If we extracted a token parameter, add it back in.
+                       if ( token ) {
+                               ajaxOptions.data += '&token=' + encodeURIComponent( token );
+                       }
                        ajaxOptions.error = function( xhr, textStatus, exception ) {
                                ajaxOptions.err( 'http', {
                                        xhr: xhr,
index 7d9e114..d21df7e 100644 (file)
@@ -22,17 +22,3 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        return forms[5];
 };
 
-mediaWiki.language.digitTransformTable = {
-    '0': '٠', // &#x0660;
-    '1': '١', // &#x0661;
-    '2': '٢', // &#x0662;
-    '3': '٣', // &#x0663;
-    '4': '٤', // &#x0664;
-    '5': '٥', // &#x0665;
-    '6': '٦', // &#x0666;
-    '7': '٧', // &#x0667;
-    '8': '٨', // &#x0668;
-    '9': '٩', // &#x0669;
-    '.': '٫', // &#x066b; wrong table ?
-    ',': '٬' // &#x066c;
-};
diff --git a/resources/mediawiki.language/languages/nl.js b/resources/mediawiki.language/languages/nl.js
deleted file mode 100644 (file)
index a2b22f4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Dutch (Nederlands) language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : '.'
-};
diff --git a/resources/mediawiki.language/languages/pt-br.js b/resources/mediawiki.language/languages/pt-br.js
deleted file mode 100644 (file)
index 2457e24..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Brazilian Portugese (Portuguêsi do Brasil) language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : ' '
-};
diff --git a/resources/mediawiki.language/languages/pt.js b/resources/mediawiki.language/languages/pt.js
deleted file mode 100644 (file)
index 1b8fc72..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Portugese language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : ' '
-};
index 87a6a8f..78a6309 100644 (file)
@@ -26,7 +26,7 @@ var language = {
                        }
                        // Restore the count into a Number ( if it got converted earlier )
                        var count = mw.language.convertNumber( template.title, true );
-                       // Do convertPlural call 
+                       // Do convertPlural call
                        return mw.language.convertPlural( parseInt( count, 10 ), template.parameters );
                }
                // Could not process plural return first form or nothing
@@ -99,7 +99,7 @@ var language = {
         * Provides an alternative text depending on specified gender.
         * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
         * If second or third parameter are not specified, masculine is used.
-        * 
+        *
         * These details may be overriden per language.
         *
         * @param gender string male, female, or anything else for neutral.
@@ -132,7 +132,7 @@ var language = {
         * @return {String}
         */
        convertGrammar: function ( word, form ) {
-               var grammarForms = mw.language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
+               var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
                if ( grammarForms && grammarForms[form] ) {
                        return grammarForms[form][word] || word;
                }
@@ -140,7 +140,7 @@ var language = {
        },
 
        // Digit Transform Table, populated by language classes where applicable
-       'digitTransformTable': null
+       'digitTransformTable': mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' )
 };
 
 $.extend( mw.language, language );
diff --git a/resources/mediawiki.page/mediawiki.page.watch.ajax.js b/resources/mediawiki.page/mediawiki.page.watch.ajax.js
new file mode 100644 (file)
index 0000000..d3f8433
--- /dev/null
@@ -0,0 +1,174 @@
+/**
+ * Animate watch/unwatch links to use asynchronous API requests to
+ * watch pages, rather than navigating to a different URI.
+ */
+( function ( $, mw, undefined ) {
+       /**
+        * The name of the page to watch or unwatch.
+        */
+       var title = mw.config.get( 'wgRelevantPageName', mw.config.get( 'wgPageName' ) );
+
+       // Expose local methods
+       mw.page.watch = {
+               'updateWatchLink': updateWatchLink
+       };
+       /**
+        * Update the link text, link href attribute and (if applicable)
+        * "loading" class.
+        *
+        * @param $link {jQuery} Anchor tag of (un)watch link.
+        * @param action {String} One of 'watch', 'unwatch'.
+        * @param state {String} [optional] 'idle' or 'loading'. Default is 'idle'.
+        */
+       function updateWatchLink( $link, action, state ) {
+               var accesskeyTip, msgKey, $li, otherAction;
+
+               // message keys 'watch', 'watching', 'unwatch' or 'unwatching'.
+               msgKey = state === 'loading' ? action + 'ing' : action;
+               otherAction = action === 'watch' ? 'unwatch' : 'watch';
+               accesskeyTip = $link.attr( 'title' ).match( mw.util.tooltipAccessKeyRegexp );
+               $li = $link.closest( 'li' );
+               /**
+                * Trigger a 'watchpage' event for this List item.
+                * Announce the otherAction value as the first param.
+                * Used to monitor the state of watch link.
+                * TODO: Revise when system wide hooks are implemented
+                */
+               if( state === undefined ) {
+                       $li.trigger( 'watchpage.mw', otherAction );
+               }
+
+               $link
+                       .text( mw.msg( msgKey ) )
+                       .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
+                               ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
+                       )
+                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
+                                       title: title,
+                                       action: action
+                               })
+                       );
+
+               // Most common ID style
+               if ( $li.prop( 'id' ) === 'ca-' + otherAction ) {
+                       $li.prop( 'id', 'ca-' + action );
+               }
+
+               // Special case for vector icon
+               if ( $li.hasClass( 'icon' ) ) {
+                       if ( state === 'loading' ) {
+                               $link.addClass( 'loading' );
+                       } else {
+                               $link.removeClass( 'loading' );
+                       }
+               }
+       }
+
+       /**
+        * @todo This should be moved somewhere more accessible.
+        * @param url {String}
+        * @return {String} The extracted action, defaults to 'view'.
+        */
+       function mwUriGetAction( url ) {
+               var action, actionPaths, key, i, m, parts;
+
+               actionPaths = mw.config.get( 'wgActionPaths' );
+
+               // @todo: Does MediaWiki give action path or query param
+               // precedence ? If the former, move this to the bottom
+               action = mw.util.getParamValue( 'action', url );
+               if ( action !== null ) {
+                       return action;
+               }
+
+               for ( key in actionPaths ) {
+                       if ( actionPaths.hasOwnProperty( key ) ) {
+                               parts = actionPaths[key].split( '$1' );
+                               for ( i = 0; i < parts.length; i += 1 ) {
+                                       parts[i] = $.escapeRE( parts[i] );
+                               }
+                               m = new RegExp( parts.join( '(.+)' ) ).exec( url );
+                               if ( m && m[1] ) {
+                                       return key;
+                               }
+
+                       }
+               }
+
+               return 'view';
+       }
+
+       $( document ).ready( function () {
+               var $links = $( '.mw-watchlink a, a.mw-watchlink, ' +
+                       '#ca-watch a, #ca-unwatch a, #mw-unwatch-link1, ' +
+                       '#mw-unwatch-link2, #mw-watch-link2, #mw-watch-link1' );
+
+               // Allowing people to add inline animated links is a little scary
+               $links = $links.filter( ':not( #bodyContent *, #content * )' );
+
+               $links.click( function ( e ) {
+                       var action, api, $link;
+
+                       action = mwUriGetAction( this.href );
+
+                       if ( action !== 'watch' && action !== 'unwatch' ) {
+                               // Could not extract target action from link url,
+                               // let native browsing handle it further
+                               return true;
+                       }
+                       e.preventDefault();
+                       e.stopPropagation();
+
+                       $link = $( this );
+
+                       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.util.jsMessage( watchResponse.message, 'ajaxwatch' );
+
+                                       // 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' ).removeProp( 'checked' );
+                                       }
+                               },
+                               // Error
+                               function () {
+                                       var cleanTitle, html, 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.wikiGetlink( title ),
+                                                       title: cleanTitle
+                                               }, cleanTitle
+                                       );
+                                       html = mw.msg( 'watcherrortext', link );
+
+                                       // Report to user about the error
+                                       mw.util.jsMessage( html, 'ajaxwatch' );
+
+                               }
+                       );
+               });
+       });
+
+}( jQuery, mediaWiki ) );
index cdc9704..8a5421e 100644 (file)
@@ -57,3 +57,7 @@ table.mw-enhanced-rc td.mw-enhanced-rc-nested {
        /* @embed */
        background: url(images/arrow-expanded.png) no-repeat left center;
 }
+
+.mw-changeslist-line-watched .mw-title {
+       font-weight: bold;
+}
index e9df83c..0804825 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * JavaScript for Special:Preferences
  */
-jQuery( document ).ready( function( $ ) {
+jQuery( document ).ready( function ( $ ) {
 $( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
 var $preftoc = $('<ul id="preftoc"></ul>');
 var $preferences = $( '#preferences' )
@@ -15,8 +15,35 @@ var $fieldsets = $preferences.children( 'fieldset' )
 var $legends = $fieldsets.children( 'legend' )
        .addClass( 'mainLegend' );
 
+/**
+ * It uses document.getElementById for security reasons (html injections in
+ * jQuery()).
+ *
+ * @param String name: the name of a tab without the prefix ("mw-prefsection-")
+ * @param String mode: [optional] A hash will be set according to the current
+ * open section. Set mode 'noHash' to surpress this.
+ */
+function switchPrefTab( name, mode ) {
+       var $tab, scrollTop;
+       // Handle hash manually to prevent jumping,
+       // therefore save and restore scrollTop to prevent jumping.
+       scrollTop = $( window ).scrollTop();
+       if ( mode !== 'noHash' ) {
+               window.location.hash = '#mw-prefsection-' + name;
+       }
+       $( window ).scrollTop( scrollTop );
+
+       $preftoc.find( 'li' ).removeClass( 'selected' );
+       $tab = $( document.getElementById( 'preftab-' + name ) );
+       if ( $tab.length ) {
+               $tab.parent().addClass( 'selected' );
+               $preferences.children( 'fieldset' ).hide();
+               $( document.getElementById( 'mw-prefsection-' + name ) ).show();
+       }
+}
+
 // Populate the prefToc
-$legends.each( function( i, legend ) {
+$legends.each( function ( i, legend ) {
        var $legend = $(legend);
        if ( i === 0 ) {
                $legend.parent().show();
@@ -30,18 +57,6 @@ $legends.each( function( i, legend ) {
                text : $legend.text(),
                id : ident.replace( 'mw-prefsection', 'preftab' ),
                href : '#' + ident
-       }).click( function( e ) {
-               e.preventDefault();
-               // Handle hash manually to prevent jumping
-               // Therefore save and restore scrollTop to prevent jumping
-               var scrollTop = $(window).scrollTop();
-               window.location.hash = $(this).attr('href');
-               $(window).scrollTop(scrollTop);
-
-               $preftoc.find( 'li' ).removeClass( 'selected' );
-               $(this).parent().addClass( 'selected' );
-               $( '#preferences > fieldset' ).hide();
-               $( '#' + ident ).show();
        });
        $li.append( $a );
        $preftoc.append( $li );
@@ -50,11 +65,34 @@ $legends.each( function( i, legend ) {
 // If we've reloaded the page or followed an open-in-new-window,
 // make the selected tab visible.
 var hash = window.location.hash;
-if( hash.match( /^#mw-prefsection-[\w-]+/ ) ) {
-       var $tab = $( hash.replace( 'mw-prefsection', 'preftab' ) );
-       $tab.click();
+if ( hash.match( /^#mw-prefsection-[\w-]+/ ) ) {
+       switchPrefTab( hash.replace( '#mw-prefsection-' , '' ) );
 }
 
+// In browsers that support the onhashchange event we will not bind click
+// handlers and instead let the browser do the default behavior (clicking the
+// <a href="#.."> will naturally set the hash, handled by onhashchange.
+// But other things that change the hash will also be catched (e.g. using
+// the Back and Forward browser navigation).
+if ( 'onhashchange' in window ) {
+       $(window).on( 'hashchange' , function () {
+               var hash = window.location.hash;
+               if ( hash.match( /^#mw-prefsection-[\w-]+/ ) ) {
+                       switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
+               } else if ( hash === '' ) {
+                       switchPrefTab( 'personal', 'noHash' );
+               }
+       });
+// In older browsers we'll bind a click handler as fallback.
+// We must not have onhashchange *and* the click handlers, other wise
+// the click handler calls switchPrefTab() which sets the hash value,
+// which triggers onhashcange and calls switchPrefTab() again.
+} else {
+       $preftoc.on( 'click', 'li a', function ( e ) {
+               switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+               e.preventDefault();
+       });
+}
 
 /**
 * Timezone functions.
@@ -68,7 +106,7 @@ var $localtimeHolder = $( '#wpLocalTime' );
 var servertime = parseInt( $( 'input[name=wpServerTime]' ).val(), 10 );
 var minuteDiff = 0;
 
-var minutesToHours = function( min ) {
+var minutesToHours = function ( min ) {
        var tzHour = Math.floor( Math.abs( min ) / 60 );
        var tzMin = Math.abs( min ) % 60;
        var tzString = ( ( min >= 0 ) ? '' : '-' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
@@ -76,7 +114,7 @@ var minutesToHours = function( min ) {
        return tzString;
 };
 
-var hoursToMinutes = function( hour ) {
+var hoursToMinutes = function ( hour ) {
        var arr = hour.split( ':' );
        arr[0] = parseInt( arr[0], 10 );
 
@@ -99,7 +137,7 @@ var hoursToMinutes = function( hour ) {
        }
 };
 
-var updateTimezoneSelection = function() {
+var updateTimezoneSelection = function () {
        var type = $tzSelect.val();
        if ( type == 'guess' ) {
                // Get browser timezone & fill it in
@@ -130,8 +168,8 @@ var updateTimezoneSelection = function() {
 };
 
 if ( $tzSelect.length && $tzTextbox.length ) {
-       $tzSelect.change( function() { updateTimezoneSelection(); } );
-       $tzTextbox.blur( function() { updateTimezoneSelection(); } );
+       $tzSelect.change( function () { updateTimezoneSelection(); } );
+       $tzTextbox.blur( function () { updateTimezoneSelection(); } );
        updateTimezoneSelection();
 }
 } );
index 8865d04..04954e8 100644 (file)
@@ -1,21 +1,33 @@
 /*
  * JavaScript for Special:Search
  */
-jQuery( function( $ ) {
+( function( $, mw ) { $( function() {
 
 // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
 if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
        $( 'input[autofocus]:first' ).focus();
 }
 
-// Bind check all/none button
+// Create check all/none button
 var $checkboxes = $('#powersearch input[id^=mw-search-ns]');
-$('#mw-search-toggleall').click( function() {
-       $checkboxes.prop("checked", true);
-} );
-$('#mw-search-togglenone').click( function() {
-       $checkboxes.prop("checked", false);
-} );
+$('#mw-search-togglebox').append(
+       $('<label />')
+               .text(mw.msg('powersearch-togglelabel'))
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-toggleall')
+               .attr('value', mw.msg('powersearch-toggleall'))
+               .click( function() {
+                       $checkboxes.prop('checked', true);
+               } )
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-togglenone')
+               .attr('value', mw.msg('powersearch-togglenone'))
+               .click( function() {
+                       $checkboxes.prop('checked', false);
+               } )
+);
 
 // Change the header search links to what user entered
 var headerLinks = $('.search-types a');
@@ -34,4 +46,4 @@ $('#searchText, #powerSearchText').change(function() {
        });
 }).trigger('change');
 
-} );
+} ); } )( jQuery, mediaWiki );
index 2957674..b871ac7 100644 (file)
@@ -56,7 +56,7 @@
  *
  */
 
-( function( $, mw ) {
+( function ( mw, $ ) {
 
        /**
         * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
@@ -70,9 +70,8 @@
        function cat( pre, val, post, raw ) {
                if ( val === undefined || val === null || val === '' ) {
                        return '';
-               } else {
-                       return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
                }
+               return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
        }
 
        // Regular expressions to parse many common URIs.
@@ -98,7 +97,8 @@
         * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
         * so the library is still testable & purely functional.
         */
-       mw.UriRelative = function( documentLocation ) {
+       mw.UriRelative = function ( documentLocation ) {
+               var defaultUri;
 
                /**
                 * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
 
                        if ( uri !== undefined && uri !== null || uri !== '' ) {
                                if ( typeof uri === 'string' ) {
-                                       this._parse( uri, options );
+                                       this.parse( uri, options );
                                } else if ( typeof uri === 'object' ) {
-                                       var _this = this;
-                                       $.each( properties, function( i, property ) {
-                                               _this[property] = uri[property];
-                                       } );
-                                       if ( this.query === undefined ) {
+                                       // Copy data over from existing URI object
+                                       for ( var prop in uri ) {
+                                               // Only copy direct properties, not inherited ones
+                                               if ( uri.hasOwnProperty( prop ) ) {
+                                                       // Deep copy object properties
+                                                       if ( $.isArray( uri[prop] ) || $.isPlainObject( uri[prop] ) ) {
+                                                               this[prop] = $.extend( true, {}, uri[prop] );
+                                                       } else {
+                                                               this[prop] = uri[prop];
+                                                       }
+                                               }
+                                       }
+                                       if ( !this.query ) {
                                                this.query = {};
                                        }
                                }
                 * @param {String} string
                 * @return {String} encoded for URI
                 */
-               Uri.encode = function( s ) {
+               Uri.encode = function ( s ) {
                        return encodeURIComponent( s )
                                .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
                                .replace( /\)/g, '%29').replace( /\*/g, '%2A')
                 * @param {String} string encoded for URI
                 * @return {String} decoded string
                 */
-               Uri.decode = function( s ) {
+               Uri.decode = function ( s ) {
                        return decodeURIComponent( s.replace( /\+/g, '%20' ) );
                };
 
                         * @param {Object} options
                         * @return {Boolean} success
                         */
-                       _parse: function( str, options ) {
-                               var matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
-                               var uri = this;
-                               $.each( properties, function( i, property ) {
+                       parse: function ( str, options ) {
+                               var q,
+                                       uri = this,
+                                       matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+                               $.each( properties, function ( i, property ) {
                                        uri[ property ] = matches[ i+1 ];
                                } );
 
                                // uri.query starts out as the query string; we will parse it into key-val pairs then make
                                // that object the "query" property.
                                // we overwrite query in uri way to make cloning easier, it can use the same list of properties.
-                               var q = {};
+                               q = {};
                                // using replace to iterate over a string
                                if ( uri.query ) {
                                        uri.query.replace( /(?:^|&)([^&=]*)(?:(=)([^&]*))?/g, function ($0, $1, $2, $3) {
+                                               var k, v;
                                                if ( $1 ) {
-                                                       var k = Uri.decode( $1 );
-                                                       var v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
+                                                       k = Uri.decode( $1 );
+                                                       v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
 
                                                        // If overrideKeys, always (re)set top level value.
                                                        // If not overrideKeys but this key wasn't set before, then we set it as well.
                         * Returns user and password portion of a URI.
                         * @return {String}
                         */
-                       getUserInfo: function() {
+                       getUserInfo: function () {
                                return cat( '', this.user, cat( ':', this.password, '' ) );
                        },
 
                         * Gets host and port portion of a URI.
                         * @return {String}
                         */
-                       getHostPort: function() {
+                       getHostPort: function () {
                                return this.host + cat( ':', this.port, '' );
                        },
 
                         * In most real-world URLs, this is simply the hostname, but it is more general.
                         * @return {String}
                         */
-                       getAuthority: function() {
+                       getAuthority: function () {
                                return cat( '', this.getUserInfo(), '@' ) + this.getHostPort();
                        },
 
                         * Does not preserve the order of arguments passed into the URI. Does handle escaping.
                         * @return {String}
                         */
-                       getQueryString: function() {
+                       getQueryString: function () {
                                var args = [];
-                               $.each( this.query, function( key, val ) {
-                                       var k = Uri.encode( key );
-                                       var vals = val === null ? [ null ] : $.makeArray( val );
-                                       $.each( vals, function( i, v ) {
+                               $.each( this.query, function ( key, val ) {
+                                       var k = Uri.encode( key ),
+                                               vals = val === null ? [ null ] : $.makeArray( val );
+                                       $.each( vals, function ( i, v ) {
                                                args.push( k + ( v === null ? '' : '=' + Uri.encode( v ) ) );
                                        } );
                                } );
                         * Returns everything after the authority section of the URI
                         * @return {String}
                         */
-                       getRelativePath: function() {
+                       getRelativePath: function () {
                                return this.path + cat( '?', this.getQueryString(), '', true ) + cat( '#', this.fragment, '' );
                        },
 
                         * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
                         * @return {String} the URI string
                         */
-                       toString: function() {
+                       toString: function () {
                                return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
                        },
 
                         * Clone this URI
                         * @return {Object} new URI object with same properties
                         */
-                       clone: function() {
+                       clone: function () {
                                return new Uri( this );
                        },
 
                         * @param {Object} query parameters in key-val form to override or add
                         * @return {Object} this URI object
                         */
-                       extend: function( parameters ) {
+                       extend: function ( parameters ) {
                                $.extend( this.query, parameters );
                                return this;
                        }
                };
 
-               var defaultUri = new Uri( documentLocation );
+               defaultUri = new Uri( documentLocation );
 
                return Uri;     
        };
                mw.Uri = mw.UriRelative( document.location.href );
        }
 
-} )( jQuery, mediaWiki );
+}( mediaWiki, jQuery ) );
index 043ebce..f690a1d 100644 (file)
                return function( args ) {
                        var key = args[0];
                        var argsArray = $.isArray( args[1] ) ? args[1] : $.makeArray( args ).slice( 1 ); 
-                       var escapedArgsArray = $.map( argsArray, function( arg ) { 
-                               return typeof arg === 'string' ? mw.html.escape( arg ) : arg;
-                       } );
                        try {
-                               return parser.parse( key, escapedArgsArray );
+                               return parser.parse( key, argsArray );
                        } catch ( e ) {
-                               return $( '<span></span>' ).append( key + ': ' + e.message );
+                               return $( '<span>' ).append( key + ': ' + e.message );
                        }
                };
        }
                },
 
                /**
-                * Fetch the message string associated with a key, return parsed structure. Memoized.
+                * Fetch the message string associated with a key, return parsed structure. Memoized.
                 * Note that we pass '[' + key + ']' back for a missing message here. 
-                * @param {String} key
+                * @param {String} key
                 * @return {String|Array} string of '[key]' if message missing, simple string if possible, array of arrays if needs parsing
                 */
                getAst: function( key ) {
 
 
                        var regularLiteral = makeRegexParser( /^[^{}[\]$\\]/ );
-                       var regularLiteralWithoutBar = makeRegexParser(/^[^{}[\]$\\|]/);
-                       var regularLiteralWithoutSpace = makeRegexParser(/^[^{}[\]$\s]/);
+                       var regularLiteralWithoutBar = makeRegexParser(/^[^{}[\]$\\|]/);
+                       var regularLiteralWithoutSpace = makeRegexParser(/^[^{}[\]$\s]/);
 
                        var backslash = makeStringParser( "\\" );
                        var anyCharacter = makeRegexParser( /^./ );
                                return result;
                        }
 
+                       // this is the same as the above extlink, except that the url is being passed on as a parameter
+                       function extLinkParam() {
+                               var result = sequence( [
+                                       openExtlink,
+                                       dollar,
+                                       digits,
+                                       whitespace,
+                                       expression,
+                                       closeExtlink
+                               ] );
+                               if ( result === null ) {
+                                       return null;
+                               }
+                               return [ 'LINKPARAM', parseInt( result[2], 10 ) - 1, result[4] ];
+                       }
+
                        var openLink = makeStringParser( '[[' );
                        var closeLink = makeStringParser( ']]' );
 
                        }
 
                        var nonWhitespaceExpression = choice( [
-                               template,        
+                               template,
                                link,
+                               extLinkParam,
                                extlink,
                                replacement,
                                literalWithoutSpace
                        ] );
 
                        var paramExpression = choice( [
-                               template,        
+                               template,
                                link,
+                               extLinkParam,
                                extlink,
                                replacement,
                                literalWithoutBar
                        var expression = choice( [ 
                                template,
                                link,
+                               extLinkParam,
                                extlink,
                                replacement,
                                literal 
                },
 
                /**
-                * Return replacement of correct index, or string if unavailable.
+                * Return escaped replacement of correct index, or string if unavailable.
                 * Note that we expect the parsed parameter to be zero-based. i.e. $1 should have become [ 0 ].
                 * if the specified parameter is not found return the same string
                 * (e.g. "$99" -> parameter 98 -> not found -> return "$99" )
                 */
                replace: function( nodes, replacements ) {
                        var index = parseInt( nodes[0], 10 );
-                       return index < replacements.length ? replacements[index] : '$' + ( index + 1 ); 
+                       
+                       if ( index < replacements.length ) {
+                               if ( typeof arg === 'string' ) {
+                                       // replacement is a string, escape it
+                                       return mw.html.escape( replacements[index] );
+                               } else {
+                                       // replacement is no string, don't touch!
+                                       return replacements[index];
+                               }
+                       } else {
+                               // index not found, fallback to displaying variable
+                               return '$' + ( index + 1 );
+                       }
                },
 
                /** 
                        return $el;
                },
 
+               /**
+                * This is basically use a combination of replace + link (link with parameter
+                * as url), but we don't want to run the regular replace here-on: inserting a
+                * url as href-attribute of a link will automatically escape it already, so
+                * we don't want replace to (manually) escape it as well.
+                * TODO throw error if nodes.length > 1 ?
+                * @param {Array} of one element, integer, n >= 0
+                * @return {String} replacement
+                */
+               linkparam: function( nodes, replacements ) {
+                       var replacement,
+                               index = parseInt( nodes[0], 10 );
+                       if ( index < replacements.length) {
+                               replacement = replacements[index];
+                       } else {
+                               replacement = '$' + ( index + 1 );
+                       }
+                       return this.link( [ replacement, nodes[1] ] );
+               },
+
                /**
                 * Transform parsed structure into pluralization
                 * n.b. The first node may be a non-integer (for instance, a string representing an Arabic number).
index 66309bb..deb7795 100644 (file)
@@ -351,7 +351,7 @@ var mw = ( function ( $, undefined ) {
                         *              }
                         *      }
                         */
-                       var     registry = {},
+                       var registry = {},
                                /**
                                 * Mapping of sources, keyed by source-id, values are objects.
                                 * Format:
@@ -368,17 +368,9 @@ var mw = ( function ( $, undefined ) {
                                queue = [],
                                // List of callback functions waiting for modules to be ready to be called
                                jobs = [],
-                               // Flag indicating that document ready has occured
-                               ready = false,
                                // Selector cache for the marker element. Use getMarker() to get/use the marker!
                                $marker = null;
 
-                       /* Cache document ready status */
-
-                       $(document).ready( function () {
-                               ready = true;
-                       } );
-
                        /* Private methods */
 
                        function getMarker() {
@@ -626,17 +618,23 @@ var mw = ( function ( $, undefined ) {
 
                        /**
                         * Log a message to window.console, if possible. Useful to force logging of some
-                        * errors that are otherwise hard to detect, even if mw.log is not available. (I.e.,
-                        * this logs also if not in debug mode.)
+                        * errors that are otherwise hard to detect (I.e., this logs also in production mode).
+                        * Gets console references in each invocation, so that delayed debugging tools work
+                        * fine. No need for optimization here, which would only result in losing logs.
                         *
-                        * @param msg String text for the log entry
-                        * @param e   Error [optional] to also log.
+                        * @param msg String text for the log entry.
+                        * @param e Error [optional] to also log.
                         */
                        function log( msg, e ) {
-                               if ( window.console && typeof window.console.log === 'function' ) {
+                               var console = window.console;
+                               if ( console && console.log ) {
                                        console.log( msg );
-                                       if ( e ) {
-                                               console.log( e );
+                                       // If we have an exception object, log it through .error() to trigger
+                                       // proper stacktraces in browsers that support it. There are no (known)
+                                       // browsers that don't support .error(), that do support .log() and
+                                       // have useful exception handling through .log().
+                                       if ( e && console.error ) {
+                                               console.error( e );
                                        }
                                }
                        }
@@ -693,7 +691,7 @@ var mw = ( function ( $, undefined ) {
                                                                } catch ( ex ) {
                                                                        // A user-defined operation raised an exception. Swallow to protect
                                                                        // our state machine!
-                                                                       log( 'mw.loader::handlePending> Exception thrown by job.error()', ex );
+                                                                       log( 'Exception thrown by job.error()', ex );
                                                                }
                                                        }
                                                }
@@ -719,8 +717,12 @@ var mw = ( function ( $, undefined ) {
                         * @param callback Function: Optional callback which will be run when the script is done
                         */
                        function addScript( src, callback, async ) {
-                               var done = false, script, head;
-                               if ( ready || async ) {
+                               var script, head,
+                                       done = false;
+
+                               // Using isReady directly instead of storing it locally from
+                               // a $.fn.ready callback (bug 31895).
+                               if ( $.isReady || async ) {
                                        // jQuery's getScript method is NOT better than doing this the old-fashioned way
                                        // because jQuery will eval the script's code, and errors will not have sane
                                        // line numbers.
index 7f881b0..7a15e29 100644 (file)
@@ -25,7 +25,7 @@
                 * Generates a random user session ID (32 alpha-numeric characters).
                 *
                 * This information would potentially be stored in a cookie to identify a user during a
-                * session or series of sessions. It's uniqueness should not be depended on.
+                * session or series of sessions. Its uniqueness should not be depended on.
                 *
                 * @return String: Random set of 32 alpha-numeric characters
                 */
        // This is kind of ugly but we're stuck with this for b/c reasons
        mw.user = new User( mw.user.options, mw.user.tokens );
 
-})(jQuery);
\ No newline at end of file
+})(jQuery);
index 4c20fad..541c77a 100644 (file)
                        // Get last match, stop at hash
                        var     re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
                                m = re.exec( url );
-                       if ( m && m.length > 1 ) {
+                       if ( m ) {
                                // Beware that decodeURIComponent is not required to understand '+'
                                // by spec, as encodeURIComponent does not produce it.
                                return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
                                        return null;
                                }
                                // Select the first (most likely only) unordered list inside the portlet
-                               $ul = $portlet.find( 'ul' );
+                               $ul = $portlet.find( 'ul' ).eq( 0 );
 
                                // If it didn't have an unordered list yet, create it
                                if ( $ul.length === 0 ) {
+
+                                       $ul = $( '<ul>' );
+
                                        // If there's no <div> inside, append it to the portlet directly
                                        if ( $portlet.find( 'div:first' ).length === 0 ) {
-                                               $portlet.append( '<ul></ul>' );
+                                               $portlet.append( $ul );
                                        } else {
                                                // otherwise if there's a div (such as div.body or div.pBody)
                                                // append the <ul> to last (most likely only) div
-                                               $portlet.find( 'div' ).eq( -1 ).append( '<ul></ul>' );
+                                               $portlet.find( 'div' ).eq( -1 ).append( $ul );
                                        }
-                                       // Select the created element
-                                       $ul = $portlet.find( 'ul' ).eq( 0 );
                                }
                                // Just in case..
                                if ( $ul.length === 0 ) {
index 8416393..54dada3 100644 (file)
@@ -25,9 +25,6 @@
 if( !defined( 'MEDIAWIKI' ) )
        die( -1 );
 
-/** */
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
 /**
  * Inherit main code from SkinTemplate, set the CSS and template filter.
  * @ingroup Skins
index efcf1de..1656524 100644 (file)
@@ -25,8 +25,6 @@
 if( !defined( 'MEDIAWIKI' ) )
        die( -1 );
 
-require( dirname(__FILE__) . '/MonoBook.php' );
-
 /**
  * Inherit main code from SkinTemplate, set the CSS and template filter.
  * @todo document
index 6ac3f08..be07ba8 100644 (file)
@@ -103,7 +103,7 @@ class VectorTemplate extends BaseTemplate {
                $nav = $this->data['content_navigation'];
 
                if ( $wgVectorUseIconWatch ) {
-                       $mode = $this->getSkin()->getRelevantTitle()->userIsWatching() ? 'unwatch' : 'watch';
+                       $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() ) ? 'unwatch' : 'watch';
                        if ( isset( $nav['actions'][$mode] ) ) {
                                $nav['views'][$mode] = $nav['actions'][$mode];
                                $nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
index 08296a9..bc67a4b 100644 (file)
Binary files a/skins/common/images/Arr_.png and b/skins/common/images/Arr_.png differ
index 5fc956d..e524f6c 100644 (file)
Binary files a/skins/common/images/ar/button_bold.png and b/skins/common/images/ar/button_bold.png differ
index 4888e73..c9c63f6 100644 (file)
Binary files a/skins/common/images/ar/button_link.png and b/skins/common/images/ar/button_link.png differ
index 5283179..12b986b 100644 (file)
Binary files a/skins/common/images/ar/button_nowiki.png and b/skins/common/images/ar/button_nowiki.png differ
index d02aeee..5c10cfe 100644 (file)
Binary files a/skins/common/images/be-tarask/button_bold.png and b/skins/common/images/be-tarask/button_bold.png differ
index 26e0192..19e4ad4 100644 (file)
Binary files a/skins/common/images/button_hr.png and b/skins/common/images/button_hr.png differ
index 24e0095..ff7348a 100644 (file)
Binary files a/skins/common/images/button_sig.png and b/skins/common/images/button_sig.png differ
index 51951c6..53b6f92 100644 (file)
Binary files a/skins/common/images/button_template.png and b/skins/common/images/button_template.png differ
index cd262c4..990702e 100644 (file)
Binary files a/skins/common/images/closewindow.png and b/skins/common/images/closewindow.png differ
index 348e548..c96d9ff 100644 (file)
Binary files a/skins/common/images/closewindow19x19.png and b/skins/common/images/closewindow19x19.png differ
index 3c2666e..b958d22 100644 (file)
Binary files a/skins/common/images/cyrl/button_italic.png and b/skins/common/images/cyrl/button_italic.png differ
index 4008cb9..33f91ed 100644 (file)
Binary files a/skins/common/images/fa/button_italic.png and b/skins/common/images/fa/button_italic.png differ
index 5283179..12b986b 100644 (file)
Binary files a/skins/common/images/fa/button_nowiki.png and b/skins/common/images/fa/button_nowiki.png differ
index af869d2..cd657c3 100644 (file)
Binary files a/skins/common/images/nextredirectltr.png and b/skins/common/images/nextredirectltr.png differ
index c9bf355..b788f33 100644 (file)
Binary files a/skins/common/images/nextredirectrtl.png and b/skins/common/images/nextredirectrtl.png differ
index 96a2e9a..ba5718a 100644 (file)
Binary files a/skins/common/images/tooltip_icon.png and b/skins/common/images/tooltip_icon.png differ
index 3b3cf81..ee46a50 100644 (file)
Binary files a/skins/modern/document.png and b/skins/modern/document.png differ
index dfc8e62..72b8724 100644 (file)
Binary files a/skins/modern/footer-grad.png and b/skins/modern/footer-grad.png differ
index b8f5abb..4d3cb47 100644 (file)
Binary files a/skins/modern/news_icon.png and b/skins/modern/news_icon.png differ
index dff165e..e535c0c 100644 (file)
Binary files a/skins/modern/video.png and b/skins/modern/video.png differ
index 3b3cf81..ee46a50 100644 (file)
Binary files a/skins/monobook/document.png and b/skins/monobook/document.png differ
index b8f5abb..4d3cb47 100644 (file)
Binary files a/skins/monobook/news_icon.png and b/skins/monobook/news_icon.png differ
index 3286583..d86dbe0 100644 (file)
Binary files a/skins/monobook/video.png and b/skins/monobook/video.png differ
index f500c9e..7640bd1 100644 (file)
Binary files a/skins/vector/images/arrow-down-focus-icon.png and b/skins/vector/images/arrow-down-focus-icon.png differ
index 255c7d1..12e3b93 100644 (file)
Binary files a/skins/vector/images/arrow-down-icon.png and b/skins/vector/images/arrow-down-icon.png differ
index b32678f..5a1d2f4 100644 (file)
Binary files a/skins/vector/images/audio-icon.png and b/skins/vector/images/audio-icon.png differ
index 0cf02db..f9ca8cc 100644 (file)
Binary files a/skins/vector/images/border.png and b/skins/vector/images/border.png differ
index bd429c2..7bae98f 100644 (file)
Binary files a/skins/vector/images/bullet-icon.png and b/skins/vector/images/bullet-icon.png differ
index 9148bdb..b70efaa 100644 (file)
Binary files a/skins/vector/images/link-icon.png and b/skins/vector/images/link-icon.png differ
index 5fa9e82..a9ba8a7 100644 (file)
Binary files a/skins/vector/images/lock-icon.png and b/skins/vector/images/lock-icon.png differ
index 16002f7..9823d72 100644 (file)
Binary files a/skins/vector/images/mail-icon.png and b/skins/vector/images/mail-icon.png differ
index 4ca31da..b3ecd30 100644 (file)
Binary files a/skins/vector/images/page-base.png and b/skins/vector/images/page-base.png differ
index b93c027..1436cda 100644 (file)
Binary files a/skins/vector/images/page-fade.png and b/skins/vector/images/page-fade.png differ
index 3ef0b26..90c3918 100644 (file)
Binary files a/skins/vector/images/portal-break.png and b/skins/vector/images/portal-break.png differ
index 696135b..8e0082b 100644 (file)
Binary files a/skins/vector/images/preferences-base.png and b/skins/vector/images/preferences-base.png differ
index 7e25a05..e59f578 100644 (file)
Binary files a/skins/vector/images/preferences-break.png and b/skins/vector/images/preferences-break.png differ
index 7963b76..411a1aa 100644 (file)
Binary files a/skins/vector/images/preferences-edge.png and b/skins/vector/images/preferences-edge.png differ
index 3996fb4..638084d 100644 (file)
Binary files a/skins/vector/images/preferences-fade.png and b/skins/vector/images/preferences-fade.png differ
index 140feae..6cb7d28 100644 (file)
Binary files a/skins/vector/images/search-fade.png and b/skins/vector/images/search-fade.png differ
index d6eabd5..b8f772f 100644 (file)
Binary files a/skins/vector/images/tab-current-fade.png and b/skins/vector/images/tab-current-fade.png differ
index 1bedd33..57f9f8d 100644 (file)
Binary files a/skins/vector/images/user-icon.png and b/skins/vector/images/user-icon.png differ
index 1ec8456..e934a0f 100644 (file)
Binary files a/skins/vector/images/video-icon.png and b/skins/vector/images/video-icon.png differ
index 7633118..6d324e4 100644 (file)
@@ -134,6 +134,285 @@ Italics and bold
 
 !! end
 
+###
+### 2-quote opening sequence tests
+###
+!! test
+Italics and bold: 2-quote opening sequence: (2,2)
+!! input
+''foo''
+!! result
+<p><i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,3)
+!! input
+''foo'''
+!! result
+<p><i>foo'</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,4)
+!! input
+''foo''''
+!! result
+<p><i>foo''</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,5)
+!! input
+''foo'''''
+!! result
+<p><i>foo</i>
+</p>
+!!end
+
+
+###
+### 3-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,2)
+!! input
+'''foo''
+!! result
+<p>'<i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,3)
+!! input
+'''foo'''
+!! result
+<p><b>foo</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,4)
+!! input
+'''foo''''
+!! result
+<p><b>foo'</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,5)
+!! input
+'''foo'''''
+!! result
+<p><b>foo</b>
+</p>
+!!end
+
+
+###
+### 4-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,2)
+!! input
+''''foo''
+!! result
+<p>''<i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,3)
+!! input
+''''foo'''
+!! result
+<p>'<b>foo</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,4)
+!! input
+''''foo''''
+!! result
+<p>'<b>foo'</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,5)
+!! input
+''''foo'''''
+!! result
+<p>'<b>foo</b>
+</p>
+!!end
+
+
+###
+### 5-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,2)
+!! input
+'''''foo''
+!! result
+<p><b><i>foo</i></b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,3)
+!! input
+'''''foo'''
+!! result
+<p><i><b>foo</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,4)
+!! input
+'''''foo''''
+!! result
+<p><i><b>foo'</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,5)
+!! input
+'''''foo'''''
+!! result
+<p><i><b>foo</b></i>
+</p>
+!!end
+
+###
+### multiple quote sequences in a line
+###
+!! test
+Italics and bold: multiple quote sequences: (2,4,2)
+!! input
+''foo''''bar''
+!! result
+<p><i>foo'<b>bar</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (2,4,3)
+!! input
+''foo''''bar'''
+!! result
+<p><i>foo'<b>bar</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (2,4,4)
+!! input
+''foo''''bar''''
+!! result
+<p><i>foo'<b>bar'</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (3,4,2)
+!! input
+'''foo''''bar''
+!! result
+<p><b>foo'</b>bar
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (3,4,3)
+!! input
+'''foo''''bar'''
+!! result
+<p><b>foo'</b>bar
+</p>
+!!end
+
+###
+### other quote tests
+###
+!! test
+Italics and bold: other quote tests: (2,3,5)
+!! input
+''this is about '''foo's family'''''
+!! result
+<p><i>this is about <b>foo's family</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (2,(3,3),2)
+!! input
+''this is about '''foo's''' family''
+!! result
+<p><i>this is about <b>foo's</b> family</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (3,2,3,2)
+!! input
+'''this is about ''foo'''s family''
+!! result
+<p><b>this is about <i>foo</i></b><i>s family</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (3,2,3,3)
+!! input
+'''this is about ''foo'''s family'''
+!! result
+<p>'<i>this is about </i>foo<b>s family</b>
+</p>
+!!end
+
+
+
+!! test
+Italics and bold: other quote tests: (3,(2,2),3)
+!! input
+'''this is about ''foo's'' family'''
+!! result
+<p><b>this is about <i>foo's</i> family</b>
+</p>
+!!end
+
 ###
 ### <nowiki> test cases
 ###
@@ -652,6 +931,377 @@ Paragraph text
 </p>
 !! end
 
+!! test
+Definition Lists: No nesting: Multiple dd's
+!! input
+;x
+:a
+:b
+!! result
+<dl><dt>x
+</dt><dd>a
+</dd><dd>b
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Regular
+!! input
+:i1
+::i2
+:::i3
+!! result
+<dl><dd>i1
+<dl><dd>i2
+<dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Missing 1st level
+!! input
+::i2
+:::i3
+!! result
+<dl><dd><dl><dd>i2
+<dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Multi-level indent
+!! input
+:::i3
+!! result
+<dl><dd><dl><dd><dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+## The PHP parser treats : items (dd) without a corresponding ; item (dt)
+## as an empty dt item.  It also ignores all but the last ";" when followed
+## by ":" later on.  So, ";" are not ignored in ";;;t3" but are ignored  in
+## ";;;t3 :d1".  So, PHP parser behavior is a little inconsistent wrt multiple
+## ";"s.
+##
+## Ex: ";;t2 ::d2" is transformed into:
+##
+## <dl>
+##   <dt>t2 </dt>
+##   <dd>
+##     <dl>
+##       <dt></dt>
+##       <dd>d2</dd>
+##     </dl>
+##   </dd>
+## </dl>
+##
+## But, Parsoid treats "; :" as a tight atomic unit and excess ":" as plain text
+## So, the same wikitext above (;;t2 ::d2) is transformed into:
+##
+## <dl>
+##   <dt>
+##     <dl>
+##       <dt>t2 </dt>
+##       <dd>:d2</dd>
+##     </dl>
+##    </dt>
+## </dl>
+##
+## All Parsoid only definition list tests have this difference.
+##
+## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569 
+## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
+
+!! test
+Definition Lists: Nesting: Multi-level (Parsoid only)
+!! options
+disabled
+!! input
+;t1 :d1
+;;t2 ::d2
+;;;t3 :::d3
+!! result
+<dl>
+  <dt>t1 </dt>
+  <dd>d1</dd>
+  <dt>
+    <dl>
+      <dt>t2 </dt>
+      <dd>:d2</dd>
+      <dt>
+        <dl>
+          <dt>t3 </dt>
+          <dd>::d3</dd>
+        </dl>
+      </dt>
+    </dl>
+  </dt>
+</dl>
+
+
+!! end
+
+
+!! test
+Definition Lists: Nesting: Test 2 (Parsoid only)
+!! options
+disabled
+!! input
+;t1
+::d2
+!! result
+<dl>
+  <dt>t1</dt>
+  <dd>
+    <dl>
+      <dd>d2</dd>
+    </dl>
+  </dd>
+</dl>
+
+!! end
+
+
+!! test
+Definition Lists: Nesting: Test 3 (Parsoid only)
+!! options
+disabled
+!! input
+:;t1
+::::d2
+!! result
+<dl>
+  <dd>
+    <dl>
+      <dt>t1</dt>
+      <dd>
+        <dl>
+          <dd>
+            <dl>
+              <dd>d2</dd>
+            </dl>
+          </dd>
+        </dl>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+!! end
+
+
+!! test
+Definition Lists: Nesting: Test 4
+!! input
+::;t3
+:::d3
+!! result
+<dl><dd><dl><dd><dl><dt>t3
+</dt><dd>d3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 1
+!! input
+:;* foo
+::* bar
+:; baz
+!! result
+<dl><dd><dl><dt><ul><li> foo
+</li><li> bar
+</li></ul>
+</dt></dl>
+<dl><dt> baz
+</dt></dl>
+</dd></dl>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 2
+!! input
+*: d1
+*: d2
+!! result
+<ul><li><dl><dd> d1
+</dd><dd> d2
+</dd></dl>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 3
+!! input
+*::: d1
+*::: d2
+!! result
+<ul><li><dl><dd><dl><dd><dl><dd> d1
+</dd><dd> d2
+</dd></dl>
+</dd></dl>
+</dd></dl>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 4
+!! input
+*;d1 :d2
+*;d3 :d4
+!! result
+<ul><li><dl><dt>d1&#160;</dt><dd>d2
+</dd><dt>d3&#160;</dt><dd>d4
+</dd></dl>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 5
+!! input
+*:d1
+*:: d2
+!! result
+<ul><li><dl><dd>d1
+<dl><dd> d2
+</dd></dl>
+</dd></dl>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 6
+!! input
+#*:d1
+#*::: d3
+!! result
+<ol><li><ul><li><dl><dd>d1
+<dl><dd><dl><dd> d3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+</li></ul>
+</li></ol>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 7
+!! input
+:* d1
+:* d2
+!! result
+<dl><dd><ul><li> d1
+</li><li> d2
+</li></ul>
+</dd></dl>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 8
+!! input
+:* d1
+::* d2
+!! result
+<dl><dd><ul><li> d1
+</li></ul>
+<dl><dd><ul><li> d2
+</li></ul>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 9
+!! input
+*;foo :bar
+!! result
+<ul><li><dl><dt>foo&#160;</dt><dd>bar
+</dd></dl>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 10
+!! input
+*#;foo :bar
+!! result
+<ul><li><ol><li><dl><dt>foo&#160;</dt><dd>bar
+</dd></dl>
+</li></ol>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Mixed Lists: Test 11
+!! input
+*#*#;*;;foo :bar
+*#*#;boo :baz
+!! result
+<ul><li><ol><li><ul><li><ol><li><dl><dt>foo&#160;</dt><dd><ul><li><dl><dt><dl><dt>bar
+</dt></dl>
+</dd></dl>
+</li></ul>
+</dd></dl>
+<dl><dt>boo&#160;</dt><dd>baz
+</dd></dl>
+</li></ol>
+</li></ul>
+</li></ol>
+</li></ul>
+
+!! end
+
+
+!! test
+Definition Lists: Weird Ones: Test 1
+!! input
+*#;*::;; foo : bar (who uses this?)
+!! result
+<ul><li><ol><li><dl><dt> foo&#160;</dt><dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)
+</dt></dl>
+</dd></dl>
+</dd></dl>
+</dd></dl>
+</li></ul>
+</dd></dl>
+</li></ol>
+</li></ul>
+
+!! end
+
 ###
 ### External links
 ###
@@ -1269,6 +1919,8 @@ Normal text.
 '''This year''''s election ''should'' beat '''last year''''s.
 
 ''Tom'''s car is bigger than ''Susan'''s.
+
+Plain ''italic'''s plain
 !! result
 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
@@ -1279,6 +1931,7 @@ Normal text.
 </p><p>Normal text.
 </p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
+</p><p>Plain <i>italic'</i>s plain
 </p>
 !! end
 
@@ -2063,20 +2716,58 @@ Failing to transform badly formed HTML into correct XHTML
 </p>
 !!end
 
-!! test 
+!! test
 Horizontal ruler (should it add that extra space?)
-!! input 
+!! input
 <hr>
 <hr >
 foo <hr
 > bar
-!! result 
+!! result
 <hr />
 <hr />
 foo <hr /> bar
 
 !! end
 
+!! test
+Horizontal ruler -- 4+ dashes render hr
+!! input
+----
+!! result
+<hr />
+
+!! end
+
+!! test
+Horizontal ruler -- eats additional dashes on the same line
+!! input
+---------
+!! result
+<hr />
+
+!! end
+
+!! test
+Horizontal ruler -- does not collaps dashes on consecutive lines
+!! input
+----
+----
+!! result
+<hr />
+<hr />
+
+!! end
+
+!! test
+Horizontal ruler -- <4 dashes render as plain text
+!! input
+---
+!! result
+<p>---
+</p>
+!! end
+
 ###
 ### Block-level elements
 ###
@@ -2237,6 +2928,36 @@ Nested lists 6 (both elements empty)
 
 !! end
 
+!! test
+Nested lists 7 (skip initial nesting levels)
+!! input
+*** foo
+!! result
+<ul><li><ul><li><ul><li> foo
+</li></ul>
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 8 (multiple nesting transitions)
+!! input
+* foo
+*** bar
+** baz
+* boo
+!! result
+<ul><li> foo
+<ul><li><ul><li> bar
+</li></ul>
+</li><li> baz
+</li></ul>
+</li><li> boo
+</li></ul>
+
+!! end
+
 
 !! test
 List items are not parsed correctly following a <pre> block (bug 785)
@@ -3634,15 +4355,15 @@ pst
 [[Bar:Article(context)|]]
 [[:Bar:Article(context)|]]
 [[|Article(context)]]
-[[Bar:X (Y) Z|]]
-[[:Bar:X (Y) Z|]]
+[[Bar:X(Y)Z|]]
+[[:Bar:X(Y)Z|]]
 !! result
 [[Article(context)|Article]]
 [[Bar:Article(context)|Article]]
 [[:Bar:Article(context)|Article]]
 [[Article(context)]]
-[[Bar:X (Y) Z|X (Y) Z]]
-[[:Bar:X (Y) Z|X (Y) Z]]
+[[Bar:X(Y)Z|X(Y)Z]]
+[[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
 !! test
@@ -3685,6 +4406,26 @@ pst
 [[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
+!! test
+pre-save transform: context links ("pipe trick") with commas (bug 21660)
+!! options
+pst
+!! input
+[[Article (context), context|]]
+[[Article (context),context|]]
+[[Bar:Article (context), context|]]
+[[Bar:Article (context),context|]]
+[[:Bar:Article (context), context|]]
+[[:Bar:Article (context),context|]]
+!! result
+[[Article (context), context|Article]]
+[[Article (context),context|Article]]
+[[Bar:Article (context), context|Article]]
+[[Bar:Article (context),context|Article]]
+[[:Bar:Article (context), context|Article]]
+[[:Bar:Article (context),context|Article]]
+!! end
+
 !! test
 pre-save transform: trim trailing empty lines
 !! options
@@ -9481,10 +10222,10 @@ abc
 </p>
 !! end
 
+
 TODO:
 more images
 more tables
-math
 character entities
 and much more
 Try for 100% code coverage
index da36ffd..3b05d67 100644 (file)
@@ -437,6 +437,36 @@ class MWNamespaceTest extends MediaWikiTestCase {
                $wgContentNamespaces = $saved;
        }
 
+       /**
+        */
+       public function testGetSubjectNamespaces() {
+               $subjectsNS = MWNamespace::getSubjectNamespaces();
+               $this->assertContains(    NS_MAIN, $subjectsNS,
+                       "Talk namespaces should have NS_MAIN" );
+               $this->assertNotContains( NS_TALK, $subjectsNS,
+                       "Talk namespaces should have NS_TALK" );
+
+               $this->assertNotContains( NS_MEDIA, $subjectsNS,
+                       "Talk namespaces should not have NS_MEDIA" );
+               $this->assertNotContains( NS_SPECIAL, $subjectsNS,
+                       "Talk namespaces should not have NS_SPECIAL" );
+       }
+
+       /**
+        */
+       public function testGetTalkNamespaces() {
+               $talkNS = MWNamespace::getTalkNamespaces();
+               $this->assertContains(    NS_TALK, $talkNS,
+                       "Subject namespaces should have NS_TALK" );
+               $this->assertNotContains( NS_MAIN, $talkNS,
+                       "Subject namespaces should not have NS_MAIN" );
+
+               $this->assertNotContains( NS_MEDIA, $talkNS,
+                       "Subject namespaces should not have NS_MEDIA" );
+               $this->assertNotContains( NS_SPECIAL, $talkNS,
+                       "Subject namespaces should not have NS_SPECIAL" );
+       }
+
        /**
         * Some namespaces are always capitalized per code definition
         * in MWNamespace::$alwaysCapitalizedNamespaces
index 77a371d..59ba0a0 100644 (file)
@@ -47,7 +47,7 @@ class TestSample extends MediaWikiLangTestCase {
                        array( 'Text', null, 'Text' ),
                        array( 'text', null, 'Text' ),
                        array( 'Text', NS_USER, 'User:Text' ),
-                       array( 'Photo.jpg', NS_IMAGE, 'File:Photo.jpg' )
+                       array( 'Photo.jpg', NS_FILE, 'File:Photo.jpg' )
                );
        }
 
index b76aa5c..c929989 100644 (file)
@@ -110,21 +110,37 @@ class SanitizerTest extends MediaWikiTestCase {
                $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=&foobar;' ), array( 'foo' => '&foobar;' ), 'Entity-like items are accepted' );
        }
 
-       function testDeprecatedAttributes() {
-               $GLOBALS['wgCleanupPresentationalAttributes'] = true;
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'clear="left"', 'br' ), ' style="clear: left;"', 'Deprecated attributes are converted to styles when enabled.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'clear="all"', 'br' ), ' style="clear: both;"', 'clear=all is converted to clear: both; not clear: all;' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'CLEAR="ALL"', 'br' ), ' style="clear: both;"', 'clear=ALL is not treated differently from clear=all' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'width="100"', 'td' ), ' style="width: 100px;"', 'Numeric sizes use pixels instead of numbers.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'width="100%"', 'td' ), ' style="width: 100%;"', 'Units are allowed in sizes.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'WIDTH="100%"', 'td' ), ' style="width: 100%;"', 'Uppercase WIDTH is treated as lowercase width.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'WiDTh="100%"', 'td' ), ' style="width: 100%;"', 'Mixed case does not break WiDTh.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'nowrap="true"', 'td' ), ' style="white-space: nowrap;"', 'nowrap attribute is output as white-space: nowrap; not something else.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'nowrap=""', 'td' ), ' style="white-space: nowrap;"', 'nowrap="" is considered true, not false' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'NOWRAP="true"', 'td' ), ' style="white-space: nowrap;"', 'nowrap attribute works when uppercase.' );
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'NoWrAp="true"', 'td' ), ' style="white-space: nowrap;"', 'nowrap attribute works when mixed-case.' );
+       function testDeprecatedAttributesDisabled() {
                $GLOBALS['wgCleanupPresentationalAttributes'] = false;
-               $this->assertEquals( Sanitizer::fixTagAttributes( 'clear="left"', 'br' ), ' clear="left"', 'Deprecated attributes are not converted to styles when enabled.' );
+               $this->assertEquals( ' clear="left"', Sanitizer::fixTagAttributes( 'clear="left"', 'br' ), 'Deprecated attributes are not converted to styles when enabled.' );
+       }
+
+       /**
+        * @dataProvider provideDeprecatedAttributes
+        */
+       function testDeprecatedAttributes( $input, $tag, $expected, $message = null ) {
+               $GLOBALS['wgCleanupPresentationalAttributes'] = true;
+               $this->assertEquals( $expected, Sanitizer::fixTagAttributes( $input, $tag ), $message );
+       }
+
+       function provideDeprecatedAttributes() {
+               return array(
+                       array( 'clear="left"', 'br', ' style="clear: left;"', 'Deprecated attributes are converted to styles when enabled.' ),
+                       array( 'clear="all"', 'br', ' style="clear: both;"', 'clear=all is converted to clear: both; not clear: all;' ),
+                       array( 'CLEAR="ALL"', 'br', ' style="clear: both;"', 'clear=ALL is not treated differently from clear=all' ),
+                       array( 'width="100"', 'td', ' style="width: 100px;"', 'Numeric sizes use pixels instead of numbers.' ),
+                       array( 'width="100%"', 'td', ' style="width: 100%;"', 'Units are allowed in sizes.' ),
+                       array( 'WIDTH="100%"', 'td', ' style="width: 100%;"', 'Uppercase WIDTH is treated as lowercase width.' ),
+                       array( 'WiDTh="100%"', 'td', ' style="width: 100%;"', 'Mixed case does not break WiDTh.' ),
+                       array( 'nowrap="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute is output as white-space: nowrap; not something else.' ),
+                       array( 'nowrap=""', 'td', ' style="white-space: nowrap;"', 'nowrap="" is considered true, not false' ),
+                       array( 'NOWRAP="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute works when uppercase.' ),
+                       array( 'NoWrAp="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute works when mixed-case.' ),
+                       array( 'align="right"', 'td', ' style="text-align: right;"', 'align on table cells gets converted to text-align' ),
+                       array( 'align="center"', 'td', ' style="text-align: center;"', 'align on table cells gets converted to text-align' ),
+                       array( 'align="left"', 'div', ' style="float: left;"', 'align=(left|right) on non-cells gets converted to float' ),
+                       array( 'align="center"', 'div', ' style="margin-left: auto; margin-right: auto;"', 'align="center" on non-cells' ),
+               );
        }
 
        /**
index c8606cc..b72a5cd 100644 (file)
@@ -769,6 +769,7 @@ more stuff
         * @dataProvider dataPreSaveTransform
         */
        public function testPreSaveTransform( $text, $expected ) {
+               $this->hideDeprecated( 'WikiPage::preSaveTransform' );
                $user = new User();
                $user->setName("127.0.0.1");
 
index 1f40b5a..5dfceee 100644 (file)
@@ -56,7 +56,7 @@ class ApiBlockTest extends ApiTestCase {
                        'action' => 'block',
                        'user' => 'UTApiBlockee',
                        'reason' => 'Some reason',
-                       'token' => $pageinfo['blocktoken'] ), $data, false, self::$users['sysop']->user );
+                       'token' => $pageinfo['blocktoken'] ), null, false, self::$users['sysop']->user );
 
                $block = Block::newFromTarget('UTApiBlockee');
 
index 8801391..f81bb6d 100644 (file)
@@ -43,15 +43,31 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
 
        }
 
-       protected function doApiRequest( $params, $session = null, $appendModule = false, $user = null ) {
+       protected function doApiRequest( Array $params, Array $session = null, $appendModule = false, User $user = null ) {
+               global $wgRequest, $wgUser;
+
                if ( is_null( $session ) ) {
-                       $session = array();
+                       # re-use existing global session by default
+                       $session = $wgRequest->getSessionArray();
+               }
+
+               # set up global environment
+               if ( $user ) {
+                       $wgUser = $user;
                }
 
-               $context = $this->apiContext->newTestContext( $params, $session, $user );
+               $wgRequest = new FauxRequest( $params, true, $session );
+               RequestContext::getMain()->setRequest( $wgRequest );
+
+               # set up local environment
+               $context = $this->apiContext->newTestContext( $wgRequest, $wgUser );
+
                $module = new ApiMain( $context, true );
+
+               # run it!
                $module->execute();
 
+               # construct result
                $results = array(
                        $module->getResultData(),
                        $context->getRequest(),
@@ -68,11 +84,11 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         * Add an edit token to the API request
         * This is cheating a bit -- we grab a token in the correct format and then add it to the pseudo-session and to the
         * request, without actually requesting a "real" edit token
-        * @param $params: key-value API params
-        * @param $session: session array
-        * @param $user String|null A User object for the context 
+        * @param $params Array: key-value API params
+        * @param $session Array: session array
+        * @param $user User|null A User object for the context
         */
-       protected function doApiRequestWithToken( $params, $session, $user = null ) {
+       protected function doApiRequestWithToken( Array $params, Array $session, User $user = null ) {
                if ( $session['wsToken'] ) {
                        // add edit token to fake session
                        $session['wsEditToken'] = $session['wsToken'];
@@ -97,17 +113,17 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                        'lgtoken' => $token,
                        'lgname' => self::$users['sysop']->username,
                        'lgpassword' => self::$users['sysop']->password
-                       ), $data );
+                       ), $data[2] );
 
                return $data;
        }
 
-       protected function getTokenList( $user ) {
+       protected function getTokenList( $user, $session = null ) {
                $data = $this->doApiRequest( array(
                        'action' => 'query',
                        'titles' => 'Main Page',
                        'intoken' => 'edit|delete|protect|move|block|unblock',
-                       'prop' => 'info' ), false, $user->user );
+                       'prop' => 'info' ), $session, false, $user->user );
                return $data;
        }
 }
@@ -154,14 +170,13 @@ class ApiTestContext extends RequestContext {
        /**
         * Returns a DerivativeContext with the request variables in place
         *
-        * @param $params Array key-value API params
-        * @param $session Array session data
+        * @param $request WebRequest request object including parameters and session
         * @param $user User or null
         * @return DerivativeContext
         */
-       public function newTestContext( $params, $session, $user = null ) {
+       public function newTestContext( WebRequest $request, User $user = null ) {
                $context = new DerivativeContext( $this );
-               $context->setRequest( new FauxRequest( $params, true, $session ) );
+               $context->setRequest( $request );
                if ( $user !== null ) {
                        $context->setUser( $user );
                }
index f3a14e5..b22eccd 100644 (file)
@@ -10,10 +10,14 @@ $IP = dirname( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) );
 
 // Start up MediaWiki in command-line mode
 require_once( "$IP/maintenance/Maintenance.php" );
-require("RandomImageGenerator.php");
+require(  dirname( __FILE__ ) . "/RandomImageGenerator.php" );
 
 class GenerateRandomImages extends Maintenance {
 
+       public function getDbType() {
+               return Maintenance::DB_NONE;
+       }
+
        public function execute() {
 
                $getOptSpec = array(
index 9a275be..9dcaf2b 100644 (file)
@@ -79,6 +79,53 @@ abstract class ORMRowTest extends \MediaWikiTestCase {
                return new $class( $this->getTableInstance(), $data, $loadDefaults );
        }
 
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockValues() {
+               return array(
+                       'id' => 1,
+                       'str' => 'foobar4645645',
+                       'int' => 42,
+                       'float' => 4.2,
+                       'bool' => true,
+                       'array' => array( 42, 'foobar' ),
+                       'blob' => new stdClass()
+               );
+       }
+
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockFields() {
+               $mockValues = $this->getMockValues();
+               $mockFields = array();
+
+               foreach ( $this->getTableInstance()->getFields() as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $mockFields[$name] = $mockValues[$type];
+                       }
+               }
+
+               return $mockFields;
+       }
+
+       /**
+        * @since 1.20
+        * @return array of IORMRow
+        */
+       public function instanceProvider() {
+               $instances = array();
+
+               foreach ( $this->constructorTestProvider() as $arguments ) {
+                       $instances[] = array( call_user_func_array( array( $this, 'getRowInstance' ), $arguments ) );
+               }
+
+               return $instances;
+       }
+
        /**
         * @dataProvider constructorTestProvider
         */
@@ -129,6 +176,59 @@ abstract class ORMRowTest extends \MediaWikiTestCase {
                $this->verifyFields( $item, $data );
        }
 
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetField( IORMRow $item ) {
+               foreach ( $this->getMockFields() as $name => $value ) {
+                       $item->setField( $name, $value );
+                       $this->assertEquals( $value, $item->getField( $name ) );
+               }
+       }
+
+       /**
+        * @since 1.20
+        * @param array $expected
+        * @param IORMRow $item
+        */
+       protected function assertFieldValues( array $expected, IORMRow $item ) {
+               foreach ( $expected as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $this->assertEquals( $expected[$name], $item->getField( $name ) );
+                       }
+               }
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetFields( IORMRow $item ) {
+               $originalValues = $item->getFields();
+
+               $item->setFields( array(), false );
+
+               foreach ( $item->getTable()->getFields() as $name => $type ) {
+                       $originalHas = array_key_exists( $name, $originalValues );
+                       $newHas = $item->hasField( $name );
+
+                       $this->assertEquals( $originalHas, $newHas );
+
+                       if ( $originalHas && $newHas ) {
+                               $this->assertEquals( $originalValues[$name], $item->getField( $name ) );
+                       }
+               }
+
+               $mockFields = $this->getMockFields();
+
+               $item->setFields( $mockFields, false );
+
+               $this->assertFieldValues( $originalValues, $item );
+
+               $item->setFields( $mockFields, true );
+
+               $this->assertFieldValues( $mockFields, $item );
+       }
+
        // TODO: test all of the methods!
 
 }
\ No newline at end of file
index 710ad83..61507f5 100644 (file)
@@ -26,6 +26,9 @@ class FileBackendTest extends MediaWikiTestCase {
                                        }
                                }
                                $useConfig['name'] = 'localtesting'; // swap name
+                               $useConfig['shardViaHashLevels'] = array( // test sharding
+                                       'unittest-cont1' => array( 'levels' => 1, 'base' => 16, 'repeat' => 1 )
+                               );
                                $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
                                $this->singleBackend = self::$backendToUse;
@@ -246,7 +249,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases = array();
 
                $tmpName = TempFSFile::factory( "unittests_", 'txt' )->getPath();
-               $toPath = $this->baseStorePath() . '/unittest-cont1/fun/obj1.txt';
+               $toPath = $this->baseStorePath() . '/unittest-cont1/e/fun/obj1.txt';
                $op = array( 'op' => 'store', 'src' => $tmpName, 'dst' => $toPath );
                $cases[] = array(
                        $op, // operation
@@ -332,8 +335,8 @@ class FileBackendTest extends MediaWikiTestCase {
        public function provider_testCopy() {
                $cases = array();
 
-               $source = $this->baseStorePath() . '/unittest-cont1/file.txt';
-               $dest = $this->baseStorePath() . '/unittest-cont2/fileMoved.txt';
+               $source = $this->baseStorePath() . '/unittest-cont1/e/file.txt';
+               $dest = $this->baseStorePath() . '/unittest-cont2/a/fileMoved.txt';
 
                $op = array( 'op' => 'copy', 'src' => $source, 'dst' => $dest );
                $cases[] = array(
@@ -421,8 +424,8 @@ class FileBackendTest extends MediaWikiTestCase {
        public function provider_testMove() {
                $cases = array();
 
-               $source = $this->baseStorePath() . '/unittest-cont1/file.txt';
-               $dest = $this->baseStorePath() . '/unittest-cont2/fileMoved.txt';
+               $source = $this->baseStorePath() . '/unittest-cont1/e/file.txt';
+               $dest = $this->baseStorePath() . '/unittest-cont2/a/fileMoved.txt';
 
                $op = array( 'op' => 'move', 'src' => $source, 'dst' => $dest );
                $cases[] = array(
@@ -506,7 +509,7 @@ class FileBackendTest extends MediaWikiTestCase {
        public function provider_testDelete() {
                $cases = array();
 
-               $source = $this->baseStorePath() . '/unittest-cont1/myfacefile.txt';
+               $source = $this->baseStorePath() . '/unittest-cont1/e/myfacefile.txt';
 
                $op = array( 'op' => 'delete', 'src' => $source );
                $cases[] = array(
@@ -600,7 +603,7 @@ class FileBackendTest extends MediaWikiTestCase {
        public function provider_testCreate() {
                $cases = array();
 
-               $dest = $this->baseStorePath() . '/unittest-cont2/myspacefile.txt';
+               $dest = $this->baseStorePath() . '/unittest-cont2/a/myspacefile.txt';
 
                $op = array( 'op' => 'create', 'content' => 'test test testing', 'dst' => $dest );
                $cases[] = array(
@@ -666,9 +669,9 @@ class FileBackendTest extends MediaWikiTestCase {
 
                $base = $this->baseStorePath();
                $files = array(
-                       "$base/unittest-cont1/fileA.a",
-                       "$base/unittest-cont1/fileB.a",
-                       "$base/unittest-cont1/fileC.a"
+                       "$base/unittest-cont1/e/fileA.a",
+                       "$base/unittest-cont1/e/fileB.a",
+                       "$base/unittest-cont1/e/fileC.a"
                );
                $ops = array();
                $purgeOps = array();
@@ -786,16 +789,16 @@ class FileBackendTest extends MediaWikiTestCase {
                $rand = mt_rand( 0, 2000000000 ) . time();
                $dest = wfTempDir() . "/randomfile!$rand.txt";
                $srcs = array(
-                       $this->baseStorePath() . '/unittest-cont1/file1.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file2.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file3.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file4.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file5.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file6.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file7.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file8.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file9.txt',
-                       $this->baseStorePath() . '/unittest-cont1/file10.txt'
+                       $this->baseStorePath() . '/unittest-cont1/e/file1.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file2.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file3.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file4.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file5.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file6.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file7.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file8.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file9.txt',
+                       $this->baseStorePath() . '/unittest-cont1/e/file10.txt'
                );
                $content = array(
                        'egfage',
@@ -884,9 +887,9 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases = array();
 
                $base = $this->baseStorePath();
-               $cases[] = array( "$base/unittest-cont1/b/z/some_file.txt", "some file contents", true );
-               $cases[] = array( "$base/unittest-cont1/b/some-other_file.txt", "", true );
-               $cases[] = array( "$base/unittest-cont1/b/some-diff_file.txt", null, false );
+               $cases[] = array( "$base/unittest-cont1/e/b/z/some_file.txt", "some file contents", true );
+               $cases[] = array( "$base/unittest-cont1/e/b/some-other_file.txt", "", true );
+               $cases[] = array( "$base/unittest-cont1/e/b/some-diff_file.txt", null, false );
 
                return $cases;
        }
@@ -930,8 +933,8 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases = array();
 
                $base = $this->baseStorePath();
-               $cases[] = array( "$base/unittest-cont1/b/z/some_file.txt", "some file contents" );
-               $cases[] = array( "$base/unittest-cont1/b/some-other_file.txt", "more file contents" );
+               $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", "more file contents" );
 
                return $cases;
        }
@@ -973,8 +976,8 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases = array();
 
                $base = $this->baseStorePath();
-               $cases[] = array( "$base/unittest-cont1/a/z/some_file.txt", "some file contents" );
-               $cases[] = array( "$base/unittest-cont1/a/some-other_file.txt", "more file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/a/z/some_file.txt", "some file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/a/some-other_file.txt", "more file contents" );
 
                return $cases;
        }
@@ -1015,8 +1018,8 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases = array();
 
                $base = $this->baseStorePath();
-               $cases[] = array( "$base/unittest-cont1/a/z/some_file.txt", "some file contents" );
-               $cases[] = array( "$base/unittest-cont1/a/some-other_file.txt", "more file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/a/z/some_file.txt", "some file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/a/some-other_file.txt", "more file contents" );
 
                return $cases;
        }
@@ -1037,7 +1040,7 @@ class FileBackendTest extends MediaWikiTestCase {
        function provider_testPrepareAndClean() {
                $base = $this->baseStorePath();
                return array(
-                       array( "$base/unittest-cont1/a/z/some_file1.txt", true ),
+                       array( "$base/unittest-cont1/e/a/z/some_file1.txt", true ),
                        array( "$base/unittest-cont2/a/z/some_file2.txt", true ),
                        # Specific to FS backend with no basePath field set
                        #array( "$base/unittest-cont3/a/z/some_file3.txt", false ),
@@ -1085,18 +1088,18 @@ class FileBackendTest extends MediaWikiTestCase {
 
                $base = $this->baseStorePath();
                $dirs = array(
-                       "$base/unittest-cont1/a",
-                       "$base/unittest-cont1/a/b",
-                       "$base/unittest-cont1/a/b/c",
-                       "$base/unittest-cont1/a/b/c/d0",
-                       "$base/unittest-cont1/a/b/c/d1",
-                       "$base/unittest-cont1/a/b/c/d2",
-                       "$base/unittest-cont1/a/b/c/d0/1",
-                       "$base/unittest-cont1/a/b/c/d0/2",
-                       "$base/unittest-cont1/a/b/c/d1/3",
-                       "$base/unittest-cont1/a/b/c/d1/4",
-                       "$base/unittest-cont1/a/b/c/d2/5",
-                       "$base/unittest-cont1/a/b/c/d2/6"
+                       "$base/unittest-cont1/e/a",
+                       "$base/unittest-cont1/e/a/b",
+                       "$base/unittest-cont1/e/a/b/c",
+                       "$base/unittest-cont1/e/a/b/c/d0",
+                       "$base/unittest-cont1/e/a/b/c/d1",
+                       "$base/unittest-cont1/e/a/b/c/d2",
+                       "$base/unittest-cont1/e/a/b/c/d0/1",
+                       "$base/unittest-cont1/e/a/b/c/d0/2",
+                       "$base/unittest-cont1/e/a/b/c/d1/3",
+                       "$base/unittest-cont1/e/a/b/c/d1/4",
+                       "$base/unittest-cont1/e/a/b/c/d2/5",
+                       "$base/unittest-cont1/e/a/b/c/d2/6"
                );
                foreach ( $dirs as $dir ) {
                        $status = $this->prepare( array( 'dir' => $dir ) );
@@ -1159,13 +1162,13 @@ class FileBackendTest extends MediaWikiTestCase {
        private function doTestDoOperations() {
                $base = $this->baseStorePath();
 
-               $fileA = "$base/unittest-cont1/a/b/fileA.txt";
+               $fileA = "$base/unittest-cont1/e/a/b/fileA.txt";
                $fileAContents = '3tqtmoeatmn4wg4qe-mg3qt3 tq';
-               $fileB = "$base/unittest-cont1/a/b/fileB.txt";
+               $fileB = "$base/unittest-cont1/e/a/b/fileB.txt";
                $fileBContents = 'g-jmq3gpqgt3qtg q3GT ';
-               $fileC = "$base/unittest-cont1/a/b/fileC.txt";
+               $fileC = "$base/unittest-cont1/e/a/b/fileC.txt";
                $fileCContents = 'eigna[ogmewt 3qt g3qg flew[ag';
-               $fileD = "$base/unittest-cont1/a/b/fileD.txt";
+               $fileD = "$base/unittest-cont1/e/a/b/fileD.txt";
 
                $this->prepare( array( 'dir' => dirname( $fileA ) ) );
                $this->create( array( 'dst' => $fileA, 'content' => $fileAContents ) );
@@ -1248,10 +1251,10 @@ class FileBackendTest extends MediaWikiTestCase {
                $this->filesToPrune[] = $tmpNameB; # avoid file leaking
                $this->filesToPrune[] = $tmpNameC; # avoid file leaking
 
-               $fileA = "$base/unittest-cont1/a/b/fileA.txt";
-               $fileB = "$base/unittest-cont1/a/b/fileB.txt";
-               $fileC = "$base/unittest-cont1/a/b/fileC.txt";
-               $fileD = "$base/unittest-cont1/a/b/fileD.txt";
+               $fileA = "$base/unittest-cont1/e/a/b/fileA.txt";
+               $fileB = "$base/unittest-cont1/e/a/b/fileB.txt";
+               $fileC = "$base/unittest-cont1/e/a/b/fileC.txt";
+               $fileD = "$base/unittest-cont1/e/a/b/fileD.txt";
 
                $this->prepare( array( 'dir' => dirname( $fileA ) ) );
                $this->create( array( 'dst' => $fileA, 'content' => $fileAContents ) );
@@ -1398,20 +1401,20 @@ class FileBackendTest extends MediaWikiTestCase {
                $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont-notexists" ) );
 
                $files = array(
-                       "$base/unittest-cont1/test1.txt",
-                       "$base/unittest-cont1/test2.txt",
-                       "$base/unittest-cont1/test3.txt",
-                       "$base/unittest-cont1/subdir1/test1.txt",
-                       "$base/unittest-cont1/subdir1/test2.txt",
-                       "$base/unittest-cont1/subdir2/test3.txt",
-                       "$base/unittest-cont1/subdir2/test4.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test1.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test2.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test3.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test4.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test5.txt",
-                       "$base/unittest-cont1/subdir2/subdir/sub/test0.txt",
-                       "$base/unittest-cont1/subdir2/subdir/sub/120-px-file.txt",
+                       "$base/unittest-cont1/e/test1.txt",
+                       "$base/unittest-cont1/e/test2.txt",
+                       "$base/unittest-cont1/e/test3.txt",
+                       "$base/unittest-cont1/e/subdir1/test1.txt",
+                       "$base/unittest-cont1/e/subdir1/test2.txt",
+                       "$base/unittest-cont1/e/subdir2/test3.txt",
+                       "$base/unittest-cont1/e/subdir2/test4.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test1.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test2.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test3.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test4.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test5.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/sub/test0.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/sub/120-px-file.txt",
                );
 
                // Add the files
@@ -1428,20 +1431,20 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Expected listing
                $expected = array(
-                       "test1.txt",
-                       "test2.txt",
-                       "test3.txt",
-                       "subdir1/test1.txt",
-                       "subdir1/test2.txt",
-                       "subdir2/test3.txt",
-                       "subdir2/test4.txt",
-                       "subdir2/subdir/test1.txt",
-                       "subdir2/subdir/test2.txt",
-                       "subdir2/subdir/test3.txt",
-                       "subdir2/subdir/test4.txt",
-                       "subdir2/subdir/test5.txt",
-                       "subdir2/subdir/sub/test0.txt",
-                       "subdir2/subdir/sub/120-px-file.txt",
+                       "e/test1.txt",
+                       "e/test2.txt",
+                       "e/test3.txt",
+                       "e/subdir1/test1.txt",
+                       "e/subdir1/test2.txt",
+                       "e/subdir2/test3.txt",
+                       "e/subdir2/test4.txt",
+                       "e/subdir2/subdir/test1.txt",
+                       "e/subdir2/subdir/test2.txt",
+                       "e/subdir2/subdir/test3.txt",
+                       "e/subdir2/subdir/test4.txt",
+                       "e/subdir2/subdir/test5.txt",
+                       "e/subdir2/subdir/sub/test0.txt",
+                       "e/subdir2/subdir/sub/120-px-file.txt",
                );
                sort( $expected );
 
@@ -1479,7 +1482,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (no trailing slash)
                $list = array();
-               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont1/subdir2/subdir" ) );
+               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont1/e/subdir2/subdir" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1489,7 +1492,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (with trailing slash)
                $list = array();
-               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont1/subdir2/subdir/" ) );
+               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont1/e/subdir2/subdir/" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1518,7 +1521,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (top files only)
                $list = array();
-               $iter = $this->backend->getTopFileList( array( 'dir' => "$base/unittest-cont1/subdir2/subdir" ) );
+               $iter = $this->backend->getTopFileList( array( 'dir' => "$base/unittest-cont1/e/subdir2/subdir" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1551,20 +1554,20 @@ class FileBackendTest extends MediaWikiTestCase {
 
                $base = $this->baseStorePath();
                $files = array(
-                       "$base/unittest-cont1/test1.txt",
-                       "$base/unittest-cont1/test2.txt",
-                       "$base/unittest-cont1/test3.txt",
-                       "$base/unittest-cont1/subdir1/test1.txt",
-                       "$base/unittest-cont1/subdir1/test2.txt",
-                       "$base/unittest-cont1/subdir2/test3.txt",
-                       "$base/unittest-cont1/subdir2/test4.txt",
-                       "$base/unittest-cont1/subdir2/subdir/test1.txt",
-                       "$base/unittest-cont1/subdir3/subdir/test2.txt",
-                       "$base/unittest-cont1/subdir4/subdir/test3.txt",
-                       "$base/unittest-cont1/subdir4/subdir/test4.txt",
-                       "$base/unittest-cont1/subdir4/subdir/test5.txt",
-                       "$base/unittest-cont1/subdir4/subdir/sub/test0.txt",
-                       "$base/unittest-cont1/subdir4/subdir/sub/120-px-file.txt",
+                       "$base/unittest-cont1/e/test1.txt",
+                       "$base/unittest-cont1/e/test2.txt",
+                       "$base/unittest-cont1/e/test3.txt",
+                       "$base/unittest-cont1/e/subdir1/test1.txt",
+                       "$base/unittest-cont1/e/subdir1/test2.txt",
+                       "$base/unittest-cont1/e/subdir2/test3.txt",
+                       "$base/unittest-cont1/e/subdir2/test4.txt",
+                       "$base/unittest-cont1/e/subdir2/subdir/test1.txt",
+                       "$base/unittest-cont1/e/subdir3/subdir/test2.txt",
+                       "$base/unittest-cont1/e/subdir4/subdir/test3.txt",
+                       "$base/unittest-cont1/e/subdir4/subdir/test4.txt",
+                       "$base/unittest-cont1/e/subdir4/subdir/test5.txt",
+                       "$base/unittest-cont1/e/subdir4/subdir/sub/test0.txt",
+                       "$base/unittest-cont1/e/subdir4/subdir/sub/120-px-file.txt",
                );
 
                // Add the files
@@ -1579,6 +1582,32 @@ class FileBackendTest extends MediaWikiTestCase {
                $this->assertEquals( true, $status->isOK(),
                        "Creation of files succeeded with OK status ($backendName)." );
 
+               $this->assertEquals( true,
+                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/e/subdir1" ) ),
+                       "Directory exists in ($backendName)." );
+               $this->assertEquals( true,
+                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/e/subdir2/subdir" ) ),
+                       "Directory exists in ($backendName)." );
+               $this->assertEquals( false,
+                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/e/subdir2/test1.txt" ) ),
+                       "Directory does not exists in ($backendName)." );
+
+               // Expected listing
+               $expected = array(
+                       "e",
+               );
+               sort( $expected );
+
+               // Actual listing (no trailing slash)
+               $list = array();
+               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1" ) );
+               foreach ( $iter as $file ) {
+                       $list[] = $file;
+               }
+               sort( $list );
+
+               $this->assertEquals( $expected, $list, "Correct top dir listing ($backendName)." );
+
                // Expected listing
                $expected = array(
                        "subdir1",
@@ -1588,19 +1617,9 @@ class FileBackendTest extends MediaWikiTestCase {
                );
                sort( $expected );
 
-               $this->assertEquals( true,
-                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/subdir1" ) ),
-                       "Directory exists in ($backendName)." );
-               $this->assertEquals( true,
-                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/subdir2/subdir" ) ),
-                       "Directory exists in ($backendName)." );
-               $this->assertEquals( false,
-                       $this->backend->directoryExists( array( 'dir' => "$base/unittest-cont1/subdir2/test1.txt" ) ),
-                       "Directory does not exists in ($backendName)." );
-
                // Actual listing (no trailing slash)
                $list = array();
-               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1" ) );
+               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/e" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1610,7 +1629,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (with trailing slash)
                $list = array();
-               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/" ) );
+               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/e/" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1626,7 +1645,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (no trailing slash)
                $list = array();
-               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/subdir2" ) );
+               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/e/subdir2" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1636,7 +1655,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (with trailing slash)
                $list = array();
-               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/subdir2/" ) );
+               $iter = $this->backend->getTopDirectoryList( array( 'dir' => "$base/unittest-cont1/e/subdir2/" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
@@ -1655,14 +1674,15 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Expected listing (recursive)
                $expected = array(
-                       "subdir1",
-                       "subdir2",
-                       "subdir3",
-                       "subdir4",
-                       "subdir2/subdir",
-                       "subdir3/subdir",
-                       "subdir4/subdir",
-                       "subdir4/subdir/sub",
+                       "e",
+                       "e/subdir1",
+                       "e/subdir2",
+                       "e/subdir3",
+                       "e/subdir4",
+                       "e/subdir2/subdir",
+                       "e/subdir3/subdir",
+                       "e/subdir4/subdir",
+                       "e/subdir4/subdir/sub",
                );
                sort( $expected );
 
@@ -1685,7 +1705,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                // Actual listing (recursive)
                $list = array();
-               $iter = $this->backend->getDirectoryList( array( 'dir' => "$base/unittest-cont1/subdir4" ) );
+               $iter = $this->backend->getDirectoryList( array( 'dir' => "$base/unittest-cont1/e/subdir4" ) );
                foreach ( $iter as $file ) {
                        $list[] = $file;
                }
diff --git a/tests/phpunit/includes/libs/CSSMinTest.php b/tests/phpunit/includes/libs/CSSMinTest.php
new file mode 100644 (file)
index 0000000..a382775
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+/**
+ * This file test the CSSMin library shipped with Mediawiki.
+ *
+ * @author Timo Tijhof
+ */
+
+class CSSMinTest extends MediaWikiTestCase {
+       protected $oldServer = null, $oldCanServer = null;
+
+       function setUp() {
+               parent::setUp();
+
+               // Fake $wgServer and $wgCanonicalServer
+               global $wgServer, $wgCanonicalServer;
+               $this->oldServer = $wgServer;
+               $this->oldCanServer = $wgCanonicalServer;
+               $wgServer = $wgCanonicalServer = 'http://wiki.example.org';
+       }
+
+       function tearDown() {
+               // Restore $wgServer and $wgCanonicalServer
+               global $wgServer, $wgCanonicalServer;
+               $wgServer = $this->oldServer;
+               $wgCanonicalServer = $this->oldCanServer;
+
+               parent::tearDown();
+       }
+
+       /**
+        * @dataProvider provideMinifyCases
+        */
+       function testMinify( $code, $expectedOutput ) {
+               $minified = CSSMin::minify( $code );
+
+               $this->assertEquals( $expectedOutput, $minified, 'Minified output should be in the form expected.' );
+       }
+
+       function provideMinifyCases() {
+               return array(
+                       // Whitespace
+                       array( "\r\t\f \v\n\r", "" ),
+                       array( "foo, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+
+                       // Loose comments
+                       array( "/* foo */", "" ),
+                       array( "/*******\n foo\n *******/", "" ),
+                       array( "/*!\n foo\n */", "" ),
+
+                       // Inline comments in various different places
+                       array( "/* comment */foo, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo/* comment */, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo,/* comment */ bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar/* comment */ {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\t/* comment */prop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\tprop: /* comment */value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\tprop: value /* comment */;\n}", "foo,bar{prop:value }" ),
+                       array( "foo, bar {\n\tprop: value; /* comment */\n}", "foo,bar{prop:value; }" ),
+
+                       // Keep track of things that aren't as minified as much as they
+                       // could be (bug 35493)
+                       array( 'foo { prop: value ;}', 'foo{prop:value }' ),
+                       array( 'foo { prop : value; }', 'foo{prop :value}' ),
+                       array( 'foo { prop: value ; }', 'foo{prop:value }' ),
+                       array( 'foo { font-family: "foo" , "bar"; }', 'foo{font-family:"foo" ,"bar"}' ),
+                       array( "foo { src:\n\turl('foo') ,\n\turl('bar') ; }", "foo{src:url('foo') ,url('bar') }" ),
+
+                       // Interesting cases with string values
+                       // - Double quotes, single quotes
+                       array( 'foo { content: ""; }', 'foo{content:""}' ),
+                       array( "foo { content: ''; }", "foo{content:''}" ),
+                       array( 'foo { content: "\'"; }', 'foo{content:"\'"}' ),
+                       array( "foo { content: '\"'; }", "foo{content:'\"'}" ),
+                       // - Whitespace in string values
+                       array( 'foo { content: " "; }', 'foo{content:" "}' ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRemapCases
+        */
+       function testRemap( $message, $params, $expectedOutput ) {
+               $remapped = call_user_func_array( 'CSSMin::remap', $params );
+
+               $messageAdd = " Case: $message";
+               $this->assertEquals( $expectedOutput, $remapped, 'CSSMin::remap should return the expected url form.' . $messageAdd );
+       }
+
+       function provideRemapCases() {
+               // Parameter signature:
+               // CSSMin::remap( $code, $local, $remote, $embedData = true )
+               return array(
+                       array(
+                               'Simple case',
+                               array( 'foo { prop: url(bar.png); }', false, 'http://example.org', false ),
+                               'foo { prop: url(http://example.org/bar.png); }',
+                       ),
+                       array(
+                               'Without trailing slash',
+                               array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux', false ),
+                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                       ),
+                       array(
+                               'With trailing slash on remote (bug 27052)',
+                               array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux/', false ),
+                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                       ),
+                       array(
+                               'Guard against stripping double slashes from query',
+                               array( 'foo { prop: url(bar.png?corge=//grault); }', false, 'http://example.org/quux/', false ),
+                               'foo { prop: url(http://example.org/quux/bar.png?corge=//grault); }',
+                       ),
+                       array(
+                               'Expand absolute paths',
+                               array( 'foo { prop: url(/w/skin/images/bar.png); }', false, 'http://example.org/quux', false ),
+                               'foo { prop: url(http://wiki.example.org/w/skin/images/bar.png); }',
+                       ),
+               );
+       }
+
+       /**
+        * Seperated because they are currently broken (bug 35492)
+        *
+        * @group Broken
+        * @dataProvider provideStringCases
+        */
+       function testMinifyWithCSSStringValues( $code, $expectedOutput ) {
+               $this->testMinifyOutput( $code, $expectedOutput );
+       }
+
+       function provideStringCases() {
+               return array(
+                       // String values should be respected
+                       // - More than one space in a string value
+                       array( 'foo { content: "  "; }', 'foo{content:"  "}' ),
+                       // - Using a tab in a string value (turns into a space)
+                       array( "foo { content: '\t'; }", "foo{content:'\t'}" ),
+                       // - Using css-like syntax in string values
+                       array( 'foo::after { content: "{;}"; position: absolute; }', 'foo::after{content:"{;}";position:absolute}' ),
+               );
+       }
+}
index d2bfeed..f121b01 100644 (file)
@@ -4,9 +4,18 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
 
        function provideCases() {
                return array(
-                       // Basic tokens
+
+                       // Basic whitespace and comments that should be stripped entirely
                        array( "\r\t\f \v\n\r", "" ),
                        array( "/* Foo *\n*bar\n*/", "" ),
+
+                       /**
+                        * Slashes used inside block comments (bug 26931).
+                        * At some point there was a bug that caused this comment to be ended at '* /',
+                        * causing /M... to be left as the beginning of a regex.
+                        */
+                       array( "/**\n * Foo\n * {\n * 'bar' : {\n * //Multiple rules with configurable operators\n * 'baz' : false\n * }\n */", ""),
+
                        /**
                         * '  Foo \' bar \
                         *  baz \' quox '  .
@@ -15,11 +24,13 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "\"  Foo  \\\"  bar  \\\n  baz  \\\"  quox  \"  .length", "\"  Foo  \\\"  bar  \\\n  baz  \\\"  quox  \".length" ),
                        array( "// Foo b/ar baz", "" ),
                        array( "/  Foo  \\/  bar  [  /  \\]  /  ]  baz  /  .length", "/  Foo  \\/  bar  [  /  \\]  /  ]  baz  /.length" ),
+
                        // HTML comments
                        array( "<!-- Foo bar", "" ),
                        array( "<!-- Foo --> bar", "" ),
                        array( "--> Foo", "" ),
                        array( "x --> y", "x-->y" ),
+
                        // Semicolon insertion
                        array( "(function(){return\nx;})", "(function(){return\nx;})" ),
                        array( "throw\nx;", "throw\nx;" ),
@@ -35,12 +46,19 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "5.\nx;", "5.\nx;" ),
                        array( "0xFF.\nx;", "0xFF.x;" ),
                        array( "5.3.\nx;", "5.3.x;" ),
+
+                       // Semicolon insertion between an expression having an inline
+                       // comment after it, and a statement on the next line (bug 27046).
+                       array( "var a = this //foo bar \n for ( b = 0; c < d; b++ ) {}", "var a=this\nfor(b=0;c<d;b++){}" ),
+
                        // Token separation
                        array( "x  in  y", "x in y" ),
                        array( "/x/g  in  y", "/x/g in y" ),
                        array( "x  in  30", "x in 30" ),
                        array( "x  +  ++  y", "x+ ++y" ),
+                       array( "x ++  +  y", "x++ +y" ),
                        array( "x  /  /y/.exec(z)", "x/ /y/.exec(z)" ),
+
                        // State machine
                        array( "/  x/g", "/  x/g" ),
                        array( "(function(){return/  x/g})", "(function(){return/  x/g})" ),
@@ -63,15 +81,18 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "function x(){}/  x/g", "function x(){}/  x/g" ),
                        array( "+function x(){}/  x/g", "+function x(){}/x/g" ),
                        
-                       // Tests for things that broke in the past
                        // Multiline quoted string
                        array( "var foo=\"\\\nblah\\\n\";", "var foo=\"\\\nblah\\\n\";" ),
+
                        // Multiline quoted string followed by string with spaces
                        array( "var foo=\"\\\nblah\\\n\";\nvar baz = \" foo \";\n", "var foo=\"\\\nblah\\\n\";var baz=\" foo \";" ),
+
                        // URL in quoted string ( // is not a comment)
                        array( "aNode.setAttribute('href','http://foo.bar.org/baz');", "aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+
                        // URL in quoted string after multiline quoted string
                        array( "var foo=\"\\\nblah\\\n\";\naNode.setAttribute('href','http://foo.bar.org/baz');", "var foo=\"\\\nblah\\\n\";aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+
                        // Division vs. regex nastiness
                        array( "alert( (10+10) / '/'.charCodeAt( 0 ) + '//' );", "alert((10+10)/'/'.charCodeAt(0)+'//');" ),
                        array( "if(1)/a /g.exec('Pa ss');", "if(1)/a /g.exec('Pa ss');" ),
@@ -81,11 +102,12 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
 
                        // Unicode letter characters should pass through ok in identifiers (bug 31187)
                        array( "var KaŝSkatolVal = {}", 'var KaŝSkatolVal={}'),
-                       // And also per spec unicode char escape values should work in identifiers,
+
+                       // Per spec unicode char escape values should work in identifiers,
                        // as long as it's a valid char. In future it might get normalized.
                        array( "var Ka\\u015dSkatolVal = {}", 'var Ka\\u015dSkatolVal={}'),
 
-                       /* Some structures that might look invalid at first sight */
+                       // Some structures that might look invalid at first sight
                        array( "var a = 5.;", "var a=5.;" ),
                        array( "5.0.toString();", "5.0.toString();" ),
                        array( "5..toString();", "5..toString();" ),
@@ -110,24 +132,6 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedOutput, $minified, "Minified output should be in the form expected." );
        }
 
-       /**
-        * @dataProvider provideBug32548
-        */
-       function testBug32548Exponent($num) {
-               // Long line breaking was being incorrectly done between the base and
-               // exponent part of a number, causing a syntax error. The line should
-               // instead break at the start of the number.
-               $prefix = 'var longVarName' . str_repeat('_', 973) . '=';
-               $suffix = ',shortVarName=0;';
-
-               $input = $prefix . $num . $suffix;
-               $expected = $prefix . "\n" . $num . $suffix;
-
-               $minified = JavaScriptMinifier::minify( $input );
-
-               $this->assertEquals( $expected, $minified, "Line breaks must not occur in middle of exponent");
-       }
-
        function provideBug32548() {
                return array(
                        array(
@@ -145,4 +149,22 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        ),
                );
        }
+
+       /**
+        * @dataProvider provideBug32548
+        */
+       function testBug32548Exponent( $num ) {
+               // Long line breaking was being incorrectly done between the base and
+               // exponent part of a number, causing a syntax error. The line should
+               // instead break at the start of the number.
+               $prefix = 'var longVarName' . str_repeat( '_', 973 ) . '=';
+               $suffix = ',shortVarName=0;';
+
+               $input = $prefix . $num . $suffix;
+               $expected = $prefix . "\n" . $num . $suffix;
+
+               $minified = JavaScriptMinifier::minify( $input );
+
+               $this->assertEquals( $expected, $minified, "Line breaks must not occur in middle of exponent");
+       }
 }
diff --git a/tests/phpunit/includes/parser/ParserMethodsTest.php b/tests/phpunit/includes/parser/ParserMethodsTest.php
new file mode 100644 (file)
index 0000000..dea406c
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+class ParserMethodsTest extends MediaWikiLangTestCase {
+
+       public function dataPreSaveTransform() {
+               return array(
+                       array( 'hello this is ~~~',
+                              "hello this is [[Special:Contributions/127.0.0.1|127.0.0.1]]",
+                       ),
+                       array( 'hello \'\'this\'\' is <nowiki>~~~</nowiki>',
+                              'hello \'\'this\'\' is <nowiki>~~~</nowiki>',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider dataPreSaveTransform
+        */
+       public function testPreSaveTransform( $text, $expected ) {
+               global $wgParser;
+
+               $title = Title::newFromText( str_replace( '::', '__', __METHOD__ ) );
+               $user = new User();
+               $user->setName( "127.0.0.1" );
+               $popts = ParserOptions::newFromUser( $user );
+               $text = $wgParser->preSaveTransform( $text, $title, $user, $popts );
+
+               $this->assertEquals( $expected, $text );
+       }
+
+       // TODO: Add tests for cleanSig() / cleanSigInSig(), getSection(), replaceSection(), getPreloadText()
+}
+
index c6498fa..f66c387 100644 (file)
@@ -20,7 +20,7 @@ class UploadFromUrlTest extends ApiTestCase {
                }
        }
 
-       protected function doApiRequest( $params, $unused = null, $appendModule = false, $user = null ) {
+       protected function doApiRequest( Array $params, Array $unused = null, $appendModule = false, User $user = null ) {
                $sessionId = session_id();
                session_write_close();
 
index 976fd6b..b5eb573 100644 (file)
@@ -295,13 +295,17 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
         * @param $text_sha1 string: the base36 SHA-1 of the revision's text
         * @param $text string|false: (optional) The revision's string, or false to check for a
         *            revision stub
+        * @param $parentid int|false: (optional) id of the parent revision
         */
-       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false ) {
+       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false, $parentid = false ) {
 
                $this->assertNodeStart( "revision" );
                $this->skipWhitespace();
 
                $this->assertTextNode( "id", $id );
+               if ( $parentid !== false ) {
+                       $this->assertTextNode( "parentid", $parentid );
+               }
                $this->assertTextNode( "timestamp", false );
 
                $this->assertNodeStart( "contributor" );
index a64e6d0..965d7be 100644 (file)
@@ -17,11 +17,13 @@ class BaseDumpTest extends MediaWikiTestCase {
        private $dump = null;
 
        protected function tearDown() {
-               parent::tearDown();
-
                if ( $this->dump !== null ) {
                        $this->dump->close();
                }
+
+               // Bug 37458, parent teardown need to be done after closing the
+               // dump or it might cause some permissions errors.
+               parent::tearDown();
        }
 
        /**
@@ -150,7 +152,7 @@ class BaseDumpTest extends MediaWikiTestCase {
                $fname = $this->getNewTempFile();
 
                // The header of every prefetch file
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -195,8 +197,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP1Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP1Text1</text>
       <sha1>0bolhl6ol7i6x0e7yq91gxgaan39j87</sha1>
+      <text xml:space="preserve">BackupDumperTestP1Text1</text>
     </revision>
   </page>
 ';
@@ -212,18 +214,19 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text1</text>
       <sha1>jprywrymfhysqllua29tj3sc7z39dl2</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text1</text>
     </revision>
     <revision>
       <id>5</id>
+      <parentid>2</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary4 extra</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
       <sha1>6o1ciaxa6pybnqprmungwofc4lv00wv</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
     </revision>
   </page>
 ';
@@ -239,8 +242,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>Talk BackupDumperTestP1 Summary1</comment>
-      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
       <sha1>nktofwzd0tl192k3zfepmlzxoax1lpe</sha1>
+      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
     </revision>
   </page>
 ';
index 90fd902..35e7e32 100644 (file)
@@ -12,12 +12,14 @@ class TextPassDumperTest extends DumpTestCase {
 
        // We'll add several pages, revision and texts. The following variables hold the
        // corresponding ids.
-       private $pageId1, $pageId2, $pageId3, $pageId4, $pageId5;
+       private $pageId1, $pageId2, $pageId3, $pageId4;
+       private static $numOfPages = 4;
        private $revId1_1, $textId1_1;
        private $revId2_1, $textId2_1, $revId2_2, $textId2_2;
        private $revId2_3, $textId2_3, $revId2_4, $textId2_4;
        private $revId3_1, $textId3_1, $revId3_2, $textId3_2;
        private $revId4_1, $textId4_1;
+       private static $numOfRevs = 8;
 
        function addDBData() {
                $this->tablesUsed[] = 'page';
@@ -115,13 +117,13 @@ class TextPassDumperTest extends DumpTestCase {
                        "BackupDumperTestP2Text1" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                       "BackupDumperTestP2Text4 some additional Text" );
+                       "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -181,15 +183,15 @@ class TextPassDumperTest extends DumpTestCase {
                        "BackupDumperTestP2Text1" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_1 );
                // Prefetch kicks in. This is still the SHA-1 of the original text,
                // But the actual text (with different SHA-1) comes from prefetch.
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "Prefetch_________2Text3" );
+                       "Prefetch_________2Text3", $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                       "BackupDumperTestP2Text4 some additional Text" );
+                       "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -314,9 +316,9 @@ class TextPassDumperTest extends DumpTestCase {
                        switch ( $lookingForPage ) {
                        case 1:
                                // Page 1
-                               $this->assertPageStart( $this->pageId1 + $i * 4, NS_MAIN,
+                               $this->assertPageStart( $this->pageId1 + $i * self::$numOfPages, NS_MAIN,
                                        "BackupDumperTestP1" );
-                               $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1",
+                               $this->assertRevision( $this->revId1_1 + $i * self::$numOfRevs, "BackupDumperTestP1Summary1",
                                        $this->textId1_1, false, "0bolhl6ol7i6x0e7yq91gxgaan39j87",
                                        "BackupDumperTestP1Text1" );
                                $this->assertPageEnd();
@@ -326,21 +328,22 @@ class TextPassDumperTest extends DumpTestCase {
 
                        case 2:
                                // Page 2
-                               $this->assertPageStart( $this->pageId2 + $i * 4, NS_MAIN,
+                               $this->assertPageStart( $this->pageId2 + $i * self::$numOfPages, NS_MAIN,
                                        "BackupDumperTestP2" );
-                               $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
+                               $this->assertRevision( $this->revId2_1 + $i * self::$numOfRevs, "BackupDumperTestP2Summary1",
                                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
                                        "BackupDumperTestP2Text1" );
-                               $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
+                               $this->assertRevision( $this->revId2_2 + $i * self::$numOfRevs, "BackupDumperTestP2Summary2",
                                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                                       "BackupDumperTestP2Text2" );
-                               $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
+                                       "BackupDumperTestP2Text2", $this->revId2_1 + $i * self::$numOfRevs );
+                               $this->assertRevision( $this->revId2_3 + $i * self::$numOfRevs, "BackupDumperTestP2Summary3",
                                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                                       "BackupDumperTestP2Text3" );
-                               $this->assertRevision( $this->revId2_4,
+                                       "BackupDumperTestP2Text3", $this->revId2_2 + $i * self::$numOfRevs );
+                               $this->assertRevision( $this->revId2_4 + $i * self::$numOfRevs,
                                        "BackupDumperTestP2Summary4 extra",
                                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                                       "BackupDumperTestP2Text4 some additional Text" );
+                                       "BackupDumperTestP2Text4 some additional Text",
+                                       $this->revId2_3 + $i * self::$numOfRevs );
                                $this->assertPageEnd();
 
                                $lookingForPage = 4;
@@ -348,9 +351,9 @@ class TextPassDumperTest extends DumpTestCase {
 
                        case 4:
                                // Page 4
-                               $this->assertPageStart( $this->pageId4 + $i * 4, NS_TALK,
+                               $this->assertPageStart( $this->pageId4 + $i * self::$numOfPages, NS_TALK,
                                        "Talk:BackupDumperTestP1" );
-                               $this->assertRevision( $this->revId4_1,
+                               $this->assertRevision( $this->revId4_1 + $i * self::$numOfRevs,
                                        "Talk BackupDumperTestP1 Summary1",
                                        $this->textId4_1, false, "nktofwzd0tl192k3zfepmlzxoax1lpe",
                                        "Talk about BackupDumperTestP1 Text1" );
@@ -428,10 +431,10 @@ class TextPassDumperTest extends DumpTestCase {
                if ( $fname === null ) {
                        $fname = $this->getNewTempFile();
                }
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" '
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" '
                        . 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
-                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ '
-                       . 'http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ '
+                       . 'http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -469,9 +472,9 @@ class TextPassDumperTest extends DumpTestCase {
                        $page1 = '  <page>
     <title>BackupDumperTestP1</title>
     <ns>0</ns>
-    <id>' . ( $this->pageId1 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId1 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId1_1 . '</id>
+      <id>' . ( $this->revId1_1 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -485,9 +488,9 @@ class TextPassDumperTest extends DumpTestCase {
                        $page2 = '  <page>
     <title>BackupDumperTestP2</title>
     <ns>0</ns>
-    <id>' . ( $this->pageId2 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId2 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId2_1 . '</id>
+      <id>' . ( $this->revId2_1 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -497,7 +500,8 @@ class TextPassDumperTest extends DumpTestCase {
       <text id="' . $this->textId2_1 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_2 . '</id>
+      <id>' . ( $this->revId2_2 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_1 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -507,7 +511,8 @@ class TextPassDumperTest extends DumpTestCase {
       <text id="' . $this->textId2_2 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_3 . '</id>
+      <id>' . ( $this->revId2_3 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_2 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -517,7 +522,8 @@ class TextPassDumperTest extends DumpTestCase {
       <text id="' . $this->textId2_3 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_4 . '</id>
+      <id>' . ( $this->revId2_4 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_3 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -533,9 +539,9 @@ class TextPassDumperTest extends DumpTestCase {
                        $page4 = '  <page>
     <title>Talk:BackupDumperTestP1</title>
     <ns>1</ns>
-    <id>' . ( $this->pageId4 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId4 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId4_1 . '</id>
+      <id>' . ( $this->revId4_1 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
index 3850c4a..925e277 100644 (file)
@@ -108,13 +108,13 @@ class BackupDumperPageTest extends DumpTestCase {
                        "BackupDumperTestP2Text1" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                       "BackupDumperTestP2Text4 some additional Text" );
+                       "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -156,11 +156,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -199,7 +199,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -239,7 +239,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -310,11 +310,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -342,7 +342,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -370,7 +370,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
index 9e1e9b2..adfd111 100644 (file)
@@ -27,6 +27,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                ),
                'dependencies' => array(
                        'jquery.autoEllipsis',
@@ -49,6 +50,7 @@ return array(
                        'mediawiki.util',
                        'mediawiki.special.recentchanges',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.language'
                ),
                'position' => 'top',
        )
diff --git a/tests/qunit/data/load.mock.php b/tests/qunit/data/load.mock.php
new file mode 100644 (file)
index 0000000..1c18970
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Mock load.php with pre-defined test modules.
+ *
+ * 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
+ * @package MediaWiki
+ * @author Lupo
+ * @since 1.20
+ */
+header( 'Content-Type: text/javascript; charset=utf-8' );
+
+require_once '../../../includes/Xml.php';
+
+$moduleImplementations = array(
+       'testUsesMissing' => "
+mw.loader.implement( 'testUsesMissing', function () {
+       QUnit.ok( false, 'Module test.usesMissing script should not run.');
+       QUnit.start();
+}, {}, {});
+",
+
+       'testUsesNestedMissing' => "
+mw.loader.implement( 'testUsesNestedMissing', function () {
+       QUnit.ok( false, 'Module testUsesNestedMissing script should not run.');
+}, {}, {});
+",
+);
+
+$response = '';
+
+// Only support for non-encoded module names, full module names expected
+if ( isset( $_GET['modules'] ) ) {
+       $modules = explode( ',', $_GET['modules'] );
+       foreach ( $modules as $module ) {
+               if ( isset( $moduleImplementations[$module] ) ) {
+                       $response .= $moduleImplementations[$module];
+               } else {
+                       $response .= Xml::encodeJsCall( 'mw.loader.state', array( $module, 'missing' ) );
+               }
+       }
+}
+
+echo $response;
diff --git a/tests/qunit/data/testloader.php b/tests/qunit/data/testloader.php
deleted file mode 100644 (file)
index 7f4c48d..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * ResourceLoader stub working with pre-defined test modules.
- *
- * 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
- * @package MediaWiki
- * @author Lupo
- * @since 1.20
- */
-header( 'Content-Type: text/javascript; charset=utf-8' );\r
-
-require_once "../../../includes/Xml.php";
-
-$modules = array (
-       'test.use_missing' => array (
-               'src' => 'mw.loader.implement("test.use_missing", function () {start(); ok(false, "Module test.use_missing should not run.");}, {}, {});',
-               'deps' => array ( 'test.missing' )
-       ),
-       'test.use_missing2' => array (
-               'src' => 'mw.loader.implement("test.use_missing2", function () {start(); ok(false, "Module test.use_missing2 should not run.");}, {}, {});',
-               'deps' => array ( 'test.missing2' )
-       )
-);
-
-// Copied from ResourceLoaderContext
-function expandModuleNames( $modules ) {\r
-       $retval = array();\r
-       // For backwards compatibility with an earlier hack, replace ! with .\r
-       $modules = str_replace( '!', '.', $modules );\r
-       $exploded = explode( '|', $modules );\r
-       foreach ( $exploded as $group ) {\r
-               if ( strpos( $group, ',' ) === false ) {\r
-                       // This is not a set of modules in foo.bar,baz notation\r
-                       // but a single module\r
-                       $retval[] = $group;\r
-               } else {\r
-                       // This is a set of modules in foo.bar,baz notation\r
-                       $pos = strrpos( $group, '.' );\r
-                       if ( $pos === false ) {\r
-                               // Prefixless modules, i.e. without dots\r
-                               $retval = explode( ',', $group );\r
-                       } else {\r
-                               // We have a prefix and a bunch of suffixes\r
-                               $prefix = substr( $group, 0, $pos ); // 'foo'\r
-                               $suffixes = explode( ',', substr( $group, $pos + 1 ) ); // array( 'bar', 'baz' )\r
-                               foreach ( $suffixes as $suffix ) {\r
-                                       $retval[] = "$prefix.$suffix";\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return $retval;\r
-}
-
-function addModule ( $moduleName, &$gotten ) {
-       global $modules;
-
-       $result = "";
-       if ( isset( $gotten[$moduleName] ) ) {
-               return $result;
-       }
-       $gotten[$moduleName] = true;
-       if ( isset( $modules[$moduleName] ) ) {
-               $deps = $modules[$moduleName]['deps'];
-               foreach ( $deps as $depName ) {
-                       $result .= addModule( $depName, $gotten ) . "\n";
-               }
-               $result .= $modules[$moduleName]['src'] . "\n";
-       } else {
-               $result .= 'mw.loader.state( ' . Xml::encodeJsVar( $moduleName ) . ', "missing" );' . "\n";
-       }
-       return $result . "\n";
-}
-
-$result = "";
-
-if ( isset( $_GET['modules'] ) ) {
-       $toGet = expandModuleNames( $_GET['modules'] );
-       $gotten = array();
-       foreach ( $toGet as $moduleName ) {
-               $result .= addModule( $moduleName, $gotten );
-       }
-}
-
-echo $result;
index 21effdb..2cb94d1 100644 (file)
                expected: simpleSample
        });
 
+       byteLimitTest({
+               description: 'Plain text input. Calling byteLimit with no parameters and no maxLength property (bug 36310)',
+               $input: $( '<input>' )
+                       .attr( 'type', 'text' )
+                       .byteLimit(),
+               sample: simpleSample,
+               hasLimit: false,
+               expected: simpleSample
+       });
+
        byteLimitTest({
                description: 'Limit using the maxlength attribute',
                $input: $( '<input>' )
index f028dbc..df0144c 100644 (file)
@@ -408,7 +408,8 @@ test( 'bug 32047 - caption must be before thead', function() {
 test( 'data-sort-value attribute, when available, should override sorting position', function() {
        var $table, data;
 
-       // Simple example, one without data-sort-value which should be sorted at it's text.
+       // Example 1: All cells except one cell without data-sort-value,
+       // which should be sorted at it's text content value.
        $table = $(
                '<table class="sortable"><thead><tr><th>Data</th></tr></thead>' +
                        '<tbody>' +
@@ -424,30 +425,33 @@ test( 'data-sort-value attribute, when available, should override sorting positi
        data = [];
        $table.find( 'tbody > tr' ).each( function( i, tr ) {
                $( tr ).find( 'td' ).each( function( i, td ) {
-                       data.push( { data: $( td ).data( 'sort-value' ), text: $( td ).text() } );
+                       data.push( {
+                               data: $( td ).data( 'sortValue' ),
+                               text: $( td ).text()
+                       } );
                });
        });
 
        deepEqual( data, [
                {
-                       "data": "Apple",
-                       "text": "Bird"
+                       data: 'Apple',
+                       text: 'Bird'
                }, {
-                       "data": "Bananna",
-                       "text": "Ferret"
+                       data: 'Bananna',
+                       text: 'Ferret'
                }, {
-                       "data": undefined,
-                       "text": "Cheetah"
+                       data: undefined,
+                       text: 'Cheetah'
                }, {
-                       "data": "Cherry",
-                       "text": "Dolphin"
+                       data: 'Cherry',
+                       text: 'Dolphin'
                }, {
-                       "data": "Drupe",
-                       "text": "Elephant"
+                       data: 'Drupe',
+                       text: 'Elephant'
                }
-       ] );
+       ], 'Order matches expected order (based on data-sort-value attribute values)' );
 
-       // Another example
+       // Example 2
        $table = $(
                '<table class="sortable"><thead><tr><th>Data</th></tr></thead>' +
                        '<tbody>' +
@@ -463,28 +467,89 @@ test( 'data-sort-value attribute, when available, should override sorting positi
        data = [];
        $table.find( 'tbody > tr' ).each( function( i, tr ) {
                $( tr ).find( 'td' ).each( function( i, td ) {
-                       data.push( { data: $( td ).data( 'sort-value' ), text: $( td ).text() } );
+                       data.push( {
+                               data: $( td ).data( 'sortValue' ),
+                               text: $( td ).text()
+                       } );
                });
        });
 
        deepEqual( data, [
                {
-                       "data": undefined,
-                       "text": "B"
+                       data: undefined,
+                       text: 'B'
                }, {
-                       "data": undefined,
-                       "text": "D"
+                       data: undefined,
+                       text: 'D'
                }, {
-                       "data": "E",
-                       "text": "A"
+                       data: 'E',
+                       text: 'A'
                }, {
-                       "data": "F",
-                       "text": "C"
+                       data: 'F',
+                       text: 'C'
                }, {
-                       "data": undefined,
-                       "text": "G"
+                       data: undefined,
+                       text: 'G'
                }
-       ] );
+       ], 'Order matches expected order (based on data-sort-value attribute values)' );
+
+       // Example 3: Test that live changes are used from data-sort-value,
+       // even if they change after the tablesorter is constructed (bug 38152).
+       $table = $(
+               '<table class="sortable"><thead><tr><th>Data</th></tr></thead>' +
+                       '<tbody>' +
+                       '<tr><td>D</td></tr>' +
+                       '<tr><td data-sort-value="1">A</td></tr>' +
+                       '<tr><td>B</td></tr>' +
+                       '<tr><td data-sort-value="2">G</td></tr>' +
+                       '<tr><td>C</td></tr>' +
+               '</tbody></table>'
+       );
+       // initialize table sorter and sort once
+       $table
+               .tablesorter()
+               .find( '.headerSort:eq(0)' ).click();
+
+       // Change the sortValue data properties (bug 38152)
+       // - change data
+       $table.find( 'td:contains(A)' ).data( 'sortValue', 3 );
+       // - add data
+       $table.find( 'td:contains(B)' ).data( 'sortValue', 1 );
+       // - remove data, bring back attribute: 2
+       $table.find( 'td:contains(G)' ).removeData( 'sortValue' );
+
+       // Now sort again (twice, so it is back at Ascending)
+       $table.find( '.headerSort:eq(0)' ).click();
+       $table.find( '.headerSort:eq(0)' ).click();
+
+       data = [];
+       $table.find( 'tbody > tr' ).each( function( i, tr ) {
+               $( tr ).find( 'td' ).each( function( i, td ) {
+                       data.push( {
+                               data: $( td ).data( 'sortValue' ),
+                               text: $( td ).text()
+                       } );
+               });
+       });
+
+       deepEqual( data, [
+               {
+                       data: 1,
+                       text: "B"
+               }, {
+                       data: 2,
+                       text: "G"
+               }, {
+                       data: 3,
+                       text: "A"
+               }, {
+                       data: undefined,
+                       text: "C"
+               }, {
+                       data: undefined,
+                       text: "D"
+               }
+       ], 'Order matches expected order, using the current sortValue in $.data()' );
 
 });
 
@@ -527,8 +592,8 @@ test( 'bug 32888 - Tables inside a tableheader cell', function() {
 
        var $table;
        $table = $(
-               '<table class="sortable" id="32888">' +
-               '<tr><th>header<table id="32888-2">'+
+               '<table class="sortable" id="mw-bug-32888">' +
+               '<tr><th>header<table id="mw-bug-32888-2">'+
                        '<tr><th>1</th><th>2</th></tr>' +
                '</table></th></tr>' +
                '<tr><td>A</td></tr>' +
@@ -543,10 +608,61 @@ test( 'bug 32888 - Tables inside a tableheader cell', function() {
                'Child tables inside a headercell should not interfere with sortable headers (bug 32888)'
        );
        equals(
-               $('#32888-2').find('th.headerSort').length,
+               $( '#mw-bug-32888-2' ).find('th.headerSort').length,
                0,
                'The headers of child tables inside a headercell should not be sortable themselves (bug 32888)'
        );
 });
 
+
+var correctDateSorting1 = [
+       ['01 January 2010'],
+       ['05 February 2010'],
+       ['16 January 2010'],
+];
+
+var correctDateSortingSorted1 = [
+       ['01 January 2010'],
+       ['16 January 2010'],
+       ['05 February 2010'],
+];
+
+tableTest(
+       'Correct date sorting I',
+       ['date'],
+       correctDateSorting1,
+       correctDateSortingSorted1,
+       function ( $table ) {
+               mw.config.set( 'wgDefaultDateFormat', 'mdy' );
+
+               $table.tablesorter();
+               $table.find( '.headerSort:eq(0)' ).click();
+       }
+);
+
+var correctDateSorting2 = [
+       ['January 01 2010'],
+       ['February 05 2010'],
+       ['January 16 2010'],
+];
+
+var correctDateSortingSorted2 = [
+       ['January 01 2010'],
+       ['January 16 2010'],
+       ['February 05 2010'],
+];
+
+tableTest(
+       'Correct date sorting II',
+       ['date'],
+       correctDateSorting2,
+       correctDateSortingSorted2,
+       function ( $table ) {
+               mw.config.set( 'wgDefaultDateFormat', 'dmy' );
+
+               $table.tablesorter();
+               $table.find( '.headerSort:eq(0)' ).click();
+       }
+);
+
 })( jQuery );
index b834aeb..9913fb9 100644 (file)
@@ -229,19 +229,27 @@ test( 'All-dressed URI with everything', function () {
 
 test( 'Cloning', function () {
        var original, clone;
-       expect( 5 );
+       expect( 6 );
 
-       original = new mw.Uri( 'http://en.wiki.local/w/api.php?action=query&foo=bar' );
+       original = new mw.Uri( 'http://foo.example.org/index.php?one=1&two=2' );
        clone = original.clone();
 
        deepEqual( clone, original, 'clone has equivalent properties' );
        equal( original.toString(), clone.toString(), 'toString matches original' );
 
-       notStrictEqual( clone, original, 'clone is not the same when compared by reference' );
+       notStrictEqual( clone, original, 'clone is a different object when compared by reference' );
 
-       clone.host = 'fr.wiki.local';
+       clone.host = 'bar.example.org';
        notEqual( original.host, clone.host, 'manipulating clone did not effect original' );
-       notEqual( original.toString(), clone.toString(), 'toString no longer matches original' );
+       notEqual( original.toString(), clone.toString(), 'Stringified url no longer matches original' );
+
+       clone.query.three = 3;
+
+       deepEqual(
+               original.query,
+               { 'one': '1', 'two': '2' },
+               'Properties is deep cloned (bug 37708)'
+       );
 } );
 
 test( 'Constructing mw.Uri from plain object', function () {
index 2abe016..481a5bb 100644 (file)
 module( 'mediawiki.jqueryMsg' );
 
-test( '-- Initial check', function() {
+test( '-- Initial check', function () {
        expect( 1 );
        ok( mw.jqueryMsg, 'mw.jqueryMsg defined' );
 } );
 
-test( 'mw.jqueryMsg Plural', function() {
-       expect( 5 );
+test( 'mw.jqueryMsg Plural', function () {
+       expect( 3 );
        var parser = mw.jqueryMsg.getMessageFunction();
-       ok( parser, 'Parser Function initialized' );
-       ok( mw.messages.set( 'plural-msg', 'Found $1 {{PLURAL:$1|item|items}}' ), 'mw.messages.set: Register' );
-       equal( parser( 'plural-msg', 0 ) , 'Found 0 items', 'Plural test for english with zero as count' );
-       equal( parser( 'plural-msg', 1 ) , 'Found 1 item', 'Singular test for english' );
-       equal( parser( 'plural-msg', 2 ) , 'Found 2 items', 'Plural test for english' );
+
+       mw.messages.set( 'plural-msg', 'Found $1 {{PLURAL:$1|item|items}}' );
+       equal( parser( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
+       equal( parser( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
+       equal( parser( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
 } );
 
 
-test( 'mw.jqueryMsg Gender', function() {
-       expect( 16 );
-       //TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
-       var user = mw.user;
+test( 'mw.jqueryMsg Gender', function () {
+       expect( 11 );
+       // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
+       // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
+       var user = mw.user,
+               parser = mw.jqueryMsg.getMessageFunction();
+
+       // The values here are not significant,
+       // what matters is which of the values is choosen by the parser
+       mw.messages.set( 'gender-msg', '$1: {{GENDER:$2|blue|pink|green}}' );
+
        user.options.set( 'gender', 'male' );
-       var parser = mw.jqueryMsg.getMessageFunction();
-       ok( parser, 'Parser Function initialized' );
-       //TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
-       ok( mw.messages.set( 'gender-msg', '$1 reverted {{GENDER:$2|his|her|their}} last edit' ), 'mw.messages.set: Register' );
-       equal( parser( 'gender-msg', 'Bob', 'male' ) , 'Bob reverted his last edit', 'Gender masculine' );
-       equal( parser( 'gender-msg', 'Bob', user ) , 'Bob reverted his last edit', 'Gender masculine' );
+       equal(
+               parser( 'gender-msg', 'Bob', 'male' ),
+               'Bob: blue',
+               'Masculine from string "male"'
+       );
+       equal(
+               parser( 'gender-msg', 'Bob', user ),
+               'Bob: blue',
+               'Masculine from mw.user object'
+       );
+
        user.options.set( 'gender', 'unknown' );
-       equal( parser( 'gender-msg', 'They', user ) , 'They reverted their last edit', 'Gender neutral or unknown' );
-       equal( parser( 'gender-msg', 'Alice', 'female' ) , 'Alice reverted her last edit', 'Gender feminine' );
-       equal( parser( 'gender-msg', 'User' ) , 'User reverted their last edit', 'Gender neutral' );
-       equal( parser( 'gender-msg', 'User', 'unknown' ) , 'User reverted their last edit', 'Gender neutral' );
-       ok( mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}} reverted last $2 {{PLURAL:$2|edit|edits}}' ), 'mw.messages.set: Register' );
-       equal( parser( 'gender-msg-one-form', 'male', 10 ) , 'User reverted last 10 edits', 'Gender neutral and plural form' );
-       equal( parser( 'gender-msg-one-form', 'female', 1 ) , 'User reverted last 1 edit', 'Gender neutral and singular form' );
-       ok( mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' ), 'mw.messages.set: Register' );
-       equal( parser( 'gender-msg-lowercase', 'male' ) , 'he is awesome', 'Gender masculine' );
-       equal( parser( 'gender-msg-lowercase', 'female' ) , 'she is awesome', 'Gender feminine' );
-       ok( mw.messages.set( 'gender-msg-wrong', '{{gender}} is awesome' ), 'mw.messages.set: Register' );
-       equal( parser( 'gender-msg-wrong', 'female' ) , ' is awesome', 'Wrong syntax used, but ignore the {{gender}}' );
+       equal(
+               parser( 'gender-msg', 'Foo', user ),
+               'Foo: green',
+               'Neutral from mw.user object' );
+       equal(
+               parser( 'gender-msg', 'Alice', 'female' ),
+               'Alice: pink',
+               'Feminine from string "female"' );
+       equal(
+               parser( 'gender-msg', 'User' ),
+               'User: green',
+               'Neutral when no parameter given' );
+       equal(
+               parser( 'gender-msg', 'User', 'unknown' ),
+               'User: green',
+               'Neutral from string "unknown"'
+       );
+
+       mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' );
+
+       equal(
+               parser( 'gender-msg-one-form', 'male', 10 ),
+               'User: 10 edits',
+               'Gender neutral and plural form'
+       );
+       equal(
+               parser( 'gender-msg-one-form', 'female', 1 ),
+               'User: 1 edit',
+               'Gender neutral and singular form'
+       );
+
+       mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' );
+       equal(
+               parser( 'gender-msg-lowercase', 'male' ),
+               'he is awesome',
+               'Gender masculine'
+       );
+       equal(
+               parser( 'gender-msg-lowercase', 'female' ),
+               'she is awesome',
+               'Gender feminine'
+       );
+
+       mw.messages.set( 'gender-msg-wrong', '{{gender}} test' );
+       equal(
+               parser( 'gender-msg-wrong', 'female' ),
+               ' test',
+               'Invalid syntax should result in {{gender}} simply being stripped away'
+       );
 } );
 
 
-test( 'mw.jqueryMsg Grammar', function() {
-       expect( 5 );
+test( 'mw.jqueryMsg Grammar', function () {
+       expect( 2 );
        var parser = mw.jqueryMsg.getMessageFunction();
-       ok( parser, 'Parser Function initialized' );
-       // Hope the grammar form grammar_case_foo is not valid in any language
-       ok( mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' ), 'mw.messages.set: Register' );
-       equal( parser( 'grammar-msg' ) , 'Przeszukaj ' + mw.config.get( 'wgSiteName' ) , 'Grammar Test with sitename' );
-       ok( mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' ), 'mw.messages.set: Register' );
-       equal( parser( 'grammar-msg-wrong-syntax' ) , 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
+
+       // Assume the grammar form grammar_case_foo is not valid in any language
+       mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' );
+       equal( parser( 'grammar-msg' ), 'Przeszukaj ' + mw.config.get( 'wgSiteName' ), 'Grammar Test with sitename' );
+
+       mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' );
+       equal( parser( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
 } );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js
new file mode 100644 (file)
index 0000000..5d67a6e
--- /dev/null
@@ -0,0 +1,395 @@
+var liveLangData = mw.language.data.values;
+QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment({
+       setup: function () {
+               // New independent copy for this test
+               mw.language.data = $.extend( {}, liveLangData, true );
+       },
+       teardown: function () {
+               // Restore original
+               mw.language.data = liveLangData;
+       }
+}) );
+
+QUnit.test( 'mw.language getData and setData', function ( assert ) {
+       QUnit.expect( 2 );
+
+       mw.language.setData( 'en', 'testkey', 'testvalue' );
+       assert.equal(  mw.language.getData( 'en', 'testkey' ), 'testvalue', 'Getter setter test for mw.language' );
+       assert.equal(  mw.language.getData( 'en', 'invalidkey' ), undefined, 'Getter setter test for mw.language with invalid key' );
+} );
+
+function grammarTest( langCode, test ) {
+       // The test works only if the content language is opt.language
+       // because it requires [lang].js to be loaded.
+       QUnit.test( 'Grammar test for lang=' + langCode, function ( assert ) {
+               QUnit.expect( test.length );
+
+               for ( var i = 0 ; i < test.length; i++ ) {
+                       assert.equal(
+                               mw.language.convertGrammar( test[i].word, test[i].grammarForm ),
+                               test[i].expected,
+                               test[i].description
+                       );
+               }
+       });
+}
+
+var grammarTests = {
+       bs: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 's word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokativ',
+                       expected: 'o word',
+                       description: 'Grammar test for lokativ case'
+               }
+       ],
+
+       he: [
+               {
+                       word: "ויקיפדיה",
+                       grammarForm: 'prefixed',
+                       expected: "וויקיפדיה",
+                       description: 'Duplicate the "Waw" if prefixed'
+               },
+               {
+                       word: "וולפגנג",
+                       grammarForm: 'prefixed',
+                       expected: "וולפגנג",
+                       description: 'Duplicate the "Waw" if prefixed, but not if it is already duplicated.'
+               },
+               {
+                       word: "הקובץ",
+                       grammarForm: 'prefixed',
+                       expected: "קובץ",
+                       description: 'Remove the "He" if prefixed'
+               },
+               {
+                       word: 'Wikipedia',
+                       grammarForm: 'תחילית',
+                       expected: '־Wikipedia',
+                       description: 'GAdd a hyphen (maqaf) before non-Hebrew letters'
+               },
+               {
+                       word: '1995',
+                       grammarForm: 'תחילית',
+                       expected: '־1995',
+                       description: 'Add a hyphen (maqaf) before numbers'
+               }
+       ],
+
+       hsb: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 'z word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokatiw',
+                       expected: 'wo word',
+                       description: 'Grammar test for lokatiw case'
+               }
+       ],
+
+       dsb: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 'z word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokatiw',
+                       expected: 'wo word',
+                       description: 'Grammar test for lokatiw case'
+               }
+       ],
+
+       hy: [
+               {
+                       word: 'Մաունա',
+                       grammarForm: 'genitive',
+                       expected: 'Մաունայի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'հետո',
+                       grammarForm: 'genitive',
+                       expected: 'հետոյի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'գիրք',
+                       grammarForm: 'genitive',
+                       expected: 'գրքի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'ժամանակի',
+                       grammarForm: 'genitive',
+                       expected: 'ժամանակիի',
+                       description: 'Grammar test for genitive case'
+               }
+       ],
+
+       fi: [
+               {
+                       word: 'talo',
+                       grammarForm: 'genitive',
+                       expected: 'talon',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'linux',
+                       grammarForm: 'genitive',
+                       expected: 'linuxin',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'elative',
+                       expected: 'talosta',
+                       description: 'Grammar test for elative case'
+               },
+               {
+                       word: 'pastöroitu',
+                       grammarForm: 'partitive',
+                       expected: 'pastöroitua',
+                       description: 'Grammar test for partitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'partitive',
+                       expected: 'taloa',
+                       description: 'Grammar test for partitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'illative',
+                       expected: 'taloon',
+                       description: 'Grammar test for illative case'
+               },
+               {
+                       word: 'linux',
+                       grammarForm: 'inessive',
+                       expected: 'linuxissa',
+                       description: 'Grammar test for inessive case'
+               }
+       ],
+
+       ru: [
+               {
+                       word: 'тесть',
+                       grammarForm: 'genitive',
+                       expected: 'тестя',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'привилегия',
+                       grammarForm: 'genitive',
+                       expected: 'привилегии',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'установка',
+                       grammarForm: 'genitive',
+                       expected: 'установки',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'похоти',
+                       grammarForm: 'genitive',
+                       expected: 'похотей',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'доводы',
+                       grammarForm: 'genitive',
+                       expected: 'доводов',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'песчаник',
+                       grammarForm: 'genitive',
+                       expected: 'песчаника',
+                       description: 'Grammar test for genitive case'
+               }
+       ],
+
+
+       hu: [
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'rol',
+                       expected: 'Wikipédiáról',
+                       description: 'Grammar test for rol case'
+               },
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'ba',
+                       expected: 'Wikipédiába',
+                       description: 'Grammar test for ba case'
+               },
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'k',
+                       expected: 'Wikipédiák',
+                       description: 'Grammar test for k case'
+               }
+       ],
+
+       ga: [
+               {
+                       word: 'an Domhnach',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Domhnaigh',
+                       description: 'Grammar test for ainmlae case'
+               },
+               {
+                       word: 'an Luan',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Luain',
+                       description: 'Grammar test for ainmlae case'
+               },
+               {
+                       word: 'an Satharn',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Sathairn',
+                       description: 'Grammar test for ainmlae case'
+               }
+       ],
+
+       uk: [
+               {
+                       word: 'тесть',
+                       grammarForm: 'genitive',
+                       expected: 'тестя',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Вікіпедія',
+                       grammarForm: 'genitive',
+                       expected: 'Вікіпедії',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'установка',
+                       grammarForm: 'genitive',
+                       expected: 'установки',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'похоти',
+                       grammarForm: 'genitive',
+                       expected: 'похотей',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'доводы',
+                       grammarForm: 'genitive',
+                       expected: 'доводов',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'песчаник',
+                       grammarForm: 'genitive',
+                       expected: 'песчаника',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Вікіпедія',
+                       grammarForm: 'accusative',
+                       expected: 'Вікіпедію',
+                       description: 'Grammar test for accusative case'
+               }
+       ],
+
+       sl: [
+               {
+                       word: 'word',
+                       grammarForm: 'orodnik',
+                       expected: 'z word',
+                       description: 'Grammar test for orodnik case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'mestnik',
+                       expected: 'o word',
+                       description: 'Grammar test for mestnik case'
+               }
+       ],
+
+       os: [
+               {
+                       word: 'бæстæ',
+                       grammarForm: 'genitive',
+                       expected: 'бæсты',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'бæстæ',
+                       grammarForm: 'allative',
+                       expected: 'бæстæм',
+                       description: 'Grammar test for allative case'
+               },
+               {
+                       word: 'Тигр',
+                       grammarForm: 'dative',
+                       expected: 'Тигрæн',
+                       description: 'Grammar test for dative case'
+               },
+               {
+                       word: 'цъити',
+                       grammarForm: 'dative',
+                       expected: 'цъитийæн',
+                       description: 'Grammar test for dative case'
+               },
+               {
+                       word: 'лæппу',
+                       grammarForm: 'genitive',
+                       expected: 'лæппуйы',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: '2011',
+                       grammarForm: 'equative',
+                       expected: '2011-ау',
+                       description: 'Grammar test for equative case'
+               }
+       ],
+
+       la: [
+               {
+                       word: 'Translatio',
+                       grammarForm: 'genitive',
+                       expected: 'Translationis',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Translatio',
+                       grammarForm: 'accusative',
+                       expected: 'Translationem',
+                       description: 'Grammar test for accusative case'
+               },
+               {
+                       word: 'Translatio',
+                       grammarForm: 'ablative',
+                       expected: 'Translatione',
+                       description: 'Grammar test for ablative case'
+               }
+       ]
+};
+
+$.each( grammarTests, function ( langCode, test ) {
+       if ( langCode === mw.config.get( 'wgUserLanguage' ) ) {
+               grammarTest( langCode, test );
+       }
+});
index 2f11521..00fcf38 100644 (file)
@@ -343,43 +343,50 @@ test( 'mw.loader missing dependency', function() {
        );
 } );
 
-test( 'mw.loader real missing dependency', function() {
-       expect( 6 );
+test( 'mw.loader dependency handling', function () {
+       expect( 5 );
 
        mw.loader.addSource(
-               'test',
-               {'loadScript' : QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/testloader.php' )}
+               'testloader',
+               {
+                       loadScript: QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/load.mock.php' )
+               }
        );
+
        mw.loader.register( [
-               ['test.missing', '0', [], null, 'test'], ['test.missing2', '0', [], null, 'test'],
-               ['test.use_missing', '0', ['test.missing'], null, 'test'],
-               ['test.use_missing2', '0', ['test.missing2'], null, 'test']
+               // [module, version, dependencies, group, source]
+               ['testMissing', '1', [], null, 'testloader'],
+               ['testUsesMissing', '1', ['testMissing'], null, 'testloader'],
+               ['testUsesNestedMissing', '1', ['testUsesMissing'], null, 'testloader']
        ] );
 
+       function verifyModuleStates() {
+               equal( mw.loader.getState( 'testMissing' ), 'missing', 'Module not known to server must have state "missing"' );
+               equal( mw.loader.getState( 'testUsesMissing' ), 'error', 'Module with missing dependency must have state "error"' );
+               equal( mw.loader.getState( 'testUsesNestedMissing' ), 'error', 'Module with indirect missing dependency must have state "error"' );
+       }
+
        stop();
-       // Asynch ahead
 
-       mw.loader.load( ['test.use_missing'] );
+       mw.loader.using( ['testUsesNestedMissing'],
+               function () {
+                       ok( false, 'Error handler should be invoked.' );
+                       ok( true ); // Dummy to reach QUnit expect()
 
-       function verifyModuleStates() {
-               strictEqual( mw.loader.getState( 'test.missing' ), 'missing', 'Module "test.missing" must have state "missing"' );
-               strictEqual( mw.loader.getState( 'test.missing2' ), 'missing', 'Module "test.missing2" must have state "missing"' );
-               strictEqual( mw.loader.getState( 'test.use_missing' ), 'error', 'Module "test.use_missing" must have state "error"' );
-               strictEqual( mw.loader.getState( 'test.use_missing2' ), 'error', 'Module "test.use_missing2" must have state "error"' );
-       }
+                       verifyModuleStates();
 
-       mw.loader.using( ['test.use_missing2'],
-               function() {
                        start();
-                       ok( false, "Success called wrongly." );
-                       ok( true , "QUnit expected() count dummy" );
-                       verifyModuleStates();
                },
-               function( e, dependencies ) {
-                       start();
-                       ok( true, "Error handler called correctly." );
-                       deepEqual( dependencies, ['test.missing2'], "Dependencies correct." );
+               function ( e, badmodules ) {
+                       ok( true, 'Error handler should be invoked.' );
+                       // As soon as server spits out state('testMissing', 'missing');
+                       // it will bubble up and trigger the error callback.
+                       // Therefor the badmodules array is not testUsesMissing or testUsesNestedMissing.
+                       deepEqual( badmodules, ['testMissing'], 'Bad modules as expected.' );
+
                        verifyModuleStates();
+
+                       start();
                }
        );
 } );
index d396b04..86beb5f 100644 (file)
@@ -141,20 +141,33 @@ test( '$content', function() {
  * one element can have a given id. 
  */
 test( 'addPortletLink', function () {
-       var pTestTb, vectorTabs, tbRL, tbMW, $tbMW, tbRLDM, caFoo;
-       expect(7);
+       var pTestTb, vectorTabs, tbRL, cuQuux, $cuQuux, tbMW, $tbMW, tbRLDM, caFoo;
+       expect( 8 );
 
        pTestTb = '\
        <div class="portlet" id="p-test-tb">\
+               <h5>Toolbox</h5>\
                <ul class="body"></ul>\
        </div>';
+       pCustom = '\
+       <div class="portlet" id="p-test-custom">\
+               <h5>Views</h5>\
+               <ul class="body">\
+                       <li id="c-foo"><a href="#">Foo</a></li>\
+                       <li id="c-barmenu">\
+                               <ul>\
+                                       <li id="c-bar-baz"><a href="#">Baz</a></a>\
+                               </ul>\
+                       </li>\
+               </ul>\
+       </div>';
        vectorTabs = '\
        <div id="p-test-views" class="vectorTabs">\
                <h5>Views</h5>\
                <ul></ul>\
        </div>';
 
-       $('#qunit-fixture').append(pTestTb, vectorTabs);
+       $( '#qunit-fixture' ).append( pTestTb, pCustom, vectorTabs );
 
        tbRL = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/ResourceLoader',
                'ResourceLoader', 't-rl', 'More info about ResourceLoader on MediaWiki.org ', 'l' );
@@ -170,6 +183,15 @@ test( 'addPortletLink', function () {
        equal( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-test-tb', 'Link was inserted within correct portlet' );
        equal( $tbMW.next().attr( 'id' ), 't-rl', 'Link is in the correct position (by passing nextnode)' );
 
+       cuQuux = mw.util.addPortletLink( 'p-test-custom', '#', 'Quux' );
+       $cuQuux = $(cuQuux);
+
+       equal(
+               $( '#p-test-custom #c-barmenu ul li' ).length,
+               1,
+               'addPortletLink did not add the item to all <ul> elements in the portlet (bug 35082)'
+       );
+
        tbRLDM = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                'Default modules', 't-rldm', 'List of all default modules ', 'd', '#t-rl' );