Merge "Minor tweaks to installer text"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 17 Jan 2013 13:03:36 +0000 (13:03 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 17 Jan 2013 13:03:36 +0000 (13:03 +0000)
466 files changed:
.gitignore
CREDITS
RELEASE-NOTES-1.21
UPGRADE
bin/ulimit4.sh [deleted file]
bin/ulimit5.sh [new file with mode: 0644]
docs/hooks.txt
includes/ArrayUtils.php [new file with mode: 0644]
includes/Article.php
includes/AutoLoader.php
includes/Block.php
includes/ChangesList.php
includes/DefaultSettings.php
includes/EditPage.php
includes/FormOptions.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/HistoryBlob.php
includes/ImagePage.php
includes/Linker.php
includes/Message.php
includes/MessageBlobStore.php
includes/OutputPage.php
includes/Preferences.php
includes/ProtectionForm.php
includes/ScopedCallback.php [new file with mode: 0644]
includes/SkinLegacy.php
includes/SkinTemplate.php
includes/SpecialPageFactory.php
includes/Timestamp.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebRequest.php
includes/Wiki.php
includes/WikiPage.php
includes/ZhConversion.php
includes/actions/HistoryAction.php
includes/actions/InfoAction.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiCreateAccount.php [new file with mode: 0644]
includes/api/ApiEditPage.php
includes/api/ApiFeedContributions.php
includes/api/ApiFeedWatchlist.php
includes/api/ApiMain.php
includes/api/ApiMove.php
includes/api/ApiOptions.php
includes/api/ApiPageSet.php
includes/api/ApiParse.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.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/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySearch.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiQueryWatchlistRaw.php
includes/api/ApiUpload.php
includes/cache/HTMLCacheUpdate.php
includes/cache/SquidUpdate.php
includes/context/ContextSource.php
includes/context/DerivativeContext.php
includes/context/IContextSource.php
includes/context/RequestContext.php
includes/db/DatabaseMysql.php
includes/db/IORMTable.php
includes/db/LoadBalancer.php
includes/db/ORMTable.php
includes/diff/DifferenceEngine.php
includes/filebackend/FSFileBackend.php
includes/filebackend/lockmanager/MemcLockManager.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.i18n.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/SqliteUpdater.php
includes/job/JobQueue.php
includes/job/JobQueueDB.php
includes/job/JobQueueGroup.php
includes/job/jobs/NullJob.php
includes/logging/LogFormatter.php
includes/objectcache/APCBagOStuff.php
includes/objectcache/BagOStuff.php
includes/objectcache/DBABagOStuff.php
includes/objectcache/EhcacheBagOStuff.php
includes/objectcache/EmptyBagOStuff.php
includes/objectcache/HashBagOStuff.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/MemcachedClient.php
includes/objectcache/MemcachedPeclBagOStuff.php
includes/objectcache/MultiWriteBagOStuff.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/objectcache/WinCacheBagOStuff.php
includes/objectcache/XCacheBagOStuff.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/Parser_LinkHooks.php
includes/parser/Tidy.php
includes/profiler/Profiler.php
includes/profiler/ProfilerSimpleText.php
includes/profiler/ProfilerSimpleTrace.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/site/SiteArray.php
includes/site/Sites.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialListredirects.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialWhatlinkshere.php
includes/upload/AssembleUploadChunks.php
includes/upload/PublishStashedFile.php [new file with mode: 0644]
includes/upload/UploadBase.php
includes/upload/UploadFromStash.php
includes/zhtable/.gitignore [deleted file]
includes/zhtable/Makefile [deleted file]
includes/zhtable/Makefile.py [deleted file]
includes/zhtable/README [deleted file]
includes/zhtable/printutf8.c [deleted file]
includes/zhtable/simp2trad.manual [deleted file]
includes/zhtable/simp2trad_noconvert.manual [deleted file]
includes/zhtable/simp2trad_supp_set.manual [deleted file]
includes/zhtable/simpphrases.manual [deleted file]
includes/zhtable/simpphrases_exclude.manual [deleted file]
includes/zhtable/toCN.manual [deleted file]
includes/zhtable/toHK.manual [deleted file]
includes/zhtable/toSG.manual [deleted file]
includes/zhtable/toSimp.manual [deleted file]
includes/zhtable/toTW.manual [deleted file]
includes/zhtable/toTrad.manual [deleted file]
includes/zhtable/trad2simp.manual [deleted file]
includes/zhtable/trad2simp_noconvert.manual [deleted file]
includes/zhtable/trad2simp_supp_set.manual [deleted file]
includes/zhtable/trad2simp_supp_unset.manual [deleted file]
includes/zhtable/tradphrases.manual [deleted file]
includes/zhtable/tradphrases_exclude.manual [deleted file]
languages/Language.php
languages/LanguageConverter.php
languages/classes/LanguageZh_hans.php
languages/data/plurals-mediawiki.xml
languages/messages/MessagesAce.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAln.php
languages/messages/MessagesAls.php [deleted file]
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBat_smg.php [deleted file]
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBe_x_old.php [deleted file]
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesDv.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFiu_vro.php [deleted file]
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGrc.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHa.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKy.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesNo.php [deleted file]
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPrg.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesRgn.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_rup.php [deleted file]
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSei.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSimple.php [deleted file]
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTg_latn.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVmf.php
languages/messages/MessagesVo.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh_classical.php [deleted file]
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/messages/MessagesZh_min_nan.php [deleted file]
languages/messages/MessagesZh_yue.php [deleted file]
maintenance/archives/patch-ufg_group-length-increase-255.sql [new file with mode: 0644]
maintenance/archives/patch-ufg_group-length-increase.sql [deleted file]
maintenance/archives/patch-ug_group-length-increase-255.sql [new file with mode: 0644]
maintenance/archives/patch-ug_group-length-increase.sql [deleted file]
maintenance/archives/patch-user_former_groups.sql
maintenance/fixSlaveDesync.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/language/zhtable/.gitignore [new file with mode: 0644]
maintenance/language/zhtable/Makefile [new file with mode: 0644]
maintenance/language/zhtable/Makefile.py [new file with mode: 0755]
maintenance/language/zhtable/README [new file with mode: 0644]
maintenance/language/zhtable/simp2trad.manual [new file with mode: 0644]
maintenance/language/zhtable/simp2trad_noconvert.manual [new file with mode: 0644]
maintenance/language/zhtable/simp2trad_supp_set.manual [new file with mode: 0644]
maintenance/language/zhtable/simpphrases.manual [new file with mode: 0644]
maintenance/language/zhtable/simpphrases_exclude.manual [new file with mode: 0644]
maintenance/language/zhtable/toCN.manual [new file with mode: 0644]
maintenance/language/zhtable/toHK.manual [new file with mode: 0644]
maintenance/language/zhtable/toSG.manual [new file with mode: 0644]
maintenance/language/zhtable/toSimp.manual [new file with mode: 0644]
maintenance/language/zhtable/toTW.manual [new file with mode: 0644]
maintenance/language/zhtable/toTrad.manual [new file with mode: 0644]
maintenance/language/zhtable/trad2simp.manual [new file with mode: 0644]
maintenance/language/zhtable/trad2simp_noconvert.manual [new file with mode: 0644]
maintenance/language/zhtable/trad2simp_supp_set.manual [new file with mode: 0644]
maintenance/language/zhtable/trad2simp_supp_unset.manual [new file with mode: 0644]
maintenance/language/zhtable/tradphrases.manual [new file with mode: 0644]
maintenance/language/zhtable/tradphrases_exclude.manual [new file with mode: 0644]
maintenance/mcc.php
maintenance/mctest.php
maintenance/oracle/archives/patch-ufg_group-length-increase-255.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-ufg_group-length-increase.sql [deleted file]
maintenance/oracle/archives/patch-ug_group-length-increase-255.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-ug_group-length-increase.sql [deleted file]
maintenance/oracle/archives/patch-user_former_groups.sql
maintenance/oracle/tables.sql
maintenance/orphans.php
maintenance/purgeList.php
maintenance/rebuildLocalisationCache.php
maintenance/refreshLinks.php
maintenance/runJobs.php
maintenance/showJobs.php
maintenance/sqlite/archives/patch-ufg_group-length-increase-255.sql [new file with mode: 0644]
maintenance/sqlite/archives/patch-ufg_group-length-increase.sql [deleted file]
maintenance/sqlite/archives/patch-ug_group-length-increase-255.sql [new file with mode: 0644]
maintenance/sqlite/archives/patch-ug_group-length-increase.sql [deleted file]
maintenance/storage/compressOld.php
maintenance/tables.sql
resources/Resources.php
resources/mediawiki.action/mediawiki.action.edit.preview.js
resources/mediawiki.action/mediawiki.action.view.dblClickEdit.js
resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js
resources/mediawiki/mediawiki.jqueryMsg.js
resources/mediawiki/mediawiki.jqueryMsg.peg
skins/CologneBlue.php
skins/Modern.php
skins/MonoBook.php
skins/Vector.php
skins/common/commonPrint.css
skins/vector/print.css [new file with mode: 0644]
tests/parser/parserTests.txt
tests/phpunit/Makefile
tests/phpunit/MediaWikiPHPUnitCommand.php
tests/phpunit/includes/TemplateCategoriesTest.php
tests/phpunit/includes/TimestampTest.php
tests/phpunit/includes/api/ApiAccountCreationTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiOptionsTest.php
tests/phpunit/includes/db/DatabaseSqliteTest.php
tests/phpunit/includes/db/ORMTableTest.php
tests/phpunit/includes/objectcache/BagOStuffTest.php [new file with mode: 0644]
tests/phpunit/languages/LanguageBhTest.php [deleted file]
tests/phpunit/languages/LanguageBhoTest.php [new file with mode: 0644]
tests/phpunit/languages/LanguageTest.php
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js

index a47a454..004ecf4 100644 (file)
@@ -1,6 +1,9 @@
 # Repository management
 .svn
 
+# git-deploy status file:
+/.deploy
+
 # Editors
 *.kate-swp
 *~
diff --git a/CREDITS b/CREDITS
index fa5c1e5..ca5d6d7 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -75,6 +75,7 @@ following names for their contribution to the product.
 * Siebrand Mazeland
 * SQL
 * Soxred93
+* Szymon Świerkosz
 * Thomas Bleher
 * Tim Starling
 * Timo Tijhof
@@ -85,6 +86,7 @@ following names for their contribution to the product.
 * Yuri Astrakhan
 
 == Patch Contributors ==
+* Aaron Pramana
 * Agbad
 * Ahmad Sherif
 * Alejandro Mery
@@ -92,10 +94,8 @@ following names for their contribution to the product.
 * Amalthea
 * Amir E. Aharoni
 * Andrew Dunbar
-* Anomie
 * Antonio Ospite
 * Asier Lostalé
-* Aude
 * Azliq7
 * Bagariavivek
 * Bartosz Dziewoński
@@ -117,6 +117,7 @@ following names for their contribution to the product.
 * Dan Collins
 * Dan Nessett
 * Daniel Arnold
+* Daniel Werner
 * David Baumgarten
 * Denny Vrandecic
 * Edward Z. Yang
@@ -130,7 +131,6 @@ following names for their contribution to the product.
 * Gilles van den Hoven
 * Grunny
 * Harry Burt
-* Hoo man
 * Ireas
 * Jacob Block
 * Jan Gerber
@@ -141,7 +141,9 @@ following names for their contribution to the product.
 * Jimmy Xu
 * Jonathan Wiltshire
 * John N
+* Jure Kajzer
 * Karun Dambiec
+* Katie Filbert
 * Kevin Israel
 * Kim Hyun-Joon
 * Lee Worden
@@ -157,7 +159,7 @@ following names for their contribution to the product.
 * Marcus Buck
 * Mark A. Pelletier
 * Mark Hershberger
-* Mark Homquilst
+* Mark Holmquist
 * Marooned
 * Mathias Ertl
 * Matthias Mullie
@@ -223,6 +225,7 @@ following names for their contribution to the product.
 * Van de Bugger
 * Ville Stadista
 * Vitaliy Filippov
+* Waldir Pimenta
 * William Demchick
 * Yusuke Matsubara
 * Yuvaraj Pandian T
index 896dfe4..cfa979a 100644 (file)
@@ -1,4 +1,3 @@
-
 Security reminder: MediaWiki does not require PHP's register_globals. If you
 have it on, turn it '''off''' if you can.
 
@@ -16,6 +15,7 @@ production.
 * (bug 39957) Added $wgUnwatchedPageThreshold, specifying minimum count
   of page watchers required for the number to be accessible to users
   without the unwatchedpages permission.
+* $wgBug34832TransitionalRollback has been removed.
 
 === New features in 1.21 ===
 * (bug 38110) Schema changes (adding or dropping tables, indicies and
@@ -60,12 +60,31 @@ production.
   debug mode: wfMsg, wfMsgNoTrans, wfMsgForContent, wfMsgForContentNoTrans,
   wfMsgReal, wfMsgGetKey, wfMsgHtml, wfMsgWikiHtml, wfMsgExt, wfEmptyMsg. Use
   the Message class, or the global method wfMessage.
+* Added $wgEnableCanonicalServerLink, off by default. If enabled, a
+  <link rel=canonical> tag is added to every page indicating the correct server
+  to use.
 * Debug message emitted by wfDebugLog() will now be prefixed with the group
   name when its logged to the default log file. That is the case whenever the
   group has no key in wgDebugLogGroups, that will help triage the default log.
 * (bug 24620) Add types to LogFormatter.
 * jQuery JSON upgraded from 2.3 to 2.4.0.
 * Added GetDoubleUnderscoreIDs hook, for modifying the list of magic words.
+* DatabaseUpdater class has two new methods to ease extensions schema changes:
+  dropExtensionIndex and renameExtensionIndex.
+* New preference type - 'api'. Preferences of this type are not shown on
+  Special:Preferences, but are still available via the action=options API.
+* (bug 39397) Hide rollback link if a user is the only contributor of the page.
+* $wgPageInfoTransclusionLimit limits the list size of transcluded articles
+  on the info action. Default is 50.
+* Added action=createaccount to allow user account creation.
+* (bug 40124) action=options API also allows for setting of arbitrary
+  preferences, provided that their names are prefixed with 'userjs-'. This
+  officially reenables the feature that was undocumented and defective
+  in MW 1.20 (saving preferences using Special:Preferences cleared any
+  additional fields) and which has been disabled in 1.20.1 as a part of
+  a security fix (bug 42202).
+* Added the ability to limit the wall clock time used by shell processes, 
+  as well as the CPU time. Configurable with $wgMaxShellWallClockTime.
 
 === Bug fixes in 1.21 ===
 * (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
@@ -110,7 +129,9 @@ production.
 * (bug 14901) Email notification mistakes log action for new page creation.
   Enotif no longer sends "page has been created" notifications for some log
   actions. The following events now have a correct message: page creation,
-  deletion, move, restore (undeletion), change (edit).
+  deletion, move, restore (undeletion), change (edit). Parameter
+  $CHANGEDORCREATED is deprecated in 'enotif_body' and scheduled for removal in
+  MediaWiki 1.23.
 * (bug 457) In the sidebar of Vector, CologneBlue, Monobook, and Monobook-based
   skins, the heading levels have been changed from (variously per skin)
   <h4>, <h5> or <h6> to only <h3>s, with a <h2> hidden heading above them.
@@ -127,7 +148,10 @@ production.
 * (bug 41733) Hide "New user message" (.usermessage) element from printable view.
 * (bug 39062) Special:Contributions will display changes that don't have
   a parent id instead of just an empty bullet item.
+* (bug 37209) "LinkCache doesn't currently know about this title" error fixed.
 * wfMerge() now works if $wgDiff3 contains spaces
+* (bug 43052) mediawiki.action.view.dblClickEdit.dblClickEdit should trigger
+  ca-edit click instead opening URL directly.
 
 === API changes in 1.21 ===
 * prop=revisions can now report the contentmodel and contentformat.
@@ -151,6 +175,9 @@ production.
 * BREAKING CHANGE: list=logevents output format changed for details of some log
   types. Specifically, details that were formerly reported under a key like
   "4::foo" will now be reported under a key of simply "foo".
+* BREAKING CHANGE: '??_badcontinue' error code was changed to '??badcontinue'
+  for all query modules.
+* ApiQueryBase adds 'badcontinue' error code if module has 'continue' parameter.
 
 === Languages updated in 1.21 ===
 
diff --git a/UPGRADE b/UPGRADE
index 5e92806..2c6df98 100644 (file)
--- a/UPGRADE
+++ b/UPGRADE
@@ -39,8 +39,8 @@ Download the files for the new version of the software. These are available
 as a compressed "tar" archive from the Wikimedia Download Service
 (http://download.wikimedia.org/mediawiki).
 
-You can also obtain the new files directly from our Subversion source code
-repository, via a checkout or export operation.
+You can also obtain the new files directly from our Git source code
+repository.
 
 Replace the existing MediaWiki files with the new. You should preserve the
 LocalSettings.php file and the "extensions" and "images" directories.
diff --git a/bin/ulimit4.sh b/bin/ulimit4.sh
deleted file mode 100755 (executable)
index 2a840d2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-ulimit -t $1 -v $2 -f $3
-eval "$4"
diff --git a/bin/ulimit5.sh b/bin/ulimit5.sh
new file mode 100644 (file)
index 0000000..3f24172
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+if [ "$1" -gt 0 ]; then
+       ulimit -t "$1"
+fi
+if [ "$2" -gt 0 ]; then
+       ulimit -v "$2"
+fi
+if [ "$3" -gt 0 ]; then
+       ulimit -f "$3"
+fi
+if [ "$4" -gt 0 ]; then
+       timeout $4 /bin/bash -c "$5"
+       STATUS="$?"
+       if [ "$STATUS" == 124 ]; then
+               echo "ulimit5.sh: timed out." 1>&2
+       fi
+       exit "$STATUS"
+else
+       eval "$5"
+fi
index abf1b80..8905d7e 100644 (file)
@@ -234,7 +234,9 @@ MediaWiki 1.4rc1.
 This is a list of known events and parameters; please add to it if you're going
 to add events to the MediaWiki code.
 
-'AbortAutoAccount': Return false to cancel automated local account creation, where normally authentication against an external auth plugin would be creating a local account.
+'AbortAutoAccount': Return false to cancel automated local account creation,
+where normally authentication against an external auth plugin would be creating
+a local account.
 $user: the User object about to be created (read-only, incomplete)
 &$abortMsg: out parameter: name of error message to be displayed to user
 
@@ -242,7 +244,7 @@ $user: the User object about to be created (read-only, incomplete)
 $autoblockip: The IP going to be autoblocked.
 $block: The block from which the autoblock is coming.
 
-'AbortDiffCache': Can be used to cancel the caching of a diff
+'AbortDiffCache': Can be used to cancel the caching of a diff.
 &$diffEngine: DifferenceEngine object
 
 'AbortEmailNotification': Can be used to cancel email notifications for an edit.
@@ -257,7 +259,7 @@ $password: the password being submitted, not yet checked for validity
           a machine API rather than the HTML user interface.
 &$msg: the message identifier for abort reason (new in 1.18, not available before 1.18)
 
-'AbortMove': allows to abort moving an article (title)
+'AbortMove': Allows to abort moving an article (title).
 $old: old title
 $nt: new title
 $user: user who is doing the move
@@ -268,27 +270,28 @@ $reason: the reason for the move (added in 1.13)
 $user: the User object about to be created (read-only, incomplete)
 &$msg: out parameter: HTML to display on abort
 
-'ActionBeforeFormDisplay': before executing the HTMLForm object
+'ActionBeforeFormDisplay': Before executing the HTMLForm object.
 $name: name of the action
 &$form: HTMLForm object
 $article: Article object
 
-'ActionModifyFormFields': before creating an HTMLForm object for a page action;
-       allows to change the fields on the form that will be generated
+'ActionModifyFormFields': Before creating an HTMLForm object for a page action;
+Allows to change the fields on the form that will be generated.
 $name: name of the action
 &$fields: HTMLForm descriptor array
 $article: Article object
 
-'AddNewAccount': after a user account is created
+'AddNewAccount': After a user account is created.
 $user: the User object that was created. (Parameter added in 1.7)
 $byEmail: true when account was created "by email" (added in 1.12)
 
-'AfterFinalPageOutput': At the end of OutputPage::output() but before
-final ob_end_flush() which will send the buffered output to the client.
-This allows for last-minute modification of the output within the buffer
-by using ob_get_clean().
+'AfterFinalPageOutput': At the end of OutputPage::output() but before final
+ob_end_flush() which will send the buffered output to the client. This allows
+for last-minute modification of the output within the buffer by using
+ob_get_clean().
+&$output: OutputPage object
 
-'AfterImportPage': When a page import is completed
+'AfterImportPage': When a page import is completed.
 $title: Title under which the revisions were imported
 $origTitle: Title provided by the XML file
 $revCount: Number of revisions in the XML file
@@ -304,166 +307,162 @@ $output: The OutputPage object where output() was called
 'AjaxAddScript': Called in output page just before the initialisation
 of the javascript ajax engine. The hook is only called when ajax
 is enabled ( $wgUseAjax = true; ).
+&$output: OutputPage object
 
-'AlternateEdit': before checking if a user can edit a page and
-before showing the edit form ( EditPage::edit() ). This is triggered
-on &action=edit.
-$EditPage: the EditPage object
+'AlternateEdit': Before checking if a user can edit a page and before showing
+the edit form ( EditPage::edit() ). This is triggered on &action=edit.
+$editPage: the EditPage object
 
-'AlternateEditPreview': before generating the preview of the page when editing
+'AlternateEditPreview': Before generating the preview of the page when editing
 ( EditPage::getPreviewText() ).
-$EditPage: the EditPage object
+$editPage: the EditPage object
 &$content: the Content object for the text field from the edit page
 &$previewHTML: Text to be placed into the page for the preview
 &$parserOutput: the ParserOutput object for the preview
 return false and set $previewHTML and $parserOutput to output custom page
 preview HTML.
 
-'AlternateUserMailer': Called before mail is sent so that mail could
-be logged (or something else) instead of using PEAR or PHP's mail().
-Return false to skip the regular method of sending mail.  Return a
-string to return a php-mail-error message containing the error.
-Returning true will continue with sending email in the regular way.
+'AlternateUserMailer': Called before mail is sent so that mail could be logged
+(or something else) instead of using PEAR or PHP's mail(). Return false to skip
+the regular method of sending mail.  Return a string to return a php-mail-error
+message containing the error. Returning true will continue with sending email
+in the regular way.
 $headers: Associative array of headers for the email
 $to: MailAddress object or array
 $from: From address
 $subject: Subject of the email
 $body: Body of the message
 
-'APIAfterExecute': after calling the execute() method of an API module.
-Use this to extend core API modules.
+'APIAfterExecute': After calling the execute() method of an API module. Use
+this to extend core API modules.
 &$module: Module object
 
-'ApiCheckCanExecute': Called during ApiMain::checkCanExecute. Use to
-further authenticate and authorize API clients before executing the
-module. Return false and set a message to cancel the request.
+'ApiCheckCanExecute': Called during ApiMain::checkCanExecute. Use to further
+authenticate and authorize API clients before executing the module. Return
+false and set a message to cancel the request.
 $module: Module object
 $user: Current user
 &$message: API usage message to die with, as a message key or array
 as accepted by ApiBase::dieUsageMsg.
 
-'APIEditBeforeSave': before saving a page with api.php?action=edit,
-after processing request parameters. Return false to let the request
-fail, returning an error message or an <edit result="Failure"> tag
-if $resultArr was filled.
-$EditPage : the EditPage object
+'APIEditBeforeSave': Before saving a page with api.php?action=edit, after
+processing request parameters. Return false to let the request fail, returning
+an error message or an <edit result="Failure"> tag if $resultArr was filled.
+$editPage : the EditPage object
 $text : the new text of the article (has yet to be saved)
 &$resultArr : data in this array will be added to the API result
 
-'APIGetAllowedParams': use this hook to modify a module's parameters.
+'APIGetAllowedParams': Use this hook to modify a module's parameters.
 &$module: ApiBase Module object
 &$params: Array of parameters
 
-'APIGetDescription': use this hook to modify a module's description
+'APIGetDescription': Use this hook to modify a module's description.
 &$module: ApiBase Module object
 &$desc: Array of descriptions
 
-'APIGetParamDescription': use this hook to modify a module's parameter
+'APIGetParamDescription': Use this hook to modify a module's parameter
 descriptions.
 &$module: ApiBase Module object
 &$desc: Array of parameter descriptions
 
-'APIGetResultProperties': use this hook to mofify the properties
-in a module's result.
+'APIGetResultProperties': Use this hook to mofify the propertiesin a module's
+result.
 &$module: ApiBase Module object
 &$properties: Array of properties
 
-'APIQueryAfterExecute': after calling the execute() method of an
+'APIQueryAfterExecute': After calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
 
-'APIQueryGeneratorAfterExecute': after calling the executeGenerator()
-method of an action=query submodule. Use this to extend core API modules.
+'APIQueryGeneratorAfterExecute': After calling the executeGenerator() method of
+an action=query submodule. Use this to extend core API modules.
 &$module: Module object
 &$resultPageSet: ApiPageSet object
 
-'APIQueryInfoTokens': use this hook to add custom tokens to prop=info.
-Every token has an action, which will be used in the intoken parameter
-and in the output (actiontoken="..."), and a callback function which
-should return the token, or false if the user isn't allowed to obtain
-it. The prototype of the callback function is func($pageid, $title)
-where $pageid is the page ID of the page the token is requested for
-and $title is the associated Title object. In the hook, just add
-your callback to the $tokenFunctions array and return true (returning
-false makes no sense)
+'APIQueryInfoTokens': Use this hook to add custom tokens to prop=info. Every
+token has an action, which will be used in the intoken parameter and in the
+output (actiontoken="..."), and a callback function which should return the
+token, or false if the user isn't allowed to obtain it. The prototype of the
+callback function is func($pageid, $title), where $pageid is the page ID of the
+page the token is requested for and $title is the associated Title object. In
+the hook, just add your callback to the $tokenFunctions array and return true
+(returning false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'APIQueryRevisionsTokens': use this hook to add custom tokens to prop=revisions.
-Every token has an action, which will be used in the rvtoken parameter
-and in the output (actiontoken="..."), and a callback function which
-should return the token, or false if the user isn't allowed to obtain
-it. The prototype of the callback function is func($pageid, $title, $rev)
-where $pageid is the page ID of the page associated to the revision the
-token is requested for, $title the associated Title object and $rev the
-associated Revision object. In the hook, just add your callback to the
-$tokenFunctions array and return true (returning false makes no sense)
+'APIQueryRevisionsTokens': Use this hook to add custom tokens to prop=revisions.
+Every token has an action, which will be used in the rvtoken parameter and in
+the output (actiontoken="..."), and a callback function which should return the
+token, or false if the user isn't allowed to obtain it. The prototype of the
+callback function is func($pageid, $title, $rev), where $pageid is the page ID
+of the page associated to the revision the token is requested for, $title the
+associated Title object and $rev the associated Revision object. In the hook,
+just add your callback to the $tokenFunctions array and return true (returning
+false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'APIQueryRecentChangesTokens': use this hook to add custom tokens to
-list=recentchanges.
-Every token has an action, which will be used in the rctoken parameter
-and in the output (actiontoken="..."), and a callback function which
-should return the token, or false if the user isn't allowed to obtain
-it. The prototype of the callback function is func($pageid, $title, $rc)
-where $pageid is the page ID of the page associated to the revision the
-token is requested for, $title the associated Title object and $rc the
-associated RecentChange object. In the hook, just add your callback to the
-$tokenFunctions array and return true (returning false makes no sense)
+'APIQueryRecentChangesTokens': Use this hook to add custom tokens to
+list=recentchanges. Every token has an action, which will be used in the rctoken
+parameter and in the output (actiontoken="..."), and a callback function which
+should return the token, or false if the user isn't allowed to obtain it. The
+prototype of the callback function is func($pageid, $title, $rc), where $pageid
+is the page ID of the page associated to the revision the token is requested
+for, $title the associated Title object and $rc the associated RecentChange
+object. In the hook, just add your callback to the $tokenFunctions array and
+return true (returning false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'APIQuerySiteInfoGeneralInfo': use this hook to add extra information to
-the sites general information.
+'APIQuerySiteInfoGeneralInfo': Use this hook to add extra information to the
+sites general information.
 $module: the current ApiQuerySiteInfo module
 &$results: array of results, add things here
 
-'APIQueryUsersTokens': use this hook to add custom token to list=users.
-Every token has an action, which will be used in the ustoken parameter
-and in the output (actiontoken="..."), and a callback function which
-should return the token, or false if the user isn't allowed to obtain
-it. The prototype of the callback function is func($user) where $user
-is the User object. In the hook, just add your callback to the
-$tokenFunctions array and return true (returning false makes no sense)
+'APIQueryUsersTokens': Use this hook to add custom token to list=users. Every
+token has an action, which will be used in the ustoken parameter and in the
+output (actiontoken="..."), and a callback function which should return the
+token, or false if the user isn't allowed to obtain it. The prototype of the
+callback function is func($user) where $user is the User object. In the hook,
+just add your callback to the $tokenFunctions array and return true (returning
+false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'ApiMain::onException': Called by ApiMain::executeActionWithErrorHandling()
-when an exception is thrown during API action execution.
+'ApiMain::onException': Called by ApiMain::executeActionWithErrorHandling() when
+an exception is thrown during API action execution.
 $apiMain: Calling ApiMain instance.
 $e: Exception object.
 
-'ApiRsdServiceApis': Add or remove APIs from the RSD services list.
-Each service should have its own entry in the $apis array and have a
-unique name, passed as key for the array that represents the service data.
-In this data array, the key-value-pair identified by the apiLink key is
-required.
+'ApiRsdServiceApis': Add or remove APIs from the RSD services list. Each service
+should have its own entry in the $apis array and have a unique name, passed as
+key for the array that represents the service data. In this data array, the
+key-value-pair identified by the apiLink key is required.
 &$apis: array of services
 
-'ApiTokensGetTokenTypes': use this hook to extend action=tokens with new
-token types.
+'ApiTokensGetTokenTypes': Use this hook to extend action=tokens with new token
+types.
 &$tokenTypes: supported token types in format 'type' => callback function
 used to retrieve this type of tokens.
 
-'ArticleAfterFetchContent': after fetching content of an article from
-the database. DEPRECATED, use ArticleAfterFetchContentObject instead.
+'ArticleAfterFetchContent': After fetching content of an article from the
+database. DEPRECATED, use ArticleAfterFetchContentObject instead.
 $article: the article (object) being loaded from the database
 &$content: the content (string) of the article
 
-'ArticleAfterFetchContentObject': after fetching content of an article from
-the database
+'ArticleAfterFetchContentObject': After fetching content of an article from the
+database.
 $article: the article (object) being loaded from the database
 &$content: the content of the article, as a Content object
 
-'ArticleConfirmDelete': before writing the confirmation form for article
-       deletion
+'ArticleConfirmDelete': Before writing the confirmation form for article
+deletion.
 $article: the article (object) being deleted
-$output: the OutputPage object ($wgOut)
+$output: the OutputPage object
 &$reason: the reason (string) the article is being deleted
 
-'ArticleContentOnDiff': before showing the article content below a diff.
-Use this to change the content in this area or how it is loaded.
- $diffEngine: the DifferenceEngine
- $output: the OutputPage object ($wgOut)
+'ArticleContentOnDiff': Before showing the article content below a diff. Use
+this to change the content in this area or how it is loaded.
+$diffEngine: the DifferenceEngine
+$output: the OutputPage object
 
-'ArticleDelete': before an article is deleted
+'ArticleDelete': Before an article is deleted.
 $wikiPage: the WikiPage (object) being deleted
 $user: the user (object) deleting the article
 $reason: the reason (string) the article is being deleted
@@ -472,7 +471,7 @@ $error: if the deletion was prohibited, the (raw HTML) error message to display
 $status: Status object, modify this to throw an error. Overridden by $error
   (added in 1.20)
 
-'ArticleDeleteComplete': after an article is deleted
+'ArticleDeleteComplete': After an article is deleted.
 $wikiPage: the WikiPage that was deleted
 $user: the user that deleted the article
 $reason: the reason the article was deleted
@@ -480,27 +479,28 @@ $id: id of the article that was deleted
 $content: the Content of the deleted page
 $logEntry: the ManualLogEntry used to record the deletion
 
-'ArticleEditUpdateNewTalk': before updating user_newtalk when a user talk page
-was changed
+'ArticleEditUpdateNewTalk': Before updating user_newtalk when a user talk page
+was changed.
 $wikiPage: WikiPage (object) of the user talk page
 
-'ArticleEditUpdates': when edit updates (mainly link tracking) are made when an
-article has been changed
+'ArticleEditUpdates': When edit updates (mainly link tracking) are made when an
+article has been changed.
 $wikiPage: the WikiPage (object)
 $editInfo: data holder that includes the parser output ($editInfo->output) for
 that page after the change
 $changed: bool for if the page was changed
 
-'ArticleEditUpdatesDeleteFromRecentchanges': before deleting old entries from
-recentchanges table, return false to not delete old entries
+'ArticleEditUpdatesDeleteFromRecentchanges': Before deleting old entries from
+recentchanges table, return false to not delete old entries.
 $wikiPage: WikiPage (object) being modified
 
 'ArticleFromTitle': when creating an article object from a title object using
-Wiki::articleFromTitle()
-$title: title (object) used to create the article object
-$article: article (object) that will be returned
+Wiki::articleFromTitle().
+$title: Title (object) used to create the article object
+$article: Article (object) that will be returned
 
-'ArticleInsertComplete': After a new article is created. DEPRECATED, use PageContentInsertComplete
+'ArticleInsertComplete': After a new article is created. DEPRECATED, use
+PageContentInsertComplete.
 $wikiPage: WikiPage created
 $user: User creating the article
 $text: New content
@@ -511,55 +511,56 @@ $section: (No longer used)
 $flags: Flags passed to WikiPage::doEditContent()
 $revision: New Revision of the article
 
-'ArticleMergeComplete': after merging to article using Special:Mergehistory
+'ArticleMergeComplete': After merging to article using Special:Mergehistory.
 $targetTitle: target title (object)
 $destTitle: destination title (object)
 
-'ArticlePageDataAfter': after loading data of an article from the database
+'ArticlePageDataAfter': After loading data of an article from the database.
 $wikiPage: WikiPage (object) whose data were loaded
 $row: row (object) returned from the database server
 
-'ArticlePageDataBefore': before loading data of an article from the database
+'ArticlePageDataBefore': Before loading data of an article from the database.
 $wikiPage: WikiPage (object) that data will be loaded
 $fields: fileds (array) to load from the database
 
-'ArticlePrepareTextForEdit': called when preparing text to be saved
+'ArticlePrepareTextForEdit': Called when preparing text to be saved.
 $wikiPage: the WikiPage being saved
 $popts: parser options to be used for pre-save transformation
 
-'ArticleProtect': before an article is protected
+'ArticleProtect': Before an article is protected.
 $wikiPage: the WikiPage being protected
 $user: the user doing the protection
 $protect: boolean whether this is a protect or an unprotect
 $reason: Reason for protect
 $moveonly: boolean whether this is for move only or not
 
-'ArticleProtectComplete': after an article is protected
+'ArticleProtectComplete': After an article is protected.
 $wikiPage: the WikiPage that was protected
 $user: the user who did the protection
 $protect: boolean whether it was a protect or an unprotect
 $reason: Reason for protect
 $moveonly: boolean whether it was for move only or not
 
-'ArticlePurge': before executing "&action=purge"
+'ArticlePurge': Before executing "&action=purge".
 $wikiPage: WikiPage (object) to purge
 
-'ArticleRevisionVisibilitySet': called when changing visibility of one or more
-revision of an article
-&$title: title object of the article
+'ArticleRevisionVisibilitySet': Called when changing visibility of one or more
+revisions of an article.
+&$title: Title object of the article
 
-'ArticleRevisionUndeleted': after an article revision is restored
+'ArticleRevisionUndeleted': After an article revision is restored.
 $title: the article title
 $revision: the revision
 $oldPageID: the page ID of the revision when archived (may be null)
 
-'ArticleRollbackComplete': after an article rollback is completed
+'ArticleRollbackComplete': After an article rollback is completed.
 $wikiPage: the WikiPage that was edited
 $user: the user who did the rollback
 $revision: the revision the page was reverted back to
 $current: the reverted revision
 
-'ArticleSave': before an article is saved. DEPRECATED, use PageContentSave instead
+'ArticleSave': Before an article is saved. DEPRECATED, use PageContentSave
+instead.
 $wikiPage: the WikiPage (object) being saved
 $user: the user (object) saving the article
 $text: the new article text
@@ -568,7 +569,8 @@ $isminor: minor flag
 $iswatch: watch flag
 $section: section #
 
-'ArticleSaveComplete': After an article has been updated. DEPRECATED, use PageContentSaveComplete instead.
+'ArticleSaveComplete': After an article has been updated. DEPRECATED, use
+PageContentSaveComplete instead.
 $wikiPage: WikiPage modified
 $user: User performing the modification
 $text: New content
@@ -581,10 +583,10 @@ $revision: New Revision of the article
 $status: Status object about to be returned by doEditContent()
 $baseRevId: the rev ID (or false) this edit was based on
 
-'ArticleUndelete': When one or more revisions of an article are restored
+'ArticleUndelete': When one or more revisions of an article are restored.
 $title: Title corresponding to the article restored
-$create: Whether or not the restoration caused the page to be created
-(i.e. it didn't exist before)
+$create: Whether or not the restoration caused the page to be created (i.e. it
+  didn't exist before).
 $comment: The comment associated with the undeletion.
 
 'ArticleUndeleteLogEntry': When a log entry is generated but not yet saved.
@@ -592,8 +594,8 @@ $pageArchive: the PageArchive object
 &$logEntry: ManualLogEntry object
 $user: User who is performing the log action
 
-'ArticleUpdateBeforeRedirect': After a page is updated (usually on save),
-before the user is redirected back to the page
+'ArticleUpdateBeforeRedirect': After a page is updated (usually on save), before
+the user is redirected back to the page.
 &$article: the article
 &$sectionanchor: The section anchor link (e.g. "#overview" )
 &$extraq: Extra query parameters which can be added via hooked functions
@@ -608,60 +610,61 @@ viewing.
 &$outputDone: whether the output for this page finished or not. Set to a ParserOutput
 object to both indicate that the output is done and what parser output was used.
 
-'ArticleViewRedirect': before setting "Redirected from ..." subtitle when
-follwed an redirect
+'ArticleViewRedirect': Before setting "Redirected from ..." subtitle when a
+redirect was followed.
 $article: target article (object)
 
-'ArticleViewCustom': allows to output the text of the article in a different format than wikitext.
-DEPRECATED, use ArticleContentViewCustom instead.
-Note that it is preferrable to implement proper handing for a custom data type using the ContentHandler facility.
+'ArticleViewCustom': Allows to output the text of the article in a different
+format than wikitext. DEPRECATED, use ArticleContentViewCustom instead. Note
+that it is preferrable to implement proper handing for a custom data type using
+the ContentHandler facility.
 $text: text of the page
 $title: title of the page
 $output: reference to $wgOut
 
-'ArticleContentViewCustom': allows to output the text of the article in a different format than wikitext.
-Note that it is preferrable to implement proper handing for a custom data type using the ContentHandler facility.
+'ArticleContentViewCustom': Allows to output the text of the article in a
+different format than wikitext. Note that it is preferrable to implement proper
+handing for a custom data type using the ContentHandler facility.
 $content: content of the page, as a Content object
 $title: title of the page
 $output: reference to $wgOut
 
 'AuthPluginAutoCreate': Called when creating a local account for an user logged
-in from an external authentication method
+in from an external authentication method.
 $user: User object created locally
 
-'AuthPluginSetup': update or replace authentication plugin object ($wgAuth)
+'AuthPluginSetup': Update or replace authentication plugin object ($wgAuth).
 Gives a chance for an extension to set it programattically to a variable class.
 &$auth: the $wgAuth object, probably a stub
 
-'AutopromoteCondition': check autopromote condition for user.
+'AutopromoteCondition': Check autopromote condition for user.
 $type: condition type
 $args: arguments
 $user: user
 $result: result of checking autopromote condition
 
-'BacklinkCacheGetPrefix': allows to set prefix for a spefific link table
+'BacklinkCacheGetPrefix': Allows to set prefix for a spefific link table.
 $table: table name
 &$prefix: prefix
 
-'BacklinkCacheGetConditions': allows to set conditions for query when links to certain title
-are fetched
+'BacklinkCacheGetConditions': Allows to set conditions for query when links to
+certain title are fetched.
 $table: table name
 $title: title of the page to which backlinks are sought
 &$conds: query conditions
 
-'BadImage': When checking against the bad image list
+'BadImage': When checking against the bad image list. Change $bad and return
+false to override. If an image is "bad", it is not rendered inline in wiki
+pages or galleries in category pages.
 $name: Image name being checked
 &$bad: Whether or not the image is "bad"
 
-Change $bad and return false to override. If an image is "bad", it is not
-rendered inline in wiki pages or galleries in category pages.
-
-'BeforeDisplayNoArticleText': before displaying noarticletext or noarticletext-nopermission
-at Article::showMissingArticle()
-
+'BeforeDisplayNoArticleText': Before displaying message key "noarticletext" or
+"noarticletext-nopermission" at Article::showMissingArticle().
 $article: article object
 
-'BeforeInitialize': before anything is initialized in MediaWiki::performRequest()
+'BeforeInitialize': Before anything is initialized in
+MediaWiki::performRequest().
 &$title: Title being used for request
 $unused: null
 &$output: OutputPage object
@@ -669,7 +672,7 @@ $unused: null
 $request: WebRequest object
 $mediaWiki: Mediawiki object
 
-'BeforePageDisplay': Prior to outputting a page
+'BeforePageDisplay': Prior to outputting a page.
 &$out: OutputPage object
 &$skin: Skin object
 
@@ -680,27 +683,31 @@ $out: OutputPage object
 &$redirect: URL, modifiable
 &$code: HTTP code (eg '301' or '302'), modifiable
 
-'BeforeParserFetchFileAndTitle': before an image is rendered by Parser
+'BeforeParserFetchFileAndTitle': Before an image is rendered by Parser.
 $parser: Parser object
 $nt: the image title
 &$options: array of options to RepoGroup::findFile
 &$descQuery: query string to add to thumbnail URL
 
+FIXME: Where does the below sentence fit in?
 If 'broken' is a key in $options then the file will appear as a broken thumbnail.
 
-'BeforeParserFetchTemplateAndtitle': before a template is fetched by Parser
+'BeforeParserFetchTemplateAndtitle': Before a template is fetched by Parser.
 $parser: Parser object
 $title: title of the template
 &$skip: skip this template and link it?
 &$id: the id of the revision being parsed
 
-'BeforeParserrenderImageGallery': before an image gallery is rendered by Parser
+'BeforeParserrenderImageGallery': Before an image gallery is rendered by Parser.
 &$parser: Parser object
 &$ig: ImageGallery object
 
-'BeforeWelcomeCreation': before the welcomecreation message is displayed to a newly created user
-&$welcome_creation_msg: MediaWiki message name to display on the welcome screen to a newly created user account
-&$injected_html: Any HTML to inject after the "logged in" message of a newly created user account
+'BeforeWelcomeCreation': Before the welcomecreation message is displayed to a
+newly created user.
+&$welcome_creation_msg: MediaWiki message name to display on the welcome screen
+  to a newly created user account.
+&$injected_html: Any HTML to inject after the "logged in" message of a newly
+  created user account
 
 'BitmapHandlerTransform': before a file is transformed, gives extension the
 possibility to transform it themselves
@@ -709,51 +716,57 @@ $image: File
 &$scalerParams: Array with scaler parameters
 &$mto: null, set to a MediaTransformOutput
 
-'BitmapHandlerCheckImageArea': by BitmapHandler::normaliseParams, after all normalizations have been performed, except for the $wgMaxImageArea check
+'BitmapHandlerCheckImageArea': By BitmapHandler::normaliseParams, after all
+normalizations have been performed, except for the $wgMaxImageArea check.
 $image: File
 &$params: Array of parameters
-&$checkImageAreaHookResult: null, set to true or false to override the $wgMaxImageArea check result
+&$checkImageAreaHookResult: null, set to true or false to override the
+  $wgMaxImageArea check result.
 
-'PerformRetroactiveAutoblock': called before a retroactive autoblock is applied to a user
+'PerformRetroactiveAutoblock': Called before a retroactive autoblock is applied
+to a user.
 $block: Block object (which is set to be autoblocking)
 &$blockIds: Array of block IDs of the autoblock
 
-'BlockIp': before an IP address or user is blocked
+'BlockIp': Before an IP address or user is blocked.
 $block: the Block object about to be saved
 $user: the user _doing_ the block (not the one being blocked)
 
-'BlockIpComplete': after an IP address or user is blocked
+'BlockIpComplete': After an IP address or user is blocked.
 $block: the Block object that was saved
 $user: the user who did the block (not the one being blocked)
 
-'BookInformation': Before information output on Special:Booksources
+'BookInformation': Before information output on Special:Booksources.
 $isbn: ISBN to show information for
 $output: OutputPage object in use
 
-'CanonicalNamespaces': For extensions adding their own namespaces or altering the defaults
+'CanonicalNamespaces': For extensions adding their own namespaces or altering
+the defaults.
 &$namespaces: Array of namespace numbers with corresponding canonical names
 
-'CategoryPageView': before viewing a categorypage in CategoryPage::view
+'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.
+'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).
-&$s:           HTML of row that is being constructed.
-&$rc:          RecentChange instance.
-$unpatrolled:  Whether or not we are showing unpatrolled changes.
-$watched:      Whether or not the change is watched by the user.
+&$s: HTML of row that is being constructed.
+&$rc: RecentChange instance.
+$unpatrolled: Whether or not we are showing unpatrolled changes.
+$watched: Whether or not the change is watched by the user.
 
-'Collation::factory': Called if $wgCategoryCollation is an unknown collation
+'Collation::factory': Called if $wgCategoryCollation is an unknown collation.
 $collationName: Name of the collation in question
-&$collationObject: Null. Replace with a subclass of the Collation class that implements
-the collation given in $collationName.
+&$collationObject: Null. Replace with a subclass of the Collation class that
+  implements the collation given in $collationName.
 
-'ConfirmEmailComplete': Called after a user's email has been confirmed successfully
+'ConfirmEmailComplete': Called after a user's email has been confirmed
+successfully.
 $user: user (object) whose email is being confirmed
 
 'ContentHandlerDefaultModelFor': Called when the default content model is determiend
@@ -809,7 +822,7 @@ etc.
 'DatabaseOraclePostInit': Called after initialising an Oracle database
 &$db: the DatabaseOracle object
 
-'Debug': called when outputting a debug log line via wfDebug() or wfDebugLog()
+'Debug': Called when outputting a debug log line via wfDebug() or wfDebugLog()
 $text: plaintext string to be output
 $group: null or a string naming a logging group (as defined in $wgDebugLogGroups)
 
@@ -820,7 +833,7 @@ $title: the diff page title (nullable)
 $old: the ?old= param value from the url
 $new: the ?new= param value from the url
 
-'DiffViewHeader': called before diff display
+'DiffViewHeader': Called before diff display
 $diff: DifferenceEngine object that's calling
 $oldRev: Revision object of the "old" revision (may be null/invalid)
 $newRev: Revision object of the "new" revision
@@ -856,11 +869,18 @@ $text: content of the edit box
 &$error: error message to return
 $summary: Edit summary for page
 
-'EditFilterMergedContent': Post-section-merge edit filter
-$editor: EditPage instance (object)
-$content: content of the edit box, as a Content object
-&$error: error message to return
+'EditFilterMergedContent': Post-section-merge edit filter.
+This may be triggered by the EditPage or any other facility that modifies page content.
+Use the $status object to indicate whether the edit should be allowed, and to provide
+a reason for disallowing it. Return false to abort the edit, and true to continue.
+Returning true if $status->isOK() returns false means "don't save but continue user
+interaction", e.g. show the edit form.
+$context: object implementing the IContextSource interface.
+$content: content of the edit box, as a Content object.
+$status: Status object to represent errors, etc.
 $summary: Edit summary for page
+$user: the User object representing the user whois performing the edit.
+$minoredit: whether the edit was marked as minor by the user.
 
 'EditFormPreloadText': Allows population of the edit form when creating
 new pages
@@ -871,7 +891,7 @@ new pages
 pages
 $editPage: EditPage    object
 
-'EditPage::attemptSave': called before an article is
+'EditPage::attemptSave': Called before an article is
 saved, that is before WikiPage::doEditContent() is called
 $editpage_Obj: the current EditPage object
 
@@ -910,46 +930,51 @@ sections.
 &$editor: EditPage instance
 &$out: OutputPage instance
 
-'EditPageBeforeEditButtons':  allows modifying the edit buttons below the
-textarea in the edit form
+'EditPageBeforeEditButtons': Allows modifying the edit buttons below the
+textarea in the edit form.
 &$editpage: The current EditPage object
 &$buttons: Array of edit buttons "Save", "Preview", "Live", and "Diff"
 &$tabindex: HTML tabindex of the last edit check/button
 
-'EditPageBeforeEditChecks':  allows modifying the edit checks below the
-textarea in the edit form
+'EditPageBeforeEditChecks': Allows modifying the edit checks below the textarea
+in the edit form.
 &$editpage: The current EditPage object
 &$checks: Array of edit checks like "watch this page"/"minor edit"
 &$tabindex: HTML tabindex of the last edit check/button
 
-'EditPageBeforeEditToolbar': allows modifying the edit toolbar above the
-textarea in the edit form
+'EditPageBeforeEditToolbar': Allows modifying the edit toolbar above the
+textarea in the edit form.
 &$toolbar: The toolbar HTMl
 
-'EditPageCopyrightWarning': Allow for site and per-namespace customization of contribution/copyright notice.
+'EditPageCopyrightWarning': Allow for site and per-namespace customization of
+contribution/copyright notice.
 $title: title of page being edited
-&$msg: localization message name, overridable. Default is either 'copyrightwarning' or 'copyrightwarning2'
+&$msg: localization message name, overridable. Default is either
+  'copyrightwarning' or 'copyrightwarning2'.
 
-'EditPageGetDiffText': Allow modifying the wikitext that will be used in
-"Show changes". DEPRECATED. Use EditPageGetDiffContent instead.
-Note that it is preferrable to implement diff handling for different data types using the ContentHandler facility.
+'EditPageGetDiffText': DEPRECATED. Use EditPageGetDiffContent instead. Allow
+modifying the wikitext that will be used in "Show changes". Note that it is
+preferrable to implement diff handling for different data types using the
+ContentHandler facility.
 $editPage: EditPage object
 &$newtext: wikitext that will be used as "your version"
 
 'EditPageGetDiffContent': Allow modifying the wikitext that will be used in
-"Show changes".
-Note that it is preferrable to implement diff handling for different data types using the ContentHandler facility.
+"Show changes". Note that it is preferrable to implement diff handling for
+different data types using the ContentHandler facility.
 $editPage: EditPage object
 &$newtext: wikitext that will be used as "your version"
 
-'EditPageGetPreviewText': Allow modifying the wikitext that will be previewed.
-DEPRECATED. Use EditPageGetPreviewContent instead.
-Note that it is preferrable to implement previews for different data types using the COntentHandler facility.
+'EditPageGetPreviewText': DEPRECATED. Use EditPageGetPreviewContent instead.
+Allow modifying the wikitext that will be previewed. Note that it is preferrable
+to implement previews for different data types using the COntentHandler
+facility.
 $editPage: EditPage object
 &$toparse: wikitext that will be parsed
 
-'EditPageGetPreviewContent': Allow modifying the wikitext that will be previewed.
-Note that it is preferrable to implement previews for different data types using the COntentHandler facility.
+'EditPageGetPreviewContent': Allow modifying the wikitext that will be
+previewed. Note that it is preferrable to implement previews for different data
+types using the COntentHandler facility.
 $editPage: EditPage object
 &$content: Content object to be previewed (may be replaced by hook function)
 
@@ -957,7 +982,7 @@ $editPage: EditPage object
 &$editpage: The current EditPage object
 &$res: the HTML of the error text
 
-'EditPageTosSummary':  Give a chance for site and per-namespace customizations
+'EditPageTosSummary': Give a chance for site and per-namespace customizations
 of terms of service summary link that might exist separately from the copyright
 notice.
 $title: title of page being edited
@@ -971,73 +996,80 @@ $link: Default link
 &$result: Result (alter this to override the generated links)
 $lang: The language code to use for the link in the wfMessage function
 
-'EmailConfirmed': When checking that the user's email address is "confirmed"
+'EmailConfirmed': When checking that the user's email address is "confirmed".
 $user: User being checked
 $confirmed: Whether or not the email address is confirmed
 This runs before the other checks, such as anonymity and the real check; return
 true to allow those checks to occur, and false if checking is done.
 
-'EmailUser': before sending email from one user to another
+'EmailUser': Before sending email from one user to another.
 $to: address of receiving user
 $from: address of sending user
 $subject: subject of the mail
 $text: text of the mail
 
-'EmailUserCC': before sending the copy of the email to the author
+'EmailUserCC': Before sending the copy of the email to the author.
 $to: address of receiving user
 $from: address of sending user
 $subject: subject of the mail
 $text: text of the mail
 
-'EmailUserComplete': after sending email from one user to another
+'EmailUserComplete': After sending email from one user to another.
 $to: address of receiving user
 $from: address of sending user
 $subject: subject of the mail
 $text: text of the mail
 
-'EmailUserForm': after building the email user form object
+'EmailUserForm': After building the email user form object.
 $form: HTMLForm object
 
-'EmailUserPermissionsErrors': to retrieve permissions errors for emailing a user.
+'EmailUserPermissionsErrors': to retrieve permissions errors for emailing a
+user.
 $user: The user who is trying to email another user.
 $editToken: The user's edit token.
-&$hookErr: Out-param for the error. Passed as the parameters to OutputPage::showErrorPage.
+&$hookErr: Out-param for the error. Passed as the parameters to
+  OutputPage::showErrorPage.
 
-'ExemptFromAccountCreationThrottle': Exemption from the account creation throttle
+'ExemptFromAccountCreationThrottle': Exemption from the account creation
+throttle.
 $ip: The ip address of the user
 
-'ExtensionTypes': called when generating the extensions credits, use this to change the tables headers
+'ExtensionTypes': Called when generating the extensions credits, use this to
+change the tables headers.
 &$extTypes: associative array of extensions types
 
-'ExtractThumbParameters': called when extracting thumbnail parameters from a thumbnail file name
+'ExtractThumbParameters': Called when extracting thumbnail parameters from a
+thumbnail file name.
 $thumbname: the base name of the thumbnail file
 &$params: the currently extracted params (has source name, temp or archived zone)
 
-'FetchChangesList': When fetching the ChangesList derivative for
-a particular user
+'FetchChangesList': When fetching the ChangesList derivative for a particular
+user.
 $user: User the list is being fetched for
 &$skin: Skin object to be used with the list
-&$list: List object (defaults to NULL, change it to an object
-       instance and return false override the list derivative used)
+&$list: List object (defaults to NULL, change it to an object instance and
+  return false override the list derivative used)
 
-'FileDeleteComplete': When a file is deleted
+'FileDeleteComplete': When a file is deleted.
 $file: reference to the deleted file
 $oldimage: in case of the deletion of an old image, the name of the old file
 $article: in case all revisions of the file are deleted a reference to the
-       WikiFilePage associated with the file.
+  WikiFilePage associated with the file.
 $user: user who performed the deletion
 $reason: reason
 
-'FileTransformed': When a file is transformed and moved into storage
+'FileTransformed': When a file is transformed and moved into storage.
 $file: reference to the File object
 $thumb: the MediaTransformOutput object
 $tmpThumbPath: The temporary file system path of the transformed file
 $thumbPath: The permanent storage path of the transformed file
 
-'FileUpload': When a file upload occurs
+'FileUpload': When a file upload occurs.
 $file : Image object representing the file that was uploaded
-$reupload : Boolean indicating if there was a previously another image there or not (since 1.17)
-$hasDescription : Boolean indicating that there was already a description page and a new one from the comment wasn't created (since 1.17)
+$reupload : Boolean indicating if there was a previously another image there or
+  not (since 1.17)
+$hasDescription : Boolean indicating that there was already a description page
+  and a new one from the comment wasn't created (since 1.17)
 
 'FileUndeleteComplete': When a file is undeleted
 $title: title object to the file
@@ -1045,28 +1077,30 @@ $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.
+'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.
+'GetAutoPromoteGroups': When determining which autopromote groups a user is
+entitled to be in.
 &$user: user to promote.
 &$promote: groups that will be added.
 
 'GetBlockedStatus': after loading blocking status of an user from the database
 $user: user (object) being checked
 
-'GetCacheVaryCookies': get cookies that should vary cache options
+'GetCacheVaryCookies': Get cookies that should vary cache options.
 $out: OutputPage object
 &$cookies: array of cookies name, add a value to it if you want to add a cookie
-       that have to vary cache options
+  that have to vary cache options
 
-'GetCanonicalURL': modify fully-qualified URLs used for IRC and e-mail notifications
+'GetCanonicalURL': Modify fully-qualified URLs used for IRC and e-mail
+notifications.
 $title: Title object of page
 $url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getCanonicalURL()
@@ -1075,161 +1109,170 @@ $query: query options passed to Title::getCanonicalURL()
 $title: Title object that we need to get a sortkey for
 &$sortkey: Sortkey to use.
 
-'GetDoubleUnderscoreIDs': modify the list of behavior switch (double underscore)
-magic words. Called by MagicWord.
+'GetDoubleUnderscoreIDs': Modify the list of behavior switch (double
+underscore) magic words. Called by MagicWord.
 &$doubleUnderscoreIDs: array of strings
 
-'GetFullURL': modify fully-qualified URLs used in redirects/export/offsite data
+'GetFullURL': Modify fully-qualified URLs used in redirects/export/offsite data.
 $title: Title object of page
 $url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getFullURL()
 
-'GetInternalURL': modify fully-qualified URLs used for squid cache purging
+'GetInternalURL': Modify fully-qualified URLs used for squid cache purging.
 $title: Title object of page
 $url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getInternalURL()
 
-'GetIP': modify the ip of the current user (called only once)
+'GetIP': modify the ip of the current user (called only once).
 &$ip: string holding the ip as determined so far
 
-'GetLinkColours': modify the CSS class of an array of page links
+'GetLinkColours': modify the CSS class of an array of page links.
 $linkcolour_ids: array of prefixed DB keys of the pages linked to,
        indexed by page_id.
 &$colours: (output) array of CSS classes, indexed by prefixed DB keys
 
-'GetLocalURL': modify local URLs as output into page links. Note that if you
-       are working with internal urls (non-interwiki) then it may be preferable
-       to work with the GetLocalURL::Internal or GetLocalURL::Article hooks as
-       GetLocalURL can be buggy for internal urls on render if you do not
-       re-implement the horrible hack that Title::getLocalURL uses
-       in your own extension.
+'GetLocalURL': Modify local URLs as output into page links. Note that if you are
+working with internal urls (non-interwiki) then it may be preferable to work
+with the GetLocalURL::Internal or GetLocalURL::Article hooks as GetLocalURL can
+be buggy for internal urls on render if you do not re-implement the horrible
+hack that Title::getLocalURL uses in your own extension.
 $title: Title object of page
 &$url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getLocalURL()
 
-'GetLocalURL::Internal': modify local URLs to internal pages.
+'GetLocalURL::Internal': Modify local URLs to internal pages.
 $title: Title object of page
 &$url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getLocalURL()
 
-'GetLocalURL::Article': modify local URLs specifically pointing to article paths
-       without any fancy queries or variants.
+'GetLocalURL::Article': Modify local URLs specifically pointing to article paths
+without any fancy queries or variants.
 $title: Title object of page
 &$url: string value as output (out parameter, can modify)
 
-'GetMetadataVersion': modify the image metadata version currently in use. This is
-       used when requesting image metadata from a ForiegnApiRepo. Media handlers
-       that need to have versioned metadata should add an element to the end of
-       the version array of the form 'handler_name=version'. Most media handlers
-       won't need to do this unless they broke backwards compatibility with a
-       previous version of the media handler metadata output.
+'GetMetadataVersion': Modify the image metadata version currently in use. This
+is used when requesting image metadata from a ForiegnApiRepo. Media handlers
+that need to have versioned metadata should add an element to the end of the
+version array of the form 'handler_name=version'. Most media handlers won't need
+to do this unless they broke backwards compatibility with a previous version of
+the media handler metadata output.
 &$version: Array of version strings
 
-'GetPreferences': modify user preferences
+'GetPreferences': Modify user preferences.
 $user: User whose preferences are being modified.
 &$preferences: Preferences description array, to be fed to an HTMLForm object
 
 'getUserPermissionsErrors': Add a permissions error when permissions errors are
-       checked for.  Use instead of userCan for most cases. Return false if the
-       user can't do it, and populate $result with the reason in the form of
-       array( messagename, param1, param2, ... ).  For consistency, error messages
-       should be plain text with no special coloring, bolding, etc. to show that
-       they're errors; presenting them properly to the user as errors is done by
-       the caller.
+checked for. Use instead of userCan for most cases. Return false if the user
+can't do it, and populate $result with the reason in the form of
+array( messagename, param1, param2, ... ). For consistency, error messages
+should be plain text with no special coloring, bolding, etc. to show that
+they're errors; presenting them properly to the user as errors is done by the
+caller.
 $title: Title object being checked against
 $user : Current user object
 $action: Action being checked
 $result: User permissions error to add. If none, return true.
 
-'getUserPermissionsErrorsExpensive': Absolutely the same, but is called only
-       if expensive checks are enabled.
+'getUserPermissionsErrorsExpensive': Equal to getUserPermissionsErrors, but is
+called only if expensive checks are enabled. Add a permissions error when
+permissions errors are checked for. Return false if the user can't do it, and
+populate $result with the reason in the form of array( messagename, param1,
+param2, ... ). For consistency, error messages should be plain text with no
+special coloring, bolding, etc. to show that they're errors; presenting them
+properly to the user as errors is done by the caller.
 
-'GitViewers': called when generating the list of git viewers for Special:Version, use
-       this to change the list.
-&$extTypes: associative array of repo URLS to viewer URLs.
+$title: Title object being checked against
+$user : Current user object
+$action: Action being checked
+$result: User permissions error to add. If none, return true.
 
+'GitViewers': Called when generating the list of git viewers for
+Special:Version, use this to change the list.
+&$extTypes: associative array of repo URLS to viewer URLs.
 
 'ImageBeforeProduceHTML': Called before producing the HTML created by a wiki
-       image insertion.  You can skip the default logic entirely by returning
-       false, or just modify a few things using call-by-reference.
+image insertion. You can skip the default logic entirely by returning false, or
+just modify a few things using call-by-reference.
 &$skin: Skin object
 &$title: Title object of the image
 &$file: File object, or false if it doesn't exist
 &$frameParams: Various parameters with special meanings; see documentation in
-       includes/Linker.php for Linker::makeImageLink
+  includes/Linker.php for Linker::makeImageLink
 &$handlerParams: Various parameters with special meanings; see documentation in
-       includes/Linker.php for Linker::makeImageLink
+  includes/Linker.php for Linker::makeImageLink
 &$time: Timestamp of file in 'YYYYMMDDHHIISS' string form, or false for current
 &$res: Final HTML output, used if you return false
 
 
 'ImageOpenShowImageInlineBefore': Call potential extension just before showing
-       the image on an image page
+the image on an image page.
 $imagePage: ImagePage object ($this)
 $output: $wgOut
 
-'ImagePageAfterImageLinks': called after the image links section on an image
-       page is built
+'ImagePageAfterImageLinks': Called after the image links section on an image
+page is built.
 $imagePage: ImagePage object ($this)
 &$html: HTML for the hook to add
 
-'ImagePageFileHistoryLine': called when a file history line is contructed
+'ImagePageFileHistoryLine': Called when a file history line is contructed.
 $file: the file
 $line: the HTML of the history line
 $css: the line CSS class
 
-'ImagePageFindFile': called when fetching the file associated with an image page
+'ImagePageFindFile': Called when fetching the file associated with an image
+page.
 $page: ImagePage object
 &$file: File object
 &$displayFile: displayed File object
 
-'ImagePageShowTOC': called when the file toc on an image page is generated
+'ImagePageShowTOC': Called when the file toc on an image page is generated.
 $page: ImagePage object
 &$toc: Array of <li> strings
 
 'ImgAuthBeforeStream': executed before file is streamed to user, but only when
-       using img_auth.php
+using img_auth.php.
 &$title: the Title object of the file as it would appear for the upload page
 &$path: the original file and path name when img_auth was invoked by the the web
-       server
+  server
 &$name: the name only component of the file
 &$result: The location to pass back results of the hook routine (only used if
-       failed)
-       $result[0]=The index of the header message
-       $result[1]=The index of the body text message
-       $result[2 through n]=Parameters passed to body text message. Please note the
-       header message cannot receive/use parameters.
+  failed)
+  $result[0]=The index of the header message
+  $result[1]=The index of the body text message
+  $result[2 through n]=Parameters passed to body text message. Please note the
+  header message cannot receive/use parameters.
 
-'ImportHandleLogItemXMLTag': When parsing a XML tag in a log item
+'ImportHandleLogItemXMLTag': When parsing a XML tag in a log item.
 $reader: XMLReader object
 $logInfo: Array of information
 Return false to stop further processing of the tag
 
-'ImportHandlePageXMLTag': When parsing a XML tag in a page
+'ImportHandlePageXMLTag': When parsing a XML tag in a page.
 $reader: XMLReader object
 $pageInfo: Array of information
 Return false to stop further processing of the tag
 
-'ImportHandleRevisionXMLTag': When parsing a XML tag in a page revision
+'ImportHandleRevisionXMLTag': When parsing a XML tag in a page revision.
 $reader: XMLReader object
 $pageInfo: Array of page information
 $revisionInfo: Array of revision information
 Return false to stop further processing of the tag
 
-'ImportHandleToplevelXMLTag': When parsing a top level XML tag
+'ImportHandleToplevelXMLTag': When parsing a top level XML tag.
 $reader: XMLReader object
 Return false to stop further processing of the tag
 
-'ImportHandleUploadXMLTag': When parsing a XML tag in a file upload
+'ImportHandleUploadXMLTag': When parsing a XML tag in a file upload.
 $reader: XMLReader object
 $revisionInfo: Array of information
 Return false to stop further processing of the tag
 
-'InfoAction': When building information to display on the action=info page
+'InfoAction': When building information to display on the action=info page.
 $context: IContextSource object
 &$pageInfo: Array of information
 
-'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect
+'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect.
 $title: Title object ($wgTitle)
 $request: WebRequest
 $ignoreRedirect: boolean to skip redirect check
@@ -1242,10 +1285,10 @@ $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.
+'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
@@ -1256,7 +1299,8 @@ but after nowiki/noinclude/includeonly/onlyinclude and other processings.
 &$text: string containing partially parsed text
 &$stripState: Parser's internal StripState object
 
-'InvalidateEmailComplete': Called after a user's email has been invalidated successfully
+'InvalidateEmailComplete': Called after a user's email has been invalidated
+successfully.
 $user: user (object) whose email is being invalidated
 
 'IRCLineURL': When constructing the URL to use in an IRC notification.
@@ -1271,8 +1315,8 @@ $article: article (object) being checked
 $ip: IP being check
 $result: Change this value to override the result of wfIsTrustedProxy()
 
-'isValidEmailAddr': Override the result of User::isValidEmailAddr(), for ins-
-tance to return false if the domain name doesn't match your organization
+'isValidEmailAddr': Override the result of User::isValidEmailAddr(), for
+instance to return false if the domain name doesn't match your organization.
 $addr: The e-mail address entered by the user
 &$result: Set this and return false to override the internal checks
 
@@ -1307,42 +1351,42 @@ $lang: laguage code (string)
 $code language of the preferred translations
 
 'LinkBegin': Used when generating internal and interwiki links in
-Linker::link(), before processing starts.  Return false to skip default proces-
-sing and return $ret.  See documentation for Linker::link() for details on the
-expected meanings of parameters.
+Linker::link(), before processing starts.  Return false to skip default
+processing and return $ret. See documentation for Linker::link() for details on
+the expected meanings of parameters.
 $skin: the Skin object
 $target: the Title that the link is pointing to
-&$html: the contents that the <a> tag should have (raw HTML); null means "de-
-       fault"
-&$customAttribs: the HTML attributes that the <a> tag should have, in associa-
-       tive array form, with keys and values unescaped.  Should be merged with de-
-       fault values, with a value of false meaning to suppress the attribute.
+&$html: the contents that the <a> tag should have (raw HTML); null means
+  "default".
+&$customAttribs: the HTML attributes that the <a> tag should have, in
+associative array form, with keys and values unescaped.  Should be merged with
+default values, with a value of false meaning to suppress the attribute.
 &$query: the query string to add to the generated URL (the bit after the "?"),
-       in associative array form, with keys and values unescaped.
+  in associative array form, with keys and values unescaped.
 &$options: array of options.  Can include 'known', 'broken', 'noclasses'.
 &$ret: the value to return if your hook returns false.
 
 'LinkEnd': Used when generating internal and interwiki links in Linker::link(),
 just before the function returns a value.  If you return true, an <a> element
-with HTML attributes $attribs and contents $html will be returned.  If you re-
-turn false, $ret will be returned.
+with HTML attributes $attribs and contents $html will be returned.  If you
+return false, $ret will be returned.
 $skin: the Skin object
 $target: the Title object that the link is pointing to
 $options: the options.  Will always include either 'known' or 'broken', and may
-       include 'noclasses'.
+  include 'noclasses'.
 &$html: the final (raw HTML) contents of the <a> tag, after processing.
 &$attribs: the final HTML attributes of the <a> tag, after processing, in asso-
-       ciative array form.
+  ciative array form.
 &$ret: the value to return if your hook returns false.
 
 'LinkerMakeExternalImage': At the end of Linker::makeExternalImage() just
-before the return
+before the return.
 &$url: the image url
 &$alt: the image's alt text
 &$img: the new image HTML (if returning false)
 
 'LinkerMakeExternalLink': At the end of Linker::makeExternalLink() just
-before the return
+before the return.
 &$url: the link url
 &$text: the link text
 &$link: the new link HTML (if returning false)
@@ -1350,7 +1394,7 @@ before the return
 $linkType: The external link type
 
 'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the
-actual update
+actual update.
 &$linksUpdate: the LinksUpdate object
 
 'LinksUpdateAfterInsert': At the end of LinksUpdate::incrTableUpdate() after
@@ -1369,10 +1413,10 @@ including delete and insert, has completed for all link tables
 'ListDefinedTags': When trying to find all defined tags.
 &$tags: The list of tags.
 
-'LoadExtensionSchemaUpdates': called during database installation and updates
+'LoadExtensionSchemaUpdates': Called during database installation and updates.
 &updater: A DatabaseUpdater subclass
 
-'LocalFile::getHistory': called before file history query performed
+'LocalFile::getHistory': Called before file history query performed.
 $file: the File object
 $tables: tables
 $fields: select fields
@@ -1380,91 +1424,89 @@ $conds: conditions
 $opts: query options
 $join_conds: JOIN conditions
 
-'LocalFilePurgeThumbnails': called before thumbnails for a local file a purged
+'LocalFilePurgeThumbnails': Called before thumbnails for a local file a purged.
 $file: the File object
 $archiveName: name of an old file version or false if it's the current one
 
-'LocalisationCacheRecache': Called when loading the localisation data into cache
+'LocalisationCacheRecache': Called when loading the localisation data into
+cache.
 $cache: The LocalisationCache object
 $code: language code
 &$alldata: The localisation data from core and extensions
 
-'LogEventsListShowLogExtract': called before the string is added to OutputPage. Returning false will prevent the string from being added to the OutputPage
+'LogEventsListShowLogExtract': Called before the string is added to OutputPage.
+Returning false will prevent the string from being added to the OutputPage.
 &$s: html string to show for the log extract
 $types: String or Array Log types to show
 $page: String or Title The page title to show log entries for
 $user: String The user who made the log entries
 $param: Associative Array with the following additional options:
- - lim Integer Limit of items to show, default is 50
- - conds Array Extra conditions for the query (e.g. "log_action != 'revision'")
- - showIfEmpty boolean Set to false if you don't want any output in case the loglist is empty 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 wfMessage()->params()->parseAsBlock()
- - offset Set to overwrite offset parameter in $wgRequest set to '' to unset offset
- - wrap String Wrap the message in html (usually something like "&lt;div ...>$1&lt;/div>").
- - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
-
-'LoggableUserIPData': called when IP data for a user action can be logged by extensions like CheckUser.
-This is intended for when users do things that do not already create edits or log entries.
-$context: The context the of the action, which includes the user and request
-$data: Associative array of data for handlers to record. It must include values for:
- - 'namespace' Integer namespace for target title (NS_SPECIAL is allowed)
- - 'title'     Database key string for target title (empty string if not applicable)
- - 'pageid'    Integer page ID for target title (zero if not applicable)
- - 'action'    Wikitext string in the same format as an edit summary
- - 'comment'   Wikitext string in the same format as an edit summary
- - 'timestamp' Timestamp when the action occured
-
-'LoginAuthenticateAudit': a login attempt for a valid user account either
+  - lim Integer Limit of items to show, default is 50
+  - conds Array Extra conditions for the query (e.g. "log_action != 'revision'")
+  - showIfEmpty boolean Set to false if you don't want any output in case the
+    loglist is empty 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
+    wfMessage()->params()->parseAsBlock()
+  - offset Set to overwrite offset parameter in $wgRequest set to '' to unset
+    offset
+  - wrap String Wrap the message in html (usually something like
+    "&lt;div ...>$1&lt;/div>").
+  - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
+
+'LoginAuthenticateAudit': A login attempt for a valid user account either
 succeeded or failed. No return data is accepted; this hook is for auditing only.
 $user: the User object being authenticated against
 $password: the password being submitted and found wanting
 $retval: a LoginForm class constant with authenticateUserData() return
-       value (SUCCESS, WRONG_PASS, etc)
+  value (SUCCESS, WRONG_PASS, etc.).
 
-'LogLine': Processes a single log entry on Special:Log
+'LogLine': Processes a single log entry on Special:Log.
 $log_type: string for the type of log entry (e.g. 'move'). Corresponds to
-       logging.log_type database field.
+  logging.log_type database field.
 $log_action: string for the type of log action (e.g. 'delete', 'block',
-       'create2'). Corresponds to logging.log_action database field.
+  'create2'). Corresponds to logging.log_action database field.
 $title: Title object that corresponds to logging.log_namespace and
-       logging.log_title database fields.
+  logging.log_title database fields.
 $paramArray: Array of parameters that corresponds to logging.log_params field.
-       Note that only $paramArray[0] appears to contain anything.
+  Note that only $paramArray[0] appears to contain anything.
 &$comment: string that corresponds to logging.log_comment database field, and
-       which is displayed in the UI.
+  which is displayed in the UI.
 &$revert: string that is displayed in the UI, similar to $comment.
 $time: timestamp of the log entry (added in 1.12)
 
-'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance script
+'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance
+script.
 $refreshLinks: RefreshLinks object
 
 'MagicWordwgVariableIDs': When definig new magic words IDs.
 $variableIDs: array of strings
 
-'MakeGlobalVariablesScript': called right before Skin::makeVariablesScript
-is executed. Ideally, this hook should only be used to add variables that
-depend on the current page/request; static configuration should be added
-through ResourceLoaderGetConfigVars instead.
-&$vars: variable (or multiple variables) to be added into the output
-       of Skin::makeVariablesScript
-$out: The OutputPage which called the hook,
-    can be used to get the real title
+'MakeGlobalVariablesScript': Called right before Skin::makeVariablesScript is
+executed. Ideally, this hook should only be used to add variables that depend on
+the current page/request; static configuration should be added through
+ResourceLoaderGetConfigVars instead.
+&$vars: variable (or multiple variables) to be added into the output of
+  Skin::makeVariablesScript
+$out: The OutputPage which called the hook, can be used to get the real title.
 
-'MarkPatrolled': before an edit is marked patrolled
+'MarkPatrolled': Aefore an edit is marked patrolled.
 $rcid: ID of the revision to be marked patrolled
 $user: the user (object) marking the revision as patrolled
-$wcOnlySysopsCanPatrol: config setting indicating whether the user
-       needs to be a sysop in order to mark an edit patrolled
+$wcOnlySysopsCanPatrol: config setting indicating whether the user needs to be a
+  sysop in order to mark an edit patrolled.
 
-'MarkPatrolledComplete': after an edit is marked patrolled
+'MarkPatrolledComplete': After an edit is marked patrolled.
 $rcid: ID of the revision marked as patrolled
 $user: user (object) who marked the edit patrolled
-$wcOnlySysopsCanPatrol: config setting indicating whether the user
-       must be a sysop to patrol the edit
+$wcOnlySysopsCanPatrol: config setting indicating whether the user must be a
+  sysop to patrol the edit.
 
-'MediaWikiPerformAction': Override MediaWiki::performAction().
-Use this to do something completely different, after the basic
-globals have been set up, but before ordinary actions take place.
+'MediaWikiPerformAction': Override MediaWiki::performAction(). Use this to do
+something completely different, after the basic globals have been set up, but
+before ordinary actions take place.
 $output: $wgOut
 $article: $wgArticle
 $title: $wgTitle
@@ -1472,12 +1514,12 @@ $user: $wgUser
 $request: $wgRequest
 $mediaWiki: The $mediawiki object
 
-'MessagesPreLoad': When loading a message from the database
+'MessagesPreLoad': When loading a message from the database.
 $title: title of the message (string)
 $message: value (string), change it to the message you want to define
 
-'MessageCacheReplace': When a message page is changed.
-Useful for updating caches.
+'MessageCacheReplace': When a message page is changed. Useful for updating
+caches.
 $title: name of the page changed.
 $text: new contents of the page.
 
@@ -1488,12 +1530,11 @@ $db: The database object to be queried.
 &$opts: Options for the query.
 &$join_conds: Join conditions for the query.
 
-'MonoBookTemplateToolboxEnd': Called by Monobook skin after toolbox links have
-been rendered (useful for adding more)
-Note: this is only run for the Monobook skin. This hook is deprecated and
-may be removed in the future. To add items to the toolbox you should use
-the SkinTemplateToolboxEnd hook instead, which works for all
-"SkinTemplate"-type skins.
+'MonoBookTemplateToolboxEnd': DEPRECATED. Called by Monobook skin after toolbox
+links have been rendered (useful for adding more). Note: this is only run for
+the Monobook skin. To add items to the toolbox you should use the
+SkinTemplateToolboxEnd hook instead, which works for all "SkinTemplate"-type
+skins.
 $tools: array of tools
 
 'BaseTemplateToolbox': Called by BaseTemplate when building the $toolbox array
@@ -1502,16 +1543,18 @@ still letting the skin make final decisions on skin-specific markup conventions
 using this hook.
 &$sk: The BaseTemplate base skin template
 &$toolbox: An array of toolbox items, see BaseTemplate::getToolbox and
-       BaseTemplate::makeListItem for details on the format of individual
-       items inside of this array
+  BaseTemplate::makeListItem for details on the format of individual items
+  inside of this array.
 
-'NamespaceIsMovable': Called when determining if it is possible to pages in a namespace.
+'NamespaceIsMovable': Called when determining if it is possible to pages in a
+namespace.
 $index: Integer; the index of the namespace being checked.
-$result: Boolean; whether MediaWiki currently thinks that pages in this namespace are movable.
-Hooks may change this value to override the return value of MWNamespace::isMovable()
+$result: Boolean; whether MediaWiki currently thinks that pages in this
+  namespace are movable. Hooks may change this value to override the return
+  value of MWNamespace::isMovable().
 
-'NewRevisionFromEditComplete': called when a revision was inserted
-due to an edit
+'NewRevisionFromEditComplete': Called when a revision was inserted due to an
+edit.
 $wikiPage: the WikiPage edited
 $rev: the new revision
 $baseID: the revision ID this was based off, if any
@@ -1519,45 +1562,46 @@ $user: the editing user
 
 'NormalizeMessageKey': Called before the software gets the text of a message
 (stuff in the MediaWiki: namespace), useful for changing WHAT message gets
-displayed
+displayed.
 &$key: the message being looked up. Change this to something else to change
-       what message gets displayed (string)
+  what message gets displayed (string)
 &$useDB: whether or not to look up the message in the database (bool)
 &$langCode: the language code to get the message for (string) - or -
-       whether to use the content language (true) or site language (false) (bool)
+  whether to use the content language (true) or site language (false) (bool)
 &$transform: whether or not to expand variables and templates
-       in the message (bool)
+  in the message (bool)
 
-'OldChangesListRecentChangesLine': Customize entire Recent Changes line,
-or return false to omit the line from RecentChanges and Watchlist special pages.
+'OldChangesListRecentChangesLine': Customize entire recent changes line, or
+return false to omit the line from RecentChanges and Watchlist special pages.
 &$changeslist: The OldChangesList instance.
 &$s: HTML of the form "<li>...</li>" containing one RC entry.
 &$rc: The RecentChange object.
+&$classes: array of css classes for the <li> element
 
-'OpenSearchUrls': Called when constructing the OpenSearch description XML.
-Hooks can alter or append to the array of URLs for search & suggestion formats.
+'OpenSearchUrls': Called when constructing the OpenSearch description XML. Hooks
+can alter or append to the array of URLs for search & suggestion formats.
 &$urls: array of associative arrays with Url element attributes
 
 'OtherBlockLogLink': Get links to the block log from extensions which blocks
-       users and/or IP addresses too
+users and/or IP addresses too.
 $otherBlockLink: An array with links to other block logs
 $ip: The requested IP address or username
 
-'OutputPageBeforeHTML': a page has been processed by the parser and
-the resulting HTML is about to be displayed.
+'OutputPageBeforeHTML': A page has been processed by the parser and the
+resulting HTML is about to be displayed.
 $parserOutput: the parserOutput (object) that corresponds to the page
 $text: the text that will be displayed, in HTML (string)
 
-'OutputPageBodyAttributes': called when OutputPage::headElement is creating the body
-tag to allow for extensions to add attributes to the body of the page they might
-need. Or to allow building extensions to add body classes that aren't of high
-enough demand to be included in core.
+'OutputPageBodyAttributes': Called when OutputPage::headElement is creating the
+body tag to allow for extensions to add attributes to the body of the page they
+might need. Or to allow building extensions to add body classes that aren't of
+high enough demand to be included in core.
 $out: The OutputPage which called the hook, can be used to get the real title
 $sk: The Skin that called OutputPage::headElement
 &$bodyAttrs: An array of attributes for the body tag passed to Html::openElement
 
 'OutputPageCheckLastModified': when checking if the page has been modified
-since the last visit
+since the last visit.
 &$modifiedTimes: array of timestamps.
        The following keys are set: page, user, epoch
 
@@ -1565,16 +1609,16 @@ since the last visit
 $out: OutputPage instance (object)
 $parserOutput: parserOutput instance being added in $out
 
-'OutputPageMakeCategoryLinks': links are about to be generated for the page's
+'OutputPageMakeCategoryLinks': Links are about to be generated for the page's
 categories. Implementations should return false if they generate the category
 links, so the default link generation is skipped.
 $out: OutputPage instance (object)
 $categories: associative array, keys are category names, values are category
-       types ("normal" or "hidden")
+  types ("normal" or "hidden")
 $links: array, intended to hold the result. Must be an associative array with
-       category types as keys and arrays of HTML links as values.
+  category types as keys and arrays of HTML links as values.
 
-'PageContentInsertComplete': After a new article is created
+'PageContentInsertComplete': After a new article is created.
 $wikiPage: WikiPage created
 $user: User creating the article
 $content: New content as a Content object
@@ -1585,13 +1629,13 @@ $section: (No longer used)
 $flags: Flags passed to WikiPage::doEditContent()
 $revision: New Revision of the article
 
-'PageContentLanguage': allows changing the language in which the content of
-page is written. Defaults to the wiki content language ($wgContLang).
+'PageContentLanguage': Allows changing the language in which the content of a
+page is written. Defaults to the wiki content language ($wgContLang).
 $title: Title object
 &$pageLang: the page content language (either an object or a language code)
 $wgLang: the user language
 
-'PageContentSave': before an article is saved.
+'PageContentSave': Before an article is saved.
 $wikiPage: the WikiPage (object) being saved
 $user: the user (object) saving the article
 $content: the new article content, as a Content object
@@ -1600,7 +1644,7 @@ $isminor: minor flag
 $iswatch: watch flag
 $section: section #
 
-'PageContentSaveComplete': After an article has been updated
+'PageContentSaveComplete': After an article has been updated.
 $wikiPage: WikiPage modified
 $user: User performing the modification
 $content: New content, as a Content object
@@ -1616,58 +1660,62 @@ $baseRevId: the rev ID (or false) this edit was based on
 'PageHistoryBeforeList': When a history page list is about to be constructed.
 $article: the article that the history is loading for
 
-'PageHistoryLineEnding' : right before the end <li> is added to a history line
+'PageHistoryLineEnding' : Right before the end <li> is added to a history line.
 $row: the revision row for this line
 $s: the string representing this parsed line
 $classes: array containing the <li> element classes
 
-'PageHistoryPager::getQueryInfo': when a history pager query parameter set
-is constructed
+'PageHistoryPager::getQueryInfo': when a history pager query parameter set is
+constructed.
 $pager: the pager
 $queryInfo: the query parameters
 
-'PageRenderingHash': alter the parser cache option hash key
-A parser extension which depends on user options should install
-this hook and append its values to the key.
+'PageRenderingHash': Alter the parser cache option hash key. 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::internalParse() returns.
 $parser: parser object
 $text: text being parsed
 $stripState: stripState used (object)
 
-'ParserAfterStrip': Same as ParserBeforeStrip
+'ParserAfterStrip': Called at end of parsing time.
+TODO: No more strip, deprecated ?
+$parser: parser object
+$text: text being parsed
+$stripState: stripState used (object)
 
 'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
 $parser: Parser object being used
 $text: text that'll be returned
 
-'ParserBeforeInternalParse': called at the beginning of Parser::internalParse()
+'ParserBeforeInternalParse': Called at the beginning of Parser::internalParse().
 $parser: Parser object
 $text: text to parse
 $stripState: StripState instance being used
 
-'ParserBeforeStrip': Called at start of parsing time
-(no more strip, deprecated ?)
+'ParserBeforeStrip': Called at start of parsing time.
+TODO: No more strip, deprecated ?
 $parser: parser object
 $text: text being parsed
 $stripState: stripState used (object)
 
-'ParserBeforeTidy': called before tidy and custom tags replacements
+'ParserBeforeTidy': Called before tidy and custom tags replacements.
 $parser: Parser object being used
 $text: actual text
 
-'ParserClearState': called at the end of Parser::clearState()
+'ParserClearState': Called at the end of Parser::clearState().
 $parser: Parser object being cleared
 
-'ParserCloned': called when the parser is cloned
+'ParserCloned': Called when the parser is cloned.
 $parser: Newly-cloned Parser object
 
-'ParserFirstCallInit': called when the parser initialises for the first time
+'ParserFirstCallInit': Called when the parser initialises for the first time.
 &$parser: Parser object being cleared
 
-'ParserGetVariableValueSwitch': called when the parser need the value of a
+'ParserGetVariableValueSwitch': Called when the parser need the value of a
 custom magic word
 $parser: Parser object
 $varCache: array to store the value in case of multiples calls of the
@@ -1676,18 +1724,18 @@ $index: index (string) of the magic
 $ret: value of the magic word (the hook should set it)
 $frame: PPFrame object to use for expanding any template variables
 
-'ParserGetVariableValueTs': use this to change the value of the time for the
-{{LOCAL...}} magic word
+'ParserGetVariableValueTs': Use this to change the value of the time for the
+{{LOCAL...}} magic word.
 $parser: Parser object
 $time: actual time (timestamp)
 
-'ParserGetVariableValueVarCache': use this to change the value of the
-variable cache or return false to not use it
+'ParserGetVariableValueVarCache': use this to change the value of the variable
+cache or return false to not use it.
 $parser: Parser object
 $varCache: varaiable cache (array)
 
-'ParserLimitReport': called at the end of Parser:parse() when the parser will
-include comments about size of the text parsed
+'ParserLimitReport': Called at the end of Parser:parse() when the parser will
+include comments about size of the text parsed.
 $parser: Parser object
 $limitReport: text that will be included (without comment tags)
 
@@ -1699,27 +1747,26 @@ $file: file object that will be used to create the image
 $parser: Parser object that called the hook
 
 'ParserSectionCreate': Called each time the parser creates a document section
-from wikitext.  Use this to apply per-section modifications to HTML (like
+from wikitext. Use this to apply per-section modifications to HTML (like
 wrapping the section in a DIV).  Caveat: DIVs are valid wikitext, and a DIV
-can begin in one section and end in another.  Make sure your code can handle
-that case gracefully.  See the EditSectionClearerLink extension for an
-example.
+can begin in one section and end in another. Make sure your code can handle
+that case gracefully. See the EditSectionClearerLink extension for an example.
 $parser: the calling Parser instance
 $section: the section number, zero-based, but section 0 is usually empty
 &$sectionContent: ref to the content of the section. modify this.
 $showEditLinks: boolean describing whether this section has an edit link
 
-'ParserTestParser': called when creating a new instance of Parser in
-maintenance/parserTests.inc
+'ParserTestParser': Called when creating a new instance of Parser in
+maintenance/parserTests.inc.
 $parser: Parser object created
 
 'ParserTestGlobals': Allows to define globals for parser tests.
 &$globals: Array with all the globals which should be set for parser tests.
-       The arrays keys serve as the globals names, its values are the globals values.
+  The arrays keys serve as the globals names, its values are the globals values.
 
-'ParserTestTables': alter the list of tables to duplicate when parser tests
-are run. Use when page save hooks require the presence of custom tables
-to ensure that tests continue to run properly.
+'ParserTestTables': Alter the list of tables to duplicate when parser tests are
+run. Use when page save hooks require the presence of custom tables to ensure
+that tests continue to run properly.
 &$tables: array of table names
 
 'PersonalUrls': Alter the user-specific navigation links (e.g. "my page,
@@ -1727,21 +1774,22 @@ my talk page, my contributions" etc).
 &$personal_urls: Array of link specifiers (see SkinTemplate.php)
 &$title: Title object representing the current page
 
-'PingLimiter': Allows extensions to override the results of User::pingLimiter()
+'PingLimiter': Allows extensions to override the results of User::pingLimiter().
 &$user : User performing the action
 $action : Action being performed
 &$result : Whether or not the action should be prevented
 Change $result and return false to give a definitive answer, otherwise
 the built-in rate limiting checks are used, if enabled.
 
-'PlaceNewSection': Override placement of new sections.
+'PlaceNewSection': Override placement of new sections. Return false and put the
+merged text into $text to override the default behavior.
 $wikipage : WikiPage object
 $oldtext : the text of the article before editing
 $subject : subject of the new section
 &$text : text of the new section
-Return false and put the merged text into $text to override the default behavior.
 
-'PreferencesGetLegend': Override the text used for the <legend> of a preferences section
+'PreferencesGetLegend': Override the text used for the <legend> of a
+preferences section.
 $form: the PreferencesForm object. This is a ContextSource as well
 $key: the section name
 &$legend: the legend text. Defaults to wfMessage( "prefs-$key" )->text() but may be overridden
@@ -1753,71 +1801,82 @@ $search : search term (not guaranteed to be conveniently normalized)
 $limit : maximum number of results to return
 &$results : out param: array of page names (strings)
 
-'PrefsEmailAudit': called when user changes his email address
+'PrefsEmailAudit': Called when user changes their email address.
 $user: User (object) changing his email address
 $oldaddr: old email address (string)
 $newaddr: new email address (string)
 
-'PrefsPasswordAudit': called when user changes his password
+'PrefsPasswordAudit': Called when user changes his password.
 $user: User (object) changing his passoword
 $newPass: new password
 $error: error (string) 'badretype', 'wrongpassword', 'error' or 'success'
 
-'ProtectionForm::buildForm': called after all protection type fieldsets are made in the form
+'ProtectionForm::buildForm': Called after all protection type fieldsets are made
+in the form.
 $article: the title being (un)protected
 $output: a string of the form HTML so far
 
-'ProtectionForm::save': called when a protection form is submitted
+'ProtectionForm::save': Called when a protection form is submitted.
 $article: the title being (un)protected
-$errorMsg: an html message string of an error or an array of message name and its parameters
+$errorMsg: an html message string of an error or an array of message name and
+  its parameters
 
-'ProtectionForm::showLogExtract': called after the protection log extract is shown
+'ProtectionForm::showLogExtract': Called after the protection log extract is
+shown.
 $article: the page the form is shown for
 $out: OutputPage object
 
-'RawPageViewBeforeOutput': Right before the text is blown out in action=raw
+'RawPageViewBeforeOutput': Right before the text is blown out in action=raw.
 &$obj: RawPage object
 &$text: The text that's going to be the output
 
-'RecentChange_save': called at the end of RecentChange::save()
+'RecentChange_save': Called at the end of RecentChange::save().
 $recentChange: RecentChange object
 
-'RedirectSpecialArticleRedirectParams': lets you alter the set of
-parameter names such as "oldid" that are preserved when using
-redirecting special pages such as Special:MyPage and Special:MyTalk.
+'RedirectSpecialArticleRedirectParams': Lets you alter the set of parameter
+names such as "oldid" that are preserved when using redirecting special pages
+such as Special:MyPage and Special:MyTalk.
 &$redirectParams: An array of parameters preserved by redirecting special pages.
 
-'RequestContextCreateSkin': Called when RequestContext::getSkin creates a skin instance.
-Can be used by an extension override what skin is used in certain contexts.
+'RequestContextCreateSkin': Called when RequestContext::getSkin creates a skin
+instance. Can be used by an extension override what skin is used in certain
+contexts.
 IContextSource $context: The RequestContext the skin is being created for.
-&$skin: A variable reference you may set a Skin instance or string key on to override the skin that will be used for the context.
+&$skin: A variable reference you may set a Skin instance or string key on to
+  override the skin that will be used for the context.
 
-'ResourceLoaderGetConfigVars': called at the end of
+'ResourceLoaderGetConfigVars': Called at the end of
 ResourceLoaderStartUpModule::getConfig(). Use this to export static
-configuration variables to JavaScript. Things that depend on the current
-page/request state must be added through MakeGlobalVariablesScript instead.
+configuration variables to JavaScript. Things that depend on the current page
+or request state must be added through MakeGlobalVariablesScript instead.
 &$vars: array( variable name => value )
 
-'ResourceLoaderGetStartupModules': Run once the startup module is being generated. This allows you
-to add modules to the startup module. This hook should be used sparingly since any module added here
-will be loaded on all pages. This hook is useful if you want to make code available to module loader
+'ResourceLoaderGetStartupModules': Run once the startup module is being
+generated. This allows you to add modules to the startup module. This hook
+should be used sparingly since any module added here will be loaded on all
+pages. This hook is useful if you want to make code available to module loader
 scripts.
 
-'ResourceLoaderRegisterModules': Right before modules information is required, such as when responding to a resource
+'ResourceLoaderRegisterModules': Right before modules information is required,
+such as when responding to a resource
 loader request or generating HTML output.
 &$resourceLoader: ResourceLoader object
 
-'ResourceLoaderTestModules': let you add new JavaScript testing modules. This is called after the addition of 'qunit' and MediaWiki testing resources.
-&testModules: array of JavaScript testing modules. The 'qunit' framework, included in core, is fed using tests/qunit/QUnitTestResources.php.
+'ResourceLoaderTestModules': Let you add new JavaScript testing modules. This is
+called after the addition of 'qunit' and MediaWiki testing resources.
+&testModules: array of JavaScript testing modules. The 'qunit' framework,
+  included in core, is fed using tests/qunit/QUnitTestResources.php.
 &ResourceLoader object
+
 To add a new qunit module named 'myext.tests':
 testModules['qunit']['myext.tests'] = array(
        'script' => 'extension/myext/tests.js',
        'dependencies' => <any module dependency you might have>
 );
-For qunit framework, the mediawiki.tests.qunit.testrunner dependency will be added to any module.
+For QUnit framework, the mediawiki.tests.qunit.testrunner dependency will be
+added to any module.
 
-'RevisionInsertComplete': called after a revision is inserted into the DB
+'RevisionInsertComplete': Called after a revision is inserted into the database.
 &$revision: the Revision
 $data: the data stored in old_text.  The meaning depends on $flags: if external
   is set, it's the URL of the revision text in external storage; otherwise,
@@ -1826,13 +1885,14 @@ $data: the data stored in old_text.  The meaning depends on $flags: if external
 $flags: a comma-delimited list of strings representing the options used.  May
   include: utf8 (this will always be set for new revisions); gzip; external.
 
-'SearchUpdate': Prior to search update completion
+'SearchUpdate': Prior to search update completion.
 $id : Page id
 $namespace : Page namespace
 $title : Page title
 $text : Current text being indexed
 
-'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before the normal operations
+'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before
+the normal operations.
 $allSearchTerms : Array of the search terms in all content languages
 &$titleResult : Outparam; the value to return. A Title object or null.
 
@@ -1842,11 +1902,13 @@ runs after.
 $term : Search term string
 &$title : Outparam; set to $title object and return false for a match
 
-'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches if nothing was found
+'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches
+if nothing was found.
 $term : Search term string
 &$title : Outparam; set to $title object and return false for a match
 
-'SearchGetNearMatchComplete': A chance to modify exact-title-matches in "go" searches
+'SearchGetNearMatchComplete': A chance to modify exact-title-matches in "go"
+searches.
 $term : Search term string
 &$title : Current Title object that is being returned (null if none found).
 
@@ -1864,9 +1926,11 @@ $title : Current Title object being displayed in search results.
 'SearchableNamespaces': An option to modify which namespaces are searchable.
 &$arr : Array of namespaces ($nsId => $name) which will be used.
 
+'SeleniumSettings': TODO
+
 'SetupAfterCache': Called in Setup.php, after cache objects are set
 
-'ShowMissingArticle': Called when generating the output for a non-existent page
+'ShowMissingArticle': Called when generating the output for a non-existent page.
 $article: The article object corresponding to the page
 
 'ShowRawCssJs': Customise the output of raw CSS and JavaScript in page views.
@@ -1894,50 +1958,52 @@ $terms: Search terms, for highlighting
 &$size: HTML of page size. May be modified.
 &$date: HTML of of page modification date. May be modified.
 &$related: HTML of additional info for the matching page. May be modified.
-&$html: May be set to the full HTML that should be used to represent the search hit. Must include
-the <li> ... </li> tags. Will only be used if the hook function returned false.
+&$html: May be set to the full HTML that should be used to represent the search
+  hit. Must include the <li> ... </li> tags. Will only be used if the hook
+  function returned false.
 
-'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
+'SiteNoticeBefore': Before the sitenotice/anonnotice is composed. Return true to
+allow the normal method of notice selection/rendering to work, or change the
+value of $siteNotice and return false to alter it.
 &$siteNotice: HTML returned as the sitenotice
 $skin: Skin object
-Return true to allow the normal method of notice selection/rendering to work,
-or change the value of $siteNotice and return false to alter it.
 
-'SiteNoticeAfter': After the sitenotice/anonnotice is composed
-&$siteNotice: HTML sitenotice
+'SiteNoticeAfter': After the sitenotice/anonnotice is composed.
+&$siteNotice: HTML sitenotice. Alter the contents of $siteNotice to add to/alter
+  the sitenotice/anonnotice.
 $skin: Skin object
-Alter the contents of $siteNotice to add to/alter the sitenotice/anonnotice.
 
-'SkinAfterBottomScripts': At the end of Skin::bottomScripts()
+'SkinAfterBottomScripts': At the end of Skin::bottomScripts().
 $skin: Skin object
-&$text: bottomScripts Text
-Append to $text to add additional text/scripts after the stock bottom scripts.
+&$text: bottomScripts Text. Append to $text to add additional text/scripts after
+  the stock bottom scripts.
 
 'SkinAfterContent': Allows extensions to add text after the page content and
-article metadata.
+article metadata. This hook should work in all skins. Set the &$data variable to
+the text you're going to add.
 &$data: (string) Text to be printed out directly (without parsing)
 $skin: Skin object
-This hook should work in all skins. Just set the &$data variable to the text
-you're going to add.
 
-'SkinBuildSidebar': At the end of Skin::buildSidebar()
+'SkinBuildSidebar': At the end of Skin::buildSidebar().
 $skin: Skin object
 &$bar: Sidebar contents
 Modify $bar to add or modify sidebar portlets.
 
-'SkinCopyrightFooter': Allow for site and per-namespace customization of copyright notice.
+'SkinCopyrightFooter': Allow for site and per-namespace customization of
+copyright notice.
 $title: displayed page title
 $type: 'normal' or 'history' for old/diff views
-&$msg: overridable message; usually 'copyright' or 'history_copyright'. This message must be in HTML format, not wikitext!
+&$msg: overridable message; usually 'copyright' or 'history_copyright'. This
+  message must be in HTML format, not wikitext!
 &$link: overridable HTML link to be passed into the message as $1
 &$forContent: overridable flag if copyright footer is shown in content language.
 
-'SkinGetPoweredBy'
-&$text: additional 'powered by' icons in HTML.
-Note: Modern skin does not use the MediaWiki icon but plain text instead
+'SkinGetPoweredBy': TODO
+&$text: additional 'powered by' icons in HTML. Note: Modern skin does not use
+the MediaWiki icon but plain text instead.
 $skin: Skin object
 
-'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
+'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle().
 &$subpages: Subpage links HTML
 $skin: Skin object
 $out: OutputPage object
@@ -1946,25 +2012,30 @@ subPageSubtitle() generates.
 If true is returned, $subpages will be ignored and the rest of
 subPageSubtitle() will run.
 
-'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the
-"permanent link" tab
+'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': After creating the "permanent
+link" tab.
 $sktemplate: SkinTemplate object
 $nav_urls: array of tabs
 
-Alter the structured navigation links in SkinTemplates, there are three of these hooks called in different spots.
-'SkinTemplateNavigation': Called on content pages after the tabs have been added but before before variants have been added
-'SkinTemplateNavigation::SpecialPage': Called on special pages after the special tab is added but before variants have been added
-'SkinTemplateNavigation::Universal': Called on both content and special pages after variants have been added
+To alter the structured navigation links in SkinTemplates, there are three
+hooks called in different spots:
+
+'SkinTemplateNavigation': Called on content pages after the tabs have been
+added, but before variants have been added.
+'SkinTemplateNavigation::SpecialPage': Called on special pages after the special
+tab is added but before variants have been added.
+'SkinTemplateNavigation::Universal': Called on both content and special pages
+after variants have been added.
 &$sktemplate: SkinTemplate object
-&$links: Structured navigation links
-This is used to alter the navigation for skins which use buildNavigationUrls such as Vector.
+&$links: Structured navigation links. This is used to alter the navigation for
+  skins which use buildNavigationUrls such as Vector.
 
-'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage()
-starts page output
+'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage() starts
+page output.
 &$sktemplate: SkinTemplate object
 &$tpl: Template engine object
 
-'SkinTemplatePreventOtherActiveTabs': use this to prevent showing active tabs
+'SkinTemplatePreventOtherActiveTabs': Use this to prevent showing active tabs.
 $sktemplate: SkinTemplate object
 $res: set to true to prevent active tabs
 
@@ -1981,53 +2052,56 @@ $checkEdit: Whether or not the action=edit query should be added if appropriate.
 &$text: Link text.
 &$result: Complete assoc. array if you want to return true.
 
+'SkinTemplateTabs': TODO
+
 'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have
-been rendered (useful for adding more)
+been rendered (useful for adding more).
 $sk: The QuickTemplate based skin template running the hook.
 $dummy: Called when SkinTemplateToolboxEnd is used from a BaseTemplate skin,
-  extensions that add support for BaseTemplateToolbox should watch for this dummy
-  parameter with "$dummy=false" in their code and return without echoing any html
-  to avoid creating duplicate toolbox items.
+  extensions that add support for BaseTemplateToolbox should watch for this
+  dummy parameter with "$dummy=false" in their code and return without echoing
+  any HTML to avoid creating duplicate toolbox items.
 
-'SoftwareInfo': Called by Special:Version for returning information about
-the software
-$software: The array of software in format 'name' => 'version'.
-       See SpecialVersion::softwareInformation()
+'SoftwareInfo': Called by Special:Version for returning information about the
+software.
+$software: The array of software in format 'name' => 'version'. See
+  SpecialVersion::softwareInformation().
 
 'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
 $id: User identifier
 
-'SpecialListusersDefaultQuery': called right before the end of
-UsersPager::getDefaultQuery()
+'SpecialListusersDefaultQuery': Called right before the end of
+UsersPager::getDefaultQuery().
 $pager: The UsersPager instance
 $query: The query array to be returned
 
-'SpecialListusersFormatRow': called right before the end of
-UsersPager::formatRow()
+'SpecialListusersFormatRow': Called right before the end of
+UsersPager::formatRow().
 $item: HTML to be returned. Will be wrapped in <li></li> after the hook finishes
 $row: Database row object
 
-'SpecialListusersHeader': called before closing the <fieldset> in
-UsersPager::getPageHeader()
+'SpecialListusersHeader': Called before closing the <fieldset> in
+UsersPager::getPageHeader().
 $pager: The UsersPager instance
 $out: The header HTML
 
-'SpecialListusersHeaderForm': called before adding the submit button in
-UsersPager::getPageHeader()
+'SpecialListusersHeaderForm': Called before adding the submit button in
+UsersPager::getPageHeader().
 $pager: The UsersPager instance
 $out: The header HTML
 
-'SpecialListusersQueryInfo': called right before the end of
+'SpecialListusersQueryInfo': Called right before the end of.
 UsersPager::getQueryInfo()
 $pager: The UsersPager instance
 $query: The query array to be returned
 
-'SpecialMovepageAfterMove': called after moving a page
+'SpecialMovepageAfterMove': Called after moving a page.
 $movePage: MovePageForm object
 $oldTitle: old title (object)
 $newTitle: new title (object)
 
-'SpecialNewpagesConditions': called when building sql query for Special:NewPages
+'SpecialNewpagesConditions': Called when building sql query for
+Special:NewPages.
 &$special: NewPagesPager object (subclass of ReverseChronologicalPager)
 $opts: FormOptions object containing special page options
 &$conds: array of WHERE conditionals for query
@@ -2035,50 +2109,55 @@ $opts: FormOptions object containing special page options
 &$fields: array of columns to select
 &$join_conds: join conditions for the tables
 
-'SpecialNewPagesFilters': called after building form options at NewPages
+'SpecialNewPagesFilters': Called after building form options at NewPages.
 $special: the special page object
-&$filters: associative array of filter definitions. The keys are the HTML name/URL parameters.
-Each key maps to an associative array with a 'msg' (message key) and a 'default' value.
+&$filters: associative array of filter definitions. The keys are the HTML
+  name/URL parameters. Each key maps to an associative array with a 'msg'
+  (message key) and a 'default' value.
 
-'SpecialPage_initList': called when setting up SpecialPage::$mList, use this
-hook to remove a core special page
+'SpecialPage_initList': Called when setting up SpecialPage::$mList, use this
+hook to remove a core special page.
 $list: list (array) of core special pages
 
-'SpecialPageAfterExecute': called after SpecialPage::execute
+'SpecialPageAfterExecute': Called after SpecialPage::execute.
 $special: the SpecialPage object
 $subPage: the subpage string or null if no subpage was specified
 
-'SpecialPageBeforeExecute': called before SpecialPage::execute
+'SpecialPageBeforeExecute': Called before SpecialPage::execute.
 $special: the SpecialPage object
 $subPage: the subpage string or null if no subpage was specified
 
-'SpecialPasswordResetOnSubmit': when executing a form submission on Special:PasswordReset
-$users: array of User objects
+'SpecialPasswordResetOnSubmit': When executing a form submission on
+Special:PasswordReset.
+$users: array of User objects.
 $data: array of data submitted by the user
-&$error: string, error code (message name) used to describe to error (out paramater).
-       The hook needs to return false when setting this, otherwise it will have no effect.
+&$error: string, error code (message key) used to describe to error (out
+  parameter). The hook needs to return false when setting this, otherwise it
+  will have no effect.
 
-'SpecialRandomGetRandomTitle': called during the execution of Special:Random,
-use this to change some selection criteria or substitute a different title
+'SpecialRandomGetRandomTitle': Called during the execution of Special:Random,
+use this to change some selection criteria or substitute a different title.
 &$randstr: The random number from wfRandom()
 &$isRedir: Boolean, whether to select a redirect or non-redirect
 &$namespaces: An array of namespace indexes to get the title from
 &$extra: An array of extra SQL statements
 &$title: If the hook returns false, a Title object to use instead of the
-result from the normal query
+  result from the normal query
 
-'SpecialRecentChangesFilters': called after building form options at RecentChanges
+'SpecialRecentChangesFilters': Called after building form options at
+RecentChanges.
 $special: the special page object
-&$filters: associative array of filter definitions. The keys are the HTML name/URL parameters.
-Each key maps to an associative array with a 'msg' (message key) and a 'default' value.
+&$filters: associative array of filter definitions. The keys are the HTML
+  name/URL parameters. Each key maps to an associative array with a 'msg'
+  (message key) and a 'default' value.
 
-'SpecialRecentChangesPanel': called when building form options in
-SpecialRecentChanges
+'SpecialRecentChangesPanel': Called when building form options in
+SpecialRecentChanges.
 &$extraOpts: array of added items, to which can be added
 $opts: FormOptions for this request
 
-'SpecialRecentChangesQuery': called when building sql query for
-SpecialRecentChanges and SpecialRecentChangesLinked
+'SpecialRecentChangesQuery': Called when building SQL query for
+SpecialRecentChanges and SpecialRecentChangesLinked.
 &$conds: array of WHERE conditionals for query
 &$tables: array of tables to be queried
 &$join_conds: join conditions for the tables
@@ -2086,222 +2165,231 @@ $opts: FormOptions for this request
 &$query_options: array of options for the database request
 &$select: Array of columns to select
 
-'SpecialSearchCreateLink': called when making the message to create a page or
-go to the existing page
+'SpecialSearchCreateLink': Called when making the message to create a page or
+go to the existing page.
 $t: title object searched for
 &$params: an array of the default message name and page title (as parameter)
 
-'SpecialSearchGo': called when user clicked the "Go"
+'SpecialSearchGo': Valled when user clicked the "Go".
 &$title: title object generated from the text entered by the user
 &$term: the search term entered by the user
 
-'SpecialSearchNogomatch': called when user clicked the "Go" button but the
-target doesn't exist
+'SpecialSearchNogomatch': Called when user clicked the "Go" button but the
+target doesn't exist.
 &$title: title object generated from the text entered by the user
 
-'SpecialSearchPowerBox': the equivalent of SpecialSearchProfileForm for
-the advanced form, a.k.a. power search box
+'SpecialSearchPowerBox': The equivalent of SpecialSearchProfileForm for
+the advanced form, a.k.a. power search box.
 &$showSections: an array to add values with more options to
 $term: the search term (not a title object)
 $opts: an array of hidden options (containing 'redirs' and 'profile')
 
-'SpecialSearchProfiles': allows modification of search profiles
+'SpecialSearchProfiles': Allows modification of search profiles.
 &$profiles: profiles, which can be modified.
 
-'SpecialSearchProfileForm': allows modification of search profile forms
+'SpecialSearchProfileForm': Allows modification of search profile forms.
 $search: special page object
 &$form: String: form html
 $profile: String: current search profile
 $term: String: search term
 $opts: Array: key => value of hidden options for inclusion in custom forms
 
-'SpecialSearchSetupEngine': allows passing custom data to search engine
-$search: special page object
+'SpecialSearchSetupEngine': Allows passing custom data to search engine.
+$search: SpecialSearch special page object
 $profile: String: current search profile
 $engine: the search engine
 
-'SpecialSearchResults': called before search result display when there
-are matches
+'SpecialSearchResults': Called before search result display when there are
+matches.
 $term: string of search term
 &$titleMatches: empty or SearchResultSet object
 &$textMatches: empty or SearchResultSet object
 
-'SpecialSearchNoResults': called before search result display when there are
-no matches
+'SpecialSearchNoResults': Called before search result display when there are no
+matches.
 $term: string of search term
 
-'SpecialStatsAddExtra': add extra statistic at the end of Special:Statistics
+'SpecialStatsAddExtra': Add extra statistic at the end of Special:Statistics.
 &$extraStats: Array to save the new stats
-              ( $extraStats['<name of statistic>'] => <value>; )
+  ( $extraStats['<name of statistic>'] => <value>; )
 
 'SpecialUploadComplete': Called after successfully uploading a file from
-Special:Upload
+Special:Upload.
 $form: The SpecialUpload object
 
-'SpecialVersionExtensionTypes': called when generating the extensions credits,
-use this to change the tables headers
+'SpecialVersionExtensionTypes': Called when generating the extensions credits,
+use this to change the tables headers.
 $extTypes: associative array of extensions types
 
-'SpecialVersionVersionUrl': called when building the URL for Special:Version
+'SpecialVersionVersionUrl': Called when building the URL for Special:Version.
 $wgVersion: Current $wgVersion for you to use
 &$versionUrl: Raw url to link to (eg: release notes)
 
-'SpecialWatchlistFilters': called after building form options at Watchlist
+'SpecialWatchlistFilters': Called after building form options at Watchlist.
 $special: the special page object
-&$filters: associative array of filter definitions. The keys are the HTML name/URL parameters.
-Each key maps to an associative array with a 'msg' (message key) and a 'default' value.
+&$filters: associative array of filter definitions. The keys are the HTML
+  name/URL parameters. Each key maps to an associative array with a 'msg'
+  (message key) and a 'default' value.
 
-'SpecialWatchlistQuery': called when building sql query for SpecialWatchlist
+'SpecialWatchlistQuery': Called when building sql query for SpecialWatchlist.
 &$conds: array of WHERE conditionals for query
 &$tables: array of tables to be queried
 &$join_conds: join conditions for the tables
 &$fields: array of query fields
 
-'TestCanonicalRedirect': called when about to force a redirect to a canonical URL for a title when we have no other parameters on the URL. Gives a chance for extensions that alter page view behavior radically to abort that redirect or handle it manually.
+'TestCanonicalRedirect': Called when about to force a redirect to a canonical
+URL for a title when we have no other parameters on the URL. Gives a chance for
+extensions that alter page view behavior radically to abort that redirect or
+handle it manually.
 $request: WebRequest
 $title: Title of the currently found title obj
 $output: OutputPage object
 
-'ThumbnailBeforeProduceHTML': called before an image HTML is about to be rendered (by ThumbnailImage:toHtml method)
+'ThumbnailBeforeProduceHTML': Called before an image HTML is about to be
+rendered (by ThumbnailImage:toHtml method).
 $thumbnail: the ThumbnailImage object
 &$attribs: image attibute array
 &$linkAttribs: image link attribute array
 
-'TitleArrayFromResult': called when creating an TitleArray object from a
-database result
+'TitleArrayFromResult': Called when creating an TitleArray object from a
+database result.
 &$titleArray: set this to an object to override the default object returned
 $res: database result used to create the object
 
 'TitleGetRestrictionTypes': Allows extensions to modify the types of protection
-  that can be applied.
+that can be applied.
 $title: The title in question.
 &$types: The types of protection available.
 
-'TitleIsCssOrJsPage': Called when determining if a page is a CSS or JS page
+'TitleIsCssOrJsPage': Called when determining if a page is a CSS or JS page.
 $title: Title object that is being checked
-$result: Boolean; whether MediaWiki currently thinks this is a CSS/JS page. Hooks may change this value to override the return value of Title::isCssOrJsPage()
-
-'TitleIsAlwaysKnown': Called when determining if a page exists.
-Allows overriding default behaviour for determining if a page exists.
-If $isKnown is kept as null, regular checks happen. If it's a boolean, this value is returned by the isKnown method.
+$result: Boolean; whether MediaWiki currently thinks this is a CSS/JS page.
+  Hooks may change this value to override the return value of
+  Title::isCssOrJsPage().
+
+'TitleIsAlwaysKnown': Called when determining if a page exists. Allows
+overriding default behaviour for determining if a page exists. If $isKnown is
+kept as null, regular checks happen. If it's a boolean, this value is returned
+by the isKnown method.
 $title: Title object that is being checked
 &$isKnown: Boolean|null; whether MediaWiki currently thinks this page is known
 
-'TitleIsMovable': Called when determining if it is possible to move a page.
-Note that this hook is not called for interwiki pages or pages in immovable namespaces: for these, isMovable() always returns false.
+'TitleIsMovable': Called when determining if it is possible to move a page. Note
+that this hook is not called for interwiki pages or pages in immovable
+namespaces: for these, isMovable() always returns false.
 $title: Title object that is being checked
-$result: Boolean; whether MediaWiki currently thinks this page is movable. Hooks may change this value to override the return value of Title::isMovable()
+$result: Boolean; whether MediaWiki currently thinks this page is movable.
+  Hooks may change this value to override the return value of
+  Title::isMovable().
 
 'TitleIsWikitextPage': Called when determining if a page is a wikitext or should
-be handled by seperate handler (via ArticleViewCustom)
+be handled by seperate handler (via ArticleViewCustom).
 $title: Title object that is being checked
-$result: Boolean; whether MediaWiki currently thinks this is a wikitext page. Hooks may change this value to override the return value of Title::isWikitextPage()
+$result: Boolean; whether MediaWiki currently thinks this is a wikitext page.
+  Hooks may change this value to override the return value of
+  Title::isWikitextPage()
 
-'TitleMoveComplete': after moving an article (title)
+'TitleMoveComplete': After moving an article (title).
 $old: old title
 $nt: new title
 $user: user who did the move
 $pageid: database ID of the page that's been moved
 $redirid: database ID of the created redirect
 
-'TitleReadWhitelist': called at the end of read permissions checks, just before
-       adding the default error message if nothing allows the user to read the page.
-       If a handler wants a title to *not* be whitelisted, it should also return false.
+'TitleReadWhitelist': Called at the end of read permissions checks, just before
+adding the default error message if nothing allows the user to read the page. If
+a handler wants a title to *not* be whitelisted, it should also return false.
 $title: Title object being checked against
 $user: Current user object
 &$whitelisted: Boolean value of whether this title is whitelisted
 
-'UndeleteForm::showHistory': called in UndeleteForm::showHistory, after a
+'UndeleteForm::showHistory': Called in UndeleteForm::showHistory, after a
 PageArchive object has been created but before any further processing is done.
 &$archive: PageArchive object
 $title: Title object of the page that we're viewing
 
-'UndeleteForm::showRevision': called in UndeleteForm::showRevision, after a
+'UndeleteForm::showRevision': Called in UndeleteForm::showRevision, after a
 PageArchive object has been created but before any further processing is done.
 &$archive: PageArchive object
 $title: Title object of the page that we're viewing
 
-'UndeleteForm::undelete': called un UndeleteForm::undelete, after checking that
+'UndeleteForm::undelete': Called un UndeleteForm::undelete, after checking that
 the site is not in read-only mode, that the Title object is not null and after
 a PageArchive object has been constructed but before performing any further
 processing.
 &$archive: PageArchive object
 $title: Title object of the page that we're about to undelete
 
-'UndeleteShowRevision': called when showing a revision in Special:Undelete
+'UndeleteShowRevision': Called when showing a revision in Special:Undelete.
 $title: title object related to the revision
 $rev: revision (object) that will be viewed
 
-'UnknownAction': An unknown "action" has occured (useful for defining
-                your own actions)
+'UnknownAction': An unknown "action" has occured (useful for defining your own
+actions).
 $action: action name
 $article: article "acted on"
 
-'UnitTestsList': Called when building a list of files with PHPUnit tests
+'UnitTestsList': Called when building a list of files with PHPUnit tests.
 &$files: list of files
 
-'UnwatchArticle': before a watch is removed from an article
+'UnwatchArticle': Before a watch is removed from an article.
 $user: user watching
 $page: WikiPage object to be removed
 
-'UnwatchArticleComplete': after a watch is removed from an article
+'UnwatchArticleComplete': After a watch is removed from an article.
 $user: user that watched
 $page: WikiPage object that was watched
 
-'UpdateUserMailerFormattedPageStatus': before notification email gets sent
+'UpdateUserMailerFormattedPageStatus': Before notification email gets sent.
 $formattedPageStatus: list of valid page states
 
-'UploadForm:initial': before the upload form is generated
+'UploadForm:initial': Before the upload form is generated. You might set the
+member-variables $uploadFormTextTop and $uploadFormTextAfterSummary to inject
+text (HTML) either before or after the editform.
 $form: UploadForm object
-You might set the member-variables $uploadFormTextTop and
-$uploadFormTextAfterSummary to inject text (HTML) either before
-or after the editform.
 
-'UploadForm:BeforeProcessing': at the beginning of processUpload()
+'UploadForm:BeforeProcessing': At the beginning of processUpload(). Lets you
+poke at member variables like $mUploadDescription before the file is saved. Do
+not use this hook to break upload processing. This will return the user to a
+blank form with no error message; use UploadVerification and UploadVerifyFile
+instead.
 $form: UploadForm object
-Lets you poke at member variables like $mUploadDescription before the
-file is saved.
-Do not use this hook to break upload processing. This will return the user to
-a blank form with no error message; use UploadVerification and
-UploadVerifyFile instead
 
-'UploadCreateFromRequest': when UploadBase::createFromRequest has been called
+'UploadCreateFromRequest': When UploadBase::createFromRequest has been called.
 $type: (string) the requested upload type
 &$className: the class name of the Upload instance to be created
 
-'UploadComplete': when Upload completes an upload
+'UploadComplete': when Upload completes an upload.
 &$upload: an UploadBase child instance
 
-'UploadFormInitDescriptor': after the descriptor for the upload form as been
-       assembled
+'UploadFormInitDescriptor': After the descriptor for the upload form as been
+assembled.
 $descriptor: (array) the HTMLForm descriptor
 
 'UploadFormSourceDescriptors': after the standard source inputs have been
 added to the descriptor
 $descriptor: (array) the HTMLForm descriptor
 
-'UploadVerification': additional chances to reject an uploaded file. Consider
-                      using UploadVerifyFile instead.
+'UploadVerification': Additional chances to reject an uploaded file. Consider
+using UploadVerifyFile instead.
 string $saveName: destination file name
 string $tempName: filesystem path to the temporary file for checks
-string &$error: output: message key for message to show if upload canceled
-       by returning false. May also be an array, where the first element
-       is the message key and the remaining elements are used as parameters to
-       the message.
+string &$error: output: message key for message to show if upload canceled by
+  returning false. May also be an array, where the first element is the message
+  key and the remaining elements are used as parameters to the message.
 
 'UploadVerifyFile': extra file verification, based on mime type, etc. Preferred
-                    in most cases over UploadVerification.
+in most cases over UploadVerification.
 object $upload: an instance of UploadBase, with all info about the upload
-string $mime: the uploaded file's mime type, as detected by MediaWiki. Handlers
-       will typically only apply for specific mime types.
+string $mime: The uploaded file's mime type, as detected by MediaWiki. Handlers
+  will typically only apply for specific mime types.
 object &$error: output: true if the file is valid. Otherwise, an indexed array
-       representing the problem with the file, where the first element
-       is the message key and the remaining elements are used as parameters to
-       the message.
+  representing the problem with the file, where the first element is the message
+  key and the remaining elements are used as parameters to the message.
 
-'UploadComplete': Upon completion of a file upload
+'UploadComplete': Upon completion of a file upload.
 $uploadBase: UploadBase (or subclass) object. File can be accessed by
-       $uploadBase->getLocalFile().
+  $uploadBase->getLocalFile().
 
 'User::mailPasswordInternal': before creation and mailing of a user's new
 temporary password
@@ -2309,254 +2397,257 @@ $user: the user who sent the message out
 $ip: IP of the user who sent the message out
 $u: the account whose new password will be set
 
-'UserAddGroup': called when adding a group; return false to override
+'UserAddGroup': Called when adding a group; return false to override
 stock group addition.
 $user: the user object that is to have a group added
 &$group: the group to add, can be modified
 
-'UserArrayFromResult': called when creating an UserArray object from a
-database result
+'UserArrayFromResult': Called when creating an UserArray object from a database
+result.
 &$userArray: set this to an object to override the default object returned
 $res: database result used to create the object
 
-'userCan': To interrupt/advise the "user can do X to Y article" check.
-If you want to display an error message, try getUserPermissionsErrors.
+'userCan': To interrupt/advise the "user can do X to Y article" check. If you
+want to display an error message, try getUserPermissionsErrors.
 $title: Title object being checked against
 $user : Current user object
 $action: Action being checked
 $result: Pointer to result returned if hook returns false. If null is returned,
-       userCan checks are continued by internal code.
+  userCan checks are continued by internal code.
 
-'UserCanSendEmail': To override User::canSendEmail() permission check
+'UserCanSendEmail': To override User::canSendEmail() permission check.
 $user: User (object) whose permission is being checked
 &$canSend: bool set on input, can override on output
 
-'UserClearNewTalkNotification': called when clearing the
-"You have new messages!" message, return false to not delete it
+'UserClearNewTalkNotification': Called when clearing the "You have new
+messages!" message, return false to not delete it.
 $user: User (object) that'll clear the message
 
-'UserComparePasswords': called when checking passwords, return false to
-override the default password checks
+'UserComparePasswords': Called when checking passwords, return false to
+override the default password checks.
 &$hash: String of the password hash (from the database)
 &$password: String of the plaintext password the user entered
 &$userId: Integer of the user's ID or Boolean false if the user ID was not
-       supplied
+  supplied
 &$result: If the hook returns false, this Boolean value will be checked to
-       determine if the password was valid
+  determine if the password was valid
 
 'UserCreateForm': change to manipulate the login form
 $template: SimpleTemplate instance for the form
 
-'UserCryptPassword': called when hashing a password, return false to implement
-your own hashing method
+'UserCryptPassword': Called when hashing a password, return false to implement
+your own hashing method.
 &$password: String of the plaintext password to encrypt
 &$salt: String of the password salt or Boolean false if no salt is provided
-&$wgPasswordSalt: Boolean of whether the salt is used in the default
-       hashing method
+&$wgPasswordSalt: Boolean of whether the salt is used in the default hashing
+  method
 &$hash: If the hook returns false, this String will be used as the hash
 
-'UserEffectiveGroups': Called in User::getEffectiveGroups()
+'UserEffectiveGroups': Called in User::getEffectiveGroups().
 $user: User to get groups for
 &$groups: Current effective groups
 
-'UserGetAllRights': after calculating a list of all available rights
+'UserGetAllRights': After calculating a list of all available rights.
 &$rights: Array of rights, which may be added to.
 
-'UserGetDefaultOptions': after fetching the core default, this hook is ran
-right before returning the options to the caller. WARNING: this hook is
-called for every call to User::getDefaultOptions(), which means it's
-potentially called dozens or hundreds of times. You may want to cache
-the results of non-trivial operations in your hook function for this reason.
+'UserGetDefaultOptions': After fetching the core default, this hook is run right
+before returning the options to the caller. Warning: This hook is called for
+every call to User::getDefaultOptions(), which means it's potentially called
+dozens or hundreds of times. You may want to cache the results of non-trivial
+operations in your hook function for this reason.
 &$defaultOptions: Array of preference keys and their default values.
 
-'UserGetEmail': called when getting an user email address
+'UserGetEmail': Called when getting an user email address.
 $user: User object
 &$email: email, change this to override local email
 
-'UserGetEmailAuthenticationTimestamp': called when getting the timestamp of
-email authentification
+'UserGetEmailAuthenticationTimestamp': Called when getting the timestamp of
+email authentification.
 $user: User object
 &$timestamp: timestamp, change this to override local email authentification
-       timestamp
+  timestamp
 
-'UserGetImplicitGroups': Called in User::getImplicitGroups()
+'UserGetImplicitGroups': Called in User::getImplicitGroups().
 &$groups: List of implicit (automatically-assigned) groups
 
-'UserGetLanguageObject': Called when getting user's interface language object
+'UserGetLanguageObject': Called when getting user's interface language object.
 $user: User object
 &$code: Langauge code that will be used to create the object
 
-'UserGetReservedNames': allows to modify $wgReservedUsernames at run time
+'UserGetReservedNames': Allows to modify $wgReservedUsernames at run time.
 &$reservedUsernames: $wgReservedUsernames
 
-'UserGetRights': Called in User::getRights()
+'UserGetRights': Called in User::getRights().
 $user: User to get rights for
 &$rights: Current rights
 
-'UserIsBlockedFrom': Check if a user is blocked from a specific page (for specific block
-       exemptions).
+'UserIsBlockedFrom': Check if a user is blocked from a specific page (for
+specific block exemptions).
 $user: User in question
 $title: Title of the page in question
 &$blocked: Out-param, whether or not the user is blocked from that page.
-&$allowUsertalk: If the user is blocked, whether or not the block allows users to edit their
-                  own user talk pages.
+&$allowUsertalk: If the user is blocked, whether or not the block allows users
+  to edit their own user talk pages.
 
 'UserIsBlockedGlobally': Check if user is blocked on all wikis.
 &$user: User object
 $ip: User's IP address
 &$blocked: Whether the user is blocked, to be modified by the hook
 
-'UserLoadAfterLoadFromSession': called to authenticate users on
-external/environmental means; occurs after session is loaded
+'UserLoadAfterLoadFromSession': Called to authenticate users on external or
+environmental means; occurs after session is loaded.
 $user: user object being loaded
 
-'UserLoadDefaults': called when loading a default user
+'UserLoadDefaults': Called when loading a default user.
 $user: user object
 $name: user name
 
-'UserLoadFromDatabase': called when loading a user from the database
+'UserLoadFromDatabase': Called when loading a user from the database.
 $user: user object
 &$s: database query object
 
-'UserLoadFromSession': called to authenticate users on external/environmental
-means; occurs before session is loaded
+'UserLoadFromSession': Called to authenticate users on external/environmental
+means; occurs before session is loaded.
 $user: user object being loaded
 &$result: set this to a boolean value to abort the normal authentification
-       process
+  process
 
-'UserLoadOptions': when user options/preferences are being loaded from
-the database.
+'UserLoadOptions': When user options/preferences are being loaded from the
+database.
 $user: User object
 &$options: Options, can be modified.
 
-'UserLoginComplete': after a user has logged in
+'UserLoginComplete': After a user has logged in.
 $user: the user object that was created on login
 $inject_html: Any HTML to inject after the "logged in" message.
 
 'UserLoginForm': change to manipulate the login form
 $template: SimpleTemplate instance for the form
 
-'UserLogout': before a user logs out
+'UserLogout': Before a user logs out.
 $user: the user object that is about to be logged out
 
-'UserLogoutComplete': after a user has logged out
+'UserLogoutComplete': After a user has logged out.
 $user: the user object _after_ logout (won't have name, ID, etc.)
 $inject_html: Any HTML to inject after the "logged out" message.
 $oldName: name of the user before logout (string)
 
-'UserRemoveGroup': called when removing a group; return false to override
-stock group removal.
+'UserRemoveGroup': Called when removing a group; return false to override stock
+group removal.
 $user: the user object that is to have a group removed
 &$group: the group to be removed, can be modified
 
-'UserRights': After a user's group memberships are changed
+'UserRights': After a user's group memberships are changed.
 $user  : User object that was changed
 $add   : Array of strings corresponding to groups added
 $remove: Array of strings corresponding to groups removed
 
-'UserRetrieveNewTalks': called when retrieving "You have new messages!"
-message(s)
+'UserRetrieveNewTalks': Called when retrieving "You have new messages!"
+message(s).
 $user: user retrieving new talks messages
 $talks: array of new talks page(s)
 
-'UserSaveSettings': called when saving user settings
+'UserSaveSettings': Called when saving user settings.
 $user: User object
 
 'UserSaveOptions': Called just before saving user preferences/options.
 $user: User object
 &$options: Options, modifiable
 
-'UserSetCookies': called when setting user cookies
+'UserSetCookies': Called when setting user cookies.
 $user: User object
 &$session: session array, will be added to $_SESSION
 &$cookies: cookies array mapping cookie name to its value
 
-'UserSetEmail': called when changing user email address
+'UserSetEmail': Called when changing user email address.
 $user: User object
 &$email: new email, change this to override new email address
 
-'UserSetEmailAuthenticationTimestamp': called when setting the timestamp
-of email authentification
+'UserSetEmailAuthenticationTimestamp': Called when setting the timestamp of
+email authentification.
 $user: User object
 &$timestamp: new timestamp, change this to override local email
 authentification timestamp
 
-'UserToolLinksEdit': Called when generating a list of user tool links, eg "Foobar (Talk | Contribs | Block)"
+'UserToolLinksEdit': Called when generating a list of user tool links, e.g.
+"Foobar (Talk | Contribs | Block)".
 $userId: User id of the current user
 $userText: User name of the current user
 &$items: Array of user tool links as HTML fragments
 
-'WantedPages::getQueryInfo': called in WantedPagesPage::getQueryInfo(), can be
-used to alter the SQL query which gets the list of wanted pages
+'WantedPages::getQueryInfo': Called in WantedPagesPage::getQueryInfo(), can be
+used to alter the SQL query which gets the list of wanted pages.
 &$wantedPages: WantedPagesPage object
 &$query: query array, see QueryPage::getQueryInfo() for format documentation
 
-'WatchArticle': before a watch is added to an article
+'WatchArticle': Before a watch is added to an article.
 $user: user that will watch
 $page: WikiPage object to be watched
 
-'WatchArticleComplete': after a watch is added to an article
+'WatchArticleComplete': After a watch is added to an article.
 $user: user that watched
 $page: WikiPage object watched
 
 'WatchlistEditorBuildRemoveLine': when building remove lines in
-       Special:Watchlist/edit
+Special:Watchlist/edit.
 &$tools: array of extra links
 $title: Title object
 $redirect: whether the page is a redirect
 $skin: Skin object
 
-'WebRequestPathInfoRouter': While building the PathRouter to parse the REQUEST_URI.
+'WebRequestPathInfoRouter': While building the PathRouter to parse the
+REQUEST_URI.
 $router: The PathRouter instance
 
 'WikiExporter::dumpStableQuery': Get the SELECT query for "stable" revisions
-dumps
-One, and only one hook should set this, and return false.
+dumps. One, and only one hook should set this, and return false.
 &$tables: Database tables to use in the SELECT query
 &$opts: Options to use for the query
 &$join: Join conditions
 
 'WikiPageDeletionUpdates': manipulate the list of DataUpdates to be applied when
-       a page is deleted. Called in WikiPage::getDeletionUpdates().
-       Note that updates specific to a content model should be provided by the
-       respective Content's getDeletionUpdates() method.
+a page is deleted. Called in WikiPage::getDeletionUpdates(). Note that updates
+specific to a content model should be provided by the respective Content's
+getDeletionUpdates() method.
 $page: the WikiPage
 $content: the Content to generate updates for
 &$updates: the array of DataUpdate objects. Hook function may want to add to it.
 
-'wfShellWikiCmd': Called when generating a shell-escaped command line
-       string to run a MediaWiki cli script.
+'wfShellWikiCmd': Called when generating a shell-escaped command line string to
+run a MediaWiki cli script.
 &$script: MediaWiki cli script path
 &$parameters: Array of arguments and options to the script
 &$options: Associative array of options, may contain the 'php' and 'wrapper'
-       keys
+  keys
 
-'wgQueryPages': called when initialising $wgQueryPages, use this to add new
-query pages to be updated with maintenance/updateSpecialPages.php
+'wgQueryPages': Called when initialising $wgQueryPages, use this to add new
+query pages to be updated with maintenance/updateSpecialPages.php.
 $query: $wgQueryPages itself
 
-'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow extra
- metadata to be added.
+'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow
+extra metadata to be added.
 $obj: The XmlDumpWriter object.
 &$out: The output string.
 $row: The database row for the page.
 $title: The title of the page.
 
-'XmlDumpWriterWriteRevision': Called at the end of a revision in an XML dump, to add extra
- metadata.
+'XmlDumpWriterWriteRevision': Called at the end of a revision in an XML dump, to
+add extra metadata.
 $obj: The XmlDumpWriter object.
 &$out: The text being output.
 $row: The database row for the revision.
 $text: The revision text.
 
-'XMPGetInfo': Called when obtaining the list of XMP tags to extract. Can be used to add
-       additional tags to extract.
-&$items: Array containing information on which items to extract. See XMPInfo for details on the format.
+'XMPGetInfo': Called when obtaining the list of XMP tags to extract. Can be used
+to add additional tags to extract.
+&$items: Array containing information on which items to extract. See XMPInfo for
+  details on the format.
 
-'XMPGetResults': Called just before returning the results array of parsing xmp data. Can be
-       used to post-process the results.
-&$data: Array of metadata sections (such as $data['xmp-general']) each section is an array of
-       metadata tags returned (each tag is either a value, or an array of values).
+'XMPGetResults': Called just before returning the results array of parsing xmp
+data. Can be used to post-process the results.
+&$data: Array of metadata sections (such as $data['xmp-general']) each section
+  is an array of metadata tags returned (each tag is either a value, or an array
+  of values).
 
 More hooks might be available but undocumented, you can execute
-'php maintenance/findHooks.php' to find hidden one.
+'php maintenance/findHooks.php' to find hidden ones.
diff --git a/includes/ArrayUtils.php b/includes/ArrayUtils.php
new file mode 100644 (file)
index 0000000..4ff31b8
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+class ArrayUtils {
+       /**
+        * Sort the given array in a pseudo-random order which depends only on the
+        * given key and each element value. This is typically used for load
+        * balancing between servers each with a local cache.
+        *
+        * Keys are preserved. The input array is modified in place.
+        *
+        * Note: Benchmarking on PHP 5.3 and 5.4 indicates that for small
+        * strings, md5() is only 10% slower than hash('joaat',...) etc.,
+        * since the function call overhead dominates. So there's not much
+        * justification for breaking compatibility with installations
+        * compiled with ./configure --disable-hash.
+        * 
+        * @param $array The array to sort
+        * @param $key The string key
+        * @param $separator A separator used to delimit the array elements and the
+        *     key. This can be chosen to provide backwards compatibility with 
+        *     various consistent hash implementations that existed before this
+        *     function was introduced.
+        */
+       static function consistentHashSort( &$array, $key, $separator = "\000" ) {
+               $hashes = array();
+               foreach ( $array as $elt ) {
+                       $hashes[$elt] = md5( $elt . $separator . $key );
+               }
+               uasort( $array, function ( $a, $b ) use ( $hashes ) {
+                       return strcmp( $hashes[$a], $hashes[$b] );
+               } );
+       }
+}
+
index 5a887b6..10cbac7 100644 (file)
@@ -280,15 +280,13 @@ class Article extends Page {
                                $message = $this->getContext()->getUser()->isLoggedIn() ? 'noarticletext' : 'noarticletextanon';
                                $content = new MessageContent( $message, null, 'parsemag' );
                        }
-                       wfProfileOut( __METHOD__ );
-
-                       return $content;
                } else {
                        $this->fetchContentObject();
-                       wfProfileOut( __METHOD__ );
-
-                       return $this->mContentObject;
+                       $content = $this->mContentObject;
                }
+
+               wfProfileOut( __METHOD__ );
+               return $content;
        }
 
        /**
@@ -403,7 +401,7 @@ class Article extends Page {
         *
         * @note code that wants to retrieve page content from the database should use WikiPage::getContent().
         *
-        * @return Content|null
+        * @return Content|null|boolean false
         *
         * @since 1.21
         */
@@ -864,15 +862,21 @@ class Article extends Page {
 
                $ns = $this->getTitle()->getNamespace();
 
-               if ( $ns == NS_USER || $ns == NS_USER_TALK ) {
-                       # Don't index user and user talk pages for blocked users (bug 11443)
-                       if ( !$this->getTitle()->isSubpage() ) {
-                               if ( Block::newFromTarget( null, $this->getTitle()->getText() ) instanceof Block ) {
-                                       return array(
-                                               'index'  => 'noindex',
-                                               'follow' => 'nofollow'
-                                       );
-                               }
+               # Don't index user and user talk pages for blocked users (bug 11443)
+               if ( ( $ns == NS_USER || $ns == NS_USER_TALK ) && !$this->getTitle()->isSubpage() ) {
+                       $specificTarget = null;
+                       $vagueTarget = null;
+                       $titleText = $this->getTitle()->getText();
+                       if ( IP::isValid( $titleText ) ) {
+                               $vagueTarget = $titleText;
+                       } else {
+                               $specificTarget = $titleText;
+                       }
+                       if ( Block::newFromTarget( $specificTarget, $vagueTarget ) instanceof Block ) {
+                               return array(
+                                       'index'  => 'noindex',
+                                       'follow' => 'nofollow'
+                               );
                        }
                }
 
@@ -988,9 +992,7 @@ class Article extends Page {
                                }
 
                                // Add a <link rel="canonical"> tag
-                               $outputPage->addLink( array( 'rel' => 'canonical',
-                                       'href' => $this->getTitle()->getLocalURL() )
-                               );
+                               $outputPage->setCanonicalUrl( $this->getTitle()->getLocalURL() );
 
                                // Tell the output object that the user arrived at this article through a redirect
                                $outputPage->setRedirectedFrom( $this->mRedirectedFrom );
index ecfe208..5eb497d 100644 (file)
@@ -33,6 +33,7 @@ $wgAutoloadLocalClasses = array(
        'AjaxDispatcher' => 'includes/AjaxDispatcher.php',
        'AjaxResponse' => 'includes/AjaxResponse.php',
        'AlphabeticPager' => 'includes/Pager.php',
+       'ArrayUtils' => 'includes/ArrayUtils.php',
        'Article' => 'includes/Article.php',
        'AtomFeed' => 'includes/Feed.php',
        'AuthPlugin' => 'includes/AuthPlugin.php',
@@ -114,6 +115,7 @@ $wgAutoloadLocalClasses = array(
        'HistoryBlobStub' => 'includes/HistoryBlob.php',
        'Hooks' => 'includes/Hooks.php',
        'Html' => 'includes/Html.php',
+       'HTMLApiField' => 'includes/HTMLForm.php',
        'HTMLCheckField' => 'includes/HTMLForm.php',
        'HTMLEditTools' => 'includes/HTMLForm.php',
        'HTMLFloatField' => 'includes/HTMLForm.php',
@@ -216,6 +218,7 @@ $wgAutoloadLocalClasses = array(
        'Sanitizer' => 'includes/Sanitizer.php',
        'DataUpdate' => 'includes/DataUpdate.php',
        'SqlDataUpdate' => 'includes/SqlDataUpdate.php',
+       'ScopedCallback' => 'includes/ScopedCallback.php',
        'ScopedPHPTimeout' => 'includes/ScopedPHPTimeout.php',
        'SiteConfiguration' => 'includes/SiteConfiguration.php',
        'SiteStats' => 'includes/SiteStats.php',
@@ -331,6 +334,7 @@ $wgAutoloadLocalClasses = array(
        'ApiBase' => 'includes/api/ApiBase.php',
        'ApiBlock' => 'includes/api/ApiBlock.php',
        'ApiComparePages' => 'includes/api/ApiComparePages.php',
+       'ApiCreateAccount' => 'includes/api/ApiCreateAccount.php',
        'ApiDelete' => 'includes/api/ApiDelete.php',
        'ApiDisabled' => 'includes/api/ApiDisabled.php',
        'ApiEditPage' => 'includes/api/ApiEditPage.php',
index 4c878b6..03ef906 100644 (file)
@@ -576,6 +576,13 @@ class Block {
         * @return Array: block IDs of retroactive autoblocks made
         */
        protected static function defaultRetroactiveAutoblock( Block $block, array &$blockIds ) {
+               global $wgPutIPinRC;
+
+               // No IPs are in recentchanges table, so nothing to select
+               if( !$wgPutIPinRC ) {
+                       return;
+               }
+
                $dbr = wfGetDB( DB_SLAVE );
 
                $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
@@ -587,7 +594,7 @@ class Block {
                $res = $dbr->select( 'recentchanges', array( 'rc_ip' ), $conds,
                        __METHOD__ ,  $options );
 
-               if ( !$dbr->numRows( $res ) ) {
+               if ( !$res->numRows() ) {
                        # No results, don't autoblock anything
                        wfDebug( "No IP found to retroactively autoblock\n" );
                } else {
@@ -1050,7 +1057,7 @@ class Block {
                        # passed by some callers (bug 29116)
                        return null;
 
-               } elseif( in_array( $type, array( Block::TYPE_USER, Block::TYPE_IP, Block::TYPE_RANGE ) ) ) {
+               } elseif( in_array( $type, array( Block::TYPE_USER, Block::TYPE_IP, Block::TYPE_RANGE, null ) ) ) {
                        $block = new Block();
                        $block->fromMaster( $fromMaster );
 
@@ -1066,12 +1073,13 @@ class Block {
        }
 
        /**
-        * From an existing Block, get the target and the type of target.  Note that it is
-        * always safe to treat the target as a string; for User objects this will return
-        * User::__toString() which in turn gives User::getName().
+        * From an existing Block, get the target and the type of target.
+        * Note that, except for null, it is always safe to treat the target
+        * as a string; for User objects this will return User::__toString()
+        * which in turn gives User::getName().
         *
-        * @param $target String|Int|User
-        * @return array( User|String, Block::TYPE_ constant )
+        * @param $target String|Int|User|null
+        * @return array( User|String|null, Block::TYPE_ constant|null )
         */
        public static function parseTarget( $target ) {
                # We may have been through this before
index a2fff57..e98fcac 100644 (file)
@@ -682,7 +682,7 @@ class OldChangesList extends ChangesList {
                        $classes[] = Sanitizer::escapeClass( 'watchlist-'.$rc->mAttribs['rc_namespace'].'-'.$rc->mAttribs['rc_title'] );
                }
 
-               if ( !wfRunHooks( 'OldChangesListRecentChangesLine', array( &$this, &$s, $rc ) ) ) {
+               if ( !wfRunHooks( 'OldChangesListRecentChangesLine', array( &$this, &$s, $rc, &$classes ) ) ) {
                        wfProfileOut( __METHOD__ );
                        return false;
                }
index fdbcaa7..c13dbfd 100644 (file)
@@ -1264,6 +1264,12 @@ $wgSMTP = false;
  */
 $wgAdditionalMailParams = null;
 
+/**
+ * For parts of the system that have been updated to provide HTML email content, send
+ * both text and HTML parts as the body of the email
+ */
+$wgAllowHTMLEmail = false;
+
 /**
  * True: from page editor if s/he opted-in. False: Enotif mails appear to come
  * from $wgEmergencyContact
@@ -2363,7 +2369,7 @@ $wgDisableLangConversion = false;
 /** Whether to enable language variant conversion for links. */
 $wgDisableTitleConversion = false;
 
-/** Whether to enable cononical language links in meta data. */
+/** Whether to enable canonical language links in meta data. */
 $wgCanonicalLanguageLinks = true;
 
 /** Default variant code, if false, the default will be the language code */
@@ -2463,17 +2469,6 @@ $wgLocaltimezone = null;
  */
 $wgLocalTZoffset = null;
 
-/**
- * If set to true, this will roll back a few bug fixes introduced in 1.19,
- * emulating the 1.18 behaviour, to avoid introducing bug 34832. In 1.19,
- * language variant conversion is disabled in interface messages. Setting this
- * to true re-enables it.
- *
- * @todo This variable should be removed (implicitly false) in 1.20 or earlier.
- */
-$wgBug34832TransitionalRollback = true;
-
-
 /** @} */ # End of language/charset settings
 
 /*************************************************************************//**
@@ -2826,12 +2821,21 @@ $wgSend404Code = true;
 /**
  * The $wgShowRollbackEditCount variable is used to show how many edits will be
  * rollback. The numeric value of the varible are the limit up to are counted.
- * If the value is false or 0, the edits are not counted.
+ * If the value is false or 0, the edits are not counted. Disabling this will
+ * furthermore prevent MediaWiki from hiding some useless rollback links.
  *
  * @since 1.20
  */
 $wgShowRollbackEditCount = 10;
 
+/**
+ * Output a <link rel="canonical"> tag on every page indicating the canonical
+ * server which should be used, i.e. $wgServer or $wgCanonicalServer. Since
+ * detection of the current server is unreliable, the link is sent
+ * unconditionally.
+ */
+$wgEnableCanonicalServerLink = false;
+
 /** @} */ # End of output format settings }
 
 /*************************************************************************//**
@@ -4291,6 +4295,7 @@ $wgRateLimitsExcludedIPs = array();
 /**
  * Log IP addresses in the recentchanges table; can be accessed only by
  * extensions (e.g. CheckUser) or a DB admin
+ * Used for retroactive autoblocks
  */
 $wgPutIPinRC = true;
 
@@ -4640,6 +4645,13 @@ $wgAggregateStatsID = false;
  */
 $wgDisableCounters = false;
 
+/**
+ * InfoAction retrieves a list of transclusion links (both to and from).
+ * This number puts a limit on that query in the case of highly transcluded
+ * templates.
+ */
+$wgPageInfoTransclusionLimit = 50;
+
 /**
  * Set this to an integer to only do synchronous site_stats updates
  * one every *this many* updates. The other requests go into pending
@@ -5441,7 +5453,8 @@ $wgJobClasses = array(
 
 /**
 
- * Jobs that must be explicitly requested, i.e. aren't run by job runners unless special flags are set.
+ * Jobs that must be explicitly requested, i.e. aren't run by job runners unless
+ * special flags are set. The values here are keys of $wgJobClasses.
  *
  * These can be:
  * - Very long-running jobs.
@@ -6096,10 +6109,16 @@ $wgMaxShellMemory = 102400;
 $wgMaxShellFileSize = 102400;
 
 /**
- * Maximum CPU time in seconds for shell processes under linux
+ * Maximum CPU time in seconds for shell processes under Linux
  */
 $wgMaxShellTime = 180;
 
+/**
+ * Maximum wall clock time (i.e. real time, of the kind the clock on the wall
+ * would measure) in seconds for shell processes under Linux
+ */
+$wgMaxShellWallClockTime = 180;
+
 /**
  * Executable path of the PHP cli binary (php/php5). Should be set up on install.
  */
@@ -6160,6 +6179,15 @@ $wgUpdateRowsPerJob = 500;
  */
 $wgUpdateRowsPerQuery = 100;
 
+/**
+ * Do not purge all the pages that use a page when it is edited
+ * if there are more than this many such pages. This is used to
+ * avoid invalidating a large portion of the squid/parser cache.
+ *
+ * This setting should factor in any squid/parser cache expiry settings.
+ */
+$wgMaxBacklinksInvalidate = false;
+
 /** @} */ # End job queue }
 
 /************************************************************************//**
@@ -6358,8 +6386,9 @@ $wgRequirePasswordforEmailChange = true;
  *
  * @since 1.20
  */
-$wgSiteTypes = array();
-$wgSiteTypes['mediawiki'] = 'MediaWikiSite';
+$wgSiteTypes = array(
+       'mediawiki' => 'MediaWikiSite',
+);
 
 /**
  * For really cool vim folding this needs to be at the end:
index cf2b878..f3c0237 100644 (file)
@@ -1218,6 +1218,54 @@ class EditPage {
                }
        }
 
+       /**
+        * Run hooks that can filter edits just before they get saved.
+        *
+        * @param Content $content the Content to filter.
+        * @param Status  $status for reporting the outcome to the caller
+        * @param User    $user the user performing the edit
+        *
+        * @return bool
+        */
+       protected function runPostMergeFilters( Content $content, Status $status, User $user ) {
+               // Run old style post-section-merge edit filter
+               if ( !ContentHandler::runLegacyHooks( 'EditFilterMerged',
+                       array( $this, $content, &$this->hookError, $this->summary ) ) ) {
+
+                       # Error messages etc. could be handled within the hook...
+                       $status->fatal( 'hookaborted' );
+                       $status->value = self::AS_HOOK_ERROR;
+                       return false;
+               } elseif ( $this->hookError != '' ) {
+                       # ...or the hook could be expecting us to produce an error
+                       $status->fatal( 'hookaborted' );
+                       $status->value = self::AS_HOOK_ERROR_EXPECTED;
+                       return false;
+               }
+
+               // Run new style post-section-merge edit filter
+               if ( !wfRunHooks( 'EditFilterMergedContent',
+                       array( $this->mArticle->getContext(), $content, $status, $this->summary,
+                               $user, $this->minoredit ) ) ) {
+
+                       # Error messages etc. could be handled within the hook...
+                       // XXX: $status->value may already be something informative...
+                       $this->hookError = $status->getWikiText();
+                       $status->fatal( 'hookaborted' );
+                       $status->value = self::AS_HOOK_ERROR;
+                       return false;
+               } elseif ( !$status->isOK() ) {
+                       # ...or the hook could be expecting us to produce an error
+                       // FIXME this sucks, we should just use the Status object throughout
+                       $this->hookError = $status->getWikiText();
+                       $status->fatal( 'hookaborted' );
+                       $status->value = self::AS_HOOK_ERROR_EXPECTED;
+                       return false;
+               }
+
+               return true;
+       }
+
        /**
         * Attempt submission (no UI)
         *
@@ -1235,7 +1283,7 @@ class EditPage {
 
                $status = Status::newGood();
 
-               wfProfileIn( __METHOD__  );
+               wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-checks' );
 
                if ( !wfRunHooks( 'EditPage::attemptSave', array( $this ) ) ) {
@@ -1243,7 +1291,7 @@ class EditPage {
                        $status->fatal( 'hookaborted' );
                        $status->value = self::AS_HOOK_ERROR;
                        wfProfileOut( __METHOD__ . '-checks' );
-                       wfProfileOut( __METHOD__  );
+                       wfProfileOut( __METHOD__ );
                        return $status;
                }
 
@@ -1253,6 +1301,7 @@ class EditPage {
                } catch ( MWContentSerializationException $ex ) {
                        $status->fatal( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
                        $status->value = self::AS_PARSE_ERROR;
+                       wfProfileOut( __METHOD__ . '-checks' );
                        wfProfileOut( __METHOD__ );
                        return $status;
                }
@@ -1265,7 +1314,7 @@ class EditPage {
                                $status->setResult( false, $code );
 
                                wfProfileOut( __METHOD__ . '-checks' );
-                               wfProfileOut( __METHOD__  );
+                               wfProfileOut( __METHOD__ );
 
                                return $status;
                }
@@ -1386,17 +1435,7 @@ class EditPage {
                                return $status;
                        }
 
-                       // Run post-section-merge edit filter
-                       if ( !wfRunHooks( 'EditFilterMerged', array( $this, $this->textbox1, &$this->hookError, $this->summary ) ) ) {
-                               # Error messages etc. could be handled within the hook...
-                               $status->fatal( 'hookaborted' );
-                               $status->value = self::AS_HOOK_ERROR;
-                               wfProfileOut( __METHOD__ );
-                               return $status;
-                       } elseif ( $this->hookError != '' ) {
-                               # ...or the hook could be expecting us to produce an error
-                               $status->fatal( 'hookaborted' );
-                               $status->value = self::AS_HOOK_ERROR_EXPECTED;
+                       if ( !$this->runPostMergeFilters( $textbox_content, $status, $wgUser ) ) {
                                wfProfileOut( __METHOD__ );
                                return $status;
                        }
@@ -1510,20 +1549,7 @@ class EditPage {
                                return $status;
                        }
 
-                       // Run post-section-merge edit filter
-                       $hook_args = array( $this, $content, &$this->hookError, $this->summary );
-
-                       if ( !ContentHandler::runLegacyHooks( 'EditFilterMerged', $hook_args )
-                               || !wfRunHooks( 'EditFilterMergedContent', $hook_args ) ) {
-                               # Error messages etc. could be handled within the hook...
-                               $status->fatal( 'hookaborted' );
-                               $status->value = self::AS_HOOK_ERROR;
-                               wfProfileOut( __METHOD__ );
-                               return $status;
-                       } elseif ( $this->hookError != '' ) {
-                               # ...or the hook could be expecting us to produce an error
-                               $status->fatal( 'hookaborted' );
-                               $status->value = self::AS_HOOK_ERROR_EXPECTED;
+                       if ( !$this->runPostMergeFilters( $content, $status, $wgUser ) ) {
                                wfProfileOut( __METHOD__ );
                                return $status;
                        }
@@ -1624,12 +1650,7 @@ class EditPage {
                        $doEditStatus = $this->mArticle->doEditContent( $content, $this->summary, $flags,
                                                                                                                        false, null, $this->contentFormat );
 
-               if ( $doEditStatus->isOK() ) {
-                               $result['redirect'] = $content->isRedirect();
-                       $this->updateWatchlist();
-                       wfProfileOut( __METHOD__ );
-                       return $status;
-               } else {
+               if ( !$doEditStatus->isOK() ) {
                        // Failure from doEdit()
                        // Show the edit conflict page for certain recognized errors from doEdit(),
                        // but don't show it for errors from extension hooks
@@ -1644,6 +1665,11 @@ class EditPage {
                        wfProfileOut( __METHOD__ );
                        return $doEditStatus;
                }
+
+               $result['redirect'] = $content->isRedirect();
+               $this->updateWatchlist();
+               wfProfileOut( __METHOD__ );
+               return $status;
        }
 
        /**
@@ -1735,10 +1761,10 @@ class EditPage {
                        $editContent = $result;
                        wfProfileOut( __METHOD__ );
                        return true;
-               } else {
-                       wfProfileOut( __METHOD__ );
-                       return false;
                }
+
+               wfProfileOut( __METHOD__ );
+               return false;
        }
 
        /**
index 8411bc4..598be05 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Helper class to keep track of options when mixing links and form elements.
  *
- * Copyright © 2008, Niklas Laxstiröm
+ * Copyright © 2008, Niklas Laxström
  * Copyright © 2011, Antoine Musso
  *
  * This program is free software; you can redistribute it and/or modify
index 28cc001..0b1bd19 100644 (file)
@@ -2767,12 +2767,13 @@ function wfEscapeShellArg( ) {
  *                 (non-zero is usually failure)
  * @param $environ Array optional environment variables which should be
  *                 added to the executed command environment.
- * @param $limits Array optional array with limits(filesize, memory, time)
+ * @param $limits Array optional array with limits(filesize, memory, time, walltime)
  *                 this overwrites the global wgShellMax* limits.
  * @return string collected stdout as a string (trailing newlines stripped)
  */
 function wfShellExec( $cmd, &$retval = null, $environ = array(), $limits = array() ) {
-       global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime;
+       global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime,
+               $wgMaxShellWallClockTime;
 
        static $disabled;
        if ( is_null( $disabled ) ) {
@@ -2820,14 +2821,19 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(), $limits = array
 
        if ( php_uname( 's' ) == 'Linux' ) {
                $time = intval ( isset($limits['time']) ? $limits['time'] : $wgMaxShellTime );
+               if ( isset( $limits['walltime'] ) ) {
+                       $wallTime = intval( $limits['walltime'] );
+               } elseif ( isset( $limits['time'] ) ) {
+                       $wallTime = $time;
+               } else {
+                       $wallTime = intval( $wgMaxShellWallClockTime );
+               }
                $mem = intval ( isset($limits['memory']) ? $limits['memory'] : $wgMaxShellMemory );
                $filesize = intval ( isset($limits['filesize']) ? $limits['filesize'] : $wgMaxShellFileSize );
 
-               if ( $time > 0 && $mem > 0 ) {
-                       $script = "$IP/bin/ulimit4.sh";
-                       if ( is_executable( $script ) ) {
-                               $cmd = '/bin/bash ' . escapeshellarg( $script ) . " $time $mem $filesize " . escapeshellarg( $cmd );
-                       }
+               if ( $time > 0 || $mem > 0 || $filesize > 0 || $wallTime > 0 ) {
+                       $cmd = '/bin/bash ' . escapeshellarg( "$IP/bin/ulimit5.sh" ) .
+                               " $time $mem $filesize $wallTime " . escapeshellarg( $cmd );
                }
        }
        wfDebug( "wfShellExec: $cmd\n" );
index ef24b62..952022f 100644 (file)
@@ -96,6 +96,7 @@ class HTMLForm extends ContextSource {
 
        // A mapping of 'type' inputs onto standard HTMLFormField subclasses
        static $typeMappings = array(
+               'api' => 'HTMLApiField',
                'text' => 'HTMLTextField',
                'textarea' => 'HTMLTextAreaField',
                'select' => 'HTMLSelectField',
@@ -2429,3 +2430,21 @@ class HTMLEditTools extends HTMLFormField {
                return $msg;
        }
 }
+
+class HTMLApiField extends HTMLFormField {
+       public function getTableRow( $value ) {
+               return '';
+       }
+
+       public function getDiv( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       public function getRaw( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       public function getInputHTML( $value ) {
+               return '';
+       }
+}
index 05c27fe..55c2ae5 100644 (file)
@@ -232,8 +232,6 @@ class HistoryBlobStub {
         * @return string
         */
        function getText() {
-               $fname = 'HistoryBlobStub::getText';
-
                if( isset( self::$blobCache[$this->mOldId] ) ) {
                        $obj = self::$blobCache[$this->mOldId];
                } else {
@@ -244,10 +242,9 @@ class HistoryBlobStub {
                        }
                        $flags = explode( ',', $row->old_flags );
                        if( in_array( 'external', $flags ) ) {
-                               $url=$row->old_text;
+                               $url = $row->old_text;
                                $parts = explode( '://', $url, 2 );
                                if ( !isset( $parts[1] ) || $parts[1] == '' ) {
-                                       wfProfileOut( $fname );
                                        return false;
                                }
                                $row->old_text = ExternalStore::fetchFromUrl($url);
index c831f64..c93f38c 100644 (file)
@@ -614,7 +614,7 @@ EOT
 
                /* Add canonical to head if there is no local page for this shared file */
                if( $descUrl && $this->mPage->getID() == 0 ) {
-                       $out->addLink( array( 'rel' => 'canonical', 'href' => $descUrl ) );
+                       $out->setCanonicalUrl( $descUrl );
                }
 
                $wrap = "<div class=\"sharedUploadNotice\">\n$1\n</div>\n";
@@ -796,9 +796,14 @@ EOT
 
                        $link = Linker::linkKnown( Title::makeTitle( $element->page_namespace, $element->page_title ) );
                        if ( !isset( $redirects[$element->page_title] ) ) {
+                               # No redirects
                                $liContents = $link;
+                       } elseif ( count( $redirects[$element->page_title] ) === 0 ) {
+                               # Redirect without usages
+                               $liContents = wfMessage( 'linkstoimage-redirect' )->rawParams( $link, '' )->parse();
                        } else {
-                               $ul = "<ul class='mw-imagepage-redirectstofile'>\n";
+                               # Redirect with usages
+                               $li = '';
                                foreach ( $redirects[$element->page_title] as $row ) {
                                        $currentCount++;
                                        if ( $currentCount > $limit ) {
@@ -806,13 +811,18 @@ EOT
                                        }
 
                                        $link2 = Linker::linkKnown( Title::makeTitle( $row->page_namespace, $row->page_title ) );
-                                       $ul .= Html::rawElement(
+                                       $li .= Html::rawElement(
                                                'li',
                                                array( 'class' => 'mw-imagepage-linkstoimage-ns' . $element->page_namespace ),
                                                $link2
                                                ) . "\n";
                                }
-                               $ul .= '</ul>';
+
+                               $ul = Html::rawElement(
+                                       'ul',
+                                       array( 'class' => 'mw-imagepage-redirectstofile'),
+                                       $li
+                                       ) . "\n";
                                $liContents = wfMessage( 'linkstoimage-redirect' )->rawParams(
                                        $link, $ul )->parse();
                        }
index 05a9905..2f6ee22 100644 (file)
@@ -947,10 +947,10 @@ class Linker {
                        return '<a href="' . htmlspecialchars( $href ) . '" class="new" title="' .
                                htmlspecialchars( $title->getPrefixedText(), ENT_QUOTES ) . '">' .
                                $encLabel . '</a>';
-               } else {
-                       wfProfileOut( __METHOD__ );
-                       return self::linkKnown( $title, $encLabel, array(), wfCgiToArray( $query ) );
                }
+
+               wfProfileOut( __METHOD__ );
+               return self::linkKnown( $title, $encLabel, array(), wfCgiToArray( $query ) );
        }
 
        /**
@@ -1756,19 +1756,101 @@ class Linker {
         * changes, so this allows sysops to combat a busy vandal without bothering
         * other users.
         *
+        * If the option verify is set this function will return the link only in case the
+        * revision can be reverted. Please note that due to performance limitations
+        * it might be assumed that a user isn't the only contributor of a page while
+        * (s)he is, which will lead to useless rollback links. Furthermore this wont
+        * work if $wgShowRollbackEditCount is disabled, so this can only function
+        * as an additional check.
+        *
+        * If the option noBrackets is set the rollback link wont be enclosed in []
+        *
         * @param $rev Revision object
         * @param $context IContextSource context to use or null for the main context.
+        * @param $options array
         * @return string
         */
-       public static function generateRollback( $rev, IContextSource $context = null ) {
+       public static function generateRollback( $rev, IContextSource $context = null, $options = array( 'verify' ) ) {
                if ( $context === null ) {
                        $context = RequestContext::getMain();
                }
+               $editCount = false;
+               if ( in_array( 'verify', $options ) ) {
+                       $editCount = self::getRollbackEditCount( $rev, true );
+                       if ( $editCount === false ) {
+                               return '';
+                       }
+               }
+
+               $inner = self::buildRollbackLink( $rev, $context, $editCount );
+
+               if ( !in_array( 'noBrackets', $options ) ) {
+                       $inner = $context->msg( 'brackets' )->rawParams( $inner )->plain();
+               }
 
-               return '<span class="mw-rollback-link">'
-                       . $context->msg( 'brackets' )->rawParams(
-                               self::buildRollbackLink( $rev, $context ) )->plain()
-                       . '</span>';
+               return '<span class="mw-rollback-link">' . $inner . '</span>';
+       }
+
+       /**
+        * This function will return the number of revisions which a rollback
+        * would revert and, if $verify is set it will verify that a revision
+        * can be reverted (that the user isn't the only contributor and the
+        * revision we might rollback to isn't deleted). These checks can only
+        * function as an additional check as this function only checks against
+        * the last $wgShowRollbackEditCount edits.
+        *
+        * Returns null if $wgShowRollbackEditCount is disabled or false if $verify
+        * is set and the user is the only contributor of the page.
+        *
+        * @param $rev Revision object
+        * @param $verify Bool Try to verfiy that this revision can really be rolled back
+        * @return integer|bool|null
+        */
+       public static function getRollbackEditCount( $rev, $verify ) {
+               global $wgShowRollbackEditCount;
+               if ( !is_int( $wgShowRollbackEditCount ) || !$wgShowRollbackEditCount > 0 ) {
+                       // Nothing has happened, indicate this by returning 'null'
+                       return null;
+               }
+
+               $dbr = wfGetDB( DB_SLAVE );
+
+               // Up to the value of $wgShowRollbackEditCount revisions are counted
+               $res = $dbr->select(
+                       'revision',
+                       array( 'rev_user_text', 'rev_deleted' ),
+                       // $rev->getPage() returns null sometimes
+                       array( 'rev_page' => $rev->getTitle()->getArticleID() ),
+                       __METHOD__,
+                       array(
+                               'USE INDEX' => array( 'revision' => 'page_timestamp' ),
+                               'ORDER BY' => 'rev_timestamp DESC',
+                               'LIMIT' => $wgShowRollbackEditCount + 1
+                       )
+               );
+
+               $editCount = 0;
+               $moreRevs = false;
+               foreach ( $res as $row ) {
+                       if ( $rev->getRawUserText() != $row->rev_user_text ) {
+                               if ( $verify && ( $row->rev_deleted & Revision::DELETED_TEXT || $row->rev_deleted & Revision::DELETED_USER ) ) {
+                                       // If the user or the text of the revision we might rollback to is deleted in some way we can't rollback
+                                       // Similar to the sanity checks in WikiPage::commitRollback
+                                       return false;
+                               }
+                               $moreRevs = true;
+                               break;
+                       }
+                       $editCount++;
+               }
+
+               if ( $verify && $editCount <= $wgShowRollbackEditCount && !$moreRevs ) {
+                       // We didn't find at least $wgShowRollbackEditCount revisions made by the current user
+                       // and there weren't any other revisions. That means that the current user is the only
+                       // editor, so we can't rollback
+                       return false;
+               }
+               return $editCount;
        }
 
        /**
@@ -1776,9 +1858,10 @@ class Linker {
         *
         * @param $rev Revision object
         * @param $context IContextSource context to use or null for the main context.
+        * @param $editCount integer Number of edits that would be reverted
         * @return String: HTML fragment
         */
-       public static function buildRollbackLink( $rev, IContextSource $context = null ) {
+       public static function buildRollbackLink( $rev, IContextSource $context = null, $editCount = false ) {
                global $wgShowRollbackEditCount, $wgMiserMode;
 
                // To config which pages are effected by miser mode
@@ -1810,25 +1893,8 @@ class Linker {
                }
 
                if( !$disableRollbackEditCount && is_int( $wgShowRollbackEditCount ) && $wgShowRollbackEditCount > 0 ) {
-                       $dbr = wfGetDB( DB_SLAVE );
-
-                       // Up to the value of $wgShowRollbackEditCount revisions are counted
-                       $res = $dbr->select( 'revision',
-                               array( 'rev_id', 'rev_user_text' ),
-                               // $rev->getPage() returns null sometimes
-                               array( 'rev_page' => $rev->getTitle()->getArticleID() ),
-                               __METHOD__,
-                               array(  'USE INDEX' => 'page_timestamp',
-                                       'ORDER BY' => 'rev_timestamp DESC',
-                                       'LIMIT' => $wgShowRollbackEditCount + 1 )
-                       );
-
-                       $editCount = 0;
-                       while( $row = $dbr->fetchObject( $res ) ) {
-                               if( $rev->getUserText() != $row->rev_user_text ) {
-                                       break;
-                               }
-                               $editCount++;
+                       if ( !is_numeric( $editCount ) ) {
+                               $editCount = self::getRollbackEditCount( $rev, false );
                        }
 
                        if( $editCount > $wgShowRollbackEditCount ) {
@@ -1858,13 +1924,19 @@ class Linker {
        /**
         * Returns HTML for the "templates used on this page" list.
         *
+        * Make an HTML list of templates, and then add a "More..." link at
+        * the bottom. If $more is null, do not add a "More..." link. If $more
+        * is a Title, make a link to that title and use it. If $more is a string,
+        * directly paste it in as the link.
+        *
         * @param $templates Array of templates from Article::getUsedTemplate
         * or similar
-        * @param $preview Boolean: whether this is for a preview
-        * @param $section Boolean: whether this is for a section edit
+        * @param bool $preview Whether this is for a preview
+        * @param bool $section Whether this is for a section edit
+        * @param Title|string|null $more A link for "More..." of the templates
         * @return String: HTML output
         */
-       public static function formatTemplates( $templates, $preview = false, $section = false ) {
+       public static function formatTemplates( $templates, $preview = false, $section = false, $more = null ) {
                wfProfileIn( __METHOD__ );
 
                $outText = '';
@@ -1921,9 +1993,16 @@ class Linker {
                                        . wfMessage( 'word-separator' )->escaped()
                                        . $protected . '</li>';
                        }
+
+                       if ( $more instanceof Title ) {
+                               $outText .= '<li>' . self::link( $more, wfMessage( 'moredotdotdot' ) ) . '</li>';
+                       } elseif ( $more ) {
+                               $outText .= "<li>$more</li>";
+                       }
+
                        $outText .= '</ul>';
                }
-               wfProfileOut( __METHOD__  );
+               wfProfileOut( __METHOD__ );
                return $outText;
        }
 
@@ -1949,7 +2028,7 @@ class Linker {
                        }
                        $outText .= '</ul>';
                }
-               wfProfileOut( __METHOD__  );
+               wfProfileOut( __METHOD__ );
                return $outText;
        }
 
index 976f144..8f10b8b 100644 (file)
@@ -480,7 +480,24 @@ class Message {
         * @return String
         */
        public function __toString() {
-               return $this->toString();
+               // PHP doesn't allow __toString to throw exceptions and will
+               // trigger a fatal error if it does. So, catch any exceptions.
+
+               try {
+                       return $this->toString();
+               } catch ( Exception $ex ) {
+                       try {
+                               trigger_error( "Exception caught in " . __METHOD__ . " (message " . $this->key . "): "
+                                       . $ex, E_USER_WARNING );
+                       } catch ( Exception $ex ) {
+                               // Doh! Cause a fatal error after all?
+                       }
+
+                       if ( $this->format === 'plain' ) {
+                               return '<' . $this->key . '>';
+                       }
+                       return '&lt;' . $this->key . '&gt;';
+               }
        }
 
        /**
index 09561bd..6322be7 100644 (file)
@@ -80,42 +80,45 @@ class MessageBlobStore {
                        return false;
                }
 
-               $dbw = wfGetDB( DB_MASTER );
-               $success = $dbw->insert( 'msg_resource', array(
-                               'mr_lang' => $lang,
-                               'mr_resource' => $name,
-                               'mr_blob' => $blob,
-                               'mr_timestamp' => $dbw->timestamp()
-                       ),
-                       __METHOD__,
-                       array( 'IGNORE' )
-               );
-
-               if ( $success ) {
-                       if ( $dbw->affectedRows() == 0 ) {
-                               // Blob was already present, fetch it
-                               $blob = $dbw->selectField( 'msg_resource', 'mr_blob', array(
-                                               'mr_resource' => $name,
-                                               'mr_lang' => $lang,
-                                       ),
-                                       __METHOD__
-                               );
-                       } else {
-                               // Update msg_resource_links
-                               $rows = array();
+               try {
+                       $dbw = wfGetDB( DB_MASTER );
+                       $success = $dbw->insert( 'msg_resource', array(
+                                       'mr_lang' => $lang,
+                                       'mr_resource' => $name,
+                                       'mr_blob' => $blob,
+                                       'mr_timestamp' => $dbw->timestamp()
+                               ),
+                               __METHOD__,
+                               array( 'IGNORE' )
+                       );
 
-                               foreach ( $module->getMessages() as $key ) {
-                                       $rows[] = array(
-                                               'mrl_resource' => $name,
-                                               'mrl_message' => $key
+                       if ( $success ) {
+                               if ( $dbw->affectedRows() == 0 ) {
+                                       // Blob was already present, fetch it
+                                       $blob = $dbw->selectField( 'msg_resource', 'mr_blob', array(
+                                                       'mr_resource' => $name,
+                                                       'mr_lang' => $lang,
+                                               ),
+                                               __METHOD__
+                                       );
+                               } else {
+                                       // Update msg_resource_links
+                                       $rows = array();
+
+                                       foreach ( $module->getMessages() as $key ) {
+                                               $rows[] = array(
+                                                       'mrl_resource' => $name,
+                                                       'mrl_message' => $key
+                                               );
+                                       }
+                                       $dbw->insert( 'msg_resource_links', $rows,
+                                               __METHOD__, array( 'IGNORE' )
                                        );
                                }
-                               $dbw->insert( 'msg_resource_links', $rows,
-                                       __METHOD__, array( 'IGNORE' )
-                               );
                        }
+               } catch ( Exception $e ) {
+                       wfDebug( __METHOD__ . " failed to update DB: $e\n" );
                }
-
                return $blob;
        }
 
@@ -141,48 +144,51 @@ class MessageBlobStore {
                $oldBlob = $row->mr_blob;
                $newBlob = self::generateMessageBlob( $module, $lang );
 
-               $newRow = array(
-                       'mr_resource' => $name,
-                       'mr_lang' => $lang,
-                       'mr_blob' => $newBlob,
-                       'mr_timestamp' => $dbw->timestamp()
-               );
+               try {
+                       $newRow = array(
+                               'mr_resource' => $name,
+                               'mr_lang' => $lang,
+                               'mr_blob' => $newBlob,
+                               'mr_timestamp' => $dbw->timestamp()
+                       );
 
-               $dbw->replace( 'msg_resource',
-                       array( array( 'mr_resource', 'mr_lang' ) ),
-                       $newRow, __METHOD__
-               );
+                       $dbw->replace( 'msg_resource',
+                               array( array( 'mr_resource', 'mr_lang' ) ),
+                               $newRow, __METHOD__
+                       );
 
-               // Figure out which messages were added and removed
-               $oldMessages = array_keys( FormatJson::decode( $oldBlob, true ) );
-               $newMessages = array_keys( FormatJson::decode( $newBlob, true ) );
-               $added = array_diff( $newMessages, $oldMessages );
-               $removed = array_diff( $oldMessages, $newMessages );
+                       // Figure out which messages were added and removed
+                       $oldMessages = array_keys( FormatJson::decode( $oldBlob, true ) );
+                       $newMessages = array_keys( FormatJson::decode( $newBlob, true ) );
+                       $added = array_diff( $newMessages, $oldMessages );
+                       $removed = array_diff( $oldMessages, $newMessages );
 
-               // Delete removed messages, insert added ones
-               if ( $removed ) {
-                       $dbw->delete( 'msg_resource_links', array(
-                                       'mrl_resource' => $name,
-                                       'mrl_message' => $removed
-                               ), __METHOD__
-                       );
-               }
+                       // Delete removed messages, insert added ones
+                       if ( $removed ) {
+                               $dbw->delete( 'msg_resource_links', array(
+                                               'mrl_resource' => $name,
+                                               'mrl_message' => $removed
+                                       ), __METHOD__
+                               );
+                       }
 
-               $newLinksRows = array();
+                       $newLinksRows = array();
 
-               foreach ( $added as $message ) {
-                       $newLinksRows[] = array(
-                               'mrl_resource' => $name,
-                               'mrl_message' => $message
-                       );
-               }
+                       foreach ( $added as $message ) {
+                               $newLinksRows[] = array(
+                                       'mrl_resource' => $name,
+                                       'mrl_message' => $message
+                               );
+                       }
 
-               if ( $newLinksRows ) {
-                       $dbw->insert( 'msg_resource_links', $newLinksRows, __METHOD__,
-                                array( 'IGNORE' ) // just in case
-                       );
+                       if ( $newLinksRows ) {
+                               $dbw->insert( 'msg_resource_links', $newLinksRows, __METHOD__,
+                                       array( 'IGNORE' ) // just in case
+                               );
+                       }
+               } catch ( Exception $e ) {
+                       wfDebug( __METHOD__ . " failed to update DB: $e\n" );
                }
-
                return $newBlob;
        }
 
@@ -192,50 +198,58 @@ class MessageBlobStore {
         * @param $key String: message key
         */
        public static function updateMessage( $key ) {
-               $dbw = wfGetDB( DB_MASTER );
-
-               // Keep running until the updates queue is empty.
-               // Due to update conflicts, the queue might not be emptied
-               // in one iteration.
-               $updates = null;
-               do {
-                       $updates = self::getUpdatesForMessage( $key, $updates );
-
-                       foreach ( $updates as $k => $update ) {
-                               // Update the row on the condition that it
-                               // didn't change since we fetched it by putting
-                               // the timestamp in the WHERE clause.
-                               $success = $dbw->update( 'msg_resource',
-                                       array(
-                                               'mr_blob' => $update['newBlob'],
-                                               'mr_timestamp' => $dbw->timestamp() ),
-                                       array(
-                                               'mr_resource' => $update['resource'],
-                                               'mr_lang' => $update['lang'],
-                                               'mr_timestamp' => $update['timestamp'] ),
-                                       __METHOD__
-                               );
+               try {
+                       $dbw = wfGetDB( DB_MASTER );
+
+                       // Keep running until the updates queue is empty.
+                       // Due to update conflicts, the queue might not be emptied
+                       // in one iteration.
+                       $updates = null;
+                       do {
+                               $updates = self::getUpdatesForMessage( $key, $updates );
+
+                               foreach ( $updates as $k => $update ) {
+                                       // Update the row on the condition that it
+                                       // didn't change since we fetched it by putting
+                                       // the timestamp in the WHERE clause.
+                                       $success = $dbw->update( 'msg_resource',
+                                               array(
+                                                       'mr_blob' => $update['newBlob'],
+                                                       'mr_timestamp' => $dbw->timestamp() ),
+                                               array(
+                                                       'mr_resource' => $update['resource'],
+                                                       'mr_lang' => $update['lang'],
+                                                       'mr_timestamp' => $update['timestamp'] ),
+                                               __METHOD__
+                                       );
 
-                               // Only requeue conflicted updates.
-                               // If update() returned false, don't retry, for
-                               // fear of getting into an infinite loop
-                               if ( !( $success && $dbw->affectedRows() == 0 ) ) {
-                                       // Not conflicted
-                                       unset( $updates[$k] );
+                                       // Only requeue conflicted updates.
+                                       // If update() returned false, don't retry, for
+                                       // fear of getting into an infinite loop
+                                       if ( !( $success && $dbw->affectedRows() == 0 ) ) {
+                                               // Not conflicted
+                                               unset( $updates[$k] );
+                                       }
                                }
-                       }
-               } while ( count( $updates ) );
+                       } while ( count( $updates ) );
 
-               // No need to update msg_resource_links because we didn't add
-               // or remove any messages, we just changed their contents.
+                       // No need to update msg_resource_links because we didn't add
+                       // or remove any messages, we just changed their contents.
+               } catch ( Exception $e ) {
+                       wfDebug( __METHOD__ . " failed to update DB: $e\n" );
+               }
        }
 
        public static function clear() {
                // TODO: Give this some more thought
                // TODO: Is TRUNCATE better?
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete( 'msg_resource', '*', __METHOD__ );
-               $dbw->delete( 'msg_resource_links', '*', __METHOD__ );
+               try {
+                       $dbw = wfGetDB( DB_MASTER );
+                       $dbw->delete( 'msg_resource', '*', __METHOD__ );
+                       $dbw->delete( 'msg_resource_links', '*', __METHOD__ );
+               } catch ( Exception $e ) {
+                       wfDebug( __METHOD__ . " failed to update DB: $e\n" );
+               }
        }
 
        /**
index c06b770..436e2f9 100644 (file)
@@ -43,6 +43,7 @@ class OutputPage extends ContextSource {
        var $mKeywords = array();
 
        var $mLinktags = array();
+       var $mCanonicalUrl = false;
 
        /// Additional stylesheets. Looks like this is for extensions. Might be replaced by resource loader.
        var $mExtStyles = array();
@@ -316,7 +317,9 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Add a new \<link\> tag to the page header
+        * Add a new \<link\> tag to the page header.
+        *
+        * Note: use setCanonicalUrl() for rel=canonical.
         *
         * @param $linkarr Array: associative array of attributes.
         */
@@ -336,6 +339,14 @@ class OutputPage extends ContextSource {
                $this->addLink( $linkarr );
        }
 
+       /**
+        * Set the URL to be used for the <link rel=canonical>. This should be used
+        * in preference to addLink(), to avoid duplicate link tags.
+        */
+       function setCanonicalUrl( $url ) {
+               $this->mCanonicalUrl = $url;
+       }
+
        /**
         * Get the value of the "rel" attribute for metadata links
         *
@@ -3040,6 +3051,8 @@ $templates
 
                $tags = array();
 
+               $canonicalUrl = $this->mCanonicalUrl;
+
                if ( $addContentType ) {
                        if ( $wgHtml5 ) {
                                # More succinct than <meta http-equiv=Content-Type>, has the
@@ -3184,10 +3197,7 @@ $templates
                                                );
                                        }
                                } else {
-                                       $tags['canonical'] = Html::element( 'link', array(
-                                               'rel' => 'canonical',
-                                               'href' => $this->getTitle()->getCanonicalUrl()
-                                       ) );
+                                       $canonicalUrl = $this->getTitle()->getLocalURL();
                                }
                        }
                }
@@ -3256,6 +3266,24 @@ $templates
                                }
                        }
                }
+
+               # Canonical URL
+               global $wgEnableCanonicalServerLink;
+               if ( $wgEnableCanonicalServerLink ) {
+                       if ( $canonicalUrl !== false ) {
+                               $canonicalUrl = wfExpandUrl( $canonicalUrl, PROTO_CANONICAL );
+                       } else {
+                               $reqUrl = $this->getRequest()->getRequestURL();
+                               $canonicalUrl = wfExpandUrl( $reqUrl, PROTO_CANONICAL );
+                       }
+               }
+               if ( $canonicalUrl !== false ) {
+                       $tags[] = Html::element( 'link', array(
+                               'rel' => 'canonical',
+                               'href' => $canonicalUrl
+                       ) );
+               }
+
                return $tags;
        }
 
index 96d9e6d..9878396 100644 (file)
@@ -1240,6 +1240,13 @@ class Preferences {
                        $formDescriptor = array_diff_key( $formDescriptor, $removeKeys );
                }
 
+               // Remove type=api preferences. They are not intended for rendering in the form.
+               foreach ( $formDescriptor as $name => $info ) {
+                       if ( isset( $info['type'] ) && $info['type'] === 'api' ) {
+                               unset( $formDescriptor[$name] );
+                       }
+               }
+
                /**
                 * @var $htmlForm PreferencesForm
                 */
@@ -1406,9 +1413,8 @@ class Preferences {
                        $formData[$pref] = $user->getOption( $pref, null, true );
                }
 
-               //  Keeps old preferences from interfering due to back-compat
-               //  code, etc.
-               $user->resetOptions();
+               // Keep old preferences from interfering due to back-compat code, etc.
+               $user->resetOptions( 'unused', $form->getContext() );
 
                foreach ( $formData as $key => $value ) {
                        $user->setOption( $key, $value );
index e844a1e..fe871b9 100644 (file)
@@ -207,6 +207,7 @@ class ProtectionForm {
                global $wgOut;
 
                $wgOut->setRobotPolicy( 'noindex,nofollow' );
+               $wgOut->addBacklinkSubtitle( $this->mTitle );
 
                if ( is_array( $err ) ) {
                        $wgOut->wrapWikiMsg( "<p class='error'>\n$1\n</p>\n", $err );
@@ -214,6 +215,18 @@ class ProtectionForm {
                        $wgOut->addHTML( "<p class='error'>{$err}</p>\n" );
                }
 
+               if ( $this->mTitle->getRestrictionTypes() === array() ) {
+                       // No restriction types available for the current title
+                       // this might happen if an extension alters the available types
+                       $wgOut->setPageTitle( wfMessage( 'protect-norestrictiontypes-title', $this->mTitle->getPrefixedText() ) );
+                       $wgOut->addWikiText( wfMessage( 'protect-norestrictiontypes-text' )->text() );
+
+                       // Show the log in case protection was possible once
+                       $this->showLogExtract( $wgOut );
+                       // return as there isn't anything else we can do
+                       return;
+               }
+
                list( $cascadeSources, /* $restrictions */ ) = $this->mTitle->getCascadeProtectionSources();
                if ( $cascadeSources && count($cascadeSources) > 0 ) {
                        $titles = '';
@@ -236,7 +249,6 @@ class ProtectionForm {
                                wfEscapeWikiText( $this->mTitle->getPrefixedText() ) );
                }
 
-               $wgOut->addBacklinkSubtitle( $this->mTitle );
                $wgOut->addHTML( $this->buildForm() );
                $this->showLogExtract( $wgOut );
        }
diff --git a/includes/ScopedCallback.php b/includes/ScopedCallback.php
new file mode 100644 (file)
index 0000000..1d5b26b
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * This file deals with RAII style scoped callbacks.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Class for asserting that a callback happens when an dummy object leaves scope
+ */
+class ScopedCallback {
+       /** @var Closure */
+       protected $callback;
+
+       /**
+        * @param $callback Closure
+        */
+       public function __construct( Closure $callback ) {
+               $this->callback = $callback;
+       }
+
+       function __destruct() {
+               call_user_func( $this->callback );
+       }
+}
index 7fb17a7..90cd131 100644 (file)
@@ -345,7 +345,7 @@ class LegacyTemplate extends BaseTemplate {
                                        $s .= $this->deleteThisPage();
                                }
 
-                               if ( $wgUser->isAllowed( 'protect' ) ) {
+                               if ( $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
                                        $s .= $sep . $this->protectThisPage();
                                }
 
@@ -610,7 +610,7 @@ class LegacyTemplate extends BaseTemplate {
                $diff = $wgRequest->getVal( 'diff' );
                $title = $this->getSkin()->getTitle();
 
-               if ( $title->getArticleID() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) ) {
+               if ( $title->getArticleID() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
                        if ( $title->isProtected() ) {
                                $text = wfMessage( 'unprotectthispage' )->text();
                                $query = array( 'action' => 'unprotect' );
index da4af61..58d443a 100644 (file)
@@ -690,12 +690,14 @@ class SkinTemplate extends Skin {
        }
 
        /**
-        * TODO document
-        * @param  $title Title
-        * @param  $message String message key
-        * @param  $selected Bool
-        * @param  $query String
-        * @param  $checkEdit Bool
+        * Builds an array with tab definition
+        *
+        * @param Title $title page where the tab links to
+        * @param string|array $message message key or an array of message keys (will fall back)
+        * @param boolean $selected display the tab as selected
+        * @param string $query query string attached to tab URL
+        * @param boolean $checkEdit check if $title exists and mark with .new if one doesn't
+        *
         * @return array
         */
        function tabAction( $title, $message, $selected, $query = '', $checkEdit = false ) {
@@ -705,7 +707,11 @@ class SkinTemplate extends Skin {
                }
                if( $checkEdit && !$title->isKnown() ) {
                        $classes[] = 'new';
-                       $query = 'action=edit&redlink=1';
+                       if ( $query !== '' ) {
+                               $query = 'action=edit&redlink=1&' . $query;
+                       } else {
+                               $query = 'action=edit&redlink=1';
+                       }
                }
 
                // wfMessageFallback will nicely accept $message as an array of fallbacks
@@ -957,7 +963,7 @@ class SkinTemplate extends Skin {
                                        }
                                }
 
-                               if ( $title->getNamespace() !== NS_MEDIAWIKI && $title->quickUserCan( 'protect', $user ) ) {
+                               if ( $title->getNamespace() !== NS_MEDIAWIKI && $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() ) {
                                        $mode = $title->isProtected() ? 'unprotect' : 'protect';
                                        $content_navigation['actions'][$mode] = array(
                                                'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
index fa1bca4..4a45b44 100644 (file)
@@ -336,7 +336,7 @@ class SpecialPageFactory {
         * Find the object with a given name and return it (or NULL)
         *
         * @param $name String Special page name, may be localised and/or an alias
-        * @return SpecialPage object or null if the page doesn't exist
+        * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
         */
        public static function getPage( $name ) {
                list( $realName, /*...*/ ) = self::resolveAlias( $name );
@@ -371,12 +371,10 @@ class SpecialPageFactory {
                        global $wgUser;
                        $user = $wgUser;
                }
-               $context = RequestContext::newExtraneousContext( Title::newMainPage() );
-               $context->setUser( $user );
                foreach ( self::getList() as $name => $rec ) {
                        $page = self::getPage( $name );
                        if ( $page ) { // not null
-                               $page->setContext( $context );
+                               $page->setContext( RequestContext::getMain() );
                                if ( $page->isListed()
                                        && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
                                ) {
index 3b7b801..630ac53 100644 (file)
@@ -54,7 +54,9 @@ class MWTimestamp {
                "seconds" => 1000, // 1000 milliseconds per second
                "minutes" => 60, // 60 seconds per minute
                "hours" => 60, // 60 minutes per hour
-               "days" => 24 // 24 hours per day
+               "days" => 24, // 24 hours per day
+               "months" => 30, // approximately 30 days per month
+               "years" => 12, // 12 months per year
        );
 
        /**
index a20367d..dc76910 100644 (file)
@@ -1840,7 +1840,7 @@ class Title {
        private function checkSpecialsAndNSPermissions( $action, $user, $errors, $doExpensiveQueries, $short ) {
                # Only 'createaccount' and 'execute' can be performed on
                # special pages, which don't actually exist in the DB.
-               $specialOKActions = array( 'createaccount', 'execute', 'read' );
+               $specialOKActions = array( 'createaccount', 'execute' );
                if ( NS_SPECIAL == $this->mNamespace && !in_array( $action, $specialOKActions ) ) {
                        $errors[] = array( 'ns-specialprotected' );
                }
@@ -2986,6 +2986,7 @@ class Title {
                        return $this->mLatestID = 0;
                }
                $linkCache = LinkCache::singleton();
+               $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
                if ( $cached === null ) { # check the assumption that the cache actually knows about this title
                        # XXX: this does apparently happen, see https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
@@ -3503,9 +3504,11 @@ class Title {
                if ( !$wgContentHandlerUseDB &&
                                $this->getContentModel() !== $nt->getContentModel() ) {
                        // can't move a page if that would change the page's content model
-                       $errors[] = array( 'bad-target-model',
-                                                       ContentHandler::getLocalizedName( $this->getContentModel() ),
-                                                       ContentHandler::getLocalizedName( $nt->getContentModel() ) );
+                       $errors[] = array(
+                               'bad-target-model',
+                               ContentHandler::getLocalizedName( $this->getContentModel() ),
+                               ContentHandler::getLocalizedName( $nt->getContentModel() )
+                       );
                }
 
                // Image-specific checks
@@ -4030,7 +4033,7 @@ class Title {
                        array()
                );
 
-               if ( $dbr->numRows( $res ) > 0 ) {
+               if ( $res->numRows() > 0 ) {
                        foreach ( $res as $row ) {
                                // $data[] = Title::newFromText($wgContLang->getNSText ( NS_CATEGORY ).':'.$row->cl_to);
                                $data[$wgContLang->getNSText( NS_CATEGORY ) . ':' . $row->cl_to] = $this->getFullText();
index a6958c8..21f8dd0 100644 (file)
@@ -293,6 +293,7 @@ class User {
                                wfRunHooks( 'UserLoadAfterLoadFromSession', array( $this ) );
                                break;
                        default:
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Unrecognised value for User->mFrom: \"{$this->mFrom}\"" );
                }
                wfProfileOut( __METHOD__ );
@@ -332,6 +333,9 @@ class User {
                                $this->$name = $data[$name];
                        }
                }
+
+               $this->mLoadedItems = true;
+
                return true;
        }
 
@@ -2306,12 +2310,113 @@ class User {
        }
 
        /**
-        * Reset all options to the site defaults
+        * Return an associative array mapping preferences keys to the kind of a preference they're
+        * used for. Different kinds are handled differently when setting or reading preferences.
+        *
+        * Currently, the kind is one of:
+        * - 'registered' - preferences which are registered in core MediaWiki or
+        *                  by extensions using the UserGetDefaultOptions hook.
+        * - 'registered-multiselect' - as above, using the 'multiselect' type.
+        * - 'userjs' - preferences with names starting with 'userjs-', intended to
+        *              be used by user scripts.
+        * - 'unused' - preferences about which MediaWiki doesn't know anything.
+        *              These are usually legacy options, removed in newer versions.
+        *
+        * @param $context IContextSource
+        * @param $options array assoc. array with options keys to check as keys. Defaults to $this->mOptions.
+        * @return array the key => kind mapping data
+        */
+       public function getOptionKinds( IContextSource $context, $options = null ) {
+               $this->loadOptions();
+               if ( $options === null ) {
+                       $options = $this->mOptions;
+               }
+
+               $prefs = Preferences::getPreferences( $this, $context );
+               $mapping = array();
+
+               // Multiselect options are stored in the database with one key per
+               // option, each having a boolean value. Extract those keys.
+               $multiselectOptions = array();
+               foreach ( $prefs as $name => $info ) {
+                       if ( ( isset( $info['type'] ) && $info['type'] == 'multiselect' ) ||
+                                       ( isset( $info['class'] ) && $info['class'] == 'HTMLMultiSelectField' ) ) {
+                               $opts = HTMLFormField::flattenOptions( $info['options'] );
+                               $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
+
+                               foreach ( $opts as $value ) {
+                                       $multiselectOptions["$prefix$value"] = true;
+                               }
+
+                               unset( $prefs[$name] );
+                       }
+               }
+
+               // $value is ignored
+               foreach ( $options as $key => $value ) {
+                       if ( isset( $prefs[$key] ) ) {
+                               $mapping[$key] = 'registered';
+                       } elseif( isset( $multiselectOptions[$key] ) ) {
+                               $mapping[$key] = 'registered-multiselect';
+                       } elseif ( substr( $key, 0, 7 ) === 'userjs-' ) {
+                               $mapping[$key] = 'userjs';
+                       } else {
+                               $mapping[$key] = 'unused';
+                       }
+               }
+
+               return $mapping;
+       }
+
+       /**
+        * Reset certain (or all) options to the site defaults
+        *
+        * The optional parameter determines which kinds of preferences will be reset.
+        * Supported values are everything that can be reported by getOptionKinds()
+        * and 'all', which forces a reset of *all* preferences and overrides everything else.
+        *
+        * @param $resetKinds array|string which kinds of preferences to reset. Defaults to
+        *                                 array( 'registered', 'registered-multiselect', 'unused' )
+        *                                 for backwards-compatibility.
+        * @param $context IContextSource|null context source used when $resetKinds
+        *                                     does not contain 'all', passed to getOptionKinds().
+        *                                     Defaults to RequestContext::getMain() when null.
         */
-       public function resetOptions() {
+       public function resetOptions(
+               $resetKinds = array( 'registered', 'registered-multiselect', 'unused' ),
+               IContextSource $context = null
+       ) {
                $this->load();
+               $defaultOptions = self::getDefaultOptions();
 
-               $this->mOptions = self::getDefaultOptions();
+               if ( !is_array( $resetKinds ) ) {
+                       $resetKinds = array( $resetKinds );
+               }
+
+               if ( in_array( 'all', $resetKinds ) ) {
+                       $newOptions = $defaultOptions;
+               } else {
+                       if ( $context === null ) {
+                               $context = RequestContext::getMain();
+                       }
+
+                       $optionKinds = $this->getOptionKinds( $context );
+                       $newOptions = array();
+
+                       // Use default values for the options that should be deleted, and
+                       // copy old values for the ones that shouldn't.
+                       foreach ( $this->mOptions as $key => $value ) {
+                               if ( in_array( $optionKinds[$key], $resetKinds ) ) {
+                                       if ( array_key_exists( $key, $defaultOptions ) ) {
+                                               $newOptions[$key] = $defaultOptions[$key];
+                                       }
+                               } else {
+                                       $newOptions[$key] = $value;
+                               }
+                       }
+               }
+
+               $this->mOptions = $newOptions;
                $this->mOptionsLoaded = true;
        }
 
@@ -3184,7 +3289,7 @@ class User {
                # bug 13611: if the IP address the user is trying to create an account from is
                # blocked with createaccount disabled, prevent new account creation there even
                # when the user is logged in
-               if( $this->mBlockedFromCreateAccount === false ){
+               if ( $this->mBlockedFromCreateAccount === false && !$this->isAllowed( 'ipblock-exempt' ) ) {
                        $this->mBlockedFromCreateAccount = Block::newFromTarget( null, $this->getRequest()->getIP() );
                }
                return $this->mBlockedFromCreateAccount instanceof Block && $this->mBlockedFromCreateAccount->prevents( 'createaccount' )
index b8b6aa8..324e7ce 100644 (file)
@@ -21,6 +21,7 @@
  * @author <brion@pobox.com>
  * @author <mail@tgries.de>
  * @author Tim Starling
+ * @author Luke Welling lwelling@wikimedia.org
  */
 
 
@@ -112,6 +113,10 @@ class UserMailer {
         * @param $headers array Associative Array: keys are header field names,
         *                 values are ... values.
         * @param $endl String: The end of line character.  Defaults to "\n"
+        *
+        * Note RFC2822 says newlines must be CRLF (\r\n)
+        * but php mail naively "corrects" it and requires \n for the "correction" to work
+        *
         * @return String
         */
        static function arrayToHeaderString( $headers, $endl = "\n" ) {
@@ -149,19 +154,47 @@ class UserMailer {
         * @param $to MailAddress: recipient's email (or an array of them)
         * @param $from MailAddress: sender's email
         * @param $subject String: email's subject.
-        * @param $body String: email's text.
+        * @param $body String: email's text or Array of two strings to be the text and html bodies
         * @param $replyto MailAddress: optional reply-to email (default: null).
         * @param $contentType String: optional custom Content-Type (default: text/plain; charset=UTF-8)
         * @throws MWException
         * @return Status object
         */
        public static function send( $to, $from, $subject, $body, $replyto = null, $contentType = 'text/plain; charset=UTF-8' ) {
-               global $wgSMTP, $wgEnotifMaxRecips, $wgAdditionalMailParams;
-
+               global $wgSMTP, $wgEnotifMaxRecips, $wgAdditionalMailParams, $wgAllowHTMLEmail;
+               $mime = null;
                if ( !is_array( $to ) ) {
                        $to = array( $to );
                }
 
+               // mail body must have some content
+               $minBodyLen = 10;
+               // arbitrary but longer than Array or Object to detect casting error
+
+               // body must either be a string or an array with text and body
+               if (
+                       !(
+                               !is_array( $body ) &&
+                               strlen( $body ) >= $minBodyLen
+                       )
+                       &&
+                       !(
+                               is_array( $body ) &&
+                               isset( $body['text'] ) &&
+                               isset( $body['html'] ) &&
+                               strlen( $body['text'] ) >= $minBodyLen &&
+                               strlen( $body['html'] ) >= $minBodyLen
+                       )
+               ) {
+                       // if it is neither we have a problem
+                       return Status::newFatal( 'user-mail-no-body' );
+               }
+
+               if ( !$wgAllowHTMLEmail && is_array( $body ) ) {
+                       // HTML not wanted.  Dump it.
+                       $body = $body['text'];
+               }
+
                wfDebug( __METHOD__ . ': sending mail to ' . implode( ', ', $to ) . "\n" );
 
                # Make sure we have at least one address
@@ -211,18 +244,53 @@ class UserMailer {
                }
 
                $headers['Date'] = date( 'r' );
-               $headers['MIME-Version'] = '1.0';
-               $headers['Content-type'] = ( is_null( $contentType ) ?
-                       'text/plain; charset=UTF-8' : $contentType );
-               $headers['Content-transfer-encoding'] = '8bit';
-
                $headers['Message-ID'] = self::makeMsgId();
                $headers['X-Mailer'] = 'MediaWiki mailer';
 
+               # Line endings need to be different on Unix and Windows due to
+               # the bug described at http://trac.wordpress.org/ticket/2603
+               if ( wfIsWindows() ) {
+                       $endl = "\r\n";
+               } else {
+                       $endl = "\n";
+               }
+
+               if ( is_array( $body ) ) {
+                       // we are sending a multipart message
+                       wfDebug( "Assembling mulitpart mime email\n" );
+                       if ( !stream_resolve_include_path( 'Mail/mime.php' ) ) {
+                               wfDebug( "PEAR Mail_Mime package is not installed. Falling back to text email.\n" );
+                       }
+                       else {
+                               require_once( 'Mail/mime.php' );
+                               if ( wfIsWindows() ) {
+                                       $body['text'] = str_replace( "\n", "\r\n", $body['text'] );
+                                       $body['html'] = str_replace( "\n", "\r\n", $body['html'] );
+                               }
+                               $mime = new Mail_mime( array( 'eol' => $endl ) );
+                               $mime->setTXTBody( $body['text'] );
+                               $mime->setHTMLBody( $body['html'] );
+                               $body = $mime->get();  // must call get() before headers()
+                               $headers = $mime->headers( $headers );
+                       }
+               }
+               if ( !isset( $mime ) ) {
+                       // sending text only, either deliberately or as a fallback
+                       if ( wfIsWindows() ) {
+                               $body = str_replace( "\n", "\r\n", $body );
+                       }
+                       $headers['MIME-Version'] = '1.0';
+                       $headers['Content-type'] = ( is_null( $contentType ) ?
+                               'text/plain; charset=UTF-8' : $contentType );
+                       $headers['Content-transfer-encoding'] = '8bit';
+               }
+
                $ret = wfRunHooks( 'AlternateUserMailer', array( $headers, $to, $from, $subject, $body ) );
                if ( $ret === false ) {
+                       // the hook implementation will return false to skip regular mail sending
                        return Status::newGood();
                } elseif ( $ret !== true ) {
+                       // the hook implementation will return a string to pass an error message
                        return Status::newFatal( 'php-mail-error', $ret );
                }
 
@@ -231,7 +299,7 @@ class UserMailer {
                        # PEAR MAILER
                        #
 
-                       if ( ! stream_resolve_include_path( 'Mail.php' ) ) {
+                       if ( !stream_resolve_include_path( 'Mail.php' ) ) {
                                throw new MWException( 'PEAR mail package is not installed' );
                        }
                        require_once( 'Mail.php' );
@@ -272,16 +340,6 @@ class UserMailer {
                        #
                        # PHP mail()
                        #
-
-                       # Line endings need to be different on Unix and Windows due to
-                       # the bug described at http://trac.wordpress.org/ticket/2603
-                       if ( wfIsWindows() ) {
-                               $body = str_replace( "\n", "\r\n", $body );
-                               $endl = "\r\n";
-                       } else {
-                               $endl = "\n";
-                       }
-
                        if( count($to) > 1 ) {
                                $headers['To'] = 'undisclosed-recipients:;';
                        }
@@ -295,6 +353,7 @@ class UserMailer {
                        set_error_handler( 'UserMailer::errorHandler' );
 
                        $safeMode = wfIniGetBool( 'safe_mode' );
+
                        foreach ( $to as $recip ) {
                                if ( $safeMode ) {
                                        $sent = mail( $recip, self::quotedPrintable( $subject ), $body, $headers );
@@ -342,6 +401,12 @@ class UserMailer {
        /**
         * Converts a string into quoted-printable format
         * @since 1.17
+        *
+        * From PHP5.3 there is a built in function quoted_printable_encode()
+        * This method does not duplicate that.
+        * This method is doing Q encoding inside encoded-words as defined by RFC 2047
+        * This is for email headers.
+        * The built in quoted_printable_encode() is for email bodies
         * @return string
         */
        public static function quotedPrintable( $string, $charset = '' ) {
@@ -650,10 +715,14 @@ class EmailNotification {
                                        ->inContentLanguage()->text();
                        }
                        $keys['$OLDID']   = $this->oldid;
+                       // @deprecated Remove in MediaWiki 1.23.
+                       $keys['$CHANGEDORCREATED'] = wfMessage( 'changed' )->inContentLanguage()->text();
                } else {
                        # clear $OLDID placeholder in the message template
                        $keys['$OLDID']   = '';
                        $keys['$NEWPAGE'] = '';
+                       // @deprecated Remove in MediaWiki 1.23.
+                       $keys['$CHANGEDORCREATED'] = wfMessage( 'created' )->inContentLanguage()->text();
                }
 
                $keys['$PAGETITLE'] = $this->title->getPrefixedText();
@@ -681,11 +750,11 @@ class EmailNotification {
 
                # Now build message's subject and body
                $this->subject = wfMessage( 'enotif_subject_' . $this->pageStatus )->inContentLanguage()
-                       ->params( $pageTitle, $keys['$PAGEEDITOR'] )->escaped();
+                       ->params( $pageTitle, $keys['$PAGEEDITOR'] )->text();
 
                $keys['$PAGEINTRO'] = wfMessage( 'enotif_body_intro_' . $this->pageStatus )
                        ->inContentLanguage()->params( $pageTitle, $keys['$PAGEEDITOR'], $pageTitleUrl )
-                       ->escaped();
+                       ->text();
 
                $body = wfMessage( 'enotif_body' )->inContentLanguage()->plain();
                $body = strtr( $body, $keys );
index 8cf25bb..68d22a8 100644 (file)
@@ -192,7 +192,14 @@ class WebRequest {
         * @return array
         */
        public static function detectProtocolAndStdPort() {
-               return ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? array( 'https', 443 ) : array( 'http', 80 );
+               if ( ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ||
+                       ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) &&
+                       $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) ) {
+                       $arr = array( 'https', 443 );
+               } else {
+                       $arr = array( 'http', 80 );
+               }
+               return $arr;
        }
 
        /**
@@ -1307,6 +1314,10 @@ class FauxRequest extends WebRequest {
                return $this->wasPosted;
        }
 
+       public function getCookie( $key, $prefix = null, $default = null ) {
+               return $default;
+       }
+
        public function checkSessionCookie() {
                return false;
        }
index d4840cc..7604241 100644 (file)
@@ -331,8 +331,18 @@ class MediaWiki {
                wfProfileIn( __METHOD__ );
 
                $title = $this->context->getTitle();
-               $article = Article::newFromTitle( $title, $this->context );
-               $this->context->setWikiPage( $article->getPage() );
+               if ( $this->context->canUseWikiPage() ) {
+                       // Try to use request context wiki page, as there
+                       // is already data from db saved in per process
+                       // cache there from this->getAction() call.
+                       $page = $this->context->getWikiPage();
+                       $article = Article::newFromWikiPage( $page, $this->context );
+               } else {
+                       // This case should not happen, but just in case.
+                       $article = Article::newFromTitle( $title, $this->context );
+                       $this->context->setWikiPage( $article->getPage() );
+               }
+
                // NS_MEDIAWIKI has no redirects.
                // It is also used for CSS/JS, so performance matters here...
                if ( $title->getNamespace() == NS_MEDIAWIKI ) {
@@ -606,39 +616,22 @@ class MediaWiki {
                }
 
                $group = JobQueueGroup::singleton();
-               $types = $group->getDefaultQueueTypes();
-               shuffle( $types ); // avoid starvation
-
-               // Scan the queues for a job N times...
                do {
-                       $jobFound = false; // found a job in any queue?
-                       // Find a queue with a job on it and run it...
-                       foreach ( $types as $i => $type ) {
-                               $queue = $group->get( $type );
-                               if ( $queue->isEmpty() ) {
-                                       unset( $types[$i] ); // don't keep checking this queue
-                                       continue;
-                               }
-                               $job = $queue->pop();
-                               if ( $job ) {
-                                       $jobFound = true;
-                                       $output = $job->toString() . "\n";
-                                       $t = - microtime( true );
-                                       $success = $job->run();
-                                       $queue->ack( $job ); // done
-                                       $t += microtime( true );
-                                       $t = round( $t * 1000 );
-                                       if ( !$success ) {
-                                               $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
-                                       } else {
-                                               $output .= "Success, Time: $t ms\n";
-                                       }
-                                       wfDebugLog( 'jobqueue', $output );
-                                       break;
+                       $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
+                       if ( $job ) {
+                               $output = $job->toString() . "\n";
+                               $t = - microtime( true );
+                               $success = $job->run();
+                               $group->ack( $job ); // done
+                               $t += microtime( true );
+                               $t = round( $t * 1000 );
+                               if ( !$success ) {
+                                       $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
                                } else {
-                                       unset( $types[$i] ); // don't keep checking this queue
+                                       $output .= "Success, Time: $t ms\n";
                                }
+                               wfDebugLog( 'jobqueue', $output );
                        }
-               } while ( --$n && $jobFound );
+               } while ( --$n && $job );
        }
 }
index 4086a20..70ed7e7 100644 (file)
@@ -229,8 +229,8 @@ class WikiPage extends Page implements IDBAccessObject {
         */
        protected function clearCacheFields() {
                $this->mCounter = null;
-               $this->mRedirectTarget = null; # Title object if set
-               $this->mLastRevision = null; # Latest revision
+               $this->mRedirectTarget = null; // Title object if set
+               $this->mLastRevision = null; // Latest revision
                $this->mTouched = '19700101000000';
                $this->mTimestamp = '';
                $this->mIsRedirect = false;
@@ -339,8 +339,8 @@ class WikiPage extends Page implements IDBAccessObject {
                        $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle );
                } elseif ( $from === self::READ_NORMAL ) {
                        $data = $this->pageDataFromTitle( wfGetDB( DB_SLAVE ), $this->mTitle );
-                       # Use a "last rev inserted" timestamp key to dimish the issue of slave lag.
-                       # Note that DB also stores the master position in the session and checks it.
+                       // Use a "last rev inserted" timestamp key to dimish the issue of slave lag.
+                       // Note that DB also stores the master position in the session and checks it.
                        $touched = $this->getCachedLastEditTime();
                        if ( $touched ) { // key set
                                if ( !$data || $touched > wfTimestamp( TS_MW, $data->page_touched ) ) {
@@ -377,7 +377,7 @@ class WikiPage extends Page implements IDBAccessObject {
 
                        $this->mTitle->loadFromRow( $data );
 
-                       # Old-fashioned restrictions
+                       // Old-fashioned restrictions
                        $this->mTitle->loadRestrictions( $data->page_restrictions );
 
                        $this->mCounter     = intval( $data->page_counter );
@@ -463,7 +463,7 @@ class WikiPage extends Page implements IDBAccessObject {
         */
        public function getContentModel() {
                if ( $this->exists() ) {
-                       # look at the revision's actual content model
+                       // look at the revision's actual content model
                        $rev = $this->getRevision();
 
                        if ( $rev !== null ) {
@@ -474,7 +474,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        }
                }
 
-               # use the default model for this page
+               // use the default model for this page
                return $this->mTitle->getContentModel();
        }
 
@@ -630,7 +630,7 @@ class WikiPage extends Page implements IDBAccessObject {
         * @return String|false The text of the current revision
         * @deprecated as of 1.21, getContent() should be used instead.
         */
-       public function getText( $audience = Revision::FOR_PUBLIC, User $user = null ) { #@todo: deprecated, replace usage!
+       public function getText( $audience = Revision::FOR_PUBLIC, User $user = null ) { // @todo: deprecated, replace usage!
                ContentHandler::deprecated( __METHOD__, '1.21' );
 
                $this->loadLastEdit();
@@ -812,7 +812,7 @@ class WikiPage extends Page implements IDBAccessObject {
                $hasLinks = null;
 
                if ( $wgArticleCountMethod === 'link' ) {
-                       # nasty special case to avoid re-parsing to detect links
+                       // nasty special case to avoid re-parsing to detect links
 
                        if ( $editInfo ) {
                                // ParserOutput::getLinks() is a 2D array of page links, so
@@ -845,7 +845,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        return $this->mRedirectTarget;
                }
 
-               # Query the redirect table
+               // Query the redirect table
                $dbr = wfGetDB( DB_SLAVE );
                $row = $dbr->selectRow( 'redirect',
                        array( 'rd_namespace', 'rd_title', 'rd_fragment', 'rd_interwiki' ),
@@ -860,7 +860,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                $row->rd_fragment, $row->rd_interwiki );
                }
 
-               # This page doesn't have an entry in the redirect table
+               // This page doesn't have an entry in the redirect table
                return $this->mRedirectTarget = $this->insertRedirect();
        }
 
@@ -958,7 +958,7 @@ class WikiPage extends Page implements IDBAccessObject {
         * @return UserArrayFromResult
         */
        public function getContributors() {
-               # @todo FIXME: This is expensive; cache this info somewhere.
+               // @todo FIXME: This is expensive; cache this info somewhere.
 
                $dbr = wfGetDB( DB_SLAVE );
 
@@ -1122,13 +1122,13 @@ class WikiPage extends Page implements IDBAccessObject {
                        return;
                }
 
-               # Don't update page view counters on views from bot users (bug 14044)
+               // Don't update page view counters on views from bot users (bug 14044)
                if ( !$wgDisableCounters && !$user->isAllowed( 'bot' ) && $this->mTitle->exists() ) {
                        DeferredUpdates::addUpdate( new ViewCountUpdate( $this->getId() ) );
                        DeferredUpdates::addUpdate( new SiteStatsUpdate( 1, 0, 0 ) );
                }
 
-               # Update newtalk / watchlist notification status
+               // Update newtalk / watchlist notification status
                $user->clearNotification( $this->mTitle );
        }
 
@@ -1158,7 +1158,7 @@ class WikiPage extends Page implements IDBAccessObject {
                }
 
                if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
-                       //@todo: move this logic to MessageCache
+                       // @todo: move this logic to MessageCache
 
                        if ( $this->mTitle->exists() ) {
                                // NOTE: use transclusion text for messages.
@@ -1197,12 +1197,12 @@ class WikiPage extends Page implements IDBAccessObject {
                        'page_title'        => $this->mTitle->getDBkey(),
                        'page_counter'      => 0,
                        'page_restrictions' => '',
-                       'page_is_redirect'  => 0, # Will set this shortly...
+                       'page_is_redirect'  => 0, // Will set this shortly...
                        'page_is_new'       => 1,
                        'page_random'       => wfRandom(),
                        'page_touched'      => $dbw->timestamp(),
-                       'page_latest'       => 0, # Fill this in shortly...
-                       'page_len'          => 0, # Fill this in shortly...
+                       'page_latest'       => 0, // Fill this in shortly...
+                       'page_len'          => 0, // Fill this in shortly...
                ), __METHOD__, 'IGNORE' );
 
                $affected = $dbw->affectedRows();
@@ -1243,7 +1243,7 @@ class WikiPage extends Page implements IDBAccessObject {
                $conditions = array( 'page_id' => $this->getId() );
 
                if ( !is_null( $lastRevision ) ) {
-                       # An extra check against threads stepping on each other
+                       // An extra check against threads stepping on each other
                        $conditions['page_latest'] = $lastRevision;
                }
 
@@ -1272,7 +1272,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $this->setCachedLastEditTime( $now );
                        $this->mLatest = $revision->getId();
                        $this->mIsRedirect = (bool)$rt;
-                       # Update the LinkCache.
+                       // Update the LinkCache.
                        LinkCache::singleton()->addGoodLinkObj( $this->getId(), $this->mTitle, $len, $this->mIsRedirect,
                                                                                                        $this->mLatest, $revision->getContentModel() );
                }
@@ -1346,7 +1346,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $prev = $row->rev_id;
                        $lastRevIsRedirect = (bool)$row->page_is_redirect;
                } else {
-                       # No or missing previous revision; mark the page as new
+                       // No or missing previous revision; mark the page as new
                        $prev = 0;
                        $lastRevIsRedirect = null;
                }
@@ -1426,7 +1426,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        throw new MWException( "sections not supported for content model " . $this->getContentHandler()->getModelID() );
                }
 
-               # could even make section title, but that's not required.
+               // could even make section title, but that's not required.
                $sectionContent = ContentHandler::makeContent( $text, $this->getTitle() );
 
                $newContent = $this->replaceSectionContent( $section, $sectionContent, $sectionTitle, $edittime );
@@ -1491,7 +1491,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                return null;
                        }
 
-                       //FIXME: $oldContent might be null?
+                       // FIXME: $oldContent might be null?
                        $newContent = $oldContent->replaceSection( $section, $sectionContent, $sectionTitle );
                }
 
@@ -1625,7 +1625,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                                                   User $user = null, $serialisation_format = null ) {
                global $wgUser, $wgUseAutomaticEditSummaries, $wgUseRCPatrol, $wgUseNPPatrol;
 
-               # Low-level sanity check
+               // Low-level sanity check
                if ( $this->mTitle->getText() === '' ) {
                        throw new MWException( 'Something is trying to edit an article with an empty title' );
                }
@@ -1649,7 +1649,7 @@ class WikiPage extends Page implements IDBAccessObject {
 
                $flags = $this->checkFlags( $flags );
 
-               # handle hook
+               // handle hook
                $hook_args = array( &$this, &$user, &$content, &$summary,
                                                        $flags & EDIT_MINOR, null, null, &$flags, &$status );
 
@@ -1666,7 +1666,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        return $status;
                }
 
-               # Silently ignore EDIT_MINOR if not allowed
+               // Silently ignore EDIT_MINOR if not allowed
                $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' );
                $bot = $flags & EDIT_FORCE_BOT;
 
@@ -1679,7 +1679,7 @@ class WikiPage extends Page implements IDBAccessObject {
 
                $handler = $content->getContentHandler();
 
-               # Provide autosummaries if one is not provided and autosummaries are enabled.
+               // Provide autosummaries if one is not provided and autosummaries are enabled.
                if ( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) {
                        if ( !$old_content ) $old_content = null;
                        $summary = $handler->getAutosummary( $old_content, $content, $flags );
@@ -1695,18 +1695,18 @@ class WikiPage extends Page implements IDBAccessObject {
                $this->mTimestamp = $now;
 
                if ( $flags & EDIT_UPDATE ) {
-                       # Update article, but only if changed.
+                       // Update article, but only if changed.
                        $status->value['new'] = false;
 
                        if ( !$oldid ) {
-                               # Article gone missing
+                               // Article gone missing
                                wfDebug( __METHOD__ . ": EDIT_UPDATE specified but article doesn't exist\n" );
                                $status->fatal( 'edit-gone-missing' );
 
                                wfProfileOut( __METHOD__ );
                                return $status;
                        } elseif ( !$old_content ) {
-                               # Sanity check for bug 37225
+                               // Sanity check for bug 37225
                                wfProfileOut( __METHOD__ );
                                throw new MWException( "Could not find text for current revision {$oldid}." );
                        }
@@ -1724,7 +1724,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                'timestamp'  => $now,
                                'content_model' => $content->getModel(),
                                'content_format' => $serialisation_format,
-                       ) ); #XXX: pass content object?!
+                       ) ); // XXX: pass content object?!
 
                        $changed = !$content->equals( $old_content );
 
@@ -1747,17 +1747,17 @@ class WikiPage extends Page implements IDBAccessObject {
 
                                $revisionId = $revision->insertOn( $dbw );
 
-                               # Update page
-                               #
-                               # Note that we use $this->mLatest instead of fetching a value from the master DB
-                               # during the course of this function. This makes sure that EditPage can detect
-                               # edit conflicts reliably, either by $ok here, or by $article->getTimestamp()
-                               # before this function is called. A previous function used a separate query, this
-                               # creates a window where concurrent edits can cause an ignored edit conflict.
+                               // Update page
+                               //
+                               // Note that we use $this->mLatest instead of fetching a value from the master DB
+                               // during the course of this function. This makes sure that EditPage can detect
+                               // edit conflicts reliably, either by $ok here, or by $article->getTimestamp()
+                               // before this function is called. A previous function used a separate query, this
+                               // creates a window where concurrent edits can cause an ignored edit conflict.
                                $ok = $this->updateRevisionOn( $dbw, $revision, $oldid, $oldIsRedirect );
 
                                if ( !$ok ) {
-                                       # Belated edit conflict! Run away!!
+                                       // Belated edit conflict! Run away!!
                                        $status->fatal( 'edit-conflict' );
 
                                        $dbw->rollback( __METHOD__ );
@@ -1767,18 +1767,18 @@ class WikiPage extends Page implements IDBAccessObject {
                                }
 
                                wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, $baseRevId, $user ) );
-                               # Update recentchanges
+                               // Update recentchanges
                                if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
-                                       # Mark as patrolled if the user can do so
+                                       // Mark as patrolled if the user can do so
                                        $patrolled = $wgUseRCPatrol && !count(
                                                $this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
-                                       # Add RC row to the DB
+                                       // Add RC row to the DB
                                        $rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary,
                                                $oldid, $this->getTimestamp(), $bot, '', $oldsize, $newsize,
                                                $revisionId, $patrolled
                                        );
 
-                                       # Log auto-patrolled edits
+                                       // Log auto-patrolled edits
                                        if ( $patrolled ) {
                                                PatrolLog::record( $rc, true, $user );
                                        }
@@ -1791,7 +1791,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                $revision->setId( $this->getLatest() );
                        }
 
-                       # Update links tables, site stats, etc.
+                       // Update links tables, site stats, etc.
                        $this->doEditUpdates(
                                $revision,
                                $user,
@@ -1809,7 +1809,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                $this->mTitle->invalidateCache();
                        }
                } else {
-                       # Create new article
+                       // Create new article
                        $status->value['new'] = true;
 
                        $dbw->begin( __METHOD__ );
@@ -1826,8 +1826,8 @@ class WikiPage extends Page implements IDBAccessObject {
 
                        $status->merge( $prepStatus );
 
-                       # Add the page record; stake our claim on this title!
-                       # This will return false if the article already exists
+                       // Add the page record; stake our claim on this title!
+                       // This will return false if the article already exists
                        $newid = $this->insertOn( $dbw );
 
                        if ( $newid === false ) {
@@ -1838,7 +1838,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                return $status;
                        }
 
-                       # Save the revision text...
+                       // Save the revision text...
                        $revision = new Revision( array(
                                'page'       => $newid,
                                'title'      => $this->getTitle(), // for determining the default content model
@@ -1854,28 +1854,28 @@ class WikiPage extends Page implements IDBAccessObject {
                        ) );
                        $revisionId = $revision->insertOn( $dbw );
 
-                       # Bug 37225: use accessor to get the text as Revision may trim it
+                       // Bug 37225: use accessor to get the text as Revision may trim it
                        $content = $revision->getContent(); // sanity; get normalized version
 
                        if ( $content ) {
                                $newsize = $content->getSize();
                        }
 
-                       # Update the page record with revision data
+                       // Update the page record with revision data
                        $this->updateRevisionOn( $dbw, $revision, 0 );
 
                        wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) );
 
-                       # Update recentchanges
+                       // Update recentchanges
                        if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
-                               # Mark as patrolled if the user can do so
+                               // Mark as patrolled if the user can do so
                                $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && !count(
                                        $this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
-                               # Add RC row to the DB
+                               // Add RC row to the DB
                                $rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot,
                                        '', $newsize, $revisionId, $patrolled );
 
-                               # Log auto-patrolled edits
+                               // Log auto-patrolled edits
                                if ( $patrolled ) {
                                        PatrolLog::record( $rc, true, $user );
                                }
@@ -1883,7 +1883,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $user->incEditCount();
                        $dbw->commit( __METHOD__ );
 
-                       # Update links, etc.
+                       // Update links, etc.
                        $this->doEditUpdates( $revision, $user, array( 'created' => true ) );
 
                        $hook_args = array( &$this, &$user, $content, $summary,
@@ -1893,7 +1893,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        wfRunHooks( 'PageContentInsertComplete', $hook_args );
                }
 
-               # Do updates right now unless deferral was requested
+               // Do updates right now unless deferral was requested
                if ( !( $flags & EDIT_DEFER_UPDATES ) ) {
                        DeferredUpdates::doUpdates();
                }
@@ -1907,7 +1907,7 @@ class WikiPage extends Page implements IDBAccessObject {
                ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $hook_args );
                wfRunHooks( 'PageContentSaveComplete', $hook_args );
 
-               # Promote user to any groups they meet the criteria for
+               // Promote user to any groups they meet the criteria for
                $user->addAutopromoteOnceGroups( 'onEdit' );
 
                wfProfileOut( __METHOD__ );
@@ -1974,7 +1974,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        && $this->mPreparedEdit->newContent->equals( $content )
                        && $this->mPreparedEdit->revid == $revid
                        && $this->mPreparedEdit->format == $serialization_format
-                       #XXX: also check $user here?
+                       // XXX: also check $user here?
                ) {
                        // Already prepared
                        return $this->mPreparedEdit;
@@ -1995,7 +1995,7 @@ class WikiPage extends Page implements IDBAccessObject {
                $edit->newContent = $content;
                $edit->oldContent = $this->getContent( Revision::RAW );
 
-               #NOTE: B/C for hooks! don't use these fields!
+               // NOTE: B/C for hooks! don't use these fields!
                $edit->newText = $edit->newContent ? ContentHandler::getContentText( $edit->newContent ) : '';
                $edit->oldText = $edit->oldContent ? ContentHandler::getContentText( $edit->oldContent ) : '';
                $edit->pst = $edit->pstContent ? $edit->pstContent->serialize( $serialization_format ) : '';
@@ -2028,8 +2028,8 @@ class WikiPage extends Page implements IDBAccessObject {
                $options += array( 'changed' => true, 'created' => false, 'oldcountable' => null );
                $content = $revision->getContent();
 
-               # Parse the text
-               # Be careful not to double-PST: $text is usually already PST-ed once
+               // Parse the text
+               // Be careful not to double-PST: $text is usually already PST-ed once
                if ( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) {
                        wfDebug( __METHOD__ . ": No prepared edit or vary-revision is set...\n" );
                        $editInfo = $this->prepareContentForEdit( $content, $revision->getId(), $user );
@@ -2038,13 +2038,13 @@ class WikiPage extends Page implements IDBAccessObject {
                        $editInfo = $this->mPreparedEdit;
                }
 
-               # Save it to the parser cache
+               // Save it to the parser cache
                if ( $wgEnableParserCache ) {
                        $parserCache = ParserCache::singleton();
                        $parserCache->save( $editInfo->output, $this, $editInfo->popts );
                }
 
-               # Update the links tables and other secondary data
+               // Update the links tables and other secondary data
                if ( $content ) {
                        $updates = $content->getSecondaryDataUpdates( $this->getTitle(), null, true, $editInfo->output );
                        DataUpdate::runUpdates( $updates );
@@ -2062,7 +2062,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                $cutoff = $dbw->timestamp( time() - $wgRCMaxAge );
                                $dbw->delete(
                                        'recentchanges',
-                                       array( "rc_timestamp < '$cutoff'" ),
+                                       array( 'rc_timestamp < ' . $dbw->addQuotes( $cutoff ) ),
                                        __METHOD__
                                );
                        }
@@ -2093,11 +2093,11 @@ class WikiPage extends Page implements IDBAccessObject {
 
                DeferredUpdates::addUpdate( new SiteStatsUpdate( 0, 1, $good, $total ) );
                DeferredUpdates::addUpdate( new SearchUpdate( $id, $title, $content->getTextForSearchIndex() ) );
-               #@TODO: let the search engine decide what to do with the content object
+               // @TODO: let the search engine decide what to do with the content object
 
-               # If this is another user's talk page, update newtalk.
-               # Don't do this if $options['changed'] = false (null-edits) nor if
-               # it's a minor edit and the user doesn't want notifications for those.
+               // If this is another user's talk page, update newtalk.
+               // Don't do this if $options['changed'] = false (null-edits) nor if
+               // it's a minor edit and the user doesn't want notifications for those.
                if ( $options['changed']
                        && $this->mTitle->getNamespace() == NS_USER_TALK
                        && $shortTitle != $user->getTitleKey()
@@ -2119,7 +2119,7 @@ class WikiPage extends Page implements IDBAccessObject {
                }
 
                if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
-                       #XXX: could skip pseudo-messages like js/css here, based on content model.
+                       // XXX: could skip pseudo-messages like js/css here, based on content model.
                        $msgtext = $content ? $content->getWikitextForTransclusion() : null;
                        if ( $msgtext === false || $msgtext === null ) $msgtext = '';
 
@@ -2178,7 +2178,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        'length'     => $content->getSize(),
                        'comment'    => $comment,
                        'minor_edit' => $minor ? 1 : 0,
-               ) ); #XXX: set the content object?
+               ) ); // XXX: set the content object?
                $revision->insertOn( $dbw );
                $this->updateRevisionOn( $dbw, $revision );
 
@@ -2216,8 +2216,8 @@ class WikiPage extends Page implements IDBAccessObject {
                // Take this opportunity to purge out expired restrictions
                Title::purgeExpiredRestrictions();
 
-               # @todo FIXME: Same limitations as described in ProtectionForm.php (line 37);
-               # we expect a single selection, but the schema allows otherwise.
+               // @todo FIXME: Same limitations as described in ProtectionForm.php (line 37);
+               // we expect a single selection, but the schema allows otherwise.
                $isProtected = false;
                $protect = false;
                $changed = false;
@@ -2234,7 +2234,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                $protect = true;
                        }
 
-                       # Get current restrictions on $action
+                       // Get current restrictions on $action
                        $current = implode( '', $this->mTitle->getRestrictions( $action ) );
                        if ( $current != '' ) {
                                $isProtected = true;
@@ -2243,9 +2243,9 @@ class WikiPage extends Page implements IDBAccessObject {
                        if ( $limit[$action] != $current ) {
                                $changed = true;
                        } elseif ( $limit[$action] != '' ) {
-                               # Only check expiry change if the action is actually being
-                               # protected, since expiry does nothing on an not-protected
-                               # action.
+                               // Only check expiry change if the action is actually being
+                               // protected, since expiry does nothing on an not-protected
+                               // action.
                                if ( $this->mTitle->getRestrictionExpiry( $action ) != $expiry[$action] ) {
                                        $changed = true;
                                }
@@ -2256,12 +2256,12 @@ class WikiPage extends Page implements IDBAccessObject {
                        $changed = true;
                }
 
-               # If nothing's changed, do nothing
+               // If nothing's changed, do nothing
                if ( !$changed ) {
                        return Status::newGood();
                }
 
-               if ( !$protect ) { # No protection at all means unprotection
+               if ( !$protect ) { // No protection at all means unprotection
                        $revCommentMsg = 'unprotectedarticle';
                        $logAction = 'unprotect';
                } elseif ( $isProtected ) {
@@ -2277,39 +2277,54 @@ class WikiPage extends Page implements IDBAccessObject {
                foreach ( $limit as $action => $restrictions ) {
                        $encodedExpiry[$action] = $dbw->encodeExpiry( $expiry[$action] );
                        if ( $restrictions != '' ) {
-                               $protectDescription .= $wgContLang->getDirMark() . "[$action=$restrictions] (";
+                               # $action is one of $wgRestrictionTypes = array( 'create', 'edit', 'move', 'upload' ).
+                               # All possible message keys are listed here for easier grepping:
+                               # * restriction-create
+                               # * restriction-edit
+                               # * restriction-move
+                               # * restriction-upload
+                               $actionText = wfMessage( 'restriction-' . $action )->inContentLanguage()->text();
+                               # $restrictions is one of $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' ),
+                               # with '' filtered out. All possible message keys are listed below:
+                               # * protect-level-autoconfirmed
+                               # * protect-level-sysop
+                               $restrictionsText = wfMessage( 'protect-level-' . $restrictions )->inContentLanguage()->text();
                                if ( $encodedExpiry[$action] != 'infinity' ) {
-                                       $protectDescription .= wfMessage(
+                                       $expiryText = wfMessage(
                                                'protect-expiring',
                                                $wgContLang->timeanddate( $expiry[$action], false, false ) ,
                                                $wgContLang->date( $expiry[$action], false, false ) ,
                                                $wgContLang->time( $expiry[$action], false, false )
                                        )->inContentLanguage()->text();
                                } else {
-                                       $protectDescription .= wfMessage( 'protect-expiry-indefinite' )
+                                       $expiryText = wfMessage( 'protect-expiry-indefinite' )
                                                ->inContentLanguage()->text();
                                }
 
-                               $protectDescription .= ') ';
+                               if ( $protectDescription !== '' ) {
+                                       $protectDescription .= wfMessage( 'word-separator' )->inContentLanguage()->text();
+                               }
+                               $protectDescription .= wfMessage( 'protect-summary-desc' )
+                                       ->params( $actionText, $restrictionsText, $expiryText )
+                                       ->inContentLanguage()->text();
                        }
                }
-               $protectDescription = trim( $protectDescription );
 
-               if ( $id ) { # Protection of existing page
+               if ( $id ) { // Protection of existing page
                        if ( !wfRunHooks( 'ArticleProtect', array( &$this, &$user, $limit, $reason ) ) ) {
                                return Status::newGood();
                        }
 
-                       # Only restrictions with the 'protect' right can cascade...
-                       # Otherwise, people who cannot normally protect can "protect" pages via transclusion
+                       // Only restrictions with the 'protect' right can cascade...
+                       // Otherwise, people who cannot normally protect can "protect" pages via transclusion
                        $editrestriction = isset( $limit['edit'] ) ? array( $limit['edit'] ) : $this->mTitle->getRestrictions( 'edit' );
 
-                       # The schema allows multiple restrictions
+                       // The schema allows multiple restrictions
                        if ( !in_array( 'protect', $editrestriction ) && !in_array( 'sysop', $editrestriction ) ) {
                                $cascade = false;
                        }
 
-                       # Update restrictions table
+                       // Update restrictions table
                        foreach ( $limit as $action => $restrictions ) {
                                if ( $restrictions != '' ) {
                                        $dbw->replace( 'page_restrictions', array( array( 'pr_page', 'pr_type' ) ),
@@ -2327,7 +2342,7 @@ class WikiPage extends Page implements IDBAccessObject {
                                }
                        }
 
-                       # Prepare a null revision to be added to the history
+                       // Prepare a null revision to be added to the history
                        $editComment = $wgContLang->ucfirst(
                                wfMessage(
                                        $revCommentMsg,
@@ -2338,20 +2353,22 @@ class WikiPage extends Page implements IDBAccessObject {
                                $editComment .= ": $reason";
                        }
                        if ( $protectDescription ) {
-                               $editComment .= " ($protectDescription)";
+                               $editComment .= wfMessage( 'word-separator' )->inContentLanguage()->text();
+                               $editComment .= wfMessage( 'parentheses' )->params( $protectDescription )->inContentLanguage()->text();
                        }
                        if ( $cascade ) {
-                               // FIXME: Should use 'brackets' message.
-                               $editComment .= ' [' . wfMessage( 'protect-summary-cascade' )
-                                       ->inContentLanguage()->text() . ']';
+                               $editComment .= wfMessage( 'word-separator' )->inContentLanguage()->text();
+                               $editComment .= wfMessage( 'brackets' )->params(
+                                       wfMessage( 'protect-summary-cascade' )->inContentLanguage()->text()
+                               )->inContentLanguage()->text();
                        }
 
-                       # Insert a null revision
+                       // Insert a null revision
                        $nullRevision = Revision::newNullRevision( $dbw, $id, $editComment, true );
                        $nullRevId = $nullRevision->insertOn( $dbw );
 
                        $latest = $this->getLatest();
-                       # Update page record
+                       // Update page record
                        $dbw->update( 'page',
                                array( /* SET */
                                        'page_touched' => $dbw->timestamp(),
@@ -2364,8 +2381,8 @@ class WikiPage extends Page implements IDBAccessObject {
 
                        wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $nullRevision, $latest, $user ) );
                        wfRunHooks( 'ArticleProtectComplete', array( &$this, &$user, $limit, $reason ) );
-               } else { # Protection of non-existing page (also known as "title protection")
-                       # Cascade protection is meaningless in this case
+               } else { // Protection of non-existing page (also known as "title protection")
+                       // Cascade protection is meaningless in this case
                        $cascade = false;
 
                        if ( $limit['create'] != '' ) {
@@ -2399,7 +2416,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $logParams = array( $protectDescription, $cascade ? 'cascade' : '' );
                }
 
-               # Update the protection log
+               // Update the protection log
                $log = new LogPage( 'protect' );
                $log->addEntry( $logAction, $this->mTitle, trim( $reason ), $logParams, $user );
 
@@ -2562,7 +2579,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        ), __METHOD__
                );
 
-               # Now that it's safely backed up, delete it
+               // Now that it's safely backed up, delete it
                $dbw->delete( 'page', array( 'page_id' => $id ), __METHOD__ );
                $ok = ( $dbw->affectedRows() > 0 ); // getArticleID() uses slave, could be laggy
 
@@ -2574,7 +2591,7 @@ class WikiPage extends Page implements IDBAccessObject {
 
                $this->doDeleteUpdates( $id, $content );
 
-               # Log the deletion, if the page was suppressed, log it at Oversight instead
+               // Log the deletion, if the page was suppressed, log it at Oversight instead
                $logtype = $suppress ? 'suppress' : 'delete';
 
                $logEntry = new ManualLogEntry( $logtype, 'delete' );
@@ -2601,20 +2618,20 @@ class WikiPage extends Page implements IDBAccessObject {
         *        This may be needed because $this->getContent() may already return null when the page proper was deleted.
         */
        public function doDeleteUpdates( $id, Content $content = null ) {
-               # update site status
+               // update site status
                DeferredUpdates::addUpdate( new SiteStatsUpdate( 0, 1, - (int)$this->isCountable(), -1 ) );
 
-               # remove secondary indexes, etc
+               // remove secondary indexes, etc
                $updates = $this->getDeletionUpdates( $content );
                DataUpdate::runUpdates( $updates );
 
-               # Clear caches
+               // Clear caches
                WikiPage::onArticleDelete( $this->mTitle );
 
-               # Reset this object
+               // Reset this object
                $this->clear();
 
-               # Clear the cached article id so the interface doesn't act like we exist
+               // Clear the cached article id so the interface doesn't act like we exist
                $this->mTitle->resetArticleID( 0 );
        }
 
@@ -2647,7 +2664,7 @@ class WikiPage extends Page implements IDBAccessObject {
        ) {
                $resultDetails = null;
 
-               # Check permissions
+               // Check permissions
                $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $user );
                $rollbackErrors = $this->mTitle->getUserPermissionsErrors( 'rollback', $user );
                $errors = array_merge( $editErrors, wfArrayDiff2( $rollbackErrors, $editErrors ) );
@@ -2660,7 +2677,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $errors[] = array( 'actionthrottledtext' );
                }
 
-               # If there were errors, bail out now
+               // If there were errors, bail out now
                if ( !empty( $errors ) ) {
                        return $errors;
                }
@@ -2693,16 +2710,16 @@ class WikiPage extends Page implements IDBAccessObject {
                        return array( array( 'readonlytext' ) );
                }
 
-               # Get the last editor
+               // Get the last editor
                $current = $this->getRevision();
                if ( is_null( $current ) ) {
-                       # Something wrong... no page?
+                       // Something wrong... no page?
                        return array( array( 'notanarticle' ) );
                }
 
                $from = str_replace( '_', ' ', $fromP );
-               # User name given should match up with the top revision.
-               # If the user was deleted then $from should be empty.
+               // User name given should match up with the top revision.
+               // If the user was deleted then $from should be empty.
                if ( $from != $current->getUserText() ) {
                        $resultDetails = array( 'current' => $current );
                        return array( array( 'alreadyrolled',
@@ -2712,8 +2729,8 @@ class WikiPage extends Page implements IDBAccessObject {
                        ) );
                }
 
-               # Get the last edit not by this guy...
-               # Note: these may not be public values
+               // Get the last edit not by this guy...
+               // Note: these may not be public values
                $user = intval( $current->getRawUser() );
                $user_text = $dbw->addQuotes( $current->getRawUserText() );
                $s = $dbw->selectRow( 'revision',
@@ -2725,21 +2742,21 @@ class WikiPage extends Page implements IDBAccessObject {
                                'ORDER BY' => 'rev_timestamp DESC' )
                        );
                if ( $s === false ) {
-                       # No one else ever edited this page
+                       // No one else ever edited this page
                        return array( array( 'cantrollback' ) );
                } elseif ( $s->rev_deleted & Revision::DELETED_TEXT || $s->rev_deleted & Revision::DELETED_USER ) {
-                       # Only admins can see this text
+                       // Only admins can see this text
                        return array( array( 'notvisiblerev' ) );
                }
 
                $set = array();
                if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
-                       # Mark all reverted edits as bot
+                       // Mark all reverted edits as bot
                        $set['rc_bot'] = 1;
                }
 
                if ( $wgUseRCPatrol ) {
-                       # Mark all reverted edits as patrolled
+                       // Mark all reverted edits as patrolled
                        $set['rc_patrolled'] = 1;
                }
 
@@ -2753,7 +2770,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        );
                }
 
-               # Generate the edit summary if necessary
+               // Generate the edit summary if necessary
                $target = Revision::newFromId( $s->rev_id );
                if ( empty( $summary ) ) {
                        if ( $from == '' ) { // no public user name
@@ -2763,7 +2780,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        }
                }
 
-               # Allow the custom summary to use the same args as the default message
+               // Allow the custom summary to use the same args as the default message
                $args = array(
                        $target->getUserText(), $from, $s->rev_id,
                        $wgContLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ) ),
@@ -2775,10 +2792,10 @@ class WikiPage extends Page implements IDBAccessObject {
                        $summary = wfMsgReplaceArgs( $summary, $args );
                }
 
-               # Truncate for whole multibyte characters.
+               // Truncate for whole multibyte characters.
                $summary = $wgContLang->truncate( $summary, 255 );
 
-               # Save
+               // Save
                $flags = EDIT_UPDATE;
 
                if ( $guser->isAllowed( 'minoredit' ) ) {
@@ -2789,7 +2806,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $flags |= EDIT_FORCE_BOT;
                }
 
-               # Actually store the edit
+               // Actually store the edit
                $status = $this->doEditContent( $target->getContent(), $summary, $flags, $target->getId(), $guser );
 
                if ( !$status->isOK() ) {
@@ -2826,7 +2843,7 @@ class WikiPage extends Page implements IDBAccessObject {
         * @param $title Title object
         */
        public static function onArticleCreate( $title ) {
-               # Update existence markers on article/talk tabs...
+               // Update existence markers on article/talk tabs...
                if ( $title->isTalkPage() ) {
                        $other = $title->getSubjectPage();
                } else {
@@ -2847,7 +2864,7 @@ class WikiPage extends Page implements IDBAccessObject {
         * @param $title Title
         */
        public static function onArticleDelete( $title ) {
-               # Update existence markers on article/talk tabs...
+               // Update existence markers on article/talk tabs...
                if ( $title->isTalkPage() ) {
                        $other = $title->getSubjectPage();
                } else {
@@ -2860,21 +2877,21 @@ class WikiPage extends Page implements IDBAccessObject {
                $title->touchLinks();
                $title->purgeSquid();
 
-               # File cache
+               // File cache
                HTMLFileCache::clearFileCache( $title );
 
-               # Messages
+               // Messages
                if ( $title->getNamespace() == NS_MEDIAWIKI ) {
                        MessageCache::singleton()->replace( $title->getDBkey(), false );
                }
 
-               # Images
+               // Images
                if ( $title->getNamespace() == NS_FILE ) {
                        $update = new HTMLCacheUpdate( $title, 'imagelinks' );
                        $update->doUpdate();
                }
 
-               # User talk pages
+               // User talk pages
                if ( $title->getNamespace() == NS_USER_TALK ) {
                        $user = User::newFromName( $title->getText(), false );
                        if ( $user ) {
@@ -2882,7 +2899,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        }
                }
 
-               # Image redirects
+               // Image redirects
                RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $title );
        }
 
@@ -2896,14 +2913,13 @@ class WikiPage extends Page implements IDBAccessObject {
                // Invalidate caches of articles which include this page
                DeferredUpdates::addHTMLCacheUpdate( $title, 'templatelinks' );
 
-
                // Invalidate the caches of all pages which redirect here
                DeferredUpdates::addHTMLCacheUpdate( $title, 'redirect' );
 
-               # Purge squid for this page only
+               // Purge squid for this page only
                $title->purgeSquid();
 
-               # Clear file cache for this page only
+               // Clear file cache for this page only
                HTMLFileCache::clearFileCache( $title );
        }
 
@@ -2949,7 +2965,7 @@ class WikiPage extends Page implements IDBAccessObject {
        * @deprecated since 1.21, use ContentHandler::getAutosummary() instead
        */
        public static function getAutosummary( $oldtext, $newtext, $flags ) {
-               # NOTE: stub for backwards-compatibility. assumes the given text is wikitext. will break horribly if it isn't.
+               // NOTE: stub for backwards-compatibility. assumes the given text is wikitext. will break horribly if it isn't.
 
                ContentHandler::deprecated( __METHOD__, '1.21' );
 
@@ -2982,15 +2998,15 @@ class WikiPage extends Page implements IDBAccessObject {
                $ns = $this->mTitle->getNamespace();
                $dbw = wfGetDB( DB_MASTER );
 
-               # First make sure the rows exist.  If one of the "deleted" ones didn't
-               # exist, we might legitimately not create it, but it's simpler to just
-               # create it and then give it a negative value, since the value is bogus
-               # anyway.
-               #
-               # Sometimes I wish we had INSERT ... ON DUPLICATE KEY UPDATE.
+               // First make sure the rows exist.  If one of the "deleted" ones didn't
+               // exist, we might legitimately not create it, but it's simpler to just
+               // create it and then give it a negative value, since the value is bogus
+               // anyway.
+               //
+               // Sometimes I wish we had INSERT ... ON DUPLICATE KEY UPDATE.
                $insertCats = array_merge( $added, $deleted );
                if ( !$insertCats ) {
-                       # Okay, nothing to do
+                       // Okay, nothing to do
                        return;
                }
 
@@ -3051,7 +3067,7 @@ class WikiPage extends Page implements IDBAccessObject {
                // that cascaded protections apply as soon as the changes
                // are visible.
 
-               # Get templates from templatelinks
+               // Get templates from templatelinks
                $id = $this->mTitle->getArticleID();
 
                $tlTemplates = array();
@@ -3067,7 +3083,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
                }
 
-               # Get templates from parser output.
+               // Get templates from parser output.
                $poTemplates = array();
                foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
                        foreach ( $templates as $dbk => $id ) {
@@ -3075,12 +3091,12 @@ class WikiPage extends Page implements IDBAccessObject {
                        }
                }
 
-               # Get the diff
+               // Get the diff
                $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
 
                if ( count( $templates_diff ) > 0 ) {
-                       # Whee, link updates time.
-                       # Note: we are only interested in links here. We don't need to get other DataUpdate items from the parser output.
+                       // Whee, link updates time.
+                       // Note: we are only interested in links here. We don't need to get other DataUpdate items from the parser output.
                        $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
                        $u->doUpdate();
                }
@@ -3289,7 +3305,7 @@ class PoolWorkArticleView extends PoolCounterWork {
         * @param $content Content|String: content to parse or null to load it; may also be given as a wikitext string, for BC
         */
        function __construct( Page $page, ParserOptions $parserOptions, $revid, $useParserCache, $content = null ) {
-               if ( is_string($content) ) { #BC: old style call
+               if ( is_string($content) ) { // BC: old style call
                        $modelId = $page->getRevision()->getContentModel();
                        $format = $page->getRevision()->getContentFormat();
                        $content = ContentHandler::makeContent( $content, $page->getTitle(), $modelId, $format );
@@ -3345,7 +3361,7 @@ class PoolWorkArticleView extends PoolCounterWork {
                if ( $this->content !== null ) {
                        $content = $this->content;
                } elseif ( $isCurrent ) {
-                       #XXX: why use RAW audience here, and PUBLIC (default) below?
+                       // XXX: why use RAW audience here, and PUBLIC (default) below?
                        $content = $this->page->getContent( Revision::RAW );
                } else {
                        $rev = Revision::newFromTitle( $this->page->getTitle(), $this->revid );
@@ -3353,7 +3369,7 @@ class PoolWorkArticleView extends PoolCounterWork {
                        if ( $rev === null ) {
                                $content = null;
                        } else {
-                               #XXX: why use PUBLIC audience here (default), and RAW above?
+                               // XXX: why use PUBLIC audience here (default), and RAW above?
                                $content = $rev->getContent();
                        }
                }
@@ -3366,7 +3382,7 @@ class PoolWorkArticleView extends PoolCounterWork {
                $this->parserOutput = $content->getParserOutput( $this->page->getTitle(), $this->revid, $this->parserOptions );
                $time += microtime( true );
 
-               # Timing hack
+               // Timing hack
                if ( $time > 3 ) {
                        wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
                                $this->page->getTitle()->getPrefixedDBkey() ) );
index 34efc38..df98836 100644 (file)
@@ -15769,6 +15769,7 @@ $zh2Hans = array(
 '達著述' => '达著述',
 '近角聪信' => '近角聪信',
 '近角聰信' => '近角聪信',
+'这么' => '这么',
 '遠著' => '远着',
 '遠著書' => '远著书',
 '遠著作' => '远著作',
index d68ae2b..43a03db 100644 (file)
@@ -222,7 +222,7 @@ class HistoryAction extends FormlessAction {
                }
 
                if ( $offset ) {
-                       $offsets = array( "rev_timestamp $oper '$offset'" );
+                       $offsets = array( 'rev_timestamp $oper ' . $dbr->addQuotes( $dbr->timestamp( $offset ) ) );
                } else {
                        $offsets = array();
                }
@@ -231,7 +231,7 @@ class HistoryAction extends FormlessAction {
 
                return $dbr->select( 'revision',
                        Revision::selectFields(),
-                       array_merge( array( "rev_page=$page_id" ), $offsets ),
+                       array_merge( array( 'rev_page' => $page_id ), $offsets ),
                        __METHOD__,
                        array( 'ORDER BY' => "rev_timestamp $dirs",
                                'USE INDEX' => 'page_timestamp', 'LIMIT' => $limit )
@@ -626,9 +626,12 @@ class HistoryPager extends ReverseChronologicalPager {
                # Rollback and undo links
                if ( $prevRev && $this->getTitle()->quickUserCan( 'edit', $user ) ) {
                        if ( $latest && $this->getTitle()->quickUserCan( 'rollback', $user ) ) {
-                               $this->preventClickjacking();
-                               $tools[] = '<span class="mw-rollback-link">' .
-                                       Linker::buildRollbackLink( $rev, $this->getContext() ) . '</span>';
+                               // Get a rollback link without the brackets
+                               $rollbackLink = Linker::generateRollback( $rev, $this->getContext(), array( 'verify', 'noBrackets' ) );
+                               if ( $rollbackLink ) {
+                                       $this->preventClickjacking();
+                                       $tools[] = $rollbackLink;
+                               }
                        }
 
                        if ( !$rev->isDeleted( Revision::DELETED_TEXT )
index f1799a4..642515b 100644 (file)
@@ -165,7 +165,7 @@ class InfoAction extends FormlessAction {
         * @return array
         */
        protected function pageInfo() {
-               global $wgContLang, $wgRCMaxAge, $wgMemc, $wgUnwatchedPageThreshold;
+               global $wgContLang, $wgRCMaxAge, $wgMemc, $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
 
                $user = $this->getUser();
                $lang = $this->getLanguage();
@@ -310,6 +310,24 @@ class InfoAction extends FormlessAction {
                        );
                }
 
+               if ( $title->inNamespace( NS_CATEGORY ) ) {
+                       $category = Category::newFromTitle( $title );
+                       $pageInfo['category-info'] = array(
+                               array(
+                                       $this->msg( 'pageinfo-category-pages' ),
+                                       $lang->formatNum( $category->getPageCount() )
+                               ),
+                               array(
+                                       $this->msg( 'pageinfo-category-subcats' ),
+                                       $lang->formatNum( $category->getSubcatCount() )
+                               ),
+                               array(
+                                       $this->msg( 'pageinfo-category-files' ),
+                                       $lang->formatNum( $category->getFileCount() )
+                               )
+                       );
+               }
+
                // Page protection
                $pageInfo['header-restrictions'] = array();
 
@@ -442,11 +460,17 @@ class InfoAction extends FormlessAction {
 
                $localizedList = Html::rawElement( 'ul', array(), implode( '', $listItems ) );
                $hiddenCategories = $this->page->getHiddenCategories();
-               $transcludedTemplates = $title->getTemplateLinksFrom();
 
-               if ( count( $listItems ) > 0
-                       || count( $hiddenCategories ) > 0
-                       || count( $transcludedTemplates ) > 0 ) {
+               if (
+                       count( $listItems ) > 0 ||
+                       count( $hiddenCategories ) > 0 ||
+                       $pageCounts['transclusion']['from'] > 0 ||
+                       $pageCounts['transclusion']['to'] > 0
+               ) {
+                       $options = array( 'LIMIT' => $wgPageInfoTransclusionLimit );
+                       $transcludedTemplates = $title->getTemplateLinksFrom( $options );
+                       $transcludedTargets = $title->getTemplateLinksTo( $options );
+
                        // Page properties
                        $pageInfo['header-properties'] = array();
 
@@ -468,11 +492,44 @@ class InfoAction extends FormlessAction {
                        }
 
                        // Transcluded templates
-                       if ( count( $transcludedTemplates ) > 0 ) {
+                       if ( $pageCounts['transclusion']['from'] > 0 ) {
+                               if ( $pageCounts['transclusion']['from'] > count( $transcludedTemplates ) ) {
+                                       $more = $this->msg( 'morenotlisted' )->escaped();
+                               } else {
+                                       $more = null;
+                               }
+
                                $pageInfo['header-properties'][] = array(
                                        $this->msg( 'pageinfo-templates' )
-                                               ->numParams( count( $transcludedTemplates ) ),
-                                       Linker::formatTemplates( $transcludedTemplates )
+                                               ->numParams( $pageCounts['transclusion']['from'] ),
+                                       Linker::formatTemplates(
+                                               $transcludedTemplates,
+                                               false,
+                                               false,
+                                               $more )
+                               );
+                       }
+
+                       if ( $pageCounts['transclusion']['to'] > 0 ) {
+                               if ( $pageCounts['transclusion']['to'] > count( $transcludedTargets ) ) {
+                                       $more = Linker::link(
+                                               $whatLinksHere,
+                                               $this->msg( 'moredotdotdot' )->escaped(),
+                                               array(),
+                                               array( 'hidelinks' => 1, 'hideredirs' => 1 )
+                                       );
+                               } else {
+                                       $more = null;
+                               }
+
+                               $pageInfo['header-properties'][] = array(
+                                       $this->msg( 'pageinfo-transclusions' )
+                                               ->numParams( $pageCounts['transclusion']['to'] ),
+                                       Linker::formatTemplates(
+                                               $transcludedTargets,
+                                               false,
+                                               false,
+                                               $more )
                                );
                        }
                }
@@ -590,6 +647,24 @@ class InfoAction extends FormlessAction {
                                + $result['subpages']['nonredirects'];
                }
 
+               // Counts for the number of transclusion links (to/from)
+               $result['transclusion']['to'] = (int) $dbr->selectField(
+                       'templatelinks',
+                       'COUNT(tl_from)',
+                       array(
+                               'tl_namespace' => $title->getNamespace(),
+                               'tl_title' => $title->getDBkey()
+                       ),
+                       __METHOD__
+               );
+
+               $result['transclusion']['from'] = (int) $dbr->selectField(
+                       'templatelinks',
+                       'COUNT(*)',
+                       array( 'tl_from' => $title->getArticleID() ),
+                       __METHOD__
+               );
+
                wfProfileOut( __METHOD__ );
                return $result;
        }
index 1b176e7..dd685f4 100644 (file)
@@ -340,13 +340,15 @@ abstract class ApiBase extends ContextSource {
                        return '';
                }
                if ( !is_array( $input ) ) {
-                       $input = array(
-                               $input
-                       );
+                       $input = array( $input );
                }
 
                if ( count( $input ) > 0 ) {
-                       $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
+                       if ( $title ) {
+                               $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
+                       } else {
+                               $msg = '  ';
+                       }
                        $msg .= implode( $prefix, $input ) . "\n";
                        return $msg;
                }
@@ -1152,11 +1154,11 @@ abstract class ApiBase extends ContextSource {
         * @return string
         */
        function validateTimestamp( $value, $paramName ) {
-               $value = wfTimestamp( TS_UNIX, $value );
-               if ( $value === 0 ) {
+               $unixTimestamp = wfTimestamp( TS_UNIX, $value );
+               if ( $unixTimestamp === false ) {
                        $this->dieUsage( "Invalid value '$value' for timestamp parameter $paramName", "badtimestamp_{$paramName}" );
                }
-               return wfTimestamp( TS_MW, $value );
+               return wfTimestamp( TS_MW, $unixTimestamp );
        }
 
        /**
index 813e4d4..4779067 100644 (file)
@@ -55,6 +55,7 @@ class ApiBlock extends ApiBase {
                if ( !$user->isAllowed( 'block' ) ) {
                        $this->dieUsageMsg( 'cantblock' );
                }
+
                # bug 15810: blocked admins should have limited access here
                if ( $user->isBlocked() ) {
                        $status = SpecialBlock::checkUnblockSelf( $params['user'], $user );
@@ -62,6 +63,13 @@ class ApiBlock extends ApiBase {
                                $this->dieUsageMsg( array( $status ) );
                        }
                }
+
+               $target = User::newFromName( $params['user'] );
+               // Bug 38633 - if the target is a user (not an IP address), but it doesn't exist or is unusable, error.
+               if ( $target instanceof User && ( $target->isAnon() /* doesn't exist */ || !User::isUsableName( $target->getName() ) ) ) {
+                       $this->dieUsageMsg( array( 'nosuchuser', $params['user'] ) );
+               }
+
                if ( $params['hidename'] && !$user->isAllowed( 'hideuser' ) ) {
                        $this->dieUsageMsg( 'canthide' );
                }
diff --git a/includes/api/ApiCreateAccount.php b/includes/api/ApiCreateAccount.php
new file mode 100644 (file)
index 0000000..628f48e
--- /dev/null
@@ -0,0 +1,265 @@
+<?php
+/**
+ * Created on August 7, 2012
+ *
+ * Copyright © 2012 Tyler Romeo <tylerromeo@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Unit to authenticate account registration attempts to the current wiki.
+ *
+ * @ingroup API
+ */
+class ApiCreateAccount extends ApiBase {
+       public function execute() {
+               $params = $this->extractRequestParams();
+
+               $result = array();
+
+               // Init session if necessary
+               if ( session_id() == '' ) {
+                       wfSetupSession();
+               }
+
+               if( $params['mailpassword'] && !$params['email'] ) {
+                       $this->dieUsageMsg( 'noemail' );
+               }
+
+               $context = new DerivativeContext( $this->getContext() );
+               $context->setRequest( new DerivativeRequest(
+                       $this->getContext()->getRequest(),
+                       array(
+                               'type' => 'signup',
+                               'uselang' => $params['language'],
+                               'wpName' => $params['name'],
+                               'wpPassword' => $params['password'],
+                               'wpRetype' => $params['password'],
+                               'wpDomain' => $params['domain'],
+                               'wpEmail' => $params['email'],
+                               'wpRealName' => $params['realname'],
+                               'wpCreateaccountToken' => $params['token'],
+                               'wpCreateaccount' => $params['mailpassword'] ? null : '1',
+                               'wpCreateaccountMail' => $params['mailpassword'] ? '1' : null
+                       )
+               ) );
+
+               $loginForm = new LoginForm();
+               $loginForm->setContext( $context );
+               $loginForm->load();
+
+               $status = $loginForm->addNewaccountInternal();
+               $result = array();
+               if( $status->isGood() ) {
+                       // Success!
+                       $user = $status->getValue();
+
+                       // If we showed up language selection links, and one was in use, be
+                       // smart (and sensible) and save that language as the user's preference
+                       global $wgLoginLanguageSelector, $wgEmailAuthentication;
+                       if( $wgLoginLanguageSelector && $params['language'] ) {
+                               $user->setOption( 'language', $params['language'] );
+                       }
+
+                       if( $params['mailpassword'] ) {
+                               // If mailpassword was set, disable the password and send an email.
+                               $user->setPassword( null );
+                               $status->merge( $loginForm->mailPasswordInternal( $user, false, 'createaccount-title', 'createaccount-text' ) );
+                       } elseif( $wgEmailAuthentication && Sanitizer::validateEmail( $user->getEmail() ) ) {
+                               // Send out an email authentication message if needed
+                               $status->merge( $user->sendConfirmationMail() );
+                       }
+
+                       // Save settings (including confirmation token)
+                       $user->saveSettings();
+
+                       wfRunHooks( 'AddNewAccount', array( $user, false ) );
+                       $user->addNewUserLogEntry( $this->getUser()->isAnon(), $params['reason'] );
+
+                       // Add username, id, and token to result.
+                       $result['username'] = $user->getName();
+                       $result['userid'] = $user->getId();
+                       $result['token'] = $user->getToken();
+               }
+
+               $apiResult = $this->getResult();
+
+               if( $status->hasMessage( 'sessionfailure' ) ) {
+                       // Token was incorrect, so add it to result, but don't throw an exception.
+                       $result['token'] = LoginForm::getCreateaccountToken();
+                       $result['result'] = 'needtoken';
+               } elseif( !$status->isOK() ) {
+                       // There was an error. Die now.
+                       // Cannot use dieUsageMsg() directly because extensions
+                       // might return custom error messages.
+                       $errors = $status->getErrorsArray();
+                       if( $errors[0] instanceof Message ) {
+                               $code = 'aborted';
+                               $desc = $errors[0];
+                       } else {
+                               $code = array_shift( $errors[0] );
+                               $desc = wfMessage( $code, $errors[0] );
+                       }
+                       $this->dieUsage( $desc, $code );
+               } elseif( !$status->isGood() ) {
+                       // Status is not good, but OK. This means warnings.
+                       $result['result'] = 'warning';
+
+                       // Add any warnings to the result
+                       $warnings = $status->getErrorsByType( 'warning' );
+                       if( $warnings ) {
+                               foreach( $warnings as &$warning ) {
+                                       $apiResult->setIndexedTagName( $warning['params'], 'param' );
+                               }
+                               $apiResult->setIndexedTagName( $warnings, 'warning' );
+                               $result['warnings'] = $warnings;
+                       }
+               } else {
+                       // Everything was fine.
+                       $result['result'] = 'success';
+               }
+
+               $apiResult->addValue( null, 'createaccount', $result );
+       }
+
+       public function getDescription() {
+               return 'Create a new user account.';
+       }
+
+       public function mustBePosted() {
+               return true;
+       }
+
+       public function isReadMode() {
+               return false;
+       }
+
+       public function isWriteMode() {
+               return true;
+       }
+
+       public function getAllowedParams() {
+               global $wgEmailConfirmToEdit;
+               return array(
+                       'name' => array(
+                               ApiBase::PARAM_TYPE => 'user',
+                               ApiBase::PARAM_REQUIRED => true
+                       ),
+                       'password' => null,
+                       'domain' => null,
+                       'token' => null,
+                       'email' => array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_REQUIRED => $wgEmailConfirmToEdit
+                       ),
+                       'realname' => null,
+                       'mailpassword' => array(
+                               ApiBase::PARAM_TYPE => 'boolean',
+                               ApiBase::PARAM_DFLT => false
+                       ),
+                       'reason' => null,
+                       'language' => null
+               );
+       }
+
+       public function getParamDescription() {
+               $p = $this->getModulePrefix();
+               return array(
+                       'name' => 'User Name',
+                       'password' => "Password (ignored if {$p}mailpassword is set)",
+                       'domain' => 'Domain (optional)',
+                       'token' => 'Account creation token obtained in first request',
+                       'email' => 'Email address of user',
+                       'realname' => 'Real Name of user',
+                       'mailpassword' => 'Whether to generate and mail a random password to the user',
+                       'reason' => "Optional reason for creating the account (used when {$p}mailpassword is set)",
+                       'language' => 'Language code to set for the user.'
+               );
+       }
+
+       public function getResultProperties() {
+               return array(
+                       'createaccount' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'success',
+                                               'warning',
+                                               'needtoken'
+                                       )
+                               ),
+                               'username' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'int',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'token' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                       )
+               );
+       }
+
+       public function getPossibleErrors() {
+               $localErrors = array(
+                       'wrongpassword',
+                       'sessionfailure',
+                       'sorbs_create_account_reason',
+                       'noname',
+                       'userexists',
+                       'password-name-match',
+                       'password-login-forbidden',
+                       'noemailtitle',
+                       'invalidemailaddress',
+                       'externaldberror'
+               );
+
+               $errors = parent::getPossibleErrors();
+               // All local errors are from LoginForm, which means they're actually message keys.
+               foreach( $localErrors as $error ) {
+                       $errors[] = array( 'code' => $error, 'info' => wfMessage( $error )->parse() );
+               }
+
+               // 'passwordtooshort' has parameters. :(
+               global $wgMinimalPasswordLength;
+               $errors[] = array(
+                       'code' => 'passwordtooshort',
+                       'info' => wfMessage( 'passwordtooshort', $wgMinimalPasswordLength )->parse()
+               );
+               return $errors;
+       }
+
+       public function getExamples() {
+               return array(
+                       'api.php?action=createaccount&name=testuser&password=test123',
+                       'api.php?action=createaccount&name=testmailuser&mailpassword=true&reason=MyReason',
+               );
+       }
+
+       public function getHelpUrls() {
+               return 'https://www.mediawiki.org/wiki/API:Account creation';
+       }
+
+       public function getVersion() {
+               return __CLASS__ . ': $Id$';
+       }
+}
index cae4a21..b1066cc 100644 (file)
@@ -68,12 +68,12 @@ class ApiEditPage extends ApiBase {
                                $redirValues = array();
                                foreach ( $titles as $id => $newTitle ) {
 
-                                       if ( !isset( $titles[ $id - 1 ] ) ) {
-                                               $titles[ $id - 1 ] = $oldTitle;
+                                       if ( !isset( $titles[$id - 1] ) ) {
+                                               $titles[$id - 1] = $oldTitle;
                                        }
 
                                        $redirValues[] = array(
-                                               'from' => $titles[ $id - 1 ]->getPrefixedText(),
+                                               'from' => $titles[$id - 1]->getPrefixedText(),
                                                'to' => $newTitle->getPrefixedText()
                                        );
 
index fb6a06f..15a377c 100644 (file)
@@ -51,7 +51,7 @@ class ApiFeedContributions extends ApiBase {
                        $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
                }
 
-               if( !isset( $wgFeedClasses[ $params['feedformat'] ] ) ) {
+               if( !isset( $wgFeedClasses[$params['feedformat']] ) ) {
                        $this->dieUsage( 'Invalid subscription feed type', 'feed-invalid' );
                }
 
index 6ccb02f..373abdb 100644 (file)
@@ -62,7 +62,7 @@ class ApiFeedWatchlist extends ApiBase {
                                $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
                        }
 
-                       if( !isset( $wgFeedClasses[ $params['feedformat'] ] ) ) {
+                       if( !isset( $wgFeedClasses[$params['feedformat']] ) ) {
                                $this->dieUsage( 'Invalid subscription feed type', 'feed-invalid' );
                        }
                        if ( !is_null( $params['wlexcludeuser'] ) ) {
index 1e8c84e..57ccc7a 100644 (file)
@@ -51,6 +51,7 @@ class ApiMain extends ApiBase {
        private static $Modules = array(
                'login' => 'ApiLogin',
                'logout' => 'ApiLogout',
+               'createaccount' => 'ApiCreateAccount',
                'query' => 'ApiQuery',
                'expandtemplates' => 'ApiExpandTemplates',
                'parse' => 'ApiParse',
@@ -875,7 +876,7 @@ class ApiMain extends ApiBase {
                if ( !$table ) {
                        $chars = ';@$!*(),/:';
                        for ( $i = 0; $i < strlen( $chars ); $i++ ) {
-                               $table[ rawurlencode( $chars[$i] ) ] = $chars[$i];
+                               $table[rawurlencode( $chars[$i] )] = $chars[$i];
                        }
                }
                return strtr( rawurlencode( $s ), $table );
@@ -1139,6 +1140,7 @@ class ApiMain extends ApiBase {
                foreach ( array_keys( $this->mModules ) as $moduleName ) {
                        $module = new $this->mModules[$moduleName] ( $this, $moduleName );
                        $msg .= self::makeHelpMsgHeader( $module, 'action' );
+
                        $msg2 = $module->makeHelpMsg();
                        if ( $msg2 !== false ) {
                                $msg .= $msg2;
@@ -1149,9 +1151,8 @@ class ApiMain extends ApiBase {
                $msg .= "\n$astriks Permissions $astriks\n\n";
                foreach ( self::$mRights as $right => $rightMsg ) {
                        $groups = User::getGroupsWithPermission( $right );
-                       $msg .= "* " . $right . " *\n  " . wfMsgReplaceArgs( $rightMsg[ 'msg' ], $rightMsg[ 'params' ] ) .
+                       $msg .= "* " . $right . " *\n  " . wfMsgReplaceArgs( $rightMsg['msg'], $rightMsg['params'] ) .
                                                "\nGranted to:\n  " . str_replace( '*', 'all', implode( ', ', $groups ) ) . "\n\n";
-
                }
 
                $msg .= "\n$astriks Formats  $astriks\n\n";
index 6c53e99..9b70b56 100644 (file)
@@ -129,7 +129,7 @@ class ApiMove extends ApiBase {
                        }
                }
 
-               $watch = "preferences";
+               $watch = 'preferences';
                if ( isset( $params['watchlist'] ) ) {
                        $watch = $params['watchlist'];
                } elseif ( $params['watch'] ) {
index 01a3760..20b4185 100644 (file)
@@ -54,7 +54,7 @@ class ApiOptions extends ApiBase {
                }
 
                if ( $params['reset'] ) {
-                       $user->resetOptions();
+                       $user->resetOptions( 'all' );
                        $changed = true;
                }
 
@@ -74,35 +74,34 @@ class ApiOptions extends ApiBase {
                }
 
                $prefs = Preferences::getPreferences( $user, $this->getContext() );
-
-               // Multiselect options are stored in the database with one key per
-               // option, each having a boolean value. Extract those keys.
-               $multiselectOptions = array();
-               foreach ( $prefs as $name => $info ) {
-                       if ( ( isset( $info['type'] ) && $info['type'] == 'multiselect' ) ||
-                                       ( isset( $info['class'] ) && $info['class'] == 'HTMLMultiSelectField' ) ) {
-                               $options = HTMLFormField::flattenOptions( $info['options'] );
-                               $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $name;
-
-                               foreach ( $options as $value ) {
-                                       $multiselectOptions["$prefix$value"] = true;
-                               }
-
-                               unset( $prefs[$name] );
-                       }
-               }
+               $prefsKinds = $user->getOptionKinds( $this->getContext(), $changes );
 
                foreach ( $changes as $key => $value ) {
-                       if ( isset( $prefs[$key] ) ) {
-                               $field = HTMLForm::loadInputFromParameters( $key, $prefs[$key] );
-                               $validation = $field->validate( $value, $user->getOptions() );
-                       } elseif( isset( $multiselectOptions[$key] ) ) {
-                               // A key for a multiselect option.
-                               $validation = true;
-                               $value = (bool)$value;
-                       } else {
-                               $this->setWarning( "Not a valid preference: $key" );
-                               continue;
+                       switch ( $prefsKinds[$key] ) {
+                               case 'registered':
+                                       // Regular option.
+                                       $field = HTMLForm::loadInputFromParameters( $key, $prefs[$key] );
+                                       $validation = $field->validate( $value, $user->getOptions() );
+                                       break;
+                               case 'registered-multiselect':
+                                       // A key for a multiselect option.
+                                       $validation = true;
+                                       $value = (bool)$value;
+                                       break;
+                               case 'userjs':
+                                       // Allow non-default preferences prefixed with 'userjs-', to be set by user scripts
+                                       if ( strlen( $key ) > 255 ) {
+                                               $validation = "key too long (no more than 255 bytes allowed)";
+                                       } elseif ( preg_match( "/[^a-zA-Z0-9_-]/", $key ) !== 0 ) {
+                                               $validation = "invalid key (only a-z, A-Z, 0-9, _, - allowed)";
+                                       } else {
+                                               $validation = true;
+                                       }
+                                       break;
+                               case 'unused':
+                               default:
+                                       $validation = "not a valid preference";
+                                       break;
                        }
                        if ( $validation === true ) {
                                $user->setOption( $key, $value );
@@ -170,7 +169,11 @@ class ApiOptions extends ApiBase {
        }
 
        public function getDescription() {
-               return 'Change preferences of the current user';
+               return array(
+                       'Change preferences of the current user',
+                       'Only options which are registered in core or in one of installed extensions,',
+                       'or as options with keys prefixed with \'userjs-\' (intended to be used by user scripts), can be set.'
+               );
        }
 
        public function getPossibleErrors() {
index 0f5be6b..5fcb132 100644 (file)
@@ -705,9 +705,10 @@ class ApiPageSet extends ApiQueryBase {
                                if ( $this->mConvertTitles &&
                                                count( $wgContLang->getVariants() ) > 1  &&
                                                !$titleObj->exists() ) {
-                                       // Language::findVariantLink will modify titleObj into
+                                       // Language::findVariantLink will modify titleText and titleObj into
                                        // the canonical variant if possible
-                                       $wgContLang->findVariantLink( $title, $titleObj );
+                                       $titleText = is_string( $title ) ? $title : $titleObj->getPrefixedText();
+                                       $wgContLang->findVariantLink( $titleText, $titleObj );
                                        $titleWasConverted = $unconvertedTitle !== $titleObj->getPrefixedText();
                                }
 
@@ -728,7 +729,11 @@ class ApiPageSet extends ApiQueryBase {
                        // namespace is localized or the capitalization is
                        // different
                        if ( $titleWasConverted ) {
-                               $this->mConvertedTitles[$title] = $titleObj->getPrefixedText();
+                               $this->mConvertedTitles[$unconvertedTitle] = $titleObj->getPrefixedText();
+                               // In this case the page can't be Special.
+                               if ( is_string( $title ) && $title !== $unconvertedTitle ) {
+                                       $this->mNormalizedTitles[$title] = $unconvertedTitle;
+                               }
                        } elseif ( is_string( $title ) && $title !== $titleObj->getPrefixedText() ) {
                                $this->mNormalizedTitles[$title] = $titleObj->getPrefixedText();
                        }
index 08764a5..94b4a8b 100644 (file)
@@ -450,14 +450,14 @@ class ApiParse extends ApiBase {
                        $text = Language::fetchLanguageName( $nt->getInterwiki() );
 
                        $langs[] = Html::element( 'a',
-                               array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => "external" ),
+                               array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => 'external' ),
                                $text == '' ? $l : $text );
                }
 
                $s .= implode( wfMessage( 'pipe-separator' )->escaped(), $langs );
 
                if ( $wgContLang->isRTL() ) {
-                       $s = Html::rawElement( 'span', array( 'dir' => "LTR" ), $s );
+                       $s = Html::rawElement( 'span', array( 'dir' => 'LTR' ), $s );
                }
 
                return $s;
index c2beaec..6ada4aa 100644 (file)
@@ -60,10 +60,7 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 1 ) {
-                               $this->dieUsage( "Invalid continue param. You should pass the " .
-                                       "original value returned by the previous query", "_badcontinue" );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 1 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $cont_from = $db->addQuotes( $cont[0] );
                        $this->addWhere( "cat_title $op= $cont_from" );
@@ -224,12 +221,6 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                return 'Enumerate all categories';
        }
 
-       public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
-               ) );
-       }
-
        public function getExamples() {
                return array(
                        'api.php?action=query&list=allcategories&acprop=size',
index 2319263..c78f0f3 100644 (file)
@@ -113,10 +113,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                        // Pagination
                        if ( !is_null( $params['continue'] ) ) {
                                $cont = explode( '|', $params['continue'] );
-                               if ( count( $cont ) != 1 ) {
-                                       $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                               'original value returned by the previous query', '_badcontinue' );
-                               }
+                               $this->dieContinueUsageIf( count( $cont ) != 1 );
                                $op = ( $ascendingOrder ? '>' : '<' );
                                $continueFrom = $db->addQuotes( $cont[0] );
                                $this->addWhere( "img_name $op= $continueFrom" );
@@ -385,7 +382,6 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                        array( 'code' => 'mimesearchdisabled', 'info' => 'MIME search disabled in Miser Mode' ),
                        array( 'code' => 'invalidsha1hash', 'info' => 'The SHA1 hash provided is not valid' ),
                        array( 'code' => 'invalidsha1base36hash', 'info' => 'The SHA1Base36 hash provided is not valid' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index b37dbbf..620a394 100644 (file)
@@ -104,15 +104,11 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        $continueArr = explode( '|', $params['continue'] );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        if ( $params['unique'] ) {
-                               if ( count( $continueArr ) != 1 ) {
-                                       $this->dieUsage( 'Invalid continue parameter', 'badcontinue' );
-                               }
+                               $this->dieContinueUsageIf( count( $continueArr ) != 1 );
                                $continueTitle = $db->addQuotes( $continueArr[0] );
                                $this->addWhere( "{$pfx}title $op= $continueTitle" );
                        } else {
-                               if ( count( $continueArr ) != 2 ) {
-                                       $this->dieUsage( 'Invalid continue parameter', 'badcontinue' );
-                               }
+                               $this->dieContinueUsageIf( count( $continueArr ) != 2 );
                                $continueTitle = $db->addQuotes( $continueArr[0] );
                                $continueFrom = intval( $continueArr[1] );
                                $this->addWhere(
@@ -159,7 +155,7 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                if ( $params['unique'] ) {
                                        $this->setContinueEnumParameter( 'continue', $row->pl_title );
                                } else {
-                                       $this->setContinueEnumParameter( 'continue', $row->pl_title . "|" . $row->pl_from );
+                                       $this->setContinueEnumParameter( 'continue', $row->pl_title . '|' . $row->pl_from );
                                }
                                break;
                        }
@@ -178,7 +174,7 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                        if ( $params['unique'] ) {
                                                $this->setContinueEnumParameter( 'continue', $row->pl_title );
                                        } else {
-                                               $this->setContinueEnumParameter( 'continue', $row->pl_title . "|" . $row->pl_from );
+                                               $this->setContinueEnumParameter( 'continue', $row->pl_title . '|' . $row->pl_from );
                                        }
                                        break;
                                }
@@ -279,7 +275,6 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                $link = $this->descriptionLink;
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'code' => 'params', 'info' => "{$m} cannot return corresponding page ids in unique {$link}s mode" ),
-                       array( 'code' => 'badcontinue', 'info' => 'Invalid continue parameter' ),
                ) );
        }
 
index f5e1146..9fd2db8 100644 (file)
@@ -143,7 +143,7 @@ class ApiQueryAllMessages extends ApiQueryBase {
                                }
 
                                if ( $customiseFilterEnabled ) {
-                                       $messageIsCustomised = isset( $customisedMessages['pages'][ $langObj->ucfirst( $message ) ] );
+                                       $messageIsCustomised = isset( $customisedMessages['pages'][$langObj->ucfirst( $message )] );
                                        if ( $customised === $messageIsCustomised ) {
                                                if ( $customised ) {
                                                        $a['customised'] = '';
index a5abae7..b180572 100644 (file)
@@ -69,10 +69,7 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 1 ) {
-                               $this->dieUsage( "Invalid continue param. You should pass the " .
-                                       "original value returned by the previous query", "_badcontinue" );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 1 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $cont_from = $db->addQuotes( $cont[0] );
                        $this->addWhere( "page_title $op= $cont_from" );
@@ -336,7 +333,6 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'code' => 'params', 'info' => 'Use "gapfilterredir=nonredirects" option instead of "redirects" when using allpages as a generator' ),
                        array( 'code' => 'params', 'info' => 'prlevel may not be used without prtype' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index 06db87b..bf918dd 100644 (file)
@@ -406,20 +406,14 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                // null stuff out now so we know what's set and what isn't
                $this->rootTitle = $this->contID = $this->redirID = null;
                $rootNs = intval( $continueList[0] );
-               if ( $rootNs === 0 && $continueList[0] !== '0' ) {
-                       // Illegal continue parameter
-                       $this->dieUsage( 'Invalid continue param. You should pass the original value returned by the previous query', '_badcontinue' );
-               }
+               $this->dieContinueUsageIf( $rootNs === 0 && $continueList[0] !== '0' );
+
                $this->rootTitle = Title::makeTitleSafe( $rootNs, $continueList[1] );
+               $this->dieContinueUsageIf( !$this->rootTitle );
 
-               if ( !$this->rootTitle ) {
-                       $this->dieUsage( 'Invalid continue param. You should pass the original value returned by the previous query', '_badcontinue' );
-               }
                $contID = intval( $continueList[2] );
+               $this->dieContinueUsageIf( $contID === 0 && $continueList[2] !== '0' );
 
-               if ( $contID === 0 && $continueList[2] !== '0' ) {
-                       $this->dieUsage( 'Invalid continue param. You should pass the original value returned by the previous query', '_badcontinue' );
-               }
                $this->contID = $contID;
                $id2 = isset( $continueList[3] ) ? $continueList[3] : null;
                $redirID = intval( $id2 );
@@ -455,12 +449,12 @@ 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
+                       'dir' => array(
+                               ApiBase::PARAM_DFLT => 'ascending',
+                               ApiBase::PARAM_TYPE => array(
+                                       'ascending',
+                                       'descending'
+                               )
                        ),
                        'filterredir' => array(
                                ApiBase::PARAM_DFLT => 'all',
@@ -535,7 +529,6 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                        $this->getTitleOrPageIdErrorMessage(),
                        array(
                                array( 'code' => 'bad_image_title', 'info' => "The title for {$this->getModuleName()} query must be an image" ),
-                               array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                        )
                );
        }
index 5f4d9f9..e36109a 100644 (file)
@@ -374,6 +374,19 @@ abstract class ApiQueryBase extends ApiBase {
                $result->enableSizeCheck();
        }
 
+       /**
+        * Die with the $prefix.'badcontinue' error. This call is common enough to make it into the base method.
+        * @param $condition boolean will only die if this value is true
+        * @since 1.21
+        */
+       protected function dieContinueUsageIf( $condition ) {
+               if ( $condition ) {
+                       $this->dieUsage(
+                               'Invalid continue param. You should pass the original value returned by the previous query',
+                               'badcontinue' );
+               }
+       }
+
        /**
         * Get the Query database connection (read-only)
         * @return DatabaseBase
@@ -549,10 +562,21 @@ abstract class ApiQueryBase extends ApiBase {
         * @return array
         */
        public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
+               $errors = parent::getPossibleErrors();
+               $errors = array_merge( $errors, array(
                        array( 'invalidtitle', 'title' ),
                        array( 'invalidtitle', 'key' ),
                ) );
+               $params = $this->getFinalParams();
+               if ( array_key_exists( 'continue', $params ) ) {
+                       $errors = array_merge( $errors, array(
+                               array(
+                                       'code' => 'badcontinue',
+                                       'info' => 'Invalid continue param. You should pass the original value returned by the previous query'
+                               ),
+                       ) );
+               }
+               return $errors;
        }
 
        /**
index 309c2ce..f05bb26 100644 (file)
@@ -85,10 +85,7 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( "Invalid continue param. You should pass the " .
-                                       "original value returned by the previous query", "_badcontinue" );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $clfrom = intval( $cont[0] );
                        $clto = $this->getDB()->addQuotes( $cont[1] );
index 55ce023..ca24f2b 100644 (file)
@@ -106,11 +106,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                } else {
                        if ( $params['continue'] ) {
                                $cont = explode( '|', $params['continue'], 3 );
-                               if ( count( $cont ) != 3 ) {
-                                       $this->dieUsage( 'Invalid continue param. You should pass the original value returned '.
-                                               'by the previous query', '_badcontinue'
-                                       );
-                               }
+                               $this->dieContinueUsageIf( count( $cont ) != 3 );
 
                                // Remove the types to skip from $queryTypes
                                $contTypeIndex = array_search( $cont[0], $queryTypes );
@@ -118,7 +114,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
 
                                // Add a WHERE clause for sortkey and from
                                // pack( "H*", $foo ) is used to convert hex back to binary
-                               $escSortkey = $this->getDB()->addQuotes( pack( "H*", $cont[1] ) );
+                               $escSortkey = $this->getDB()->addQuotes( pack( 'H*', $cont[1] ) );
                                $from = intval( $cont[2] );
                                $op = $dir == 'newer' ? '>' : '<';
                                // $contWhere is used further down
@@ -403,7 +399,6 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                        $this->getTitleOrPageIdErrorMessage(),
                        array(
                                array( 'code' => 'invalidcategory', 'info' => 'The category name you entered is not valid' ),
-                               array( 'code' => 'badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                        )
                );
        }
index 8903e46..9eab651 100644 (file)
@@ -160,10 +160,9 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
 
                if ( !is_null( $params['continue'] ) && ( $mode == 'all' || $mode == 'revs' ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 3 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the original value returned by the previous query', 'badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
                        $ns = intval( $cont[0] );
+                       $this->dieContinueUsageIf( strval( $ns ) !== $cont[0] );
                        $title = $db->addQuotes( $cont[1] );
                        $ts = $db->addQuotes( $db->timestamp( $cont[2] ) );
                        $op = ( $dir == 'newer' ? '>' : '<' );
@@ -397,7 +396,6 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revision information' ),
                        array( 'code' => 'badparams', 'info' => 'user and excludeuser cannot be used together' ),
                        array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revision content' ),
-                       array( 'code' => 'badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                        array( 'code' => 'badparams', 'info' => "The 'from' parameter cannot be used in modes 1 or 2" ),
                        array( 'code' => 'badparams', 'info' => "The 'to' parameter cannot be used in modes 1 or 2" ),
                        array( 'code' => 'badparams', 'info' => "The 'prefix' parameter cannot be used in modes 1 or 2" ),
index f088062..d4a486a 100644 (file)
@@ -66,10 +66,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                $skipUntilThisDup = false;
                if ( isset( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $fromImage = $cont[0];
                        $skipUntilThisDup = $cont[1];
                        // Filter out any images before $fromImage
@@ -204,12 +201,6 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                return 'List all files that are duplicates of the given file(s) based on hash values';
        }
 
-       public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
-               ) );
-       }
-
        public function getExamples() {
                return array(
                        'api.php?action=query&titles=File:Albert_Einstein_Head.jpg&prop=duplicatefiles',
index 7ec47fa..fcffc4d 100644 (file)
@@ -77,10 +77,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 1 ) {
-                               $this->dieUsage( "Invalid continue param. You should pass the " .
-                                       "original value returned by the previous query", "_badcontinue" );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 1 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $cont_from = $db->addQuotes( $cont[0] );
                        $this->addWhere( "fa_name $op= $cont_from" );
@@ -366,7 +363,6 @@ class ApiQueryFilearchive extends ApiQueryBase {
                        array( 'code' => 'hashsearchdisabled', 'info' => 'Search by hash disabled in Miser Mode' ),
                        array( 'code' => 'invalidsha1hash', 'info' => 'The SHA1 hash provided is not valid' ),
                        array( 'code' => 'invalidsha1base36hash', 'info' => 'The SHA1Base36 hash provided is not valid' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index c5012f0..283115d 100644 (file)
@@ -56,10 +56,7 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 3 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
 
                        $db = $this->getDB();
                        $op = $params['dir'] == 'descending' ? '<' : '>';
@@ -233,7 +230,6 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
        public function getPossibleErrors() {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'missingparam', 'prefix' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index 30c7f5a..8e8a075 100644 (file)
@@ -58,10 +58,7 @@ class ApiQueryIWLinks extends ApiQueryBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 3 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $db = $this->getDB();
                        $iwlfrom = intval( $cont[0] );
@@ -187,7 +184,6 @@ class ApiQueryIWLinks extends ApiQueryBase {
        public function getPossibleErrors() {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'missingparam', 'prefix' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index 2be3393..88c41a8 100644 (file)
@@ -56,10 +56,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        if ( !is_null( $params['continue'] ) ) {
                                $skip = true;
                                $cont = explode( '|', $params['continue'] );
-                               if ( count( $cont ) != 2 ) {
-                                       $this->dieUsage( 'Invalid continue param. You should pass the original ' .
-                                                       'value returned by the previous query', '_badcontinue' );
-                               }
+                               $this->dieContinueUsageIf( count( $cont ) != 2 );
                                $fromTitle = strval( $cont[0] );
                                $fromTimestamp = $cont[1];
                                // Filter out any titles before $fromTitle
@@ -87,7 +84,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                }
 
                                $start = $skip ? $fromTimestamp : $params['start'];
-                               $pageId = $pageIds[NS_FILE][ $img->getTitle()->getDBkey() ];
+                               $pageId = $pageIds[NS_FILE][$img->getTitle()->getDBkey()];
 
                                $fit = $result->addValue(
                                        array( 'query', 'pages', intval( $pageId ) ),
index 6052a75..16d54aa 100644 (file)
@@ -62,10 +62,7 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'il_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $ilfrom = intval( $cont[0] );
                        $ilto = $this->getDB()->addQuotes( $cont[1] );
@@ -185,12 +182,6 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                return 'Returns all images contained on the given page(s)';
        }
 
-       public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
-               ) );
-       }
-
        public function getExamples() {
                return array(
                        'api.php?action=query&prop=images&titles=Main%20Page' => 'Get a list of images used in the [[Main Page]]',
index e5cea96..efbd731 100644 (file)
@@ -118,11 +118,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'edit' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'edit' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['edit'] ) ) {
+                       ApiQueryInfo::$cachedTokens['edit'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'edit' ];
+               return ApiQueryInfo::$cachedTokens['edit'];
        }
 
        public static function getDeleteToken( $pageid, $title ) {
@@ -132,11 +132,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'delete' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'delete' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['delete'] ) ) {
+                       ApiQueryInfo::$cachedTokens['delete'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'delete' ];
+               return ApiQueryInfo::$cachedTokens['delete'];
        }
 
        public static function getProtectToken( $pageid, $title ) {
@@ -146,11 +146,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'protect' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'protect' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['protect'] ) ) {
+                       ApiQueryInfo::$cachedTokens['protect'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'protect' ];
+               return ApiQueryInfo::$cachedTokens['protect'];
        }
 
        public static function getMoveToken( $pageid, $title ) {
@@ -160,11 +160,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'move' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'move' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['move'] ) ) {
+                       ApiQueryInfo::$cachedTokens['move'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'move' ];
+               return ApiQueryInfo::$cachedTokens['move'];
        }
 
        public static function getBlockToken( $pageid, $title ) {
@@ -174,11 +174,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'block' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'block' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['block'] ) ) {
+                       ApiQueryInfo::$cachedTokens['block'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'block' ];
+               return ApiQueryInfo::$cachedTokens['block'];
        }
 
        public static function getUnblockToken( $pageid, $title ) {
@@ -193,11 +193,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'email' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'email' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['email'] ) ) {
+                       ApiQueryInfo::$cachedTokens['email'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'email' ];
+               return ApiQueryInfo::$cachedTokens['email'];
        }
 
        public static function getImportToken( $pageid, $title ) {
@@ -207,11 +207,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'import' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'import' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['import'] ) ) {
+                       ApiQueryInfo::$cachedTokens['import'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'import' ];
+               return ApiQueryInfo::$cachedTokens['import'];
        }
 
        public static function getWatchToken( $pageid, $title ) {
@@ -221,11 +221,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'watch' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'watch' ] = $wgUser->getEditToken( 'watch' );
+               if ( !isset( ApiQueryInfo::$cachedTokens['watch'] ) ) {
+                       ApiQueryInfo::$cachedTokens['watch'] = $wgUser->getEditToken( 'watch' );
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'watch' ];
+               return ApiQueryInfo::$cachedTokens['watch'];
        }
 
        public static function getOptionsToken( $pageid, $title ) {
@@ -235,11 +235,11 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                // The token is always the same, let's exploit that
-               if ( !isset( ApiQueryInfo::$cachedTokens[ 'options' ] ) ) {
-                       ApiQueryInfo::$cachedTokens[ 'options' ] = $wgUser->getEditToken();
+               if ( !isset( ApiQueryInfo::$cachedTokens['options'] ) ) {
+                       ApiQueryInfo::$cachedTokens['options'] = $wgUser->getEditToken();
                }
 
-               return ApiQueryInfo::$cachedTokens[ 'options' ];
+               return ApiQueryInfo::$cachedTokens['options'];
        }
 
        public function execute() {
@@ -268,10 +268,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        // Throw away any titles we're gonna skip so they don't
                        // clutter queries
                        $cont = explode( '|', $this->params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the original ' .
-                                               'value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $conttitle = Title::makeTitleSafe( $cont[0], $cont[1] );
                        foreach ( $this->everything as $pageid => $title ) {
                                if ( Title::compare( $title, $conttitle ) >= 0 ) {
@@ -349,7 +346,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        $pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
                        $pageInfo['lastrevid'] = intval( $this->pageLatest[$pageid] );
                        $pageInfo['counter'] = $wgDisableCounters
-                               ? ""
+                               ? ''
                                : intval( $this->pageCounter[$pageid] );
                        $pageInfo['length'] = intval( $this->pageLength[$pageid] );
 
@@ -809,12 +806,6 @@ class ApiQueryInfo extends ApiQueryBase {
                return 'Get basic page information such as namespace, title, last touched date, ...';
        }
 
-       public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
-               ) );
-       }
-
        public function getExamples() {
                return array(
                        'api.php?action=query&prop=info&titles=Main%20Page',
index 3920407..d6346d3 100644 (file)
@@ -56,10 +56,7 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 3 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
 
                        $db = $this->getDB();
                        $op = $params['dir'] == 'descending' ? '<' : '>';
@@ -233,7 +230,6 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
        public function getPossibleErrors() {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'missingparam', 'lang' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index 3109a09..9c54cfa 100644 (file)
@@ -56,10 +56,7 @@ class ApiQueryLangLinks extends ApiQueryBase {
                $this->addWhereFld( 'll_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $llfrom = intval( $cont[0] );
                        $lllang = $this->getDB()->addQuotes( $cont[1] );
@@ -179,7 +176,6 @@ class ApiQueryLangLinks extends ApiQueryBase {
        public function getPossibleErrors() {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'missingparam', 'lang' ),
-                       array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ),
                ) );
        }
 
index 9e4b7eb..54ee57c 100644 (file)
@@ -112,10 +112,7 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
 
                if ( !is_null( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 3 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the ' .
-                                       'original value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
                        $op = $params['dir'] == 'descending' ? '<' : '>';
                        $plfrom = intval( $cont[0] );
                        $plns = intval( $cont[1] );
index 9ef2c22..b2eebfb 100644 (file)
@@ -58,7 +58,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
                $this->fld_details = isset( $prop['details'] );
                $this->fld_tags = isset( $prop['tags'] );
 
-               $hideLogs = LogEventsList::getExcludeClause( $db, 'user' );
+               $hideLogs = LogEventsList::getExcludeClause( $db, 'user', $this->getUser() );
                if ( $hideLogs !== false ) {
                        $this->addWhere( $hideLogs );
                }
@@ -70,7 +70,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        'user' => array( 'JOIN',
                                'user_id=log_user' ),
                        'page' => array( 'LEFT JOIN',
-                               array(  'log_namespace=page_namespace',
+                               array( 'log_namespace=page_namespace',
                                        'log_title=page_title' ) ) ) );
                $index = array( 'logging' => 'times' ); // default, may change
 
@@ -209,15 +209,15 @@ class ApiQueryLogEvents extends ApiQueryBase {
                                        $noredirKey = '5::noredir';
                                }
 
-                               if ( isset( $params[ $targetKey ] ) ) {
-                                       $title = Title::newFromText( $params[ $targetKey ] );
+                               if ( isset( $params[$targetKey] ) ) {
+                                       $title = Title::newFromText( $params[$targetKey] );
                                        if ( $title ) {
                                                $vals2 = array();
                                                ApiQueryBase::addTitleInfo( $vals2, $title, 'new_' );
                                                $vals[$type] = $vals2;
                                        }
                                }
-                               if ( isset( $params[ $noredirKey ] ) && $params[ $noredirKey ] ) {
+                               if ( isset( $params[$noredirKey] ) && $params[$noredirKey] ) {
                                        $vals[$type]['suppressedredirect'] = '';
                                }
                                $params = null;
@@ -377,7 +377,9 @@ class ApiQueryLogEvents extends ApiQueryBase {
                if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
                        // formatComment() calls wfMessage() among other things
                        return 'anon-public-user-private';
-               } elseif ( LogEventsList::getExcludeClause( $this->getDB(), 'user' ) === LogEventsList::getExcludeClause( $this->getDB(), 'public' ) ) { // Output can only contain public data.
+               } elseif ( LogEventsList::getExcludeClause( $this->getDB(), 'user', $this->getUser() )
+                       === LogEventsList::getExcludeClause( $this->getDB(), 'public' )
+               ) { // Output can only contain public data.
                        return 'public';
                } else {
                        return 'anon-public-user-private';
index 84c2332..dae03a9 100644 (file)
@@ -341,6 +341,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        case RC_LOG:
                                $vals['type'] = 'log';
                                break;
+                       case RC_EXTERNAL:
+                               $vals['type'] = 'external';
+                               break;
                        case RC_MOVE_OVER_REDIRECT:
                                $vals['type'] = 'move over redirect';
                                break;
@@ -477,6 +480,8 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                return RC_NEW;
                        case 'log':
                                return RC_LOG;
+                       case 'external':
+                               return RC_EXTERNAL;
                }
        }
 
@@ -573,6 +578,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array(
                                        'edit',
+                                       'external',
                                        'new',
                                        'log'
                                )
index 33000e1..ecf47a9 100644 (file)
@@ -338,10 +338,7 @@ class ApiQueryRevisions extends ApiQueryBase {
 
                        if ( !is_null( $params['continue'] ) ) {
                                $cont = explode( '|', $params['continue'] );
-                               if ( count( $cont ) != 2 ) {
-                                       $this->dieUsage( 'Invalid continue param. You should pass the original ' .
-                                                       'value returned by the previous query', '_badcontinue' );
-                               }
+                               $this->dieContinueUsageIf( count( $cont ) != 2 );
                                $pageid = intval( $cont[0] );
                                $revid = intval( $cont[1] );
                                $this->addWhere(
@@ -493,7 +490,7 @@ class ApiQueryRevisions extends ApiQueryBase {
 
                $content = null;
                global $wgParser;
-               if ( $this->fld_content || !is_null( $this->difftotext ) ) {
+               if ( $this->fld_content || !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
                        $content = $revision->getContent();
                        // Expand templates after getting section content because
                        // template-added sections don't count and Parser::preprocess()
index cfd08a8..a0a0fbe 100644 (file)
@@ -168,7 +168,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                        }
                                }
                                if ( isset( $prop['hasrelated'] ) && $result->hasRelated() ) {
-                                       $vals['hasrelated'] = "";
+                                       $vals['hasrelated'] = '';
                                }
 
                                // Add item to results and see whether it fits
index f30b132..96fea1a 100644 (file)
@@ -160,10 +160,7 @@ class ApiQueryContributions extends ApiQueryBase {
                // Handle continue parameter
                if ( $this->multiUserMode && !is_null( $this->params['continue'] ) ) {
                        $continue = explode( '|', $this->params['continue'] );
-                       if ( count( $continue ) != 2 ) {
-                               $this->dieUsage( 'Invalid continue param. You should pass the original ' .
-                                       'value returned by the previous query', '_badcontinue' );
-                       }
+                       $this->dieContinueUsageIf( count( $continue ) != 2 );
                        $db = $this->getDB();
                        $encUser = $db->addQuotes( $continue[0] );
                        $encTS = $db->addQuotes( $db->timestamp( $continue[1] ) );
index edcbc1a..e569018 100644 (file)
@@ -124,7 +124,7 @@ class ApiQueryUsers extends ApiQueryBase {
                                $this->addWhereFld( 'user_name', $goodNames );
                                $this->addTables( 'user_groups' );
                                $this->addJoinConds( array( 'user_groups' => array( 'INNER JOIN', 'ug_user=user_id' ) ) );
-                               $this->addFields( array('user_name', 'ug_group') );
+                               $this->addFields( array( 'user_name', 'ug_group' ) );
                                $userGroupsRes = $this->select( __METHOD__ );
 
                                foreach( $userGroupsRes as $row ) {
index a1a3372..22d98b7 100644 (file)
@@ -116,7 +116,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                ) );
 
                $userId = $user->getId();
-               $this->addJoinConds( array( 'watchlist' => array('INNER JOIN',
+               $this->addJoinConds( array( 'watchlist' => array( 'INNER JOIN',
                        array(
                                'wl_user' => $userId,
                                'wl_namespace=rc_namespace',
index 6b24aef..27b6f74 100644 (file)
@@ -71,11 +71,9 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
 
                if ( isset( $params['continue'] ) ) {
                        $cont = explode( '|', $params['continue'] );
-                       if ( count( $cont ) != 2 ) {
-                               $this->dieUsage( "Invalid continue param. You should pass the " .
-                                       "original value returned by the previous query", "_badcontinue" );
-                       }
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
                        $ns = intval( $cont[0] );
+                       $this->dieContinueUsageIf( strval( $ns ) !== $cont[0] );
                        $title = $this->getDB()->addQuotes( $cont[1] );
                        $op = $params['dir'] == 'ascending' ? '>' : '<';
                        $this->addWhere(
index d68c515..2e18e8a 100644 (file)
@@ -51,6 +51,8 @@ class ApiUpload extends ApiBase {
                // Parameter handling
                $this->mParams = $this->extractRequestParams();
                $request = $this->getMain()->getRequest();
+               // Check if async mode is actually supported
+               $this->mParams['async'] = ( $this->mParams['async'] && !wfIsWindows() );
                // Add the uploaded file to the params array
                $this->mParams['file'] = $request->getFileName( 'file' );
                $this->mParams['chunk'] = $request->getFileName( 'chunk' );
@@ -62,17 +64,15 @@ class ApiUpload extends ApiBase {
 
                // Select an upload module
                if ( !$this->selectUploadModule() ) {
-                       // This is not a true upload, but a status request or similar
-                       return;
-               }
-               if ( !isset( $this->mUpload ) ) {
+                       return; // not a true upload, but a status request or similar
+               } elseif ( !isset( $this->mUpload ) ) {
                        $this->dieUsage( 'No upload module set', 'nomodule' );
                }
 
                // First check permission to upload
                $this->checkPermissions( $user );
 
-               // Fetch the file
+               // Fetch the file (usually a no-op)
                $status = $this->mUpload->fetchFile();
                if ( !$status->isGood() ) {
                        $errors = $status->getErrorsArray();
@@ -89,6 +89,8 @@ class ApiUpload extends ApiBase {
                        if ( !$this->mUpload->getTitle() ) {
                                $this->dieUsage( 'Invalid file title supplied', 'internal-error' );
                        }
+               } elseif ( $this->mParams['async'] ) {
+                       // defer verification to background process
                } else {
                        $this->verifyUpload();
                }
@@ -96,15 +98,15 @@ class ApiUpload extends ApiBase {
                // Check if the user has the rights to modify or overwrite the requested title
                // (This check is irrelevant if stashing is already requested, since the errors
                //  can always be fixed by changing the title)
-               if ( ! $this->mParams['stash'] ) {
+               if ( !$this->mParams['stash'] ) {
                        $permErrors = $this->mUpload->verifyTitlePermissions( $user );
                        if ( $permErrors !== true ) {
                                $this->dieRecoverableError( $permErrors[0], 'filename' );
                        }
                }
+
                // Get the result based on the current upload context:
                $result = $this->getContextResult();
-
                if ( $result['result'] === 'Success' ) {
                        $result['imageinfo'] = $this->mUpload->getImageInfo( $this->getResult() );
                }
@@ -135,6 +137,7 @@ class ApiUpload extends ApiBase {
                // performUpload will return a formatted properly for the API with status
                return $this->performUpload( $warnings );
        }
+
        /**
         * Get Stash Result, throws an expetion if the file could not be stashed.
         * @param $warnings array Array of Api upload warnings
@@ -156,6 +159,7 @@ class ApiUpload extends ApiBase {
                }
                return $result;
        }
+
        /**
         * Get Warnings Result
         * @param $warnings array Array of Api upload warnings
@@ -175,6 +179,7 @@ class ApiUpload extends ApiBase {
                }
                return $result;
        }
+
        /**
         * Get the result of a chunk upload.
         * @param $warnings array Array of Api upload warnings
@@ -206,7 +211,7 @@ class ApiUpload extends ApiBase {
                        if( $this->mParams['offset'] + $chunkSize == $this->mParams['filesize'] ) {
                                if ( $this->mParams['async'] && !wfIsWindows() ) {
                                        $progress = UploadBase::getSessionStatus( $this->mParams['filekey'] );
-                                       if ( $progress && $progress['result'] !== 'Failed' ) {
+                                       if ( $progress && $progress['result'] === 'Poll' ) {
                                                $this->dieUsage( "Chunk assembly already in progress.", 'stashfailed' );
                                        }
                                        UploadBase::setSessionStatus(
@@ -218,6 +223,7 @@ class ApiUpload extends ApiBase {
                                        $cmd = wfShellWikiCmd(
                                                "$IP/includes/upload/AssembleUploadChunks.php",
                                                array(
+                                                       '--wiki', wfWikiID(),
                                                        '--filename', $this->mParams['filename'],
                                                        '--filekey', $this->mParams['filekey'],
                                                        '--userid', $this->getUser()->getId(),
@@ -225,7 +231,9 @@ class ApiUpload extends ApiBase {
                                                        '--quiet'
                                                )
                                        ) . " < " . wfGetNull() . " > " . wfGetNull() . " 2>&1 &";
-                                       wfShellExec( $cmd, $retVal ); // start a process in the background
+                                       // Start a process in the background. Enforce the time limits via PHP
+                                       // since ulimit4.sh seems to often not work for this particular usage.
+                                       wfShellExec( $cmd, $retVal, array(), array( 'time' => 0, 'memory' => 0 ) );
                                        if ( $retVal == 0 ) {
                                                $result['result'] = 'Poll';
                                        } else {
@@ -263,7 +271,7 @@ class ApiUpload extends ApiBase {
         * @throws MWException
         * @return String file key
         */
-       function performStash() {
+       private function performStash() {
                try {
                        $stashFile = $this->mUpload->stashFile();
 
@@ -288,7 +296,7 @@ class ApiUpload extends ApiBase {
         * @param $data array Optional extra data to pass to the user
         * @throws UsageException
         */
-       function dieRecoverableError( $error, $parameter, $data = array() ) {
+       private function dieRecoverableError( $error, $parameter, $data = array() ) {
                try {
                        $data['filekey'] = $this->performStash();
                        $data['sessionkey'] = $data['filekey'];
@@ -317,6 +325,7 @@ class ApiUpload extends ApiBase {
                                'filekey', 'file', 'url', 'statuskey' );
                }
 
+               // Status report for "upload to stash"/"upload from stash"
                if ( $this->mParams['filekey'] && $this->mParams['checkstatus'] ) {
                        $progress = UploadBase::getSessionStatus( $this->mParams['filekey'] );
                        if ( !$progress ) {
@@ -324,6 +333,9 @@ class ApiUpload extends ApiBase {
                        } elseif ( !$progress['status']->isGood() ) {
                                $this->dieUsage( $progress['status']->getWikiText(), 'stashfailed' );
                        }
+                       if ( isset( $progress['status']->value['verification'] ) ) {
+                               $this->checkVerification( $progress['status']->value['verification'] );
+                       }
                        unset( $progress['status'] ); // remove Status object
                        $this->getResult()->addValue( null, $this->getModuleName(), $progress );
                        return false;
@@ -374,8 +386,11 @@ class ApiUpload extends ApiBase {
                        }
 
                        $this->mUpload = new UploadFromStash( $this->getUser() );
-
-                       $this->mUpload->initialize( $this->mParams['filekey'], $this->mParams['filename'] );
+                       // This will not download the temp file in initialize() in async mode.
+                       // We still have enough information to call checkWarnings() and such.
+                       $this->mUpload->initialize(
+                               $this->mParams['filekey'], $this->mParams['filename'], !$this->mParams['async']
+                       );
                } elseif ( isset( $this->mParams['file'] ) ) {
                        $this->mUpload = new UploadFromFile();
                        $this->mUpload->initialize(
@@ -437,12 +452,19 @@ class ApiUpload extends ApiBase {
         * Performs file verification, dies on error.
         */
        protected function verifyUpload( ) {
-               global $wgFileExtensions;
-
                $verification = $this->mUpload->verifyUpload( );
                if ( $verification['status'] === UploadBase::OK ) {
                        return;
+               } else {
+                       return $this->checkVerification( $verification );
                }
+       }
+
+       /**
+        * Performs file verification, dies on error.
+        */
+       protected function checkVerification( array $verification ) {
+               global $wgFileExtensions;
 
                // TODO: Move them to ApiBase's message map
                switch( $verification['status'] ) {
@@ -552,6 +574,8 @@ class ApiUpload extends ApiBase {
         * @return array
         */
        protected function performUpload( $warnings ) {
+               global $IP;
+
                // Use comment as initial page text by default
                if ( is_null( $this->mParams['text'] ) ) {
                        $this->mParams['text'] = $this->mParams['comment'];
@@ -566,29 +590,63 @@ class ApiUpload extends ApiBase {
                }
 
                // No errors, no warnings: do the upload
-               $status = $this->mUpload->performUpload( $this->mParams['comment'],
-                       $this->mParams['text'], $watch, $this->getUser() );
-
-               if ( !$status->isGood() ) {
-                       $error = $status->getErrorsArray();
-
-                       if ( count( $error ) == 1 && $error[0][0] == 'async' ) {
-                               // The upload can not be performed right now, because the user
-                               // requested so
-                               return array(
-                                       'result' => 'Queued',
-                                       'statuskey' => $error[0][1],
-                               );
+               if ( $this->mParams['async'] ) {
+                       $progress = UploadBase::getSessionStatus( $this->mParams['filekey'] );
+                       if ( $progress && $progress['result'] === 'Poll' ) {
+                               $this->dieUsage( "Upload from stash already in progress.", 'publishfailed' );
+                       }
+                       UploadBase::setSessionStatus(
+                               $this->mParams['filekey'],
+                               array( 'result' => 'Poll', 'stage' => 'queued', 'status' => Status::newGood() )
+                       );
+                       $retVal = 1;
+                       $cmd = wfShellWikiCmd(
+                               "$IP/includes/upload/PublishStashedFile.php",
+                               array(
+                                       '--wiki', wfWikiID(),
+                                       '--filename', $this->mParams['filename'],
+                                       '--filekey', $this->mParams['filekey'],
+                                       '--userid', $this->getUser()->getId(),
+                                       '--comment', $this->mParams['comment'],
+                                       '--text', $this->mParams['text'],
+                                       '--watch', $watch,
+                                       '--sessionid', session_id(),
+                                       '--quiet'
+                               )
+                       ) . " < " . wfGetNull() . " > " . wfGetNull() . " 2>&1 &";
+                       // Start a process in the background. Enforce the time limits via PHP
+                       // since ulimit4.sh seems to often not work for this particular usage.
+                       wfShellExec( $cmd, $retVal, array(), array( 'time' => 0, 'memory' => 0 ) );
+                       if ( $retVal == 0 ) {
+                               $result['result'] = 'Poll';
                        } else {
-                               $this->getResult()->setIndexedTagName( $error, 'error' );
+                               UploadBase::setSessionStatus( $this->mParams['filekey'], false );
+                               $this->dieUsage(
+                                       "Failed to start PublishStashedFile.php", 'publishfailed' );
+                       }
+               } else {
+                       $status = $this->mUpload->performUpload( $this->mParams['comment'],
+                               $this->mParams['text'], $watch, $this->getUser() );
+
+                       if ( !$status->isGood() ) {
+                               $error = $status->getErrorsArray();
+
+                               if ( count( $error ) == 1 && $error[0][0] == 'async' ) {
+                                       // The upload can not be performed right now, because the user
+                                       // requested so
+                                       return array(
+                                               'result' => 'Queued',
+                                               'statuskey' => $error[0][1],
+                                       );
+                               } else {
+                                       $this->getResult()->setIndexedTagName( $error, 'error' );
 
-                               $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
+                                       $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
+                               }
                        }
+                       $result['result'] = 'Success';
                }
 
-               $file = $this->mUpload->getLocalFile();
-
-               $result['result'] = 'Success';
                $result['filename'] = $file->getName();
                if ( $warnings && count( $warnings ) > 0 ) {
                        $result['warnings'] = $warnings;
@@ -756,6 +814,7 @@ class ApiUpload extends ApiBase {
                                array( 'code' => 'filename-tooshort', 'info' => 'The filename is too short' ),
                                array( 'code' => 'overwrite', 'info' => 'Overwriting an existing file is not allowed' ),
                                array( 'code' => 'stashfailed', 'info' => 'Stashing temporary file failed' ),
+                               array( 'code' => 'publishfailed', 'info' => 'Publishing of stashed file failed' ),
                                array( 'code' => 'internal-error', 'info' => 'An internal error occurred' ),
                                array( 'code' => 'asynccopyuploaddisabled', 'info' => 'Asynchronous copy uploads disabled' ),
                                array( 'fileexists-forbidden' ),
index 791ae3e..88e7928 100644 (file)
@@ -46,6 +46,8 @@ class HTMLCacheUpdate implements DeferrableUpdate {
        }
 
        public function doUpdate() {
+               global $wgMaxBacklinksInvalidate;
+
                wfProfileIn( __METHOD__ );
 
                $job = new HTMLCacheUpdateJob(
@@ -58,7 +60,9 @@ class HTMLCacheUpdate implements DeferrableUpdate {
                );
 
                $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 200 );
-               if ( $count >= 200 ) { // many backlinks
+               if ( $wgMaxBacklinksInvalidate !== false && $count > $wgMaxBacklinksInvalidate ) {
+                       wfDebug( "Skipped HTML cache invalidation of {$this->mTitle->getPrefixedText()}." );
+               } elseif ( $count >= 200 ) { // many backlinks
                        JobQueueGroup::singleton()->push( $job );
                        JobQueueGroup::singleton()->deduplicateRootJob( $job );
                } else { // few backlinks ($count might be off even if 0)
index 6b48fa4..bcc8446 100644 (file)
@@ -65,7 +65,7 @@ class SquidUpdate {
                                'pl_from=page_id' ),
                        __METHOD__ );
                $blurlArr = $title->getSquidURLs();
-               if ( $dbr->numRows( $res ) <= $wgMaxSquidPurgeTitles ) {
+               if ( $res->numRows() <= $wgMaxSquidPurgeTitles ) {
                        foreach ( $res as $BL ) {
                                $tobj = Title::makeTitle( $BL->page_namespace, $BL->page_title ) ;
                                $blurlArr[] = $tobj->getInternalURL();
index d5a6d15..4a02f0b 100644 (file)
@@ -28,7 +28,6 @@
  * member variable and provide accessors to it.
  */
 abstract class ContextSource implements IContextSource {
-
        /**
         * @var IContextSource
         */
@@ -42,7 +41,7 @@ abstract class ContextSource implements IContextSource {
        public function getContext() {
                if ( $this->context === null ) {
                        $class = get_class( $this );
-                       wfDebug( __METHOD__  . " ($class): called and \$context is null. Using RequestContext::getMain() for sanity\n" );
+                       wfDebug( __METHOD__ . " ($class): called and \$context is null. Using RequestContext::getMain() for sanity\n" );
                        $this->context = RequestContext::getMain();
                }
                return $this->context;
@@ -52,7 +51,7 @@ abstract class ContextSource implements IContextSource {
         * Set the IContextSource object
         *
         * @since 1.18
-        * @param $context IContextSource
+        * @param IContextSource $context
         */
        public function setContext( IContextSource $context ) {
                $this->context = $context;
@@ -107,7 +106,7 @@ abstract class ContextSource implements IContextSource {
         * Get the OutputPage object
         *
         * @since 1.18
-        * @return OutputPage object
+        * @return OutputPage
         */
        public function getOutput() {
                return $this->getContext()->getOutput();
@@ -159,7 +158,7 @@ abstract class ContextSource implements IContextSource {
         * Parameters are the same as wfMessage()
         *
         * @since 1.18
-        * @return Message object
+        * @return Message
         */
        public function msg( /* $args */ ) {
                $args = func_get_args();
index a4e3272..b9a7006 100644 (file)
@@ -30,7 +30,6 @@
  *     a different Title instance set on it.
  */
 class DerivativeContext extends ContextSource {
-
        /**
         * @var WebRequest
         */
@@ -68,7 +67,7 @@ class DerivativeContext extends ContextSource {
 
        /**
         * Constructor
-        * @param $context IContextSource Context to inherit from
+        * @param IContextSource $context Context to inherit from
         */
        public function __construct( IContextSource $context ) {
                $this->setContext( $context );
@@ -77,7 +76,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the WebRequest object
         *
-        * @param $r WebRequest object
+        * @param WebRequest $r
         */
        public function setRequest( WebRequest $r ) {
                $this->request = $r;
@@ -99,7 +98,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the Title object
         *
-        * @param $t Title object
+        * @param Title $t
         */
        public function setTitle( Title $t ) {
                $this->title = $t;
@@ -140,7 +139,7 @@ class DerivativeContext extends ContextSource {
         * Set the WikiPage object
         *
         * @since 1.19
-        * @param $p WikiPage object
+        * @param WikiPage $p
         */
        public function setWikiPage( WikiPage $p ) {
                $this->wikipage = $p;
@@ -166,7 +165,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the OutputPage object
         *
-        * @param $o OutputPage
+        * @param OutputPage $o
         */
        public function setOutput( OutputPage $o ) {
                $this->output = $o;
@@ -175,7 +174,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Get the OutputPage object
         *
-        * @return OutputPage object
+        * @return OutputPage
         */
        public function getOutput() {
                if ( !is_null( $this->output ) ) {
@@ -188,7 +187,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the User object
         *
-        * @param $u User
+        * @param User $u
         */
        public function setUser( User $u ) {
                $this->user = $u;
@@ -211,7 +210,7 @@ class DerivativeContext extends ContextSource {
         * Set the Language object
         *
         * @deprecated 1.19 Use setLanguage instead
-        * @param $l Mixed Language instance or language code
+        * @param Language|string $l Language instance or language code
         */
        public function setLang( $l ) {
                wfDeprecated( __METHOD__, '1.19' );
@@ -221,7 +220,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the Language object
         *
-        * @param $l Mixed Language instance or language code
+        * @param Language|string $l Language instance or language code
         * @throws MWException
         * @since 1.19
         */
@@ -263,7 +262,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the Skin object
         *
-        * @param $s Skin
+        * @param Skin $s
         */
        public function setSkin( Skin $s ) {
                $this->skin = clone $s;
@@ -282,6 +281,4 @@ class DerivativeContext extends ContextSource {
                        return $this->getContext()->getSkin();
                }
        }
-
 }
-
index 476035b..0399081 100644 (file)
@@ -27,7 +27,6 @@
  * Interface for objects which can provide a context on request.
  */
 interface IContextSource {
-
        /**
         * Get the WebRequest object
         *
@@ -66,7 +65,7 @@ interface IContextSource {
        /**
         * Get the OutputPage object
         *
-        * @return OutputPage object
+        * @return OutputPage
         */
        public function getOutput();
 
@@ -103,8 +102,7 @@ interface IContextSource {
        /**
         * Get a Message object with context set
         *
-        * @return Message object
+        * @return Message
         */
        public function msg();
 }
-
index e4de030..c1ce751 100644 (file)
@@ -28,7 +28,6 @@
  * Group all the pieces relevant to the context of a request into one instance
  */
 class RequestContext implements IContextSource {
-
        /**
         * @var WebRequest
         */
@@ -67,7 +66,7 @@ class RequestContext implements IContextSource {
        /**
         * Set the WebRequest object
         *
-        * @param $r WebRequest object
+        * @param WebRequest $r
         */
        public function setRequest( WebRequest $r ) {
                $this->request = $r;
@@ -89,7 +88,7 @@ class RequestContext implements IContextSource {
        /**
         * Set the Title object
         *
-        * @param $t Title object
+        * @param Title $t
         */
        public function setTitle( Title $t ) {
                $this->title = $t;
@@ -137,7 +136,7 @@ class RequestContext implements IContextSource {
         * Set the WikiPage object
         *
         * @since 1.19
-        * @param $p WikiPage object
+        * @param WikiPage $p
         */
        public function setWikiPage( WikiPage $p ) {
                $contextTitle = $this->getTitle();
@@ -180,7 +179,7 @@ class RequestContext implements IContextSource {
        /**
         * Get the OutputPage object
         *
-        * @return OutputPage object
+        * @return OutputPage
         */
        public function getOutput() {
                if ( $this->output === null ) {
@@ -192,7 +191,7 @@ class RequestContext implements IContextSource {
        /**
         * Set the User object
         *
-        * @param $u User
+        * @param User $u
         */
        public function setUser( User $u ) {
                $this->user = $u;
@@ -213,7 +212,7 @@ class RequestContext implements IContextSource {
        /**
         * Accepts a language code and ensures it's sane. Outputs a cleaned up language
         * code and replaces with $wgLanguageCode if not sane.
-        * @param $code string
+        * @param string $code Language code
         * @return string
         */
        public static function sanitizeLangCode( $code ) {
@@ -223,7 +222,7 @@ class RequestContext implements IContextSource {
                $code = strtolower( $code );
 
                # Validate $code
-               if( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) {
+               if ( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) {
                        wfDebug( "Invalid user language code\n" );
                        $code = $wgLanguageCode;
                }
@@ -235,7 +234,7 @@ class RequestContext implements IContextSource {
         * Set the Language object
         *
         * @deprecated 1.19 Use setLanguage instead
-        * @param $l Mixed Language instance or language code
+        * @param Language|string $l Language instance or language code
         */
        public function setLang( $l ) {
                wfDeprecated( __METHOD__, '1.19' );
@@ -245,7 +244,7 @@ class RequestContext implements IContextSource {
        /**
         * Set the Language object
         *
-        * @param $l Mixed Language instance or language code
+        * @param Language|string $l Language instance or language code
         * @throws MWException
         * @since 1.19
         */
@@ -287,7 +286,7 @@ class RequestContext implements IContextSource {
 
                        wfRunHooks( 'UserGetLanguageObject', array( $this->getUser(), &$code ) );
 
-                       if( $code === $wgLanguageCode ) {
+                       if ( $code === $wgLanguageCode ) {
                                $this->lang = $wgContLang;
                        } else {
                                $obj = Language::factory( $code );
@@ -300,7 +299,7 @@ class RequestContext implements IContextSource {
        /**
         * Set the Skin object
         *
-        * @param $s Skin
+        * @param Skin $s
         */
        public function setSkin( Skin $s ) {
                $this->skin = clone $s;
@@ -322,7 +321,7 @@ class RequestContext implements IContextSource {
                        // If the hook worked try to set a skin from it
                        if ( $skin instanceof Skin ) {
                                $this->skin = $skin;
-                       } elseif ( is_string($skin) ) {
+                       } elseif ( is_string( $skin ) ) {
                                $this->skin = Skin::newFromKey( $skin );
                        }
 
@@ -330,7 +329,7 @@ class RequestContext implements IContextSource {
                        // then go through the normal processing to load a skin
                        if ( $this->skin === null ) {
                                global $wgHiddenPrefs;
-                               if( !in_array( 'skin', $wgHiddenPrefs ) ) {
+                               if ( !in_array( 'skin', $wgHiddenPrefs ) ) {
                                        # get the user skin
                                        $userSkin = $this->getUser()->getOption( 'skin' );
                                        $userSkin = $this->getRequest()->getVal( 'useskin', $userSkin );
@@ -356,7 +355,7 @@ class RequestContext implements IContextSource {
         * Get a Message object with context set
         * Parameters are the same as wfMessage()
         *
-        * @return Message object
+        * @return Message
         */
        public function msg() {
                $args = func_get_args();
@@ -368,7 +367,7 @@ class RequestContext implements IContextSource {
        /**
         * Get the RequestContext object associated with the main request
         *
-        * @return RequestContext object
+        * @return RequestContext
         */
        public static function getMain() {
                static $instance = null;
@@ -388,11 +387,11 @@ class RequestContext implements IContextSource {
         *   language or a uselang param in the fauxrequest data may change the lang
         * - Skin will be based on the anonymous user, should be the wiki's default skin
         *
-        * @param $title Title Title to use for the extraneous request
-        * @param $request Mixed A WebRequest or data to use for a FauxRequest
+        * @param Title $title Title to use for the extraneous request
+        * @param mixed $request A WebRequest or data to use for a FauxRequest
         * @return RequestContext
         */
-       public static function newExtraneousContext( Title $title, $request=array() ) {
+       public static function newExtraneousContext( Title $title, $request = array() ) {
                $context = new self;
                $context->setTitle( $title );
                if ( $request instanceof WebRequest ) {
@@ -403,5 +402,4 @@ class RequestContext implements IContextSource {
                $context->user = User::newFromName( '127.0.0.1', false );
                return $context;
        }
-
 }
index 36a1126..04c22f1 100644 (file)
@@ -133,7 +133,7 @@ class DatabaseMysql extends DatabaseBase {
                                substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
 
                        wfProfileOut( __METHOD__ );
-                       $this->reportConnectionError( $error );
+                       return $this->reportConnectionError( $error );
                }
 
                if ( $dbName != '' ) {
@@ -146,7 +146,7 @@ class DatabaseMysql extends DatabaseBase {
                                        "from client host " . wfHostname() . "\n" );
 
                                wfProfileOut( __METHOD__ );
-                               $this->reportConnectionError( "Error selecting database $dbName" );
+                               return $this->reportConnectionError( "Error selecting database $dbName" );
                        }
                }
 
@@ -597,10 +597,9 @@ class DatabaseMysql extends DatabaseBase {
                if ( $res && $row = $this->fetchRow( $res ) ) {
                        wfProfileOut( $fname );
                        return $row[0];
-               } else {
-                       wfProfileOut( $fname );
-                       return false;
                }
+               wfProfileOut( $fname );
+               return false;
        }
 
        /**
index 67dbdfe..e46dbc0 100644 (file)
@@ -97,6 +97,8 @@ interface IORMTable {
         * Selects the the specified fields of the records matching the provided
         * conditions and returns them as DBDataObject. Field names get prefixed.
         *
+        * @see DatabaseBase::select()
+        *
         * @since 1.20
         *
         * @param array|string|null $fields
@@ -104,7 +106,8 @@ interface IORMTable {
         * @param array $options
         * @param string|null $functionName
         *
-        * @return ORMResult
+        * @return ORMResult The result set
+        * @throw DBQueryError if the query failed (even if the database was in ignoreErrors mode)
         */
        public function select( $fields = null, array $conditions = array(),
                                                        array $options = array(), $functionName = null );
@@ -136,6 +139,7 @@ interface IORMTable {
         * @param null|string $functionName
         *
         * @return ResultWrapper
+        * @throw DBQueryError if the query failed (even if the database was in ignoreErrors mode)
         */
        public function rawSelect( $fields = null, array $conditions = array(),
                                                           array $options = array(), $functionName = null );
index 8ba5f4f..2858cd9 100644 (file)
@@ -579,7 +579,7 @@ class LoadBalancer {
                wfProfileIn( __METHOD__ );
                if ( $wiki !== false ) {
                        $conn = $this->openForeignConnection( $i, $wiki );
-                       wfProfileOut( __METHOD__);
+                       wfProfileOut( __METHOD__ );
                        return $conn;
                }
                if ( isset( $this->mConns['local'][$i][0] ) ) {
index 1292963..4079315 100644 (file)
@@ -95,7 +95,8 @@ abstract class ORMTable extends DBAccessBase implements IORMTable {
         */
        public function select( $fields = null, array $conditions = array(),
                                                        array $options = array(), $functionName  = null ) {
-               return new ORMResult( $this, $this->rawSelect( $fields, $conditions, $options, $functionName ) );
+               $res = $this->rawSelect( $fields, $conditions, $options, $functionName );
+               return new ORMResult( $this, $res );
        }
 
        /**
@@ -109,7 +110,8 @@ abstract class ORMTable extends DBAccessBase implements IORMTable {
         * @param array $options
         * @param string|null $functionName
         *
-        * @return array of self
+        * @return array of row objects
+        * @throws DBQueryError if the query failed (even if the database was in ignoreErrors mode).
         */
        public function selectObjects( $fields = null, array $conditions = array(),
                                                                   array $options = array(), $functionName  = null ) {
@@ -130,11 +132,12 @@ abstract class ORMTable extends DBAccessBase implements IORMTable {
         * @since 1.20
         *
         * @param null|string|array $fields
-        * @param array $conditions
-        * @param array $options
-        * @param null|string $functionName
+        * @param array             $conditions
+        * @param array             $options
+        * @param null|string       $functionName
         *
         * @return ResultWrapper
+        * @throws DBQueryError if the quey failed (even if the database was in ignoreErrors mode).
         */
        public function rawSelect( $fields = null, array $conditions = array(),
                                                           array $options = array(), $functionName  = null ) {
@@ -154,7 +157,29 @@ abstract class ORMTable extends DBAccessBase implements IORMTable {
                        $options
                );
 
+               /* @var Exception $error */
+               $error = null;
+
+               if ( $result === false ) {
+                       // Database connection was in "ignoreErrors" mode. We don't like that.
+                       // So, we emulate the DBQueryError that should have been thrown.
+                       $error = new DBQueryError(
+                               $dbr,
+                               $dbr->lastError(),
+                               $dbr->lastErrno(),
+                               $dbr->lastQuery(),
+                               is_null( $functionName ) ? __METHOD__ : $functionName
+                       );
+               }
+
                $this->releaseConnection( $dbr );
+
+               if ( $error ) {
+                       // Note: construct the error before releasing the connection,
+                       // but throw it after.
+                       throw $error;
+               }
+
                return $result;
        }
 
@@ -227,7 +252,7 @@ abstract class ORMTable extends DBAccessBase implements IORMTable {
 
                $objects = $this->select( $fields, $conditions, $options, $functionName );
 
-               return $objects->isEmpty() ? false : $objects->current();
+               return ( !$objects || $objects->isEmpty() ) ? false : $objects->current();
        }
 
        /**
index 6fcf0e8..97553e6 100644 (file)
@@ -294,8 +294,11 @@ 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, $this->getContext() );
+                                       $rollbackLink = Linker::generateRollback( $this->mNewRev, $this->getContext() );
+                                       if ( $rollbackLink ) {
+                                               $out->preventClickjacking();
+                                               $rollback = '&#160;&#160;&#160;' . $rollbackLink;
+                                       }
                                }
                                if ( !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
                                        $undoLink = ' ' . $this->msg( 'parentheses' )->rawParams(
index 9450257..a4e6ef6 100644 (file)
@@ -46,6 +46,7 @@ class FSFileBackend extends FileBackendStore {
        protected $fileOwner; // string; required OS username to own files
        protected $currentUser; // string; OS username running this script
 
+       /** @var Array */
        protected $hadWarningErrors = array();
 
        /**
@@ -196,7 +197,9 @@ class FSFileBackend extends FileBackendStore {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
                                return $status;
                        }
+                       $this->trapWarnings();
                        $bytes = file_put_contents( $tempFile->getPath(), $params['content'] );
+                       $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
                                return $status;
@@ -209,7 +212,9 @@ class FSFileBackend extends FileBackendStore {
                        $status->value = new FSFileOpHandle( $this, $params, 'Create', $cmd, $dest );
                        $tempFile->bind( $status->value );
                } else { // immediate write
+                       $this->trapWarnings();
                        $bytes = file_put_contents( $dest, $params['content'] );
+                       $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $status->fatal( 'backend-fail-create', $params['dst'] );
                                return $status;
@@ -251,9 +256,9 @@ class FSFileBackend extends FileBackendStore {
                        ) );
                        $status->value = new FSFileOpHandle( $this, $params, 'Store', $cmd, $dest );
                } else { // immediate write
-                       wfSuppressWarnings();
+                       $this->trapWarnings();
                        $ok = copy( $params['src'], $dest );
-                       wfRestoreWarnings();
+                       $this->untrapWarnings();
                        // In some cases (at least over NFS), copy() returns true when it fails
                        if ( !$ok || ( filesize( $params['src'] ) !== filesize( $dest ) ) ) {
                                if ( $ok ) { // PHP bug
@@ -313,11 +318,15 @@ class FSFileBackend extends FileBackendStore {
                        ) );
                        $status->value = new FSFileOpHandle( $this, $params, 'Copy', $cmd, $dest );
                } else { // immediate write
+                       $this->trapWarnings();
                        $ok = copy( $source, $dest );
+                       $this->untrapWarnings();
                        // In some cases (at least over NFS), copy() returns true when it fails
                        if ( !$ok || ( filesize( $source ) !== filesize( $dest ) ) ) {
                                if ( $ok ) { // PHP bug
+                                       $this->trapWarnings();
                                        unlink( $dest ); // remove broken file
+                                       $this->untrapWarnings();
                                        trigger_error( __METHOD__ . ": copy() failed but returned true." );
                                }
                                $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
@@ -373,7 +382,9 @@ class FSFileBackend extends FileBackendStore {
                        ) );
                        $status->value = new FSFileOpHandle( $this, $params, 'Move', $cmd );
                } else { // immediate write
+                       $this->trapWarnings();
                        $ok = rename( $source, $dest );
+                       $this->untrapWarnings();
                        clearstatcache(); // file no longer at source
                        if ( !$ok ) {
                                $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
@@ -421,9 +432,9 @@ class FSFileBackend extends FileBackendStore {
                        ) );
                        $status->value = new FSFileOpHandle( $this, $params, 'Copy', $cmd );
                } else { // immediate write
-                       wfSuppressWarnings();
+                       $this->trapWarnings();
                        $ok = unlink( $source );
-                       wfRestoreWarnings();
+                       $this->untrapWarnings();
                        if ( !$ok ) {
                                $status->fatal( 'backend-fail-delete', $params['src'] );
                                return $status;
@@ -453,15 +464,18 @@ class FSFileBackend extends FileBackendStore {
                $contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
                $dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
                $existed = is_dir( $dir ); // already there?
-               if ( !wfMkdirParents( $dir ) ) { // make directory and its parents
+               // Create the directory and its parents as needed...
+               $this->trapWarnings();
+               if ( !wfMkdirParents( $dir ) ) {
                        $status->fatal( 'directorycreateerror', $params['dir'] ); // fails on races
                } elseif ( !is_writable( $dir ) ) {
                        $status->fatal( 'directoryreadonlyerror', $params['dir'] );
                } elseif ( !is_readable( $dir ) ) {
                        $status->fatal( 'directorynotreadableerror', $params['dir'] );
                }
+               $this->untrapWarnings();
+               // Respect any 'noAccess' or 'noListing' flags...
                if ( is_dir( $dir ) && !$existed ) {
-                       // Respect any 'noAccess' or 'noListing' flags...
                        $status->merge( $this->doSecureInternal( $fullCont, $dirRel, $params ) );
                }
                return $status;
@@ -478,19 +492,21 @@ class FSFileBackend extends FileBackendStore {
                $dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
                // Seed new directories with a blank index.html, to prevent crawling...
                if ( !empty( $params['noListing'] ) && !file_exists( "{$dir}/index.html" ) ) {
+                       $this->trapWarnings();
                        $bytes = file_put_contents( "{$dir}/index.html", $this->indexHtmlPrivate() );
+                       $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $status->fatal( 'backend-fail-create', $params['dir'] . '/index.html' );
-                               return $status;
                        }
                }
                // Add a .htaccess file to the root of the container...
                if ( !empty( $params['noAccess'] ) && !file_exists( "{$contRoot}/.htaccess" ) ) {
+                       $this->trapWarnings();
                        $bytes = file_put_contents( "{$contRoot}/.htaccess", $this->htaccessPrivate() );
+                       $this->untrapWarnings();
                        if ( $bytes === false ) {
                                $storeDir = "mwstore://{$this->name}/{$shortCont}";
                                $status->fatal( 'backend-fail-create', "{$storeDir}/.htaccess" );
-                               return $status;
                        }
                }
                return $status;
@@ -508,19 +524,21 @@ class FSFileBackend extends FileBackendStore {
                // Unseed new directories with a blank index.html, to allow crawling...
                if ( !empty( $params['listing'] ) && is_file( "{$dir}/index.html" ) ) {
                        $exists = ( file_get_contents( "{$dir}/index.html" ) === $this->indexHtmlPrivate() );
+                       $this->trapWarnings();
                        if ( $exists && !unlink( "{$dir}/index.html" ) ) { // reverse secure()
                                $status->fatal( 'backend-fail-delete', $params['dir'] . '/index.html' );
-                               return $status;
                        }
+                       $this->untrapWarnings();
                }
                // Remove the .htaccess file from the root of the container...
                if ( !empty( $params['access'] ) && is_file( "{$contRoot}/.htaccess" ) ) {
                        $exists = ( file_get_contents( "{$contRoot}/.htaccess" ) === $this->htaccessPrivate() );
+                       $this->trapWarnings();
                        if ( $exists && !unlink( "{$contRoot}/.htaccess" ) ) { // reverse secure()
                                $storeDir = "mwstore://{$this->name}/{$shortCont}";
                                $status->fatal( 'backend-fail-delete', "{$storeDir}/.htaccess" );
-                               return $status;
                        }
+                       $this->untrapWarnings();
                }
                return $status;
        }
@@ -534,11 +552,11 @@ class FSFileBackend extends FileBackendStore {
                list( $b, $shortCont, $r ) = FileBackend::splitStoragePath( $params['dir'] );
                $contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
                $dir = ( $dirRel != '' ) ? "{$contRoot}/{$dirRel}" : $contRoot;
-               wfSuppressWarnings();
+               $this->trapWarnings();
                if ( is_dir( $dir ) ) {
                        rmdir( $dir ); // remove directory if empty
                }
-               wfRestoreWarnings();
+               $this->untrapWarnings();
                return $status;
        }
 
@@ -668,9 +686,9 @@ class FSFileBackend extends FileBackendStore {
                                } else {
                                        $tmpPath = $tmpFile->getPath();
                                        // Copy the source file over the temp file
-                                       wfSuppressWarnings();
+                                       $this->trapWarnings();
                                        $ok = copy( $source, $tmpPath );
-                                       wfRestoreWarnings();
+                                       $this->untrapWarnings();
                                        if ( !$ok ) {
                                                $tmpFiles[$src] = null;
                                        } else {
@@ -733,9 +751,9 @@ class FSFileBackend extends FileBackendStore {
         * @return bool Success
         */
        protected function chmod( $path ) {
-               wfSuppressWarnings();
+               $this->trapWarnings();
                $ok = chmod( $path, $this->fileMode );
-               wfRestoreWarnings();
+               $this->untrapWarnings();
 
                return $ok;
        }
@@ -771,12 +789,11 @@ class FSFileBackend extends FileBackendStore {
        /**
         * Listen for E_WARNING errors and track whether any happen
         *
-        * @return bool
+        * @return void
         */
        protected function trapWarnings() {
                $this->hadWarningErrors[] = false; // push to stack
                set_error_handler( array( $this, 'handleWarning' ), E_WARNING );
-               return false; // invoke normal PHP error handler
        }
 
        /**
@@ -790,9 +807,12 @@ class FSFileBackend extends FileBackendStore {
        }
 
        /**
+        * @param $errno integer
+        * @param $errstr string
         * @return bool
         */
-       private function handleWarning() {
+       private function handleWarning( $errno, $errstr ) {
+               wfDebugLog( 'FSFileBackend', $errstr ); // more detailed error logging
                $this->hadWarningErrors[count( $this->hadWarningErrors ) - 1] = true;
                return true; // suppress from PHP handler
        }
index b8e25e7..610fc47 100644 (file)
@@ -111,7 +111,7 @@ class MemcLockManager extends QuorumLockManager {
                        foreach ( $paths as $path ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
-                       return; // FIXME: Should return a Status object
+                       return $status;
                }
 
                // Fetch all the existing lock records...
index dde2193..ac3f7b6 100644 (file)
@@ -256,6 +256,19 @@ abstract class DatabaseUpdater {
                $this->extensionUpdates[] = array( 'dropField', $tableName, $columnName, $sqlPath, true );
        }
 
+       /**
+        * Drop an index from an extension table
+        *
+        * @since 1.21
+        *
+        * @param $tableName string The table name
+        * @param $indexName string The index name
+        * @param $sqlPath string The path to the SQL change path
+        */
+       public function dropExtensionIndex( $tableName, $indexName, $sqlPath ) {
+               $this->extensionUpdates[] = array( 'dropIndex', $tableName, $indexName, $sqlPath, true );
+       }
+
        /**
         *
         * @since 1.20
@@ -267,6 +280,32 @@ abstract class DatabaseUpdater {
                $this->extensionUpdates[] = array( 'dropTable', $tableName, $sqlPath, true );
        }
 
+       /**
+        * Rename an index on an extension table
+        *
+        * @since 1.21
+        *
+        * @param $tableName string The table name
+        * @param $oldIndexName string The old index name
+        * @param $newIndexName string The new index name
+        * @param $skipBothIndexExistWarning Boolean: Whether to warn if both the old and the new indexes exist. [facultative; by default, false]
+        * @param $sqlPath string The path to the SQL change path
+        */
+       public function renameExtensionIndex( $tableName, $oldIndexName, $newIndexName, $sqlPath, $skipBothIndexExistWarning = false ) {
+               $this->extensionUpdates[] = array( 'renameIndex', $tableName, $oldIndexName, $newIndexName, $skipBothIndexExistWarning, $sqlPath, true );
+       }
+
+       /**
+        * @since 1.21
+        *
+        * @param $tableName string The table name
+        * @param $fieldName string The field to be modified
+        * @param $sqlPath string The path to the SQL change path
+        */
+       public function modifyExtensionField( $tableName, $fieldName, $sqlPath) {
+               $this->extensionUpdates[] = array( 'modifyField', $tableName, $fieldName, $sqlPath, true );
+       }
+
        /**
         *
         * @since 1.20
@@ -464,6 +503,26 @@ abstract class DatabaseUpdater {
                        $this->db->fieldExists( 'updatelog', 'ul_value', __METHOD__ );
        }
 
+       /**
+        * Returns whether updates should be executed on the database table $name.
+        * Updates will be prevented if the table is a shared table and it is not
+        * specified to run updates on shared tables.
+        *
+        * @param $name String table name
+        * @return bool
+        */
+       protected function doTable( $name ) {
+               global $wgSharedDB, $wgSharedTables;
+
+               // Don't bother to check $wgSharedTables if there isn't a shared database
+               // or the user actually also wants to do updates on the shared database.
+               if ( $wgSharedDB === null || $this->shared ) {
+                       return true;
+               }
+
+               return !in_array( $name, $wgSharedTables );
+       }
+
        /**
         * Before 1.17, we used to handle updates via stuff like
         * $wgExtNewTables/Fields/Indexes. This is nasty :) We refactored a lot
@@ -474,11 +533,7 @@ abstract class DatabaseUpdater {
         */
        protected function getOldGlobalUpdates() {
                global $wgExtNewFields, $wgExtNewTables, $wgExtModifiedFields,
-                       $wgExtNewIndexes, $wgSharedDB, $wgSharedTables;
-
-               $doUser = $this->shared ?
-                       $wgSharedDB && in_array( 'user', $wgSharedTables ) :
-                       !$wgSharedDB || !in_array( 'user', $wgSharedTables );
+                       $wgExtNewIndexes;
 
                $updates = array();
 
@@ -489,12 +544,10 @@ abstract class DatabaseUpdater {
                }
 
                foreach ( $wgExtNewFields as $fieldRecord ) {
-                       if ( $fieldRecord[0] != 'user' || $doUser ) {
-                               $updates[] = array(
-                                       'addField', $fieldRecord[0], $fieldRecord[1],
-                                               $fieldRecord[2], true
-                               );
-                       }
+                       $updates[] = array(
+                               'addField', $fieldRecord[0], $fieldRecord[1],
+                                       $fieldRecord[2], true
+                       );
                }
 
                foreach ( $wgExtNewIndexes as $fieldRecord ) {
@@ -555,6 +608,7 @@ abstract class DatabaseUpdater {
 
        /**
         * Applies a SQL patch
+        *
         * @param $path String Path to the patch file
         * @param $isFullPath Boolean Whether to treat $path as a relative or not
         * @param $msg String Description of the patch
@@ -585,12 +639,17 @@ abstract class DatabaseUpdater {
 
        /**
         * Add a new table to the database
+        *
         * @param $name String Name of the new table
         * @param $patch String Path to the patch file
         * @param $fullpath Boolean Whether to treat $patch path as a relative or not
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addTable( $name, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $name ) ) {
+                       return true;
+               }
+
                if ( $this->db->tableExists( $name, __METHOD__ ) ) {
                        $this->output( "...$name table already exists.\n" );
                } else {
@@ -601,6 +660,7 @@ abstract class DatabaseUpdater {
 
        /**
         * Add a new field to an existing table
+        *
         * @param $table String Name of the table to modify
         * @param $field String Name of the new field
         * @param $patch String Path to the patch file
@@ -608,6 +668,10 @@ abstract class DatabaseUpdater {
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addField( $table, $field, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
                        $this->output( "...$table table does not exist, skipping new field patch.\n" );
                } elseif ( $this->db->fieldExists( $table, $field, __METHOD__ ) ) {
@@ -620,6 +684,7 @@ abstract class DatabaseUpdater {
 
        /**
         * Add a new index to an existing table
+        *
         * @param $table String Name of the table to modify
         * @param $index String Name of the new index
         * @param $patch String Path to the patch file
@@ -627,9 +692,12 @@ abstract class DatabaseUpdater {
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addIndex( $table, $index, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
                        $this->output( "...skipping: '$table' table doesn't exist yet.\n" );
-                       return false;
                } else if ( $this->db->indexExists( $table, $index, __METHOD__ ) ) {
                        $this->output( "...index $index already set on $table table.\n" );
                } else {
@@ -648,6 +716,10 @@ abstract class DatabaseUpdater {
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function dropField( $table, $field, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                if ( $this->db->fieldExists( $table, $field, __METHOD__ ) ) {
                        return $this->applyPatch( $patch, $fullpath, "Table $table contains $field field. Dropping" );
                } else {
@@ -660,12 +732,16 @@ abstract class DatabaseUpdater {
         * Drop an index from an existing table
         *
         * @param $table String: Name of the table to modify
-        * @param $index String: Name of the old index
+        * @param $index String: Name of the index
         * @param $patch String: Path to the patch file
         * @param $fullpath Boolean: Whether to treat $patch path as a relative or not
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function dropIndex( $table, $index, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                if ( $this->db->indexExists( $table, $index, __METHOD__ ) ) {
                        return $this->applyPatch( $patch, $fullpath, "Dropping $index index from table $table" );
                } else {
@@ -674,6 +750,48 @@ abstract class DatabaseUpdater {
                return true;
        }
 
+       /**
+        * Rename an index from an existing table
+        *
+        * @param $table String: Name of the table to modify
+        * @param $oldIndex String: Old name of the index
+        * @param $newIndex String: New name of the index
+        * @param $skipBothIndexExistWarning Boolean: Whether to warn if both the old and the new indexes exist.
+        * @param $patch String: Path to the patch file
+        * @param $fullpath Boolean: Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
+        */
+       protected function renameIndex( $table, $oldIndex, $newIndex, $skipBothIndexExistWarning, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
+               // First requirement: the table must exist
+               if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
+                       $this->output( "...skipping: '$table' table doesn't exist yet.\n" );
+                       return true;
+               }
+
+               // Second requirement: the new index must be missing
+               if ( $this->db->indexExists( $table, $newIndex, __METHOD__ ) ) {
+                       $this->output( "...index $newIndex already set on $table table.\n" );
+                       if ( !$skipBothIndexExistWarning && $this->db->indexExists( $table, $oldIndex, __METHOD__ ) ) {
+                               $this->output( "...WARNING: $oldIndex still exists, despite it has been renamed into $newIndex (which also exists).\n" .
+                                       "            $oldIndex should be manually removed if not needed anymore.\n" );
+                       }
+                       return true;
+               }
+
+               // Third requirement: the old index must exist
+               if ( !$this->db->indexExists( $table, $oldIndex, __METHOD__ ) ) {
+                       $this->output( "...skipping: index $oldIndex doesn't exist.\n" );
+                       return true;
+               }
+
+               // Requirements have been satisfied, patch can be applied
+               return $this->applyPatch( $patch, $fullpath, "Renaming index $oldIndex into $newIndex to table $table" );
+       }
+
        /**
         * If the specified table exists, drop it, or execute the
         * patch if one is provided.
@@ -686,6 +804,10 @@ abstract class DatabaseUpdater {
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        public function dropTable( $table, $patch = false, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                if ( $this->db->tableExists( $table, __METHOD__ ) ) {
                        $msg = "Dropping table $table";
 
@@ -713,6 +835,10 @@ abstract class DatabaseUpdater {
         * @return Boolean false if this was skipped because schema changes are skipped
         */
        public function modifyField( $table, $field, $patch, $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                $updateKey = "$table-$field-$patch";
                if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
                        $this->output( "...$table table does not exist, skipping modify field patch.\n" );
index d2ebd85..ca6c5d6 100644 (file)
@@ -626,6 +626,7 @@ Add dir="ltr" to the <nowiki><code></nowiki> for right-to-left languages.',
 * $1 is the default value for scriptpath.',
        'config-no-cli-uploads-check' => 'CLI = [[w:Command-line interface|command-line interface]] (i.e. the installer runs as a command-line script, not using HTML interface via an internet browser)',
        '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-help' => '{{doc-singularthey}}',
        '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.',
@@ -782,8 +783,8 @@ See also:
        'config-download-localsettings' => 'The link text used in the download link in config-install-done.',
        'config-help' => 'This is used in help boxes.
 {{Identical|Help}}',
-       'mainpagetext' => 'Along with {{msg|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.',
-       'mainpagedocfooter' => 'Along with {{msg|mainpagetext}}, the text you will see on the Main Page when your wiki is installed.
+       'mainpagetext' => 'Along with {{msg-mw|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.',
+       'mainpagedocfooter' => 'Along with {{msg-mw|mainpagetext}}, the text you will see on the Main Page when your wiki is installed.
 This might be a good place to put information about <nowiki>{{GRAMMAR:}}</nowiki>. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/fi]] for an example. For languages having grammatical distinctions and not having an appropriate <nowiki>{{GRAMMAR:}}</nowiki> software available, a suggestion to check and possibly amend the messages having <nowiki>{{SITENAME}}</nowiki> may be valuable. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/ksh]] for an example.',
 );
 
@@ -4273,12 +4274,15 @@ $messages['dtp'] = array(
 
 /** Greek (Ελληνικά)
  * @author Glavkos
+ * @author Protnet
  * @author ZaDiak
  */
 $messages['el'] = array(
+       'config-desc' => 'Το πρόγραμμα εγκατάστασης για το MediaWiki',
+       'config-title' => 'Εγκατάσταση MediaWiki $1',
        'config-information' => 'Πληροφορίες',
        'config-your-language' => 'Η γλώσσα σας:',
-       'config-wiki-language' => 'Γλώσσα βίκι:',
+       'config-wiki-language' => 'Γλώσσα του wiki:',
        'config-back' => '← Πίσω',
        'config-continue' => 'Συνέχεια →',
        'config-page-language' => 'Γλώσσα',
@@ -4292,14 +4296,15 @@ $messages['el'] = array(
        'config-page-upgradedoc' => 'Αναβάθμιση',
        'config-page-existingwiki' => 'Υπάρχον βίκι',
        'config-restart' => 'Ναι, κάντε επανεκκίνηση',
-       'config-env-php' => 'Το PHP $1 εγκαταστάθηκε.',
+       'config-env-php' => 'H PHP $1 είναι εγκατεστημένη.',
        'config-db-type' => 'Τύπος βάσης δεδομένων:',
        'config-db-host' => 'Φιλοξενία βάσης δεδομένων:',
        'config-db-wiki-settings' => 'Αναγνώριση αυτού του βίκι',
        'config-db-name' => 'Όνομα βάσης δεδομένων:',
-       'config-db-install-account' => 'Λογαριασμός χρήστη προς εγκατάσταση',
+       'config-db-install-account' => 'Λογαριασμός χρήστη για την εγκατάσταση',
        'config-db-username' => 'Όνομα χρήστη βάσης δεδομένων:',
        'config-db-password' => 'Κωδικός πρόσβασης βάσης δεδομένων:',
+       'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 δυαδικό',
        'config-header-mysql' => 'Ρυθμίσεις MySQL',
        'config-header-postgres' => 'Ρυθμίσεις PostgreSQL',
        'config-header-sqlite' => 'Ρυθμίσεις SQLite',
@@ -4308,10 +4313,10 @@ $messages['el'] = array(
        'config-invalid-db-type' => 'Μη έγκυρος τύπος βάσης δεδομένων',
        'config-mysql-utf8' => 'UTF-8',
        'config-site-name' => 'Όνομα του βίκι:',
-       'config-site-name-blank' => 'Î\95ιÏ\83άγεÏ\84ε Î­Î½Î± όνομα ιστοχώρου.',
+       'config-site-name-blank' => 'Î\95ιÏ\83αγάÏ\84ε όνομα ιστοχώρου.',
        'config-project-namespace' => 'Περιοχή ονόματος εγχειρήματος:',
        'config-ns-generic' => 'Εγχείρημα',
-       'config-ns-site-name' => 'Ίδιο με το όνομα βίκι: $1',
+       'config-ns-site-name' => 'Ίδιο με το όνομα του wiki: $1',
        'config-ns-other' => 'Άλλο (προσδιορίστε)',
        'config-admin-box' => 'Λογαριασμός διαχειριστή',
        'config-admin-name' => 'Το όνομά σας:',
@@ -4319,12 +4324,12 @@ $messages['el'] = array(
        'config-admin-password-confirm' => 'Επανάληψη κωδικού πρόσβασης:',
        'config-admin-email' => 'Διεύθυνση ηλεκτρονικού ταχυδρομείου:',
        'config-optional-continue' => 'Να ερωτηθώ περισσότερες ερωτήσεις.',
-       'config-profile-wiki' => 'Παραδοσιακό βίκι',
+       'config-profile-wiki' => 'Παραδοσιακό wiki',
        'config-profile-no-anon' => 'Απαιτείται η δημιουργία λογαριασμού',
-       'config-profile-private' => 'Ιδιωτικό βίκι',
+       'config-profile-private' => 'Ιδιωτικό wiki',
        'config-email-settings' => 'Ρυθμίσεις ηλεκτρονικού ταχυδρομείου',
-       'config-upload-settings' => 'Î\95Ï\80ιÏ\86οÏ\81Ï\84Ï\8eÏ\83ειÏ\82 εικόνων και άλλων αρχείων',
-       'config-upload-enable' => 'Î\95νεÏ\81γοÏ\80οιήÏ\83Ï\84ε Ï\84ην ÎµÏ\80ιÏ\86Ï\8cÏ\81Ï\84Ï\89Ï\83η αρχείων',
+       'config-upload-settings' => 'Î\91νέβαÏ\83μα εικόνων και άλλων αρχείων',
+       'config-upload-enable' => 'Î\95νεÏ\81γοÏ\80οιήÏ\83Ï\84ε Ï\84ο Î±Î½Î­Î²Î±Ï\83μα αρχείων',
        'config-logo' => 'Διεύθυνση URL λογότυπου:',
        'config-cc-again' => 'Επιλέξτε ξανά...',
        'config-extensions' => 'Επεκτάσεις',
@@ -9837,7 +9842,8 @@ I seguenti collegamenti sono in lingua inglese:
 
 * [//www.mediawiki.org/wiki/Manual:Configuration_settings Impostazioni di configurazione]
 * [//www.mediawiki.org/wiki/Manual:FAQ Domande frequenti su MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]", # Fuzzy
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Localizza MediaWiki nella tua lingua]",
 );
 
 /** Japanese (日本語)
@@ -9931,15 +9937,15 @@ MediaWikiのインストールはできません。',
        '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 正規化]をお読みください。",
-       'config-unicode-update-warning' => "'''警告''':インストールされているバージョンのUnicode正規化ラッパーは、[http://site.icu-project.org/ ICUプロジェクト]のライブラリの古いバージョンを使用しています。
-Unicodeを少しでも利用する可能性があるなら、[//www.mediawiki.org/wiki/Unicode_normalization_considerations アップグレード]する必要があります。",
+       'config-unicode-update-warning' => "'''警告''': インストールされているバージョンの Unicode 正規化ラッパーは、[http://site.icu-project.org/ ICU プロジェクト]のライブラリの古いバージョンを使用しています。
+Unicode を少しでも利用する可能性がある場合は、[//www.mediawiki.org/wiki/Unicode_normalization_considerations アップグレード]してください。",
        'config-no-db' => '適切なデータベース ドライバーが見つかりませんでした! PHP にデータベース ドライバーをインストールする必要があります。
 以下の種類のデータベースに対応しています: $1
 
 共有サーバーを使用している場合は、適切なデータベース ドライバーのインストールを、サーバーの管理者に依頼してください。
 PHP を自分でコンパイルした場合は、例えば <code>./configure --with-mysql</code> を実行して、データベース クライアントを使用できるように再設定してください。
 Debian または Ubuntu のパッケージから PHP をインストールした場合は、php5-mysql モジュールもインストールする必要があります。',
-       'config-no-fts3' => "'''警告''':SQLiteは[//sqlite.org/fts3.html FTS3]モジュールなしでコンパイルされており、検索機能はこのバックエンドで利用不可能になります。",
+       'config-no-fts3' => "'''警告''': SQLite は [//sqlite.org/fts3.html FTS3] モジュールなしでコンパイルされており、このバックエンドでは検索機能は利用できなくなります。",
        'config-register-globals' => "'''警告:PHPの<code>[http://php.net/register_globals register_globals]</code>オプションが有効になっています。'''
 '''可能なら無効化してください。'''
 MediaWikiは動作しますが、サーバーは、潜在的なセキュリティ脆弱性を露呈します。",
@@ -9971,7 +9977,7 @@ MediaWiki を正しく動作させるには、UTF-8 対応が必要です。",
        '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-no-cache' => "'''警告:''' [http://www.php.net/apc APC]、[http://xcache.lighttpd.net/ XCache]、[http://www.iis.net/download/WinCacheForPhp WinCache] のいずれも見つかりませんでした。
 オブジェクトのキャッシュは有効化されません。",
        'config-diff3-bad' => 'GNU diff3 が見つかりません。',
        'config-imagemagick' => 'ImageMagickが見つかりました:<code>$1</code>。
@@ -9985,7 +9991,7 @@ MediaWiki を正しく動作させるには、UTF-8 対応が必要です。",
        'config-no-cli-uri' => "'''警告''': --scriptpath が指定されていないため、既定値 <code>$1</code> を使用します。",
        'config-using-server' => 'サーバー名「<nowiki>$1</nowiki>」を使用しています。',
        'config-using-uri' => 'サーバー URL「<nowiki>$1$2</nowiki>」を使用しています。',
-       'config-uploads-not-safe' => "'''警告:'''アップロードの既定ディレクトリ <code>$1</code> に、任意のスクリプト実行に関する脆弱性があります。
+       'config-uploads-not-safe' => "'''警告:''' アップロードの既定ディレクトリ <code>$1</code> に、任意のスクリプト実行に関する脆弱性があります。
 MediaWiki はアップロードされたファイルのセキュリティ上の脅威を確認しますが、アップロードを有効化する前に、[//www.mediawiki.org/wiki/Manual:Security#Upload_security このセキュリティ上の脆弱性を解決する]ことを強く推奨します。",
        'config-brokenlibxml' => 'このシステムで使われているPHPとlibxml2のバージョンのこの組み合わせにはバグがあります。具体的には、MediaWikiやその他のウェブアプリケーションでhiddenデータが破損する可能性があります。
 PHPを5.2.9かそれ以降のバージョンに、libxml2を2.7.3かそれ以降のバージョンにアップグレードしてください([//bugs.php.net/bug.php?id=45996 PHPでのバグ情報])。
@@ -10313,12 +10319,12 @@ GFDLは有効なライセンスですが、内容を理解するのは困難で
        'config-install-user-missing-create' => '指定したユーザー「$1」は存在しません。
 アカウントを作成する場合は、下の「アカウント作成」をクリックしてください。',
        'config-install-tables' => 'テーブルの作成',
-       'config-install-tables-exist' => "'''警告''':MediaWikiテーブルは既に存在するようです。
-作成を飛ばします。",
+       'config-install-tables-exist' => "'''警告''': MediaWiki テーブルは既に存在するようです。
+作成を省略します。",
        '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-stats' => '統計情報の初期化',
        'config-install-keys' => '秘密鍵の生成',
@@ -10828,7 +10834,7 @@ MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전
 PHP 파일이 있는 곳을 우리가 맡길 수 없는 이유는 웹을 통해 접근할 수 없다는 것입니다.
 
 설치 마법사가 이과 함께 .htaccess 파일을 만들지만 거기서 실패하면 누군가는 원본 데이터베이스에 접근하는 데 실패합니다.
-원본 사용자 데이터(이메일 주소, 암호 해시) 뿐만 아니라 삭제된 개정판과 위키의 다른 제한된 데이터를 포함합니다.
+원본 사용자 데이터(이메일 주소, 해시한 비밀번호) 뿐만 아니라 삭제된 개정판과 위키의 다른 제한된 데이터를 포함합니다.
 
 <code>/var/lib/mediawiki/yourwiki</code>와 같이 모두 다른 곳에서 데이터베이스를 넣어보도록 하세요.',
        'config-oracle-def-ts' => '기본 테이블공간:',
@@ -10907,7 +10913,7 @@ chmod a+w $3</pre>',
 이제 [$1 위키를 시작]할 수 있습니다.
 
 만약 <code>LocalSettings.php</code> 파일을 다시 만들기를 원하면 아래의 버튼을 클릭하세요.
\9d´ê²\83ì\9d\80 ì\9c\84í\82¤ì\97\90 ë¬¸ì \9cê°\80 ì\9e\88ì§\80 ì\95\8aë\8a\94 í\95\9c '''ê¶\8cì\9e¥í\95\98ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤'''.",
+위키에 문제가 있지 않는 한 '''권장하지 않습니다'''.",
        'config-upgrade-done-no-regenerate' => '업그레이드가 완료되었습니다.
 
 이제 [$1 위키를 시작]할 수 있습니다.',
@@ -12991,9 +12997,13 @@ $messages['ms'] = array(
        'config-desc' => 'Pemasang MediaWiki',
        'config-title' => 'Pasangan MediaWiki $1',
        'config-information' => 'Maklumat',
+       'config-localsettings-key' => 'Kunci naik taraf:',
+       'config-localsettings-badkey' => 'Kunci yang anda berikan tidak betul.',
+       'config-session-error' => 'Ralat ketika memulakan sesi: $1',
        'config-your-language' => 'Bahasa kamu:',
        'config-your-language-help' => 'Pilihkan bahasa untuk digunakan dalam proses pemasangan ini.',
        'config-wiki-language' => 'Bahasa wiki:',
+       'config-wiki-language-help' => 'Pilih bahasa utama wiki yang bakal dicipta ini.',
        'config-back' => '← Undur',
        'config-continue' => 'Teruskan →',
        'config-page-language' => 'Bahasa',
@@ -13005,8 +13015,12 @@ $messages['ms'] = array(
        'config-page-options' => 'Pilihan',
        'config-page-install' => 'Pasang',
        'config-page-complete' => 'Selesai!',
+       'config-page-restart' => 'Mulakan semula pemasangan',
+       'config-page-readme' => 'Baca saya',
+       'config-page-releasenotes' => 'Catatan keluaran',
        'config-page-copying' => 'Sedang menyalin',
        'config-page-upgradedoc' => 'Sedang menaik taraf',
+       'config-page-existingwiki' => 'Wiki sedia ada',
        'config-env-php' => 'PHP $1 dipasang.',
        'config-env-php-toolow' => 'PHP $1 dipasang.
 Bagaimanapun, MediaWiki memerlukan PHP $2 ke atas.',
@@ -15680,19 +15694,19 @@ S'a veul anco' fé dle modìfiche, ch'A sgnaca su andré.",
 Sigurte che l\'utent "$1" a peussa scrive lë schema "$2".',
        'config-install-pg-commit' => 'Salvé ij cambi.',
        'config-install-pg-plpgsql' => 'Contròl dël langagi PL/pgSQL',
-       'config-pg-no-plpgsql' => 'It deuve istalé ël lenguagi PL/pgSQL ant ël database $1',
-       'config-pg-no-create-privs' => "Ël cont ch'it l'has specificà për l'istalassion a l'ha pa basta privilegi për creé un cont.",
-       'config-pg-not-in-role' => "Ël cont ch'it l'has specificà për l'utent ëd la ragnà a esist già.
-Ël cont ch'it l'has specificà për l'istalassion a l'é pa un superutent e a l'é pa un mémber dla partìa dj'utent dla Ragnà, parèj as peulo pa creesse oget possedù da l'utent dla Ragnà.
+       'config-pg-no-plpgsql' => 'A dev istalé ël langage PL/pgSQL ant la base ëd dàit $1',
+       'config-pg-no-create-privs' => "Ël cont ch'a l'ha specificà për l'istalassion a l'ha pa basta 'd privilegi për creé un cont.",
+       'config-pg-not-in-role' => "Ël cont ch'a l'ha specificà për l'utent ëd la ragnà a esist già.
+Ël cont ch'a l'has specificà për l'istalassion a l'é pa un superutent e a l'é pa un mémber dla partìa dj'utent dla Ragnà, parèj a peul pa creé dj'oget ch'a apartenent a l'utent dla Ragnà.
 
-MediaWiki al moment a veul che le tabele a sia possedùe da l'utent dla Ragnà. Për piasì specìfica n'àutr nòm dël cont dla Ragnà, o sgnaca \"andré\" e specìfica n'utent d'istalassion possibilment privilegià.",
+MediaWiki al moment a ciama che le tàule a sia possedùe da n'utent dla Ragnà. Për piasì, ch'a specìfica n'àutr nòm ëd cont dla Ragnà, o ch'a sgnaca ansima a \"andré\" e ch'a specìfica n'utent ch'a l'ha ij privilegi ch'a basto për l'anstalassion.",
        'config-install-user' => "Creassion ëd n'utent ëd la base ëd dàit",
        'config-install-user-alreadyexists' => 'L\'utent "$1" a esist già',
-       'config-install-user-create-failed' => 'Creé l\'utent "$1" a l\'ha falì: $2',
+       'config-install-user-create-failed' => "Faliment ant la creassion ëd l'utent «$1»: $2",
        'config-install-user-grant-failed' => 'Falì a dé ij përmess a l\'utent "$1": $2',
        'config-install-user-missing' => 'L\'utent specificà "$1" a esist pa.',
-       'config-install-user-missing-create' => 'L\'utent specificà "$1" a esist pa.
-Për piasì sgnaca la casela "crea cont" sota s\'it veule creelo.',
+       'config-install-user-missing-create' => "L'utent specificà «$1» a esist pa.
+Për piasì, ch'a selession-a la casela «cont da creé» sì-sota s'a veul creelo.",
        'config-install-tables' => 'Creassion dle tàule',
        'config-install-tables-exist' => "'''Avis''': A smija che le tàule ëd mediaWiki a esisto già.
 Sauté la creassion.",
@@ -15701,15 +15715,15 @@ Sauté la creassion.",
        'config-install-interwiki-list' => "As peul pa trovesse l'archivi <code>interwiki.list</code>.",
        'config-install-interwiki-exists' => "'''Avis''': La tàula interwiki a smija ch'a l'abia già dj'element.
 Për stàndard, la lista a sarà sautà.",
-       'config-install-stats' => 'Inissialisé statìstiche',
+       'config-install-stats' => 'Inissialisassion dle statìstiche',
        'config-install-keys' => 'Generassion ëd le ciav segrete',
-       'config-insecure-keys' => "'''Avis:''' {{PLURAL:$2|Na ciav sigura|Ciav sigure}} ($1) generà an mente dl'istalassion {{PLURAL:$2|a l'é|a son}} pa completament sigure. Considera ëd cangé{{PLURAL:$2|la|je}} manualment.",
+       'config-insecure-keys' => "'''Avis:''' {{PLURAL:$2|Na ciav sigura|Dle ciav sigure}} ($1) generà durant l'istalassion {{PLURAL:$2|a l'é|a son}} pa completament sigure. Ch'a consìdera ëd modifiche{{PLURAL:$2|la|je}} manualment.",
        'config-install-sysop' => "Creassion dël cont ëd l'utent aministrator",
        'config-install-subscribe-fail' => 'As peul pa sot-scrivse mediawiki-announce: $1',
        'config-install-subscribe-notpossible' => "cURL a l'é pa istalà e allow_url_fopen a l'é pa disponìbil.",
-       'config-install-mainpage' => 'Creassion pagina prinsipal con contnù predefinì',
-       'config-install-extension-tables' => 'Creassion tabele për estension abilità',
-       'config-install-mainpage-failed' => 'As peul pa inserisse la pagina prinsipal: $1',
+       'config-install-mainpage' => 'Creassion ëd la pàgina prinsipal con un contnù predefinì',
+       'config-install-extension-tables' => "Creassion ëd tàule për j'estension abilità",
+       'config-install-mainpage-failed' => 'As peul pa inserisse la pàgina prinsipal: $1',
        'config-install-done' => "'''Congratulassion!'''
 A l'ha instalà për da bin mediaWiki.
 
@@ -16639,10 +16653,22 @@ Puteți sări peste configurarea rămasă și să instalați wikiul chiar acum.'
  * @author Joetaras
  */
 $messages['roa-tara'] = array(
+       'config-desc' => "'U 'nstallatore de MediaUicchi",
+       'config-title' => 'Installazzione de MediaUicchi $1',
+       'config-information' => "'Mbormaziune",
+       'config-localsettings-key' => 'Chiave de aggiornamende:',
+       'config-page-language' => 'Lènghe',
+       'config-page-name' => 'Nome',
        'config-db-charset' => "'Nzieme de carattere d'u database",
        'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binary',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
        'config-charset-mysql4' => 'MySQL 4.0 backwards-compatible UTF-8',
+       'config-db-port' => "Porte d'u database:",
+       'config-db-schema' => 'Scheme pe MediaUicchi:',
+       'config-type-mysql' => 'MySQL',
+       'config-type-postgres' => 'PostgreSQL',
+       'config-type-sqlite' => 'SQLite',
+       'config-type-oracle' => 'Oracle',
        'config-install-step-done' => 'fatte',
        'config-install-step-failed' => 'fallite',
        'config-install-extensions' => "'Ngludenne le estenziune",
index bbeb685..da638de 100644 (file)
@@ -203,10 +203,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addField', 'revision',      'rev_sha1',         'patch-rev_sha1.sql' ),
                        array( 'addField', 'archive',       'ar_sha1',          'patch-ar_sha1.sql' ),
                        array( 'addIndex', 'page', 'page_redirect_namespace_len', 'patch-page_redirect_namespace_len.sql' ),
-                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase.sql' ),
                        array( 'addField',      'uploadstash',  'us_chunk_inx',         'patch-uploadstash_chunk.sql' ),
                        array( 'addfield', 'job',           'job_timestamp',    'patch-jobs-add-timestamp.sql' ),
-                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
 
                        // 1.20
                        array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
@@ -228,6 +226,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addField', 'job',           'job_attempts',       'patch-job_attempts.sql' ),
                        array( 'doEnableProfiling' ),
                        array( 'addField', 'uploadstash',      'us_props',      'patch-uploadstash-us_props.sql' ),
+                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase-255.sql' ),
+                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase-255.sql' ),
                );
        }
 
@@ -240,6 +240,10 @@ class MysqlUpdater extends DatabaseUpdater {
         * @param $patchFile String: path to the patch to correct the field
         */
        protected function checkBin( $table, $field, $patchFile ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                $tableName = $this->db->tableName( $table );
                $res = $this->db->query( "SELECT $field FROM $tableName LIMIT 0", __METHOD__ );
                $flags = explode( ' ', mysql_field_flags( $res->result, 0 ) );
@@ -260,6 +264,10 @@ class MysqlUpdater extends DatabaseUpdater {
         * @return Boolean
         */
        protected function indexHasField( $table, $index, $field ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
                $info = $this->db->indexInfo( $table, $index, __METHOD__ );
                if ( $info ) {
                        foreach ( $info as $row ) {
@@ -279,6 +287,10 @@ class MysqlUpdater extends DatabaseUpdater {
        protected function doInterwikiUpdate() {
                global $IP;
 
+               if ( !$this->doTable( 'interwiki' ) ) {
+                       return true;
+               }
+
                if ( $this->db->tableExists( "interwiki", __METHOD__ ) ) {
                        $this->output( "...already have interwiki table\n" );
                        return;
@@ -567,6 +579,10 @@ class MysqlUpdater extends DatabaseUpdater {
        }
 
        protected function doUserUniqueUpdate() {
+               if ( !$this->doTable( 'user' ) ) {
+                       return true;
+               }
+
                $duper = new UserDupes( $this->db, array( $this, 'output' ) );
                if ( $duper->hasUniqueIndex() ) {
                        $this->output( "...already have unique user_name index.\n" );
@@ -580,6 +596,10 @@ class MysqlUpdater extends DatabaseUpdater {
        }
 
        protected function doUserGroupsUpdate() {
+               if ( !$this->doTable( 'user_groups' ) ) {
+                       return true;
+               }
+
                if ( $this->db->tableExists( 'user_groups', __METHOD__ ) ) {
                        $info = $this->db->fieldInfo( 'user_groups', 'ug_group' );
                        if ( $info->type() == 'int' ) {
@@ -779,12 +799,21 @@ class MysqlUpdater extends DatabaseUpdater {
 
        protected function doEnableProfiling() {
                global $wgProfileToDatabase;
+
+               if ( !$this->doTable( 'profiling' ) ) {
+                       return true;
+               }
+
                if ( $wgProfileToDatabase === true && ! $this->db->tableExists( 'profiling', __METHOD__ ) ) {
                        $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
                }
        }
 
        protected function doMaybeProfilingMemoryUpdate() {
+               if ( !$this->doTable( 'profiling' ) ) {
+                       return true;
+               }
+
                if ( !$this->db->tableExists( 'profiling', __METHOD__ ) ) {
                        return true;
                } elseif ( $this->db->fieldExists( 'profiling', 'pf_memory', __METHOD__ ) ) {
@@ -856,6 +885,10 @@ class MysqlUpdater extends DatabaseUpdater {
        }
 
        protected function doUserNewTalkTimestampNotNull() {
+               if ( !$this->doTable( 'user_newtalk' ) ) {
+                       return true;
+               }
+
                $info = $this->db->fieldInfo( 'user_newtalk', 'user_last_timestamp' );
                if ( $info === false ) {
                        return;
index 86b52d6..8f43a6d 100644 (file)
@@ -59,12 +59,10 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'addField', 'archive', 'ar_sha1', 'patch-ar_sha1_field.sql' ),
                        array( 'doRemoveNotNullEmptyDefaults2' ),
                        array( 'addIndex', 'page', 'i03', 'patch-page_redirect_namespace_len.sql' ),
-                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase.sql' ),
                        array( 'addField', 'uploadstash', 'us_chunk_inx', 'patch-us_chunk_inx_field.sql' ),
                        array( 'addField', 'job', 'job_timestamp', 'patch-job_timestamp_field.sql' ),
                        array( 'addIndex', 'job', 'i02', 'patch-job_timestamp_index.sql' ),
                        array( 'doPageRestrictionsPKUKFix' ),
-                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
 
                        //1.20
                        array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ),
@@ -84,6 +82,8 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'addField', 'job',           'job_token',         'patch-job_token.sql' ),
                        array( 'addField', 'job',           'job_attempts',       'patch-job_attempts.sql' ),
                        array( 'addField', 'uploadstash',      'us_props',      'patch-uploadstash-us_props.sql' ),
+                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase-255.sql' ),
+                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase-255.sql' ),
 
                        // KEEP THIS AT THE BOTTOM!!
                        array( 'doRebuildDuplicateFunction' ),
index 1d6bca0..b5cd640 100644 (file)
@@ -82,10 +82,8 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addField', 'revision',      'rev_sha1',         'patch-rev_sha1.sql' ),
                        array( 'addField', 'archive',       'ar_sha1',          'patch-ar_sha1.sql' ),
                        array( 'addIndex', 'page', 'page_redirect_namespace_len', 'patch-page_redirect_namespace_len.sql' ),
-                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase.sql' ),
                        array( 'addField',      'uploadstash',  'us_chunk_inx',         'patch-uploadstash_chunk.sql' ),
                        array( 'addfield', 'job',           'job_timestamp',    'patch-jobs-add-timestamp.sql' ),
-                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ug_group-length-increase.sql' ),
 
                        // 1.20
                        array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
@@ -108,6 +106,8 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addField', 'job',           'job_attempts',      'patch-job_attempts.sql' ),
                        array( 'doEnableProfiling' ),
                        array( 'addField', 'uploadstash',      'us_props',      'patch-uploadstash-us_props.sql' ),
+                       array( 'modifyField', 'user_groups', 'ug_group', 'patch-ug_group-length-increase-255.sql' ),
+                       array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase-255.sql' ),
                );
        }
 
index ffd5d95..17f6648 100644 (file)
@@ -49,19 +49,19 @@ abstract class JobQueue {
        /**
         * Get a job queue object of the specified type.
         * $params includes:
-        *   class    : What job class to use (determines job type)
-        *   wiki     : wiki ID of the wiki the jobs are for (defaults to current wiki)
-        *   type     : The name of the job types this queue handles
-        *   order    : Order that pop() selects jobs, one of "fifo", "timestamp" or "random".
-        *              If "fifo" is used, the queue will effectively be FIFO. Note that
-        *              job completion will not appear to be exactly FIFO if there are multiple
-        *              job runners since jobs can take different times to finish once popped.
-        *              If "timestamp" is used, the queue will at least be loosely ordered
-        *              by timestamp, allowing for some jobs to be popped off out of order.
-        *              If "random" is used, pop() will pick jobs in random order. This might be
-        *              useful for improving concurrency depending on the queue storage medium.
-        *   claimTTL : If supported, the queue will recycle jobs that have been popped
-        *              but not acknowledged as completed after this many seconds.
+        *   class    : What job class to use (determines job type)
+        *   wiki     : wiki ID of the wiki the jobs are for (defaults to current wiki)
+        *   type     : The name of the job types this queue handles
+        *   order    : Order that pop() selects jobs, one of "fifo", "timestamp" or "random".
+        *                If "fifo" is used, the queue will effectively be FIFO. Note that
+        *                job completion will not appear to be exactly FIFO if there are multiple
+        *                job runners since jobs can take different times to finish once popped.
+        *                If "timestamp" is used, the queue will at least be loosely ordered
+        *                by timestamp, allowing for some jobs to be popped off out of order.
+        *                If "random" is used, pop() will pick jobs in random order. This might be
+        *                useful for improving concurrency depending on the queue storage medium.
+        *   claimTTL : If supported, the queue will recycle jobs that have been popped
+        *                but not acknowledged as completed after this many seconds.
         *
         * Queue classes should throw an exception if they do not support the options given.
         *
@@ -96,7 +96,7 @@ abstract class JobQueue {
        }
 
        /**
-        * Quickly check if the queue is empty.
+        * Quickly check if the queue is empty (has no available jobs).
         * Queue classes should use caching if they are any slower without memcached.
         *
         * @return bool
@@ -115,12 +115,66 @@ abstract class JobQueue {
        abstract protected function doIsEmpty();
 
        /**
-        * Push a batch of jobs into the queue
+        * Get the number of available jobs in the queue.
+        * Queue classes should use caching if they are any slower without memcached.
+        *
+        * @return integer
+        */
+       final public function getSize() {
+               wfProfileIn( __METHOD__ );
+               $res = $this->doGetSize();
+               wfProfileOut( __METHOD__ );
+               return $res;
+       }
+
+       /**
+        * @see JobQueue::getSize()
+        * @return integer
+        */
+       abstract protected function doGetSize();
+
+       /**
+        * Get the number of acquired jobs (these are temporarily out of the queue).
+        * Queue classes should use caching if they are any slower without memcached.
+        *
+        * @return integer
+        */
+       final public function getAcquiredCount() {
+               wfProfileIn( __METHOD__ );
+               $res = $this->doGetAcquiredCount();
+               wfProfileOut( __METHOD__ );
+               return $res;
+       }
+
+       /**
+        * @see JobQueue::getAcquiredCount()
+        * @return integer
+        */
+       abstract protected function doGetAcquiredCount();
+
+       /**
+        * Push a single jobs into the queue.
+        * This does not require $wgJobClasses to be set for the given job type.
+        *
+        * @param $jobs Job|Array
+        * @param $flags integer Bitfield (supports JobQueue::QoS_Atomic)
+        * @throws MWException
+        * @return bool Returns false on failure
+        */
+       final public function push( $jobs, $flags = 0 ) {
+               $jobs = is_array( $jobs ) ? $jobs : array( $jobs );
+
+               return $this->batchPush( $jobs, $flags );
+       }
+
+       /**
+        * Push a batch of jobs into the queue.
+        * This does not require $wgJobClasses to be set for the given job type.
         *
         * @param $jobs array List of Jobs
         * @param $flags integer Bitfield (supports JobQueue::QoS_Atomic)
         * @throws MWException
-        * @return bool
+        * @return bool Returns false on failure
         */
        final public function batchPush( array $jobs, $flags = 0 ) {
                foreach ( $jobs as $job ) {
@@ -141,7 +195,8 @@ abstract class JobQueue {
        abstract protected function doBatchPush( array $jobs, $flags );
 
        /**
-        * Pop a job off of the queue
+        * Pop a job off of the queue.
+        * This requires $wgJobClasses to be set for the given job type.
         *
         * @return Job|bool Returns false on failure
         */
index 14c1dca..1c9c8a7 100644 (file)
  * @since 1.21
  */
 class JobQueueDB extends JobQueue {
-       const CACHE_TTL      = 300; // integer; seconds to cache queue information
-       const MAX_AGE_PRUNE  = 604800; // integer; seconds a job can live once claimed
-       const MAX_ATTEMPTS   = 3; // integer; number of times to try a job
-       const MAX_JOB_RANDOM = 2147483647; // integer; 2^31 - 1, used for job_random
+       const CACHE_TTL_SHORT = 30; // integer; seconds to cache info without re-validating
+       const CACHE_TTL_LONG  = 300; // integer; seconds to cache info that is kept up to date
+       const MAX_AGE_PRUNE   = 604800; // integer; seconds a job can live once claimed
+       const MAX_ATTEMPTS    = 3; // integer; number of times to try a job
+       const MAX_JOB_RANDOM  = 2147483647; // integer; 2^31 - 1, used for job_random
+       const MAX_OFFSET      = 255; // integer; maximum number of rows to skip
+
+       protected $cluster = false; // string; name of an external DB cluster
+
+       /**
+        * Additional parameters include:
+        *   - cluster : The name of an external cluster registered via LBFactory.
+        *               If not specified, the primary DB cluster for the wiki will be used.
+        *               This can be overridden with a custom cluster so that DB handles will
+        *               be retrieved via LBFactory::getExternalLB() and getConnection().
+        * @param $params array
+        */
+       protected function __construct( array $params ) {
+               parent::__construct( $params );
+               $this->cluster = isset( $params['cluster'] ) ? $params['cluster'] : false;
+       }
 
        /**
         * @see JobQueue::doIsEmpty()
@@ -40,7 +57,7 @@ class JobQueueDB extends JobQueue {
        protected function doIsEmpty() {
                global $wgMemc;
 
-               $key = $this->getEmptinessCacheKey();
+               $key = $this->getCacheKey( 'empty' );
 
                $isEmpty = $wgMemc->get( $key );
                if ( $isEmpty === 'true' ) {
@@ -49,14 +66,63 @@ class JobQueueDB extends JobQueue {
                        return false;
                }
 
-               $found = $this->getSlaveDB()->selectField( // unclaimed job
+               list( $dbr, $scope ) = $this->getSlaveDB();
+               $found = $dbr->selectField( // unclaimed job
                        'job', '1', array( 'job_cmd' => $this->type, 'job_token' => '' ), __METHOD__
                );
-               $wgMemc->add( $key, $found ? 'false' : 'true', self::CACHE_TTL );
+               $wgMemc->add( $key, $found ? 'false' : 'true', self::CACHE_TTL_LONG );
 
                return !$found;
        }
 
+       /**
+        * @see JobQueue::doGetSize()
+        * @return integer
+        */
+       protected function doGetSize() {
+               global $wgMemc;
+
+               $key = $this->getCacheKey( 'size' );
+
+               $size = $wgMemc->get( $key );
+               if ( is_int( $size ) ) {
+                       return $size;
+               }
+
+               list( $dbr, $scope ) = $this->getSlaveDB();
+               $size = (int)$dbr->selectField( 'job', 'COUNT(*)',
+                       array( 'job_cmd' => $this->type, 'job_token' => '' ),
+                       __METHOD__
+               );
+               $wgMemc->set( $key, $size, self::CACHE_TTL_SHORT );
+
+               return $size;
+       }
+
+       /**
+        * @see JobQueue::doGetAcquiredCount()
+        * @return integer
+        */
+       protected function doGetAcquiredCount() {
+               global $wgMemc;
+
+               $key = $this->getCacheKey( 'acquiredcount' );
+
+               $count = $wgMemc->get( $key );
+               if ( is_int( $count ) ) {
+                       return $count;
+               }
+
+               list( $dbr, $scope ) = $this->getSlaveDB();
+               $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
+                       array( 'job_cmd' => $this->type, "job_token !={$dbr->addQuotes('')}" ),
+                       __METHOD__
+               );
+               $wgMemc->set( $key, $count, self::CACHE_TTL_SHORT );
+
+               return $count;
+       }
+
        /**
         * @see JobQueue::doBatchPush()
         * @param array $jobs
@@ -66,7 +132,7 @@ class JobQueueDB extends JobQueue {
         */
        protected function doBatchPush( array $jobs, $flags ) {
                if ( count( $jobs ) ) {
-                       $dbw = $this->getMasterDB();
+                       list( $dbw, $scope ) = $this->getMasterDB();
 
                        $rowSet = array(); // (sha1 => job) map for jobs that are de-duplicated
                        $rowList = array(); // list of jobs for jobs that are are not de-duplicated
@@ -81,11 +147,11 @@ class JobQueueDB extends JobQueue {
                        }
 
                        $atomic = ( $flags & self::QoS_Atomic );
-                       $key    = $this->getEmptinessCacheKey();
-                       $ttl    = self::CACHE_TTL;
+                       $key    = $this->getCacheKey( 'empty' );
+                       $ttl    = self::CACHE_TTL_LONG;
 
                        $dbw->onTransactionIdle(
-                               function() use ( $dbw, $rowSet, $rowList, $atomic, $key, $ttl
+                               function() use ( $dbw, $rowSet, $rowList, $atomic, $key, $ttl, $scope
                        ) {
                                global $wgMemc;
 
@@ -115,6 +181,8 @@ class JobQueueDB extends JobQueue {
                                                $dbw->insert( 'job', $rowBatch, __METHOD__ );
                                        }
                                        wfIncrStats( 'job-insert', count( $rows ) );
+                                       wfIncrStats( 'job-insert-duplicate',
+                                               count( $rowSet ) + count( $rowList ) - count( $rows ) );
                                } catch ( DBError $e ) {
                                        if ( $atomic ) {
                                                $dbw->rollback( __METHOD__ );
@@ -139,11 +207,11 @@ class JobQueueDB extends JobQueue {
        protected function doPop() {
                global $wgMemc;
 
-               if ( $wgMemc->get( $this->getEmptinessCacheKey() ) === 'true' ) {
+               if ( $wgMemc->get( $this->getCacheKey( 'empty' ) ) === 'true' ) {
                        return false; // queue is empty
                }
 
-               $dbw = $this->getMasterDB();
+               list( $dbw, $scope ) = $this->getMasterDB();
                $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
 
                $uuid = wfRandomString( 32 ); // pop attempt
@@ -160,13 +228,10 @@ class JobQueueDB extends JobQueue {
                                $rand = mt_rand( 0, self::MAX_JOB_RANDOM ); // encourage concurrent UPDATEs
                                $gte  = (bool)mt_rand( 0, 1 ); // find rows with rand before/after $rand
                                $row  = $this->claimRandom( $uuid, $rand, $gte );
-                               if ( !$row ) { // need to try the other direction
-                                       $row = $this->claimRandom( $uuid, $rand, !$gte );
-                               }
                        }
                        // Check if we found a row to reserve...
                        if ( !$row ) {
-                               $wgMemc->set( $this->getEmptinessCacheKey(), 'true', self::CACHE_TTL );
+                               $wgMemc->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
                                break; // nothing to do
                        }
                        wfIncrStats( 'job-pop' );
@@ -182,6 +247,7 @@ class JobQueueDB extends JobQueue {
                        $job->id = $row->job_id; // XXX: work around broken subclasses
                        // Flag this job as an old duplicate based on its "root" job...
                        if ( $this->isRootJobOldDuplicate( $job ) ) {
+                               wfIncrStats( 'job-pop-duplicate' );
                                $job = DuplicateJob::newFromJob( $job ); // convert to a no-op
                        }
                        break; // done
@@ -199,23 +265,55 @@ class JobQueueDB extends JobQueue {
         * @return Row|false
         */
        protected function claimRandom( $uuid, $rand, $gte ) {
-               $dbw  = $this->getMasterDB();
-               $ineq = $gte ? '>=' : '<=';
+               global $wgMemc;
+
+               list( $dbw, $scope ) = $this->getMasterDB();
+               // Check cache to see if the queue has <= OFFSET items
+               $tinyQueue = $wgMemc->get( $this->getCacheKey( 'small' ) );
 
                $row = false; // the row acquired
+               $invertedDirection = false; // whether one job_random direction was already scanned
                // This uses a replication safe method for acquiring jobs. One could use UPDATE+LIMIT
                // instead, but that either uses ORDER BY (in which case it deadlocks in MySQL) or is
                // not replication safe. Due to http://bugs.mysql.com/bug.php?id=6980, subqueries cannot
                // be used here with MySQL.
                do {
-                       $row = $dbw->selectRow( 'job', '*', // find a random job
-                               array(
-                                       'job_cmd'   => $this->type,
-                                       'job_token' => '',
-                                       "job_random {$ineq} {$dbw->addQuotes( $rand )}" ),
-                               __METHOD__
-                               // Bug 42614: "ORDER BY job_random" causes slowness on mysql for some reason
-                       );
+                       if ( $tinyQueue ) { // queue has <= MAX_OFFSET rows
+                               // For small queues, using OFFSET will overshoot and return no rows more often.
+                               // Instead, this uses job_random to pick a row (possibly checking both directions).
+                               $ineq = $gte ? '>=' : '<=';
+                               $dir  = $gte ? 'ASC' : 'DESC';
+                               $row  = $dbw->selectRow( 'job', '*', // find a random job
+                                       array(
+                                               'job_cmd'   => $this->type,
+                                               'job_token' => '', // unclaimed
+                                               "job_random {$ineq} {$dbw->addQuotes( $rand )}" ),
+                                       __METHOD__,
+                                       array( 'ORDER BY' => "job_random {$dir}" )
+                               );
+                               if ( !$row && !$invertedDirection ) {
+                                       $gte = !$gte;
+                                       $invertedDirection = true;
+                                       continue; // try the other direction
+                               }
+                       } else { // table *may* have >= MAX_OFFSET rows
+                               // Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU
+                               // in MySQL if there are many rows for some reason. This uses a small OFFSET
+                               // instead of job_random for reducing excess claim retries.
+                               $row = $dbw->selectRow( 'job', '*', // find a random job
+                                       array(
+                                               'job_cmd'   => $this->type,
+                                               'job_token' => '', // unclaimed
+                                       ),
+                                       __METHOD__,
+                                       array( 'OFFSET' => mt_rand( 0, self::MAX_OFFSET ) )
+                               );
+                               if ( !$row ) {
+                                       $tinyQueue = true; // we know the queue must have <= MAX_OFFSET rows
+                                       $wgMemc->set( $this->getCacheKey( 'small' ), 1, 30 );
+                                       continue; // use job_random
+                               }
+                       }
                        if ( $row ) { // claim the job
                                $dbw->update( 'job', // update by PK
                                        array(
@@ -245,7 +343,7 @@ class JobQueueDB extends JobQueue {
         * @return Row|false
         */
        protected function claimOldest( $uuid ) {
-               $dbw  = $this->getMasterDB();
+               list( $dbw, $scope ) = $this->getMasterDB();
 
                $row = false; // the row acquired
                do {
@@ -306,7 +404,7 @@ class JobQueueDB extends JobQueue {
         */
        protected function recycleStaleJobs() {
                $now   = time();
-               $dbw   = $this->getMasterDB();
+               list( $dbw, $scope ) = $this->getMasterDB();
                $count = 0; // affected rows
 
                if ( !$dbw->lock( "jobqueue-recycle-{$this->type}", __METHOD__, 1 ) ) {
@@ -341,6 +439,7 @@ class JobQueueDB extends JobQueue {
                                        __METHOD__
                                );
                                $count += $dbw->affectedRows();
+                               wfIncrStats( 'job-recycle', $dbw->affectedRows() );
                        }
                }
 
@@ -379,7 +478,7 @@ class JobQueueDB extends JobQueue {
                        throw new MWException( "Job of type '{$job->getType()}' has no ID." );
                }
 
-               $dbw = $this->getMasterDB();
+               list( $dbw, $scope ) = $this->getMasterDB();
                $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
 
                // Delete a row with a single DELETE without holding row locks over RTTs...
@@ -408,7 +507,8 @@ class JobQueueDB extends JobQueue {
                // deferred till "transaction idle", do the same here, so that the ordering is
                // maintained. Having only the de-duplication registration succeed would cause
                // jobs to become no-ops without any actual jobs that made them redundant.
-               $this->getMasterDB()->onTransactionIdle( function() use ( $params, $key ) {
+               list( $dbw, $scope ) = $this->getMasterDB();
+               $dbw->onTransactionIdle( function() use ( $params, $key, $scope ) {
                        global $wgMemc;
 
                        $timestamp = $wgMemc->get( $key ); // current last timestamp of this job
@@ -456,17 +556,34 @@ class JobQueueDB extends JobQueue {
        }
 
        /**
-        * @return DatabaseBase
+        * @return Array (DatabaseBase, ScopedCallback)
         */
        protected function getSlaveDB() {
-               return wfGetDB( DB_SLAVE, array(), $this->wiki );
+               return $this->getDB( DB_SLAVE );
        }
 
        /**
-        * @return DatabaseBase
+        * @return Array (DatabaseBase, ScopedCallback)
         */
        protected function getMasterDB() {
-               return wfGetDB( DB_MASTER, array(), $this->wiki );
+               return $this->getDB( DB_MASTER );
+       }
+
+       /**
+        * @param $index integer (DB_SLAVE/DB_MASTER)
+        * @return Array (DatabaseBase, ScopedCallback)
+        */
+       protected function getDB( $index ) {
+               $lb = ( $this->cluster !== false )
+                       ? wfGetLBFactory()->getExternalLB( $this->cluster, $this->wiki )
+                       : wfGetLB( $this->wiki );
+               $conn = $lb->getConnection( $index, array(), $this->wiki );
+               return array(
+                       $conn,
+                       new ScopedCallback( function() use ( $lb, $conn ) {
+                               $lb->reuseConnection( $conn );
+                       } )
+               );
        }
 
        /**
@@ -474,7 +591,7 @@ class JobQueueDB extends JobQueue {
         * @return array
         */
        protected function insertFields( Job $job ) {
-               $dbw = $this->getMasterDB();
+               list( $dbw, $scope ) = $this->getMasterDB();
                return array(
                        // Fields that describe the nature of the job
                        'job_cmd'       => $job->getType(),
@@ -495,9 +612,9 @@ class JobQueueDB extends JobQueue {
        /**
         * @return string
         */
-       private function getEmptinessCacheKey() {
+       private function getCacheKey( $property ) {
                list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
-               return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, 'isempty' );
+               return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, $property );
        }
 
        /**
index 10fe51c..cf0215b 100644 (file)
@@ -31,16 +31,24 @@ class JobQueueGroup {
        /** @var Array */
        protected static $instances = array();
 
+       /** @var ProcessCacheLRU */
+       protected $cache;
+
        protected $wiki; // string; wiki ID
 
-       const TYPE_DEFAULT = 1; // integer; job not in $wgJobTypesExcludedFromDefaultQueue
+       const TYPE_DEFAULT = 1; // integer; jobs popped by default
        const TYPE_ANY     = 2; // integer; any job
 
+       const USE_CACHE = 1; // integer; use process cache
+
+       const PROC_CACHE_TTL = 15; // integer; seconds
+
        /**
         * @param $wiki string Wiki ID
         */
        protected function __construct( $wiki ) {
                $this->wiki = $wiki;
+               $this->cache = new ProcessCacheLRU( 1 );
        }
 
        /**
@@ -55,6 +63,15 @@ class JobQueueGroup {
                return self::$instances[$wiki];
        }
 
+       /**
+        * Destroy the singleton instances
+        *
+        * @return void
+        */
+       public static function destroySingletons() {
+               self::$instances = array();
+       }
+
        /**
         * @param $type string
         * @return JobQueue Job queue object for a given queue type
@@ -73,7 +90,8 @@ class JobQueueGroup {
        }
 
        /**
-        * Insert jobs into the respective queues of with the belong
+        * Insert jobs into the respective queues of with the belong.
+        * This inserts the jobs into the queue specified by $wgJobTypeConf.
         *
         * @param $jobs Job|array A single Job or a list of Jobs
         * @throws MWException
@@ -93,30 +111,49 @@ class JobQueueGroup {
 
                $ok = true;
                foreach ( $jobsByType as $type => $jobs ) {
-                       if ( !$this->get( $type )->batchPush( $jobs ) ) {
+                       if ( !$this->get( $type )->push( $jobs ) ) {
                                $ok = false;
                        }
                }
 
+               if ( $this->cache->has( 'queues-ready', 'list' ) ) {
+                       $list = $this->cache->get( 'queues-ready', 'list' );
+                       if ( count( array_diff( array_keys( $jobsByType ), $list ) ) ) {
+                               $this->cache->clear( 'queues-ready' );
+                       }
+               }
+
                return $ok;
        }
 
        /**
         * Pop a job off one of the job queues
         *
-        * @param $type integer JobQueueGroup::TYPE_* constant
+        * @param $queueType integer JobQueueGroup::TYPE_* constant
+        * @param $flags integer Bitfield of JobQueueGroup::USE_* constants
         * @return Job|bool Returns false on failure
         */
-       public function pop( $type = self::TYPE_DEFAULT ) {
-               $types = ( $type == self::TYPE_DEFAULT )
-                       ? $this->getDefaultQueueTypes()
-                       : $this->getQueueTypes();
+       public function pop( $queueType = self::TYPE_DEFAULT, $flags = 0 ) {
+               if ( $flags & self::USE_CACHE ) {
+                       if ( !$this->cache->has( 'queues-ready', 'list', self::PROC_CACHE_TTL ) ) {
+                               $this->cache->set( 'queues-ready', 'list', $this->getQueuesWithJobs() );
+                       }
+                       $types = $this->cache->get( 'queues-ready', 'list' );
+               } else {
+                       $types = $this->getQueuesWithJobs();
+               }
+
+               if ( $queueType == self::TYPE_DEFAULT ) {
+                       $types = array_intersect( $types, $this->getDefaultQueueTypes() );
+               }
                shuffle( $types ); // avoid starvation
 
                foreach ( $types as $type ) { // for each queue...
                        $job = $this->get( $type )->pop();
-                       if ( $job ) {
-                               return $job; // found
+                       if ( $job ) { // found
+                               return $job;
+                       } else { // not found
+                               $this->cache->clear( 'queues-ready' );
                        }
                }
 
@@ -178,4 +215,17 @@ class JobQueueGroup {
                }
                return $types;
        }
+
+       /**
+        * @return Array List of default job types that have non-empty queues
+        */
+       public function getDefaultQueuesWithJobs() {
+               $types = array();
+               foreach ( $this->getDefaultQueueTypes() as $type ) {
+                       if ( !$this->get( $type )->isEmpty() ) {
+                               $types[] = $type;
+                       }
+               }
+               return $types;
+       }
 }
index 4996984..b4ea27d 100644 (file)
@@ -42,6 +42,7 @@ class NullJob extends Job {
                if ( !isset( $this->params['usleep'] ) ) {
                        $this->params['usleep'] = 0;
                }
+               $this->removeDuplicates = !empty( $this->params['removeDuplicates'] );
        }
 
        public function run() {
index 3029925..4f699f1 100644 (file)
@@ -891,9 +891,11 @@ class DeleteLogFormatter extends LogFormatter {
                $params = parent::getMessageParameters();
                $subtype = $this->entry->getSubtype();
                if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
+                       // $params[3] here is 'revision' for page revisions, 'oldimage' for file versions, or a comma-separated list of log_ids for log entries.
+                       // $subtype here is 'revision' for page revisions and file versions, or 'event' for log entries.
                        if (
-                               ($subtype === 'event' && count( $params ) === 6 ) ||
-                               ($subtype === 'revision' && isset( $params[3] ) && $params[3] === 'revision' )
+                               ( $subtype === 'event' && count( $params ) === 6 ) ||
+                               ( $subtype === 'revision' && isset( $params[3] ) && ( $params[3] === 'revision' || $params[3] === 'oldimage' ) )
                        ) {
                                $paramStart = $subtype === 'revision' ? 4 : 3;
 
index 1a0de21..6c558ce 100644 (file)
 class APCBagOStuff extends BagOStuff {
        /**
         * @param $key string
+        * @param $casToken[optional] int
         * @return mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                $val = apc_fetch( $key );
 
+               $casToken = $val;
+
                if ( is_string( $val ) ) {
                        if ( $this->isInteger( $val ) ) {
                                $val = intval( $val );
@@ -61,6 +64,18 @@ class APCBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               // APC's CAS functions only work on integers
+               throw new MWException( "CAS is not implemented in " . __CLASS__ );
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -72,6 +87,17 @@ class APCBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
+        * @return bool success
+        */
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
+       }
+
        public function incr( $key, $value = 1 ) {
                return apc_inc( $key, $value );
        }
@@ -79,19 +105,4 @@ class APCBagOStuff extends BagOStuff {
        public function decr( $key, $value = 1 ) {
                return apc_dec( $key, $value );
        }
-
-       /**
-        * @return Array
-        */
-       public function keys() {
-               $info = apc_cache_info( 'user' );
-               $list = $info['cache_list'];
-               $keys = array();
-
-               foreach ( $list as $entry ) {
-                       $keys[] = $entry['info'];
-               }
-
-               return $keys;
-       }
 }
index 7bbaff9..03b0d5b 100644 (file)
@@ -56,9 +56,10 @@ abstract class BagOStuff {
        /**
         * Get an item with the given key. Returns false if it does not exist.
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return mixed Returns false on failure
         */
-       abstract public function get( $key );
+       abstract public function get( $key, &$casToken = null );
 
        /**
         * Set an item.
@@ -69,6 +70,16 @@ abstract class BagOStuff {
         */
        abstract public function set( $key, $value, $exptime = 0 );
 
+       /**
+        * Check and set an item.
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @return bool success
+        */
+       abstract public function cas( $casToken, $key, $value, $exptime = 0 );
+
        /**
         * Delete an item.
         * @param $key string
@@ -78,31 +89,113 @@ abstract class BagOStuff {
        abstract public function delete( $key, $time = 0 );
 
        /**
+        * Merge changes into the existing cache value (possibly creating a new one)
+        *
         * @param $key string
-        * @param $timeout integer
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
         * @return bool success
         */
-       public function lock( $key, $timeout = 0 ) {
-               /* stub */
-               return true;
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
        }
 
        /**
+        * @see BagOStuff::merge()
+        *
         * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
         * @return bool success
         */
-       public function unlock( $key ) {
-               /* stub */
-               return true;
+       protected function mergeViaCas( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               do {
+                       $casToken = null; // passed by reference
+                       $currentValue = $this->get( $key, $casToken ); // get the old value
+                       $value = $callback( $this, $key, $currentValue ); // derive the new value
+
+                       if ( $value === false ) {
+                               $success = true; // do nothing
+                       } elseif ( $currentValue === false ) {
+                               // Try to create the key, failing if it gets created in the meantime
+                               $success = $this->add( $key, $value, $exptime );
+                       } else {
+                               // Try to update the key, failing if it gets changed in the meantime
+                               $success = $this->cas( $casToken, $key, $value, $exptime );
+                       }
+               } while ( !$success && --$attempts );
+
+               return $success;
        }
 
        /**
-        * @todo: what is this?
-        * @return Array
+        * @see BagOStuff::merge()
+        *
+        * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
+        * @return bool success
         */
-       public function keys() {
-               /* stub */
-               return array();
+       protected function mergeViaLock( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               if ( !$this->lock( $key, 60 ) ) {
+                       return false;
+               }
+
+               $currentValue = $this->get( $key ); // get the old value
+               $value = $callback( $this, $key, $currentValue ); // derive the new value
+
+               if ( $value === false ) {
+                       $success = true; // do nothing
+               } else {
+                       $success = $this->set( $key, $value, $exptime ); // set the new value
+               }
+
+               if ( !$this->unlock( $key ) ) {
+                       // this should never happen
+                       trigger_error( "Could not release lock for key '$key'." );
+               }
+
+               return $success;
+       }
+
+       /**
+        * @param $key string
+        * @param $timeout integer [optional]
+        * @return bool success
+        */
+       public function lock( $key, $timeout = 60 ) {
+               $timestamp = microtime( true ); // starting UNIX timestamp
+               if ( $this->add( "{$key}:lock", $timeout ) ) {
+                       return true;
+               }
+
+               $uRTT  = ceil( 1e6 * ( microtime( true ) - $timestamp ) ); // estimate RTT (us)
+               $sleep = 2*$uRTT; // rough time to do get()+set()
+
+               $locked   = false; // lock acquired
+               $attempts = 0; // failed attempts
+               do {
+                       if ( ++$attempts >= 3 && $sleep <= 1e6 ) {
+                               // Exponentially back off after failed attempts to avoid network spam.
+                               // About 2*$uRTT*(2^n-1) us of "sleep" happen for the next n attempts.
+                               $sleep *= 2;
+                       }
+                       usleep( $sleep ); // back off
+                       $locked = $this->add( "{$key}:lock", $timeout );
+               } while( !$locked );
+
+               return $locked;
+       }
+
+       /**
+        * @param $key string
+        * @return bool success
+        */
+       public function unlock( $key ) {
+               return $this->delete( "{$key}:lock" );
        }
 
        /**
index 36ced49..51ce777 100644 (file)
@@ -111,9 +111,10 @@ class DBABagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                wfProfileIn( __METHOD__ );
                wfDebug( __METHOD__ . "($key)\n" );
 
@@ -138,7 +139,10 @@ class DBABagOStuff extends BagOStuff {
                        $val = false;
                }
 
+               $casToken = $val;
+
                wfProfileOut( __METHOD__ );
+
                return $val;
        }
 
@@ -167,6 +171,42 @@ class DBABagOStuff extends BagOStuff {
                return $ret;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               wfProfileIn( __METHOD__ );
+               wfDebug( __METHOD__ . "($key)\n" );
+
+               $blob = $this->encode( $value, $exptime );
+
+               $handle = $this->getWriter();
+               if ( !$handle ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               // DBA is locked to any other write connection, so we can safely
+               // compare the current & previous value before saving new value
+               $val = dba_fetch( $key, $handle );
+               list( $val, $exptime ) = $this->decode( $val );
+               if ( $casToken !== $val ) {
+                       dba_close( $handle );
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               $ret = dba_replace( $key, $blob, $handle );
+               dba_close( $handle );
+
+               wfProfileOut( __METHOD__ );
+               return $ret;
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -264,23 +304,4 @@ class DBABagOStuff extends BagOStuff {
 
                return ( $value === false ) ? false : (int)$value;
        }
-
-       function keys() {
-               $reader = $this->getReader();
-               $k1 = dba_firstkey( $reader );
-
-               if ( !$k1 ) {
-                       return array();
-               }
-
-               $result[] = $k1;
-
-               $key = dba_nextkey( $reader );
-               while ( $key ) {
-                       $result[] = $key;
-                       $key = dba_nextkey( $reader );
-               }
-
-               return $result;
-       }
 }
index 60d0645..b8a1bc2 100644 (file)
@@ -65,9 +65,10 @@ class EhcacheBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return bool|mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                wfProfileIn( __METHOD__ );
                $response = $this->doItemRequest( $key );
                if ( !$response || $response['http_code'] == 404 ) {
@@ -97,6 +98,8 @@ class EhcacheBagOStuff extends BagOStuff {
                        return false;
                }
 
+               $casToken = $body;
+
                wfProfileOut( __METHOD__ );
                return $data;
        }
@@ -144,6 +147,20 @@ class EhcacheBagOStuff extends BagOStuff {
                return $result;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               // Not sure if we can implement CAS for ehcache. There appears to be CAS-support per
+               // http://ehcache.org/documentation/get-started/consistency-options#cas-cache-operations,
+               // but I can't find any docs for our current implementation.
+               throw new MWException( "CAS is not implemented in " . __CLASS__ );
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -164,6 +181,14 @@ class EhcacheBagOStuff extends BagOStuff {
                return $result;
        }
 
+       /**
+        * @see BagOStuff::merge()
+        * @return bool success
+        */
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
+       }
+
        /**
         * @param $key string
         * @return string
index bd28b24..cc57ff1 100644 (file)
@@ -30,9 +30,10 @@ class EmptyBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return bool
         */
-       function get( $key ) {
+       function get( $key, &$casToken = null ) {
                return false;
        }
 
@@ -46,6 +47,17 @@ class EmptyBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exp int
+        * @return bool
+        */
+       function cas( $casToken, $key, $value, $exp = 0 ) {
+               return true;
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -54,6 +66,17 @@ class EmptyBagOStuff extends BagOStuff {
        function delete( $key, $time = 0 ) {
                return true;
        }
+
+       /**
+        * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
+        * @return bool success
+        */
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return true;
+       }
 }
 
 /**
index 799f26a..d3f3583 100644 (file)
@@ -52,9 +52,10 @@ class HashBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return bool|mixed
         */
-       function get( $key ) {
+       function get( $key, &$casToken = null ) {
                if ( !isset( $this->bag[$key] ) ) {
                        return false;
                }
@@ -63,6 +64,8 @@ class HashBagOStuff extends BagOStuff {
                        return false;
                }
 
+               $casToken = $this->bag[$key][0];
+
                return $this->bag[$key][0];
        }
 
@@ -77,6 +80,21 @@ class HashBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       function cas( $casToken, $key, $value, $exptime = 0 ) {
+               if ( $this->get( $key ) === $casToken ) {
+                       return $this->set( $key, $value, $exptime );
+               }
+
+               return false;
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -91,12 +109,5 @@ class HashBagOStuff extends BagOStuff {
 
                return true;
        }
-
-       /**
-        * @return array
-        */
-       function keys() {
-               return array_keys( $this->bag );
-       }
 }
 
index 643d2e9..aebcbe7 100644 (file)
@@ -57,10 +57,11 @@ class MemcachedBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return Mixed
         */
-       public function get( $key ) {
-               return $this->client->get( $this->encodeKey( $key ) );
+       public function get( $key, &$casToken = null ) {
+               return $this->client->get( $this->encodeKey( $key ), $casToken );
        }
 
        /**
@@ -74,6 +75,18 @@ class MemcachedBagOStuff extends BagOStuff {
                        $this->fixExpiry( $exptime ) );
        }
 
+       /**
+        * @param $key string
+        * @param $casToken mixed
+        * @param $value
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               return $this->client->cas( $casToken, $this->encodeKey( $key ),
+                       $value, $this->fixExpiry( $exptime ) );
+       }
+
        /**
         * @param $key string
         * @param $time int
@@ -166,11 +179,6 @@ class MemcachedBagOStuff extends BagOStuff {
         * Send a debug message to the log
         */
        protected function debugLog( $text ) {
-               global $wgDebugLogGroups;
-               if( !isset( $wgDebugLogGroups['memcached'] ) ) {
-                       # Prefix message since it will end up in main debug log file
-                       $text = "memcached: $text";
-               }
                if ( substr( $text, -1 ) !== "\n" ) {
                        $text .= "\n";
                }
index 787a168..faa676d 100644 (file)
@@ -408,10 +408,11 @@ class MWMemcached {
         * Retrieves the value associated with the key from the memcache server
         *
         * @param $key array|string key to retrieve
+        * @param $casToken[optional] Float
         *
         * @return Mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                wfProfileIn( __METHOD__ );
 
                if ( $this->_debug ) {
@@ -437,14 +438,14 @@ class MWMemcached {
                        $this->stats['get'] = 1;
                }
 
-               $cmd = "get $key\r\n";
+               $cmd = "gets $key\r\n";
                if ( !$this->_fwrite( $sock, $cmd ) ) {
                        wfProfileOut( __METHOD__ );
                        return false;
                }
 
                $val = array();
-               $this->_load_items( $sock, $val );
+               $this->_load_items( $sock, $val, $casToken );
 
                if ( $this->_debug ) {
                        foreach ( $val as $k => $v ) {
@@ -498,7 +499,7 @@ class MWMemcached {
                $gather = array();
                // Send out the requests
                foreach ( $socks as $sock ) {
-                       $cmd = 'get';
+                       $cmd = 'gets';
                        foreach ( $sock_keys[ intval( $sock ) ] as $key ) {
                                $cmd .= ' ' . $key;
                        }
@@ -512,7 +513,7 @@ class MWMemcached {
                // Parse responses
                $val = array();
                foreach ( $gather as $sock ) {
-                       $this->_load_items( $sock, $val );
+                       $this->_load_items( $sock, $val, $casToken );
                }
 
                if ( $this->_debug ) {
@@ -617,6 +618,28 @@ class MWMemcached {
                return $this->_set( 'set', $key, $value, $exp );
        }
 
+       // }}}
+       // {{{ cas()
+
+       /**
+        * Sets a key to a given value in the memcache if the current value still corresponds
+        * to a known, given value.  Returns true if set successfully.
+        *
+        * @param $casToken Float: current known value
+        * @param $key String: key to set value as
+        * @param $value Mixed: value to set
+        * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
+        * to cache for (up to 30 days inclusive).  Any timespans of 30 days + 1 second or
+        * longer must be the timestamp of the time at which the mapping should expire. It
+        * is safe to use timestamps in all cases, regardless of exipration
+        * eg: strtotime("+3 hour")
+        *
+        * @return Boolean: TRUE on success
+        */
+       public function cas( $casToken, $key, $value, $exp = 0 ) {
+               return $this->_set( 'cas', $key, $value, $exp, $casToken );
+       }
+
        // }}}
        // {{{ set_compress_threshold()
 
@@ -879,19 +902,20 @@ class MWMemcached {
         *
         * @param $sock Resource: socket to read from
         * @param $ret Array: returned values
+        * @param $casToken[optional] Float
         * @return boolean True for success, false for failure
         *
         * @access private
         */
-       function _load_items( $sock, &$ret ) {
+       function _load_items( $sock, &$ret, &$casToken = null ) {
                while ( 1 ) {
                        $decl = $this->_fgets( $sock );
                        if( $decl === false ) {
                                return false;
                        } elseif ( $decl == "END" ) {
                                return true;
-                       } elseif ( preg_match( '/^VALUE (\S+) (\d+) (\d+)$/', $decl, $match ) ) {
-                               list( $rkey, $flags, $len ) = array( $match[1], $match[2], $match[3] );
+                       } elseif ( preg_match( '/^VALUE (\S+) (\d+) (\d+) (\d+)$/', $decl, $match ) ) {
+                               list( $rkey, $flags, $len, $casToken ) = array( $match[1], $match[2], $match[3], $match[4] );
                                $data = $this->_fread( $sock, $len + 2 );
                                if ( $data === false ) {
                                        return false;
@@ -933,11 +957,12 @@ class MWMemcached {
         * longer must be the timestamp of the time at which the mapping should expire. It
         * is safe to use timestamps in all cases, regardless of exipration
         * eg: strtotime("+3 hour")
+        * @param $casToken[optional] Float
         *
         * @return Boolean
         * @access private
         */
-       function _set( $cmd, $key, $val, $exp ) {
+       function _set( $cmd, $key, $val, $exp, $casToken = null ) {
                if ( !$this->_active ) {
                        return false;
                }
@@ -980,7 +1005,13 @@ class MWMemcached {
                                $flags |= self::COMPRESSED;
                        }
                }
-               if ( !$this->_fwrite( $sock, "$cmd $key $flags $exp $len\r\n$val\r\n" ) ) {
+
+               $command = "$cmd $key $flags $exp $len";
+               if ( $casToken ) {
+                       $command .= " $casToken";
+               }
+
+               if ( !$this->_fwrite( $sock, "$command\r\n$val\r\n" ) ) {
                        return false;
                }
 
@@ -1036,11 +1067,6 @@ class MWMemcached {
         * @param $text string
         */
        function _debugprint( $text ) {
-               global $wgDebugLogGroups;
-               if( !isset( $wgDebugLogGroups['memcached'] ) ) {
-                       # Prefix message since it will end up in main debug log file
-                       $text = "memcached: $text";
-               }
                wfDebugLog( 'memcached', $text );
        }
 
index 7793710..9f06fa0 100644 (file)
@@ -104,14 +104,16 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] float
         * @return Mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                wfProfileIn( __METHOD__ );
                $this->debugLog( "get($key)" );
-               $value = $this->checkResult( $key, parent::get( $key ) );
+               $result = $this->client->get( $this->encodeKey( $key ), null, $casToken );
+               $result = $this->checkResult( $key, $result );
                wfProfileOut( __METHOD__ );
-               return $value;
+               return $result;
        }
 
        /**
@@ -125,6 +127,18 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                return $this->checkResult( $key, parent::set( $key, $value, $exptime ) );
        }
 
+       /**
+        * @param $casToken float
+        * @param $key string
+        * @param $value
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               $this->debugLog( "cas($key)" );
+               return $this->checkResult( $key, parent::cas( $casToken, $key, $value, $exptime ) );
+       }
+
        /**
         * @param $key string
         * @param $time int
index 2f37c23..4120749 100644 (file)
@@ -61,9 +61,10 @@ class MultiWriteBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return bool|mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                foreach ( $this->caches as $cache ) {
                        $value = $cache->get( $key );
                        if ( $value !== false ) {
@@ -73,6 +74,17 @@ class MultiWriteBagOStuff extends BagOStuff {
                return false;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               throw new MWException( "CAS is not implemented in " . __CLASS__ );
+       }
+
        /**
         * @param $key string
         * @param $value mixed
@@ -156,6 +168,17 @@ class MultiWriteBagOStuff extends BagOStuff {
                }
        }
 
+       /**
+        * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
+        * @return bool success
+        */
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->doWrite( 'merge', $key, $callback, $exptime );
+       }
+
        /**
         * @param $method string
         * @return bool
index 40784f5..bd5b354 100644 (file)
@@ -90,7 +90,7 @@ class RedisBagOStuff extends BagOStuff {
                }
        }
 
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                wfProfileIn( __METHOD__ );
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
@@ -103,6 +103,7 @@ class RedisBagOStuff extends BagOStuff {
                        $result = false;
                        $this->handleException( $server, $e );
                }
+               $casToken = $result;
                $this->logRequest( 'get', $key, $server, $result );
                wfProfileOut( __METHOD__ );
                return $result;
@@ -133,6 +134,49 @@ class RedisBagOStuff extends BagOStuff {
                return $result;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $expiry = 0 ) {
+               wfProfileIn( __METHOD__ );
+               list( $server, $conn ) = $this->getConnection( $key );
+               if ( !$conn ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+               $expiry = $this->convertToRelative( $expiry );
+               try {
+                       $conn->watch( $key );
+
+                       if ( $this->get( $key ) !== $casToken ) {
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+
+                       $conn->multi();
+
+                       if ( !$expiry ) {
+                               // No expiry, that is very different from zero expiry in Redis
+                               $conn->set( $key, $value );
+                       } else {
+                               $conn->setex( $key, $expiry, $value );
+                       }
+
+                       $result = $conn->exec();
+               } catch ( RedisException $e ) {
+                       $result = false;
+                       $this->handleException( $server, $e );
+               }
+
+               $this->logRequest( 'cas', $key, $server, $result );
+               wfProfileOut( __METHOD__ );
+               return $result;
+       }
+
        public function delete( $key, $time = 0 ) {
                wfProfileIn( __METHOD__ );
                list( $server, $conn ) = $this->getConnection( $key );
@@ -288,23 +332,10 @@ class RedisBagOStuff extends BagOStuff {
                if ( count( $this->servers ) === 1 ) {
                        $candidates = $this->servers;
                } else {
-                       // Use consistent hashing
-                       //
-                       // Note: Benchmarking on PHP 5.3 and 5.4 indicates that for small
-                       // strings, md5() is only 10% slower than hash('joaat',...) etc.,
-                       // since the function call overhead dominates. So there's not much
-                       // justification for breaking compatibility with installations
-                       // compiled with ./configure --disable-hash.
-                       $hashes = array();
-                       foreach ( $this->servers as $server ) {
-                               $hashes[$server] = md5( $server . '/' . $key );
-                       }
-                       asort( $hashes );
+                       $candidates = $this->servers;
+                       ArrayUtils::consistentHashSort( $candidates, $key, '/' );
                        if ( !$this->automaticFailover ) {
-                               reset( $hashes );
-                               $candidates = array( key( $hashes ) );
-                       } else {
-                               $candidates = array_keys( $hashes );
+                               $candidates = array_slice( $candidates, 0, 1 );
                        }
                }
 
index 222d475..80c670e 100644 (file)
@@ -32,23 +32,26 @@ class SqlBagOStuff extends BagOStuff {
         */
        var $lb;
 
-       /**
-        * @var DatabaseBase
-        */
-       var $db;
-       var $serverInfo;
+       var $serverInfos;
+       var $serverNames;
+       var $numServers;
+       var $conns;
        var $lastExpireAll = 0;
        var $purgePeriod = 100;
        var $shards = 1;
        var $tableName = 'objectcache';
 
-       protected $connFailureTime = 0; // UNIX timestamp
-       protected $connFailureError; // exception
+       protected $connFailureTimes = array(); // UNIX timestamps
+       protected $connFailureErrors = array(); // exceptions
 
        /**
         * Constructor. Parameters are:
-        *   - server:   A server info structure in the format required by each
-        *               element in $wgDBServers.
+        *   - server:      A server info structure in the format required by each
+        *                  element in $wgDBServers.
+        *
+        *   - servers:     An array of server info structures describing a set of
+        *                  database servers to distribute keys to. If this is
+        *                  specified, the "server" option will be ignored.
         *
         *   - purgePeriod: The average number of object cache requests in between
         *                  garbage collection operations, where expired entries
@@ -59,8 +62,8 @@ class SqlBagOStuff extends BagOStuff {
         *
         *   - tableName:   The table name to use, default is "objectcache".
         *
-        *   - shards:      The number of tables to use for data storage. If this is
-        *                  more than 1, table names will be formed in the style
+        *   - shards:      The number of tables to use for data storage on each server.
+        *                  If this is more than 1, table names will be formed in the style
         *                  objectcacheNNN where NNN is the shard index, between 0 and
         *                  shards-1. The number of digits will be the minimum number
         *                  required to hold the largest shard index. Data will be
@@ -70,9 +73,19 @@ class SqlBagOStuff extends BagOStuff {
         * @param $params array
         */
        public function __construct( $params ) {
-               if ( isset( $params['server'] ) ) {
-                       $this->serverInfo = $params['server'];
-                       $this->serverInfo['load'] = 1;
+               if ( isset( $params['servers'] ) ) {
+                       $this->serverInfos = $params['servers'];
+                       $this->numServers = count( $this->serverInfos );
+                       $this->serverNames = array();
+                       foreach ( $this->serverInfos as $i => $info ) {
+                               $this->serverNames[$i] = isset( $info['host'] ) ? $info['host'] : "#$i";
+                       }
+               } elseif ( isset( $params['server'] ) ) {
+                       $this->serverInfos = array( $params['server'] );
+                       $this->numServers = count( $this->serverInfos );
+               } else {
+                       $this->serverInfos = false;
+                       $this->numServers = 1;
                }
                if ( isset( $params['purgePeriod'] ) ) {
                        $this->purgePeriod = intval( $params['purgePeriod'] );
@@ -86,27 +99,37 @@ class SqlBagOStuff extends BagOStuff {
        }
 
        /**
-        * @throws
+        * Get a connection to the specified database
+        *
+        * @param $serverIndex integer
         * @return DatabaseBase
         */
-       protected function getDB() {
+       protected function getDB( $serverIndex ) {
                global $wgDebugDBTransactions;
 
-               # Don't keep timing out trying to connect for each call if the DB is down
-               if ( $this->connFailureError && ( time() - $this->connFailureTime ) < 60 ) {
-                       throw $this->connFailureError;
-               }
+               if ( !isset( $this->conns[$serverIndex] ) ) {
+                       if ( $serverIndex >= $this->numServers ) {
+                               throw new MWException( __METHOD__ . ": Invalid server index \"$serverIndex\"" );
+                       }
+
+                       # Don't keep timing out trying to connect for each call if the DB is down
+                       if ( isset( $this->connFailureErrors[$serverIndex] )
+                               && ( time() - $this->connFailureTimes[$serverIndex] ) < 60 )
+                       {
+                               throw $this->connFailureErrors[$serverIndex];
+                       }
 
-               if ( !isset( $this->db ) ) {
                        # If server connection info was given, use that
-                       if ( $this->serverInfo ) {
+                       if ( $this->serverInfos ) {
                                if ( $wgDebugDBTransactions ) {
-                                       wfDebug( sprintf( "Using provided serverInfo for SqlBagOStuff\n" ) );
+                                       wfDebug( "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 );
+                               $info = $this->serverInfos[$serverIndex];
+                               $type = isset( $info['type'] ) ? $info['type'] : 'mysql';
+                               $host = isset( $info['host'] ) ? $info['host'] : '[unknown]';
+                               wfDebug( __CLASS__.": connecting to $host\n" );
+                               $db = DatabaseBase::factory( $type, $info );
+                               $db->clearFlag( DBO_TRX );
                        } else {
                                /*
                                 * We must keep a separate connection to MySQL in order to avoid deadlocks
@@ -115,32 +138,42 @@ class SqlBagOStuff extends BagOStuff {
                                 */
                                if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                                        $this->lb = wfGetLBFactory()->newMainLB();
-                                       $this->db = $this->lb->getConnection( DB_MASTER );
-                                       $this->db->clearFlag( DBO_TRX ); // auto-commit mode
+                                       $db = $this->lb->getConnection( DB_MASTER );
+                                       $db->clearFlag( DBO_TRX ); // auto-commit mode
                                } else {
-                                       $this->db = wfGetDB( DB_MASTER );
+                                       $db = wfGetDB( DB_MASTER );
                                }
                        }
                        if ( $wgDebugDBTransactions ) {
-                               wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $this->db ) );
+                               wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $db ) );
                        }
+                       $this->conns[$serverIndex] = $db;
                }
 
-               return $this->db;
+               return $this->conns[$serverIndex];
        }
 
        /**
-        * Get the table name for a given key
+        * Get the server index and table name for a given key
         * @param $key string
-        * @return string
+        * @return Array: server index and table name
         */
        protected function getTableByKey( $key ) {
                if ( $this->shards > 1 ) {
                        $hash = hexdec( substr( md5( $key ), 0, 8 ) ) & 0x7fffffff;
-                       return $this->getTableByShard( $hash % $this->shards );
+                       $tableIndex = $hash % $this->shards;
                } else {
-                       return $this->tableName;
+                       $tableIndex = 0;
+               }
+               if ( $this->numServers > 1 ) {
+                       $sortedServers = $this->serverNames;
+                       ArrayUtils::consistentHashSort( $sortedServers, $key );
+                       reset( $sortedServers );
+                       $serverIndex = key( $sortedServers );
+               } else {
+                       $serverIndex = 0;
                }
+               return array( $serverIndex, $this->getTableNameByShard( $tableIndex ) );
        }
 
        /**
@@ -148,7 +181,7 @@ class SqlBagOStuff extends BagOStuff {
         * @param $index int
         * @return string
         */
-       protected function getTableByShard( $index ) {
+       protected function getTableNameByShard( $index ) {
                if ( $this->shards > 1 ) {
                        $decimals = strlen( $this->shards - 1 );
                        return $this->tableName .
@@ -160,11 +193,16 @@ class SqlBagOStuff extends BagOStuff {
 
        /**
         * @param $key string
+        * @param $casToken[optional] mixed
         * @return mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                $values = $this->getMulti( array( $key ) );
-               return array_key_exists( $key, $values ) ? $values[$key] : false;
+               if ( array_key_exists( $key, $values ) ) {
+                       $casToken = $values[$key];
+                       return $values[$key];
+               }
+               return false;
        }
 
        /**
@@ -174,59 +212,61 @@ class SqlBagOStuff extends BagOStuff {
        public function getMulti( array $keys ) {
                $values = array(); // array of (key => value)
 
-               try {
-                       $db = $this->getDB();
-                       $keysByTableName = array();
-                       foreach ( $keys as $key ) {
-                               $tableName = $this->getTableByKey( $key );
-                               if ( !isset( $keysByTableName[$tableName] ) ) {
-                                       $keysByTableName[$tableName] = array();
-                               }
-                               $keysByTableName[$tableName][] = $key;
-                       }
+               $keysByTable = array();
+               foreach ( $keys as $key ) {
+                       list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
+                       $keysByTable[$serverIndex][$tableName][] = $key;
+               }
 
-                       $this->garbageCollect(); // expire old entries if any
+               $this->garbageCollect(); // expire old entries if any
 
-                       $dataRows = array();
-                       foreach ( $keysByTableName as $tableName => $tableKeys ) {
-                               $res = $db->select( $tableName,
-                                       array( 'keyname', 'value', 'exptime' ),
-                                       array( 'keyname' => $tableKeys ),
-                                       __METHOD__ );
-                               foreach ( $res as $row ) {
-                                       $dataRows[$row->keyname] = $row;
+               $dataRows = array();
+               foreach ( $keysByTable as $serverIndex => $serverKeys ) {
+                       $db = $this->getDB( $serverIndex );
+                       try {
+                               foreach ( $serverKeys as $tableName => $tableKeys ) {
+                                       $res = $db->select( $tableName,
+                                               array( 'keyname', 'value', 'exptime' ),
+                                               array( 'keyname' => $tableKeys ),
+                                               __METHOD__ );
+                                       foreach ( $res as $row ) {
+                                               $row->serverIndex = $serverIndex;
+                                               $row->tableName = $tableName;
+                                               $dataRows[$row->keyname] = $row;
+                                       }
                                }
+                       } catch ( DBError $e ) {
+                               $this->handleReadError( $e, $serverIndex );
                        }
+               }
 
-                       foreach ( $keys as $key ) {
-                               if ( isset( $dataRows[$key] ) ) { // HIT?
-                                       $row = $dataRows[$key];
-                                       $this->debug( "get: retrieved data; expiry time is " . $row->exptime );
-                                       if ( $this->isExpired( $row->exptime ) ) { // MISS
-                                               $this->debug( "get: key has expired, deleting" );
-                                               try {
-                                                       $db->begin( __METHOD__ );
-                                                       # Put the expiry time in the WHERE condition to avoid deleting a
-                                                       # newly-inserted value
-                                                       $db->delete( $this->getTableByKey( $key ),
-                                                               array( 'keyname' => $key, 'exptime' => $row->exptime ),
-                                                               __METHOD__ );
-                                                       $db->commit( __METHOD__ );
-                                               } catch ( DBQueryError $e ) {
-                                                       $this->handleWriteError( $e );
-                                               }
-                                               $values[$key] = false;
-                                       } else { // HIT
-                                               $values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) );
+               foreach ( $keys as $key ) {
+                       if ( isset( $dataRows[$key] ) ) { // HIT?
+                               $row = $dataRows[$key];
+                               $this->debug( "get: retrieved data; expiry time is " . $row->exptime );
+                               $db = $this->getDB( $row->serverIndex );
+                               if ( $this->isExpired( $db, $row->exptime ) ) { // MISS
+                                       $this->debug( "get: key has expired, deleting" );
+                                       try {
+                                               $db->begin( __METHOD__ );
+                                               # Put the expiry time in the WHERE condition to avoid deleting a
+                                               # newly-inserted value
+                                               $db->delete( $row->tableName,
+                                                       array( 'keyname' => $key, 'exptime' => $row->exptime ),
+                                                       __METHOD__ );
+                                               $db->commit( __METHOD__ );
+                                       } catch ( DBQueryError $e ) {
+                                               $this->handleWriteError( $e, $row->serverIndex );
                                        }
-                               } else { // MISS
                                        $values[$key] = false;
-                                       $this->debug( 'get: no matching rows' );
+                               } else { // HIT
+                                       $values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) );
                                }
+                       } else { // MISS
+                               $values[$key] = false;
+                               $this->debug( 'get: no matching rows' );
                        }
-               } catch ( DBError $e ) {
-                       $this->handleReadError( $e );
-               };
+               }
 
                return $values;
        }
@@ -238,8 +278,9 @@ class SqlBagOStuff extends BagOStuff {
         * @return bool
         */
        public function set( $key, $value, $exptime = 0 ) {
+               list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
                try {
-                       $db = $this->getDB();
+                       $db = $this->getDB( $serverIndex );
                        $exptime = intval( $exptime );
 
                        if ( $exptime < 0 ) {
@@ -247,7 +288,7 @@ class SqlBagOStuff extends BagOStuff {
                        }
 
                        if ( $exptime == 0 ) {
-                               $encExpiry = $this->getMaxDateTime();
+                               $encExpiry = $this->getMaxDateTime( $db );
                        } else {
                                if ( $exptime < 3.16e8 ) { # ~10 years
                                        $exptime += time();
@@ -259,7 +300,7 @@ class SqlBagOStuff extends BagOStuff {
                        // (bug 24425) use a replace if the db supports it instead of
                        // delete/insert to avoid clashes with conflicting keynames
                        $db->replace(
-                               $this->getTableByKey( $key ),
+                               $tableName,
                                array( 'keyname' ),
                                array(
                                        'keyname' => $key,
@@ -268,29 +309,79 @@ class SqlBagOStuff extends BagOStuff {
                                ), __METHOD__ );
                        $db->commit( __METHOD__ );
                } catch ( DBError $e ) {
-                       $this->handleWriteError( $e );
+                       $this->handleWriteError( $e, $serverIndex );
                        return false;
                }
 
                return true;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               $db = $this->getDB();
+               $exptime = intval( $exptime );
+
+               if ( $exptime < 0 ) {
+                       $exptime = 0;
+               }
+
+               if ( $exptime == 0 ) {
+                       $encExpiry = $this->getMaxDateTime();
+               } else {
+                       if ( $exptime < 3.16e8 ) { # ~10 years
+                               $exptime += time();
+                       }
+
+                       $encExpiry = $db->timestamp( $exptime );
+               }
+               try {
+                       $db->begin( __METHOD__ );
+                       // (bug 24425) use a replace if the db supports it instead of
+                       // delete/insert to avoid clashes with conflicting keynames
+                       $db->update(
+                               $this->getTableByKey( $key ),
+                               array(
+                                       'keyname' => $key,
+                                       'value' => $db->encodeBlob( $this->serialize( $value ) ),
+                                       'exptime' => $encExpiry
+                               ),
+                               array(
+                                       'keyname' => $key,
+                                       'value' => $db->encodeBlob( $this->serialize( $casToken ) )
+                               ), __METHOD__ );
+                       $db->commit( __METHOD__ );
+               } catch ( DBQueryError $e ) {
+                       $this->handleWriteError( $e );
+
+                       return false;
+               }
+
+               return (bool) $db->affectedRows();
+       }
+
        /**
         * @param $key string
         * @param $time int
         * @return bool
         */
        public function delete( $key, $time = 0 ) {
+               list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
                try {
-                       $db = $this->getDB();
+                       $db = $this->getDB( $serverIndex );
                        $db->begin( __METHOD__ );
                        $db->delete(
-                               $this->getTableByKey( $key ),
+                               $tableName,
                                array( 'keyname' => $key ),
                                __METHOD__ );
                        $db->commit( __METHOD__ );
                } catch ( DBError $e ) {
-                       $this->handleWriteError( $e );
+                       $this->handleWriteError( $e, $serverIndex );
                        return false;
                }
 
@@ -303,9 +394,9 @@ class SqlBagOStuff extends BagOStuff {
         * @return int|null
         */
        public function incr( $key, $step = 1 ) {
+               list( $serverIndex, $tableName ) = $this->getTableByKey( $key );
                try {
-                       $db = $this->getDB();
-                       $tableName = $this->getTableByKey( $key );
+                       $db = $this->getDB( $serverIndex );
                        $step = intval( $step );
                        $db->begin( __METHOD__ );
                        $row = $db->selectRow(
@@ -321,7 +412,7 @@ class SqlBagOStuff extends BagOStuff {
                                return null;
                        }
                        $db->delete( $tableName, array( 'keyname' => $key ), __METHOD__ );
-                       if ( $this->isExpired( $row->exptime ) ) {
+                       if ( $this->isExpired( $db, $row->exptime ) ) {
                                // Expired, do not reinsert
                                $db->commit( __METHOD__ );
 
@@ -343,51 +434,29 @@ class SqlBagOStuff extends BagOStuff {
                        }
                        $db->commit( __METHOD__ );
                } catch ( DBError $e ) {
-                       $this->handleWriteError( $e );
+                       $this->handleWriteError( $e, $serverIndex );
                        return null;
                }
 
                return $newValue;
        }
 
-       /**
-        * @return Array
-        */
-       public function keys() {
-               $result = array();
-
-               try {
-                       $db = $this->getDB();
-                       for ( $i = 0; $i < $this->shards; $i++ ) {
-                               $res = $db->select( $this->getTableByShard( $i ),
-                                       array( 'keyname' ), false, __METHOD__ );
-                               foreach ( $res as $row ) {
-                                       $result[] = $row->keyname;
-                               }
-                       }
-               } catch ( DBError $e ) {
-                       $this->handleReadError( $e );
-               }
-
-               return $result;
-       }
-
        /**
         * @param $exptime string
         * @return bool
         */
-       protected function isExpired( $exptime ) {
-               return $exptime != $this->getMaxDateTime() && wfTimestamp( TS_UNIX, $exptime ) < time();
+       protected function isExpired( $db, $exptime ) {
+               return $exptime != $this->getMaxDateTime( $db ) && wfTimestamp( TS_UNIX, $exptime ) < time();
        }
 
        /**
         * @return string
         */
-       protected function getMaxDateTime() {
+       protected function getMaxDateTime( $db ) {
                if ( time() > 0x7fffffff ) {
-                       return $this->getDB()->timestamp( 1 << 62 );
+                       return $db->timestamp( 1 << 62 );
                } else {
-                       return $this->getDB()->timestamp( 0x7fffffff );
+                       return $db->timestamp( 0x7fffffff );
                }
        }
 
@@ -419,87 +488,91 @@ class SqlBagOStuff extends BagOStuff {
         * @return bool
         */
        public function deleteObjectsExpiringBefore( $timestamp, $progressCallback = false ) {
-               try {
-                       $db = $this->getDB();
-                       $dbTimestamp = $db->timestamp( $timestamp );
-                       $totalSeconds = false;
-                       $baseConds = array( 'exptime < ' . $db->addQuotes( $dbTimestamp ) );
-                       for ( $i = 0; $i < $this->shards; $i++ ) {
-                               $maxExpTime = false;
-                               while ( true ) {
-                                       $conds = $baseConds;
-                                       if ( $maxExpTime !== false ) {
-                                               $conds[] = 'exptime > ' . $db->addQuotes( $maxExpTime );
-                                       }
-                                       $rows = $db->select(
-                                               $this->getTableByShard( $i ),
-                                               array( 'keyname', 'exptime' ),
-                                               $conds,
-                                               __METHOD__,
-                                               array( 'LIMIT' => 100, 'ORDER BY' => 'exptime' ) );
-                                       if ( !$rows->numRows() ) {
-                                               break;
-                                       }
-                                       $keys = array();
-                                       $row = $rows->current();
-                                       $minExpTime = $row->exptime;
-                                       if ( $totalSeconds === false ) {
-                                               $totalSeconds = wfTimestamp( TS_UNIX, $timestamp )
-                                                       - wfTimestamp( TS_UNIX, $minExpTime );
-                                       }
-                                       foreach ( $rows as $row ) {
-                                               $keys[] = $row->keyname;
-                                               $maxExpTime = $row->exptime;
-                                       }
-
-                                       $db->begin( __METHOD__ );
-                                       $db->delete(
-                                               $this->getTableByShard( $i ),
-                                               array(
-                                                       'exptime >= ' . $db->addQuotes( $minExpTime ),
-                                                       'exptime < ' . $db->addQuotes( $dbTimestamp ),
-                                                       'keyname' => $keys
-                                               ),
-                                               __METHOD__ );
-                                       $db->commit( __METHOD__ );
+               for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
+                       try {
+                               $db = $this->getDB( $serverIndex );
+                               $dbTimestamp = $db->timestamp( $timestamp );
+                               $totalSeconds = false;
+                               $baseConds = array( 'exptime < ' . $db->addQuotes( $dbTimestamp ) );
+                               for ( $i = 0; $i < $this->shards; $i++ ) {
+                                       $maxExpTime = false;
+                                       while ( true ) {
+                                               $conds = $baseConds;
+                                               if ( $maxExpTime !== false ) {
+                                                       $conds[] = 'exptime > ' . $db->addQuotes( $maxExpTime );
+                                               }
+                                               $rows = $db->select(
+                                                       $this->getTableNameByShard( $i ),
+                                                       array( 'keyname', 'exptime' ),
+                                                       $conds,
+                                                       __METHOD__,
+                                                       array( 'LIMIT' => 100, 'ORDER BY' => 'exptime' ) );
+                                               if ( !$rows->numRows() ) {
+                                                       break;
+                                               }
+                                               $keys = array();
+                                               $row = $rows->current();
+                                               $minExpTime = $row->exptime;
+                                               if ( $totalSeconds === false ) {
+                                                       $totalSeconds = wfTimestamp( TS_UNIX, $timestamp )
+                                                               - wfTimestamp( TS_UNIX, $minExpTime );
+                                               }
+                                               foreach ( $rows as $row ) {
+                                                       $keys[] = $row->keyname;
+                                                       $maxExpTime = $row->exptime;
+                                               }
 
-                                       if ( $progressCallback ) {
-                                               if ( intval( $totalSeconds ) === 0 ) {
-                                                       $percent = 0;
-                                               } else {
-                                                       $remainingSeconds = wfTimestamp( TS_UNIX, $timestamp )
-                                                               - wfTimestamp( TS_UNIX, $maxExpTime );
-                                                       if ( $remainingSeconds > $totalSeconds ) {
-                                                               $totalSeconds = $remainingSeconds;
+                                               $db->begin( __METHOD__ );
+                                               $db->delete(
+                                                       $this->getTableNameByShard( $i ),
+                                                       array(
+                                                               'exptime >= ' . $db->addQuotes( $minExpTime ),
+                                                               'exptime < ' . $db->addQuotes( $dbTimestamp ),
+                                                               'keyname' => $keys
+                                                       ),
+                                                       __METHOD__ );
+                                               $db->commit( __METHOD__ );
+
+                                               if ( $progressCallback ) {
+                                                       if ( intval( $totalSeconds ) === 0 ) {
+                                                               $percent = 0;
+                                                       } else {
+                                                               $remainingSeconds = wfTimestamp( TS_UNIX, $timestamp )
+                                                                       - wfTimestamp( TS_UNIX, $maxExpTime );
+                                                               if ( $remainingSeconds > $totalSeconds ) {
+                                                                       $totalSeconds = $remainingSeconds;
+                                                               }
+                                                               $percent = ( $i + $remainingSeconds / $totalSeconds )
+                                                                       / $this->shards * 100;
                                                        }
-                                                       $percent = ( $i + $remainingSeconds / $totalSeconds )
-                                                               / $this->shards * 100;
+                                                       $percent = ( $percent / $this->numServers )
+                                                               + ( $serverIndex / $this->numServers * 100 );
+                                                       call_user_func( $progressCallback, $percent );
                                                }
-                                               call_user_func( $progressCallback, $percent );
                                        }
                                }
+                       } catch ( DBError $e ) {
+                               $this->handleWriteError( $e, $serverIndex );
+                               return false;
                        }
-               } catch ( DBError $e ) {
-                       $this->handleWriteError( $e );
-                       return false;
                }
-
                return true;
        }
 
        public function deleteAll() {
-               try {
-                       $db = $this->getDB();
-                       for ( $i = 0; $i < $this->shards; $i++ ) {
-                               $db->begin( __METHOD__ );
-                               $db->delete( $this->getTableByShard( $i ), '*', __METHOD__ );
-                               $db->commit( __METHOD__ );
+               for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
+                       try {
+                               $db = $this->getDB( $serverIndex );
+                               for ( $i = 0; $i < $this->shards; $i++ ) {
+                                       $db->begin( __METHOD__ );
+                                       $db->delete( $this->getTableNameByShard( $i ), '*', __METHOD__ );
+                                       $db->commit( __METHOD__ );
+                               }
+                       } catch ( DBError $e ) {
+                               $this->handleWriteError( $e, $serverIndex );
+                               return false;
                        }
-               } catch ( DBError $e ) {
-                       $this->handleWriteError( $e );
-                       return false;
                }
-
                return true;
        }
 
@@ -545,58 +618,77 @@ class SqlBagOStuff extends BagOStuff {
        /**
         * Handle a DBError which occurred during a read operation.
         */
-       protected function handleReadError( DBError $exception ) {
+       protected function handleReadError( DBError $exception, $serverIndex ) {
                if ( $exception instanceof DBConnectionError ) {
-                       $this->connFailureTime  = time();
-                       $this->connFailureError = $exception;
+                       $this->markServerDown( $exception, $serverIndex );
                }
                wfDebugLog( 'SQLBagOStuff', "DBError: {$exception->getMessage()}" );
-               if ( $this->db ) {
-                       wfDebug( __METHOD__ . ": ignoring query error\n" );
-               } else {
+               if ( $exception instanceof DBConnectionError ) {
                        wfDebug( __METHOD__ . ": ignoring connection error\n" );
+               } else {
+                       wfDebug( __METHOD__ . ": ignoring query error\n" );
                }
        }
 
        /**
         * Handle a DBQueryError which occurred during a write operation.
         */
-       protected function handleWriteError( DBError $exception ) {
+       protected function handleWriteError( DBError $exception, $serverIndex ) {
                if ( $exception instanceof DBConnectionError ) {
-                       $this->connFailureTime  = time();
-                       $this->connFailureError = $exception;
+                       $this->markServerDown( $exception, $serverIndex );
                }
-               if ( $this->db && $this->db->wasReadOnlyError() ) {
+               if ( $exception->db && $exception->db->wasReadOnlyError() ) {
                        try {
-                               $this->db->rollback( __METHOD__ );
+                               $exception->db->rollback( __METHOD__ );
                        } catch ( DBError $e ) {}
                }
                wfDebugLog( 'SQLBagOStuff', "DBError: {$exception->getMessage()}" );
-               if ( $this->db ) {
-                       wfDebug( __METHOD__ . ": ignoring query error\n" );
-               } else {
+               if ( $exception instanceof DBConnectionError ) {
                        wfDebug( __METHOD__ . ": ignoring connection error\n" );
+               } else {
+                       wfDebug( __METHOD__ . ": ignoring query error\n" );
                }
        }
 
+       /**
+        * Mark a server down due to a DBConnectionError exception
+        */
+       protected function markServerDown( $exception, $serverIndex ) {
+               if ( isset( $this->connFailureTimes[$serverIndex] ) ) {
+                       if ( time() - $this->connFailureTimes[$serverIndex] >= 60 ) {
+                               unset( $this->connFailureTimes[$serverIndex] );
+                               unset( $this->connFailureErrors[$serverIndex] );
+                       } else {
+                               wfDebug( __METHOD__.": Server #$serverIndex already down\n" );
+                               return;
+                       }
+               }
+               $now = time();
+               wfDebug( __METHOD__.": Server #$serverIndex down until " . ( $now + 60 ) . "\n" );
+               $this->connFailureTimes[$serverIndex] = $now;
+               $this->connFailureErrors[$serverIndex] = $exception;
+       }
+
        /**
         * Create shard tables. For use from eval.php.
         */
        public function createTables() {
-               $db = $this->getDB();
-               if ( $db->getType() !== 'mysql'
-                       || version_compare( $db->getServerVersion(), '4.1.0', '<' ) )
-               {
-                       throw new MWException( __METHOD__ . ' is not supported on this DB server' );
-               }
+               for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
+                       $db = $this->getDB( $serverIndex );
+                       if ( $db->getType() !== 'mysql'
+                               || version_compare( $db->getServerVersion(), '4.1.0', '<' ) )
+                       {
+                               throw new MWException( __METHOD__ . ' is not supported on this DB server' );
+                       }
 
-               for ( $i = 0; $i < $this->shards; $i++ ) {
-                       $db->begin( __METHOD__ );
-                       $db->query(
-                               'CREATE TABLE ' . $db->tableName( $this->getTableByShard( $i ) ) .
-                               ' LIKE ' . $db->tableName( 'objectcache' ),
-                               __METHOD__ );
-                       $db->commit( __METHOD__ );
+                       for ( $i = 0; $i < $this->shards; $i++ ) {
+                               $db->begin( __METHOD__ );
+                               $db->query(
+                                       'CREATE TABLE ' . $db->tableName( $this->getTableNameByShard( $i ) ) .
+                                       ' LIKE ' . $db->tableName( 'objectcache' ),
+                                       __METHOD__ );
+                               $db->commit( __METHOD__ );
+                       }
                }
        }
 }
index 21aa39e..83f51f9 100644 (file)
@@ -33,11 +33,14 @@ class WinCacheBagOStuff extends BagOStuff {
         * Get a value from the WinCache object cache
         *
         * @param $key String: cache key
+        * @param $casToken[optional] int: cas token
         * @return mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                $val = wincache_ucache_get( $key );
 
+               $casToken = $val;
+
                if ( is_string( $val ) ) {
                        $val = unserialize( $val );
                }
@@ -61,6 +64,19 @@ class WinCacheBagOStuff extends BagOStuff {
                return ( is_array( $result ) && $result === array() ) || $result;
        }
 
+       /**
+        * Store a value in the WinCache object cache, race condition-safe
+        *
+        * @param $casToken int: cas token
+        * @param $key String: cache key
+        * @param $value int: object to store
+        * @param $exptime Int: expiration time
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               return wincache_ucache_cas( $key, $casToken, serialize( $value ) );
+       }
+
        /**
         * Remove a value from the WinCache object cache
         *
@@ -73,23 +89,4 @@ class WinCacheBagOStuff extends BagOStuff {
 
                return true;
        }
-
-       /**
-        * @return Array
-        */
-       public function keys() {
-               $info = wincache_ucache_info();
-               $list = $info['ucache_entries'];
-               $keys = array();
-
-               if ( is_null( $list ) ) {
-                       return array();
-               }
-
-               foreach ( $list as $entry ) {
-                       $keys[] = $entry['key_name'];
-               }
-
-               return $keys;
-       }
 }
index 6c88289..f740ae8 100644 (file)
@@ -32,9 +32,10 @@ class XCacheBagOStuff extends BagOStuff {
         * Get a value from the XCache object cache
         *
         * @param $key String: cache key
+        * @param $casToken mixed: cas token
         * @return mixed
         */
-       public function get( $key ) {
+       public function get( $key, &$casToken = null ) {
                $val = xcache_get( $key );
 
                if ( is_string( $val ) ) {
@@ -65,6 +66,18 @@ class XCacheBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * @param $casToken mixed
+        * @param $key string
+        * @param $value mixed
+        * @param $exptime int
+        * @return bool
+        */
+       public function cas( $casToken, $key, $value, $exptime = 0 ) {
+               // Can't find any documentation on xcache cas
+               throw new MWException( "CAS is not implemented in " . __CLASS__ );
+       }
+
        /**
         * Remove a value from the XCache object cache
         *
@@ -77,6 +90,21 @@ class XCacheBagOStuff extends BagOStuff {
                return true;
        }
 
+       /**
+        * Merge an item.
+        * XCache does not seem to support any way of performing CAS - this however will
+        * provide a way to perform CAS-like functionality.
+        *
+        * @param $key string
+        * @param $callback closure Callback method to be executed
+        * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+        * @param $attempts int The amount of times to attempt a merge in case of failure
+        * @return bool success
+        */
+       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
+       }
+
        public function incr( $key, $value = 1 ) {
                return xcache_inc( $key, $value );
        }
index e1fdbc3..083bd29 100644 (file)
@@ -497,14 +497,18 @@ class LinkHolderArray {
                // process categories, check if a category exists in some variant
                $categoryMap = array(); // maps $category_variant => $category (dbkeys)
                $varCategories = array(); // category replacements oldDBkey => newDBkey
-               foreach( $output->getCategoryLinks() as $category ){
+               foreach ( $output->getCategoryLinks() as $category ) {
+                       $categoryTitle = Title::makeTitleSafe( NS_CATEGORY, $category );
+                       $linkBatch->addObj( $categoryTitle );
                        $variants = $wgContLang->autoConvertToAllVariants( $category );
-                       foreach($variants as $variant){
-                               if($variant != $category){
-                                       $variantTitle = Title::newFromDBkey( Title::makeName(NS_CATEGORY,$variant) );
-                                       if(is_null($variantTitle)) continue;
+                       foreach ( $variants as $variant ) {
+                               if ( $variant !== $category ) {
+                                       $variantTitle = Title::makeTitleSafe( NS_CATEGORY, $variant );
+                                       if ( is_null( $variantTitle ) ) {
+                                               continue;
+                                       }
                                        $linkBatch->addObj( $variantTitle );
-                                       $categoryMap[$variant] = $category;
+                                       $categoryMap[$variant] = array( $category, $categoryTitle );
                                }
                        }
                }
@@ -556,10 +560,11 @@ class LinkHolderArray {
                                }
 
                                // check if the object is a variant of a category
-                               if(isset($categoryMap[$vardbk])){
-                                       $oldkey = $categoryMap[$vardbk];
-                                       if($oldkey != $vardbk)
-                                               $varCategories[$oldkey]=$vardbk;
+                               if ( isset( $categoryMap[$vardbk] ) ) {
+                                       list( $oldkey, $oldtitle ) = $categoryMap[$vardbk];
+                                       if ( !isset( $varCategories[$oldkey] ) && !$oldtitle->exists() ) {
+                                               $varCategories[$oldkey] = $vardbk;
+                                       }
                                }
                        }
                        wfRunHooks( 'GetLinkColours', array( $linkcolour_ids, &$colours ) );
index 0f22755..d47ccb9 100644 (file)
@@ -412,9 +412,7 @@ class Parser {
                if ( !( $options->getDisableContentConversion()
                                || isset( $this->mDoubleUnderscores['nocontentconvert'] ) ) )
                {
-                       # Run convert unconditionally in 1.18-compatible mode
-                       global $wgBug34832TransitionalRollback;
-                       if ( $wgBug34832TransitionalRollback || !$this->mOptions->getInterfaceMessage() ) {
+                       if ( !$this->mOptions->getInterfaceMessage() ) {
                                # The position of the convert() call should not be changed. it
                                # assumes that the links are all replaced and the only thing left
                                # is the <nowiki> mark.
@@ -781,12 +779,7 @@ class Parser {
         * Get the language object for language conversion
         */
        function getConverterLanguage() {
-               global $wgBug34832TransitionalRollback, $wgContLang;
-               if ( $wgBug34832TransitionalRollback ) {
-                       return $wgContLang;
-               } else {
-                       return $this->getTargetLanguage();
-               }
+               return $this->getTargetLanguage();
        }
 
        /**
index e4f5d12..d1ca8aa 100644 (file)
@@ -149,8 +149,8 @@ class Parser_LinkHooks extends Parser {
                $holders = new LinkHolderArray( $this );
 
                if( is_null( $this->mTitle ) ) {
-                       wfProfileOut( __METHOD__ );
                        wfProfileOut( __METHOD__.'-setup' );
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( __METHOD__.": \$this->mTitle is null\n" );
                }
 
@@ -224,10 +224,12 @@ class Parser_LinkHooks extends Parser {
                wfProfileIn( __METHOD__ );
                $wt = isset($paramText) ? "[[$titleText|$paramText]]" : "[[$titleText]]";
                wfProfileIn( __METHOD__."-misc" );
+
                # Don't allow internal links to pages containing
                # PROTO: where PROTO is a valid URL protocol; these
                # should be external links.
                if( preg_match('/^\b(?i:' . wfUrlProtocols() . ')/', $titleText) ) {
+                       wfProfileOut( __METHOD__."-misc" );
                        wfProfileOut( __METHOD__ );
                        return $wt;
                }
index 5cc1b0f..dd7e965 100644 (file)
@@ -260,24 +260,24 @@ class MWTidy {
 
                        wfProfileOut( __METHOD__ );
                        return $tidy->errorBuffer;
+               }
+
+               $tidy->cleanRepair();
+               $retval = $tidy->getStatus();
+               if ( $retval == 2 ) {
+                       // 2 is magic number for fatal error
+                       // http://www.php.net/manual/en/function.tidy-get-status.php
+                       $cleansource = null;
                } else {
-                       $tidy->cleanRepair();
-                       $retval = $tidy->getStatus();
-                       if ( $retval == 2 ) {
-                               // 2 is magic number for fatal error
-                               // http://www.php.net/manual/en/function.tidy-get-status.php
-                               $cleansource = null;
-                       } else {
-                               $cleansource = tidy_get_output( $tidy );
-                               if ( $wgDebugTidy && $retval > 0 ) {
-                                       $cleansource .= "<!--\nTidy reports:\n" .
-                                               str_replace( '-->', '--&gt;', $tidy->errorBuffer ) .
-                                               "\n-->";
-                               }
+                       $cleansource = tidy_get_output( $tidy );
+                       if ( $wgDebugTidy && $retval > 0 ) {
+                               $cleansource .= "<!--\nTidy reports:\n" .
+                                       str_replace( '-->', '--&gt;', $tidy->errorBuffer ) .
+                                       "\n-->";
                        }
-
-                       wfProfileOut( __METHOD__ );
-                       return $cleansource;
                }
+
+               wfProfileOut( __METHOD__ );
+               return $cleansource;
        }
 }
index e3d22f8..baffcd8 100644 (file)
@@ -589,4 +589,18 @@ class Profiler {
                        wfDebug( $s );
                }
        }
+
+       /**
+        * Get the content type sent out to the client.
+        * Used for profilers that output instead of store data.
+        * @return string
+        */
+       protected function getContentType() {
+               foreach ( headers_list() as $header ) {
+                       if ( preg_match( '#^content-type: (\w+/\w+);?#i', $header, $m ) ) {
+                               return $m[1];
+                       }
+               }
+               return null;
+       }
 }
index 3e7d6fa..e62622f 100644 (file)
@@ -50,10 +50,18 @@ class ProfilerSimpleText extends ProfilerSimple {
                                : 0; // profiling mismatch error?
                        uasort( $this->mCollated, array('self','sort') );
                        array_walk( $this->mCollated, array('self','format'), $totalReal );
-                       if ( $this->visible ) {
-                               print '<pre>'.self::$out.'</pre>';
-                       } else {
+                       if ( php_sapi_name() === 'cli' ) {
                                print "<!--\n".self::$out."\n-->\n";
+                       } elseif ( $this->getContentType() === 'text/html' ) {
+                               if ( $this->visible ) {
+                                       print '<pre>'.self::$out.'</pre>';
+                               } else {
+                                       print "<!--\n".self::$out."\n-->\n";
+                               }
+                       } elseif ( $this->getContentType() === 'text/javascript' ) {
+                               print "\n/*\n".self::$out."*/\n";
+                       } elseif ( $this->getContentType() === 'text/css' ) {
+                               print "\n/*\n".self::$out."*/\n";
                        }
                }
        }
index 822e9fe..017e135 100644 (file)
@@ -69,6 +69,14 @@ class ProfilerSimpleTrace extends ProfilerSimple {
        }
 
        function logData() {
-               print "<!-- \n {$this->trace} \n -->";
+               if ( php_sapi_name() === 'cli' ) {
+                       print "<!-- \n {$this->trace} \n -->";
+               } elseif ( $this->getContentType() === 'text/html' ) {
+                       print "<!-- \n {$this->trace} \n -->";
+               } elseif ( $this->getContentType() === 'text/javascript' ) {
+                       print "\n/*\n {$this->trace}\n*/";
+               } elseif ( $this->getContentType() === 'text/css' ) {
+                       print "\n/*\n {$this->trace}\n*/";
+               }
        }
 }
index b4bd98c..5abe226 100644 (file)
@@ -176,6 +176,7 @@ class ResourceLoader {
                } catch ( Exception $exception ) {
                        // Return exception as a comment
                        $result = $this->makeComment( $exception->__toString() );
+                       $this->hasErrors = true;
                }
 
                wfProfileOut( __METHOD__ );
@@ -435,6 +436,7 @@ class ResourceLoader {
 
                wfProfileIn( __METHOD__ );
                $errors = '';
+               $this->hasErrors = false;
 
                // Split requested modules into two groups, modules and missing
                $modules = array();
@@ -446,6 +448,7 @@ class ResourceLoader {
                                // This is a security issue, see bug 34907.
                                if ( $module->getGroup() === 'private' ) {
                                        $errors .= $this->makeComment( "Cannot show private module \"$name\"" );
+                                       $this->hasErrors = true;
                                        continue;
                                }
                                $modules[$name] = $this->getModule( $name );
@@ -460,6 +463,7 @@ class ResourceLoader {
                } catch( Exception $e ) {
                        // Add exception to the output as a comment
                        $errors .= $this->makeComment( $e->__toString() );
+                       $this->hasErrors = true;
                }
 
                wfProfileIn( __METHOD__.'-getModifiedTime' );
@@ -477,14 +481,12 @@ class ResourceLoader {
                        } catch ( Exception $e ) {
                                // Add exception to the output as a comment
                                $errors .= $this->makeComment( $e->__toString() );
+                               $this->hasErrors = true;
                        }
                }
 
                wfProfileOut( __METHOD__.'-getModifiedTime' );
 
-               // Send content type and cache related headers
-               $this->sendResponseHeaders( $context, $mtime );
-
                // If there's an If-Modified-Since header, respond with a 304 appropriately
                if ( $this->tryRespondLastModified( $context, $mtime ) ) {
                        wfProfileOut( __METHOD__ );
@@ -501,6 +503,7 @@ class ResourceLoader {
                // response in a comment if we're in debug mode.
                if ( $context->getDebug() && strlen( $warnings = ob_get_contents() ) ) {
                        $response = $this->makeComment( $warnings ) . $response;
+                       $this->hasErrors = true;
                }
 
                // Save response to file cache unless there are errors
@@ -515,6 +518,9 @@ class ResourceLoader {
                        }
                }
 
+               // Send content type and cache related headers
+               $this->sendResponseHeaders( $context, $mtime, $this->hasErrors );
+
                // Remove the output buffer and output the response
                ob_end_clean();
                echo $response;
@@ -526,13 +532,15 @@ class ResourceLoader {
         * Send content type and last modified headers to the client.
         * @param $context ResourceLoaderContext
         * @param $mtime string TS_MW timestamp to use for last-modified
+        * @param $error bool Whether there are commented-out errors in the response
         * @return void
         */
-       protected function sendResponseHeaders( ResourceLoaderContext $context, $mtime ) {
+       protected function sendResponseHeaders( ResourceLoaderContext $context, $mtime, $errors ) {
                global $wgResourceLoaderMaxage;
                // If a version wasn't specified we need a shorter expiry time for updates
                // to propagate to clients quickly
-               if ( is_null( $context->getVersion() ) ) {
+               // If there were errors, we also need a shorter expiry time so we can recover quickly
+               if ( is_null( $context->getVersion() ) || $errors ) {
                        $maxage  = $wgResourceLoaderMaxage['unversioned']['client'];
                        $smaxage = $wgResourceLoaderMaxage['unversioned']['server'];
                // If a version was specified we can use a longer expiry time since changing
@@ -680,6 +688,7 @@ class ResourceLoader {
                        } catch ( Exception $e ) {
                                // Add exception to the output as a comment
                                $exceptions .= $this->makeComment( $e->__toString() );
+                               $this->hasErrors = true;
                        }
                } else {
                        $blobs = array();
@@ -785,6 +794,7 @@ class ResourceLoader {
                        } catch ( Exception $e ) {
                                // Add exception to the output as a comment
                                $exceptions .= $this->makeComment( $e->__toString() );
+                               $this->hasErrors = true;
 
                                // Register module as missing
                                $missing[] = $name;
index fa84843..fad0027 100644 (file)
@@ -312,15 +312,19 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // Collect referenced files
                $this->localFileRefs = array_unique( $this->localFileRefs );
                // If the list has been modified since last time we cached it, update the cache
-               if ( $this->localFileRefs !== $this->getFileDependencies( $context->getSkin() ) && !wfReadOnly() ) {
-                       $dbw = wfGetDB( DB_MASTER );
-                       $dbw->replace( 'module_deps',
-                               array( array( 'md_module', 'md_skin' ) ), array(
-                                       'md_module' => $this->getName(),
-                                       'md_skin' => $context->getSkin(),
-                                       'md_deps' => FormatJson::encode( $this->localFileRefs ),
-                               )
-                       );
+               try {
+                       if ( $this->localFileRefs !== $this->getFileDependencies( $context->getSkin() ) ) {
+                               $dbw = wfGetDB( DB_MASTER );
+                               $dbw->replace( 'module_deps',
+                                       array( array( 'md_module', 'md_skin' ) ), array(
+                                               'md_module' => $this->getName(),
+                                               'md_skin' => $context->getSkin(),
+                                               'md_deps' => FormatJson::encode( $this->localFileRefs ),
+                                       )
+                               );
+                       }
+               } catch ( Exception $e ) {
+                       wfDebug( __METHOD__ . " failed to update DB: $e\n" );
                }
                return $styles;
        }
index 096a179..5d2c86b 100644 (file)
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class SiteArray extends GenericArrayObject implements SiteList {
+       /**
+        * Update this version number when the SiteArray format
+        * changes in an incompatible way
+        *
+        * @since 1.21
+        *
+        * @var integer
+        */
+       const CACHE_VERSION = 1;
+
+       /**
+        * Version number of the SiteArray format of the currently used object
+        *
+        * @since 1.21
+        *
+        * @var integer
+        */
+       public $cacheVersion = self::CACHE_VERSION;
 
        /**
         * Internal site identifiers pointing to their sites offset value.
@@ -213,6 +231,7 @@ class SiteArray extends GenericArrayObject implements SiteList {
                return array_merge(
                        parent::getSerializationData(),
                        array(
+                               'cacheVersion' => self::CACHE_VERSION,
                                'internalIds' => $this->byInternalId,
                                'globalIds' => $this->byGlobalId,
                        )
@@ -231,6 +250,7 @@ class SiteArray extends GenericArrayObject implements SiteList {
        public function unserialize( $serialization ) {
                $serializationData = parent::unserialize( $serialization );
 
+               $this->cacheVersion = $serializationData['cacheVersion'];
                $this->byInternalId = $serializationData['internalIds'];
                $this->byGlobalId = $serializationData['globalIds'];
 
index 135308c..a67d474 100644 (file)
@@ -99,10 +99,9 @@ class Sites {
                                $cache = wfGetMainCache();
                                $sites = $cache->get( wfMemcKey( 'SiteList' ) );
 
-                               if ( is_object( $sites ) ) {
+                               if ( is_object( $sites ) && isset( $sites->cacheVersion ) && $sites->cacheVersion === SiteArray::CACHE_VERSION ) {
                                        $this->sites = $sites;
-                               }
-                               else {
+                               } else {
                                        $this->loadSites();
                                }
                        }
index eca62f2..ae7657c 100644 (file)
@@ -489,7 +489,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                $title = Title::makeTitleSafe( $namespace, $dbkey );
                                if ( $this->checkTitle( $title, $namespace, $dbkey ) ) {
                                        $text = $this->buildRemoveLine( $title );
-                                       $fields['TitlesNs'.$namespace]['options'][$text] = htmlspecialchars( $title->getPrefixedText() );
+                                       $fields['TitlesNs'.$namespace]['options'][$text] = $title->getPrefixedText();
                                        $count++;
                                }
                        }
index f4acd64..cdad688 100644 (file)
@@ -85,7 +85,7 @@ class ListredirectsPage extends QueryPage {
                $batch->execute();
 
                // Back to start for display
-               if ( $db->numRows( $res ) > 0 ) {
+               if ( $res->numRows() > 0 ) {
                        // If there are no rows we get an error seeking.
                        $db->dataSeek( $res, 0 );
                }
index c6b2bb6..340172c 100644 (file)
@@ -78,7 +78,7 @@ class SpecialPreferences extends SpecialPage {
 
        public function submitReset( $formData ) {
                $user = $this->getUser();
-               $user->resetOptions();
+               $user->resetOptions( 'all' );
                $user->saveSettings();
 
                $url = $this->getTitle()->getFullURL( 'success' );
index 098caaf..3a73ebd 100644 (file)
@@ -328,7 +328,7 @@ class LoginForm extends SpecialPage {
                # Request forgery checks.
                if ( !self::getCreateaccountToken() ) {
                        self::setCreateaccountToken();
-                       return Status::newFatal( 'sessionfailure' );
+                       return Status::newFatal( 'nocookiesfornew' );
                }
 
                # The user didn't pass a createaccount token
index f135649..85876e9 100644 (file)
@@ -187,7 +187,7 @@ class SpecialWhatLinksHere extends SpecialPage {
                                $joinConds);
                }
 
-               if( ( !$fetchlinks || !$dbr->numRows($plRes) ) && ( $hidetrans || !$dbr->numRows($tlRes) ) && ( $hideimages || !$dbr->numRows($ilRes) ) ) {
+               if( ( !$fetchlinks || !$plRes->numRows() ) && ( $hidetrans || !$tlRes->numRows() ) && ( $hideimages || !$ilRes->numRows() ) ) {
                        if ( 0 == $level ) {
                                $out->addHTML( $this->whatlinkshereForm() );
 
index d933d34..54ef840 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup Maintenance
  */
 require_once( __DIR__ . '/../../maintenance/Maintenance.php' );
+set_time_limit( 3600 ); // 1 hour
 
 /**
  * Assemble the segments of a chunked upload.
diff --git a/includes/upload/PublishStashedFile.php b/includes/upload/PublishStashedFile.php
new file mode 100644 (file)
index 0000000..fec3c73
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Upload a file from the upload stash into the local file repo.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+require_once( __DIR__ . '/../../maintenance/Maintenance.php' );
+set_time_limit( 3600 ); // 1 hour
+
+/**
+ * Upload a file from the upload stash into the local file repo.
+ *
+ * @ingroup Maintenance
+ */
+class PublishStashedFile extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Upload stashed file into the local file repo";
+               $this->addOption( 'filename', "Desired file name", true, true );
+               $this->addOption( 'filekey', "Upload stash file key", true, true );
+               $this->addOption( 'userid', "Upload owner user ID", true, true );
+               $this->addOption( 'comment', "Upload comment", true, true );
+               $this->addOption( 'text', "Upload description", true, true );
+               $this->addOption( 'watch', "Whether the uploader should watch the page", true, true );
+               $this->addOption( 'sessionid', "Upload owner session ID", true, true );
+       }
+
+       public function execute() {
+               wfSetupSession( $this->getOption( 'sessionid' ) );
+               try {
+                       $user = User::newFromId( $this->getOption( 'userid' ) );
+                       if ( !$user ) {
+                               throw new MWException( "No user with ID " . $this->getOption( 'userid' ) . "." );
+                       }
+
+                       UploadBase::setSessionStatus(
+                               $this->getOption( 'filekey' ),
+                               array( 'result' => 'Poll', 'stage' => 'publish', 'status' => Status::newGood() )
+                       );
+
+                       $upload = new UploadFromStash( $user );
+                       // @TODO: initialize() causes a GET, ideally we could frontload the antivirus
+                       // checks and anything else to the stash stage (which includes concatenation and
+                       // the local file is thus already there). That way, instead of GET+PUT, there could
+                       // just be a COPY operation from the stash to the public zone.
+                       $upload->initialize( $this->getOption( 'filekey' ), $this->getOption( 'filename' ) );
+
+                       // Check if the local file checks out (this is generally a no-op)
+                       $verification = $upload->verifyUpload();
+                       if ( $verification['status'] !== UploadBase::OK ) {
+                               $status = Status::newFatal( 'verification-error' );
+                               $status->value = array( 'verification' => $verification );
+                               UploadBase::setSessionStatus(
+                                       $this->getOption( 'filekey' ),
+                                       array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
+                               );
+                               $this->error( "Could not verify upload.\n", 1 ); // die
+                       }
+
+                       // Upload the stashed file to a permanent location
+                       $status = $upload->performUpload(
+                               $this->getOption( 'comment' ),
+                               $this->getOption( 'text' ),
+                               $this->getOption( 'watch' ),
+                               $user
+                       );
+                       if ( !$status->isGood() ) {
+                               UploadBase::setSessionStatus(
+                                       $this->getOption( 'filekey' ),
+                                       array( 'result' => 'Failure', 'stage' => 'publish', 'status' => $status )
+                               );
+                               $this->error( $status->getWikiText() . "\n", 1 ); // die
+                       }
+
+                       // Build the image info array while we have the local reference handy
+                       $apiMain = new ApiMain(); // dummy object (XXX)
+                       $imageInfo = $upload->getImageInfo( $apiMain->getResult() );
+
+                       // Cleanup any temporary local file
+                       $upload->cleanupTempFile();
+
+                       // Cache the info so the user doesn't have to wait forever to get the final info
+                       UploadBase::setSessionStatus(
+                               $this->getOption( 'filekey' ),
+                               array(
+                                       'result'    => 'Success',
+                                       'stage'     => 'publish',
+                                       'filename'  => $upload->getLocalFile()->getName(),
+                                       'imageinfo' => $imageInfo,
+                                       'status'    => Status::newGood()
+                               )
+                       );
+               } catch ( MWException $e ) {
+                       UploadBase::setSessionStatus(
+                               $this->getOption( 'filekey' ),
+                               array(
+                                       'result' => 'Failure',
+                                       'stage'  => 'publish',
+                                       'status' => Status::newFatal( 'api-error-stashfailed' )
+                               )
+                       );
+                       throw $e;
+               }
+               session_write_close();
+       }
+}
+
+$maintClass = "PublishStashedFile";
+require_once( RUN_MAINTENANCE_IF_MAIN );
index dc32a29..b5c65e5 100644 (file)
@@ -235,6 +235,14 @@ abstract class UploadBase {
                return $this->mFileSize;
        }
 
+       /**
+        * Get the base 36 SHA1 of the file
+        * @return string
+        */
+       protected function getTempFileSha1Base36() {
+               return FSFile::getSha1Base36FromPath( $this->mTempPath );
+       }
+
        /**
         * @param $srcPath String: the source path
         * @return string the real path if it was a virtual URL
@@ -546,7 +554,9 @@ abstract class UploadBase {
        }
 
        /**
-        * Check for non fatal problems with the file
+        * Check for non fatal problems with the file.
+        *
+        * This should not assume that mTempPath is set.
         *
         * @return Array of warnings
         */
@@ -594,7 +604,7 @@ abstract class UploadBase {
                }
 
                // Check dupes against existing files
-               $hash = FSFile::getSha1Base36FromPath( $this->mTempPath );
+               $hash = $this->getTempFileSha1Base36();
                $dupes = RepoGroup::singleton()->findBySha1( $hash );
                $title = $this->getTitle();
                // Remove all matches against self
@@ -1224,27 +1234,22 @@ abstract class UploadBase {
                        }
                }
 
+               /* NB: AV_NO_VIRUS is 0 but AV_SCAN_FAILED is false,
+                * so we need the strict equalities === and thus can't use a switch here
+                */
                if ( $mappedCode === AV_SCAN_FAILED ) {
                        # scan failed (code was mapped to false by $exitCodeMap)
                        wfDebug( __METHOD__ . ": failed to scan $file (code $exitCode).\n" );
 
-                       if ( $wgAntivirusRequired ) {
-                               wfProfileOut( __METHOD__ );
-                               return wfMessage( 'virus-scanfailed', array( $exitCode ) )->text();
-                       } else {
-                               wfProfileOut( __METHOD__ );
-                               return null;
-                       }
+                       $output = $wgAntivirusRequired ? wfMessage( 'virus-scanfailed', array( $exitCode ) )->text() : null;
                } elseif ( $mappedCode === AV_SCAN_ABORTED ) {
                        # scan failed because filetype is unknown (probably imune)
                        wfDebug( __METHOD__ . ": unsupported file type $file (code $exitCode).\n" );
-                       wfProfileOut( __METHOD__ );
-                       return null;
+                       $output = null;
                } elseif ( $mappedCode === AV_NO_VIRUS ) {
                        # no virus found
                        wfDebug( __METHOD__ . ": file passed virus scan.\n" );
-                       wfProfileOut( __METHOD__ );
-                       return false;
+                       $output = false;
                } else {
                        $output = trim( $output );
 
@@ -1260,9 +1265,10 @@ abstract class UploadBase {
                        }
 
                        wfDebug( __METHOD__ . ": FOUND VIRUS! scanner feedback: $output \n" );
-                       wfProfileOut( __METHOD__ );
-                       return $output;
                }
+
+               wfProfileOut( __METHOD__ );
+               return $output;
        }
 
        /**
index c857f25..71ee96b 100644 (file)
@@ -89,7 +89,7 @@ class UploadFromStash extends UploadBase {
         * @param $key string
         * @param $name string
         */
-       public function initialize( $key, $name = 'upload_file' ) {
+       public function initialize( $key, $name = 'upload_file', $initTempFile = true ) {
                /**
                 * Confirming a temporarily stashed upload.
                 * We don't want path names to be forged, so we keep
@@ -98,7 +98,7 @@ class UploadFromStash extends UploadBase {
                 */
                $metadata = $this->stash->getMetadata( $key );
                $this->initializePathInfo( $name,
-                       $this->getRealPath( $metadata['us_path'] ),
+                       $initTempFile ? $this->getRealPath( $metadata['us_path'] ) : false,
                        $metadata['us_size'],
                        false
                );
@@ -129,6 +129,14 @@ class UploadFromStash extends UploadBase {
                return $this->mSourceType;
        }
 
+       /**
+        * Get the base 36 SHA1 of the file
+        * @return string
+        */
+       protected function getTempFileSha1Base36() {
+               return $this->mFileProps['sha1'];
+       }
+
        /**
         * File has been previously verified so no need to do so again.
         *
diff --git a/includes/zhtable/.gitignore b/includes/zhtable/.gitignore
deleted file mode 100644 (file)
index c4cf2eb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-*.zip
-*.tar.gz
-*.tgz
diff --git a/includes/zhtable/Makefile b/includes/zhtable/Makefile
deleted file mode 100644 (file)
index 5dd88d3..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-#
-# Creating the file ZhConversion.php used for Simplified/Traditional
-# Chinese conversion. It gets the basic conversion table from the Unihan 
-# database, and construct the phrase tables using phrase libraries in
-# the SCIM packages and the libtabe package. There are also special
-# tables used to for adjustment. 
-#
-
-GREP = LANG=zh_CN.UTF8 grep
-SED = LANG=zh_CN.UTF8 sed
-DIFF = LANG=zh_CN.UTF8 diff
-CC ?= gcc
-
-SF_MIRROR = easynews
-SCIM_TABLES_VER = 0.5.9
-SCIM_PINYIN_VER = 0.5.91
-LIBTABE_VER = 0.2.3
-
-# Installation directory
-INSTDIR = /usr/local/share/zhdaemons/
-
-all: ZhConversion.php tradphrases.notsure simpphrases.notsure wordlist toHans.dict toHant.dict toCN.dict toTW.dict toHK.dict toSG.dict
-
-# Download Unihan database and Traditional Chinese / Simplified Chinese phrases files
-Unihan.zip:
-       wget -nc http://www.unicode.org/Public/UNIDATA/Unihan.zip
-
-scim-tables-$(SCIM_TABLES_VER).tar.gz:
-       wget -nc http://$(SF_MIRROR).dl.sourceforge.net/sourceforge/scim/scim-tables-$(SCIM_TABLES_VER).tar.gz
-
-scim-pinyin-$(SCIM_PINYIN_VER).tar.gz:
-       wget -nc http://$(SF_MIRROR).dl.sourceforge.net/sourceforge/scim/scim-pinyin-$(SCIM_PINYIN_VER).tar.gz
-
-libtabe-$(LIBTABE_VER).tgz:
-       wget -nc http://$(SF_MIRROR).dl.sourceforge.net/sourceforge/libtabe/libtabe-$(LIBTABE_VER).tgz
-
-# Extract the file from a comressed files
-Unihan.txt: Unihan.zip
-       unzip -oq Unihan.zip
-
-EZ.txt.in: scim-tables-$(SCIM_TABLES_VER).tar.gz
-       tar -xzf scim-tables-$(SCIM_TABLES_VER).tar.gz -O scim-tables-$(SCIM_TABLES_VER)/tables/zh/EZ-Big.txt.in > EZ.txt.in
-
-Wubi.txt.in: scim-tables-$(SCIM_TABLES_VER).tar.gz
-       tar -xzf scim-tables-$(SCIM_TABLES_VER).tar.gz -O scim-tables-$(SCIM_TABLES_VER)/tables/zh/Wubi.txt.in > Wubi.txt.in
-
-Ziranma.txt.in: scim-tables-$(SCIM_TABLES_VER).tar.gz
-       tar -xzf scim-tables-$(SCIM_TABLES_VER).tar.gz -O scim-tables-$(SCIM_TABLES_VER)/tables/zh/Ziranma.txt.in > Ziranma.txt.in
-
-
-phrase_lib.txt: scim-pinyin-$(SCIM_PINYIN_VER).tar.gz
-       tar -xzf scim-pinyin-$(SCIM_PINYIN_VER).tar.gz -O scim-pinyin-$(SCIM_PINYIN_VER)/data/phrase_lib.txt > phrase_lib.txt
-
-tsi.src: libtabe-$(LIBTABE_VER).tgz    
-       tar -xzf libtabe-$(LIBTABE_VER).tgz -O libtabe/tsi-src/tsi.src > tsi.src
-
-# Make a word list
-wordlist: phrase_lib.txt EZ.txt.in tsi.src
-       iconv -c -f big5 -t utf8 tsi.src | $(SED) 's/# //g' | $(SED) 's/[ ][0-9].*//' > wordlist
-       $(SED) 's/\(.*\)\t[0-9][0-9]*.*/\1/' phrase_lib.txt | $(SED) '1,5d' >> wordlist
-       $(SED) '1,/BEGIN_TABLE/d' EZ.txt.in | colrm 1 8 | $(SED) 's/\t.*//' | $(GREP) "^...*" >> wordlist
-       sort wordlist | uniq | $(SED) 's/ //g' > t
-       mv t wordlist
-
-printutf8: printutf8.c
-       $(CC) -o printutf8 printutf8.c
-
-unihan.t2s.t: Unihan.txt printutf8
-       $(GREP) kSimplifiedVariant Unihan.txt | $(SED)  '/#/d' | $(SED)  's/kSimplifiedVariant//' | ./printutf8 > unihan.t2s.t
-
-trad2simp.t: trad2simp.manual unihan.t2s.t
-       cp unihan.t2s.t tmp1
-       for I in `colrm 11 < trad2simp.manual` ; do $(SED) "/^$$I/d" tmp1 > tmp2; mv tmp2 tmp1; done
-       cat trad2simp.manual tmp1 > trad2simp.t
-
-unihan.s2t.t: Unihan.txt printutf8
-       $(GREP) kTraditionalVariant Unihan.txt | $(SED)  '/#/d' | $(SED)  's/kTraditionalVariant//' | ./printutf8 > unihan.s2t.t
-
-simp2trad.t: unihan.s2t.t simp2trad.manual
-       cp unihan.s2t.t tmp1
-       for I in `colrm 11 < simp2trad.manual` ; do $(SED) "/^$$I/d" tmp1 > tmp2; mv tmp2 tmp1; done
-       cat simp2trad.manual tmp1 > simp2trad.t
-
-t2s_1tomany.t: trad2simp.t
-       $(GREP) -s ".\{19,\}" trad2simp.t | $(SED)  's/U+...../"/' | $(SED)  's/|U+...../"=>"/' | $(SED)  's/|U+.....//g' | $(SED)  's/|/",/' > t2s_1tomany.t
-
-t2s_1to1.t: trad2simp.t s2t_1tomany.t
-       $(SED)  "/.*|.*|.*|.*/d" trad2simp.t | $(SED)  's/U+[0-9a-z][0-9a-z]*/"/' | $(SED)  's/|U+[0-9a-z][0-9a-z]*/"=>"/' | $(SED)  's/|/",/' > t2s_1to1.t
-       $(GREP)  '"."=>"..",' s2t_1tomany.t | $(SED) 's/\("."\)=>".\(.\)",/"\2"=>\1,/' >> t2s_1to1.t
-       $(GREP)  '"."=>"...",' s2t_1tomany.t | $(SED) 's/\("."\)=>".\(.\).",/"\2"=>\1,/' >> t2s_1to1.t
-       $(GREP)  '"."=>"...",' s2t_1tomany.t | $(SED) 's/\("."\)=>"..\(.\)",/"\2"=>\1,/' >> t2s_1to1.t
-       $(GREP)  '"."=>"....",' s2t_1tomany.t | $(SED) 's/\("."\)=>".\(.\)..",/"\2"=>\1,/' >> t2s_1to1.t
-       $(GREP)  '"."=>"....",' s2t_1tomany.t | $(SED) 's/\("."\)=>"..\(.\).",/"\2"=>\1,/' >> t2s_1to1.t
-       $(GREP)  '"."=>"....",' s2t_1tomany.t | $(SED) 's/\("."\)=>"...\(.\)",/"\2"=>\1,/' >> t2s_1to1.t
-       sort t2s_1to1.t | uniq > t
-       mv t t2s_1to1.t
-
-
-s2t_1tomany.t: simp2trad.t
-       $(GREP) -s ".\{19,\}" simp2trad.t | $(SED)  's/U+...../"/' | $(SED)  's/|U+...../"=>"/' | $(SED)  's/|U+.....//g' | $(SED)  's/|/",/' > s2t_1tomany.t
-
-s2t_1to1.t: simp2trad.t t2s_1tomany.t
-       $(SED)  "/.*|.*|.*|.*/d" simp2trad.t | $(SED)  's/U+[0-9a-z][0-9a-z]*/"/' | $(SED)  's/|U+[0-9a-z][0-9a-z]*/"=>"/' | $(SED)  's/|/",/' > s2t_1to1.t
-       $(GREP)  '"."=>"..",' t2s_1tomany.t | $(SED) 's/\("."\)=>".\(.\)",/"\2"=>\1,/' >> s2t_1to1.t
-       $(GREP)  '"."=>"...",' t2s_1tomany.t | $(SED) 's/\("."\)=>".\(.\).",/"\2"=>\1,/' >> s2t_1to1.t
-       $(GREP)  '"."=>"...",' t2s_1tomany.t | $(SED) 's/\("."\)=>"..\(.\)",/"\2"=>\1,/' >> s2t_1to1.t
-       $(GREP)  '"."=>"....",' t2s_1tomany.t | $(SED) 's/\("."\)=>".\(.\)..",/"\2"=>\1,/' >> s2t_1to1.t
-       $(GREP)  '"."=>"....",' t2s_1tomany.t | $(SED) 's/\("."\)=>"..\(.\).",/"\2"=>\1,/' >> s2t_1to1.t
-       $(GREP)  '"."=>"....",' t2s_1tomany.t | $(SED) 's/\("."\)=>"...\(.\)",/"\2"=>\1,/' >> s2t_1to1.t
-       sort s2t_1to1.t | uniq > t
-       mv t s2t_1to1.t
-
-tphrase.t: EZ.txt.in tsi.src
-       colrm 1 8 < EZ.txt.in | $(SED) 's/\t//g' | $(GREP) "^.\{2,4\}[0-9]" | $(SED) 's/[0-9]//g' > t
-       iconv -c -f big5 -t utf8 tsi.src | $(SED) 's/ [0-9].*//g' | $(SED) 's/[# ]//g'| $(GREP) "^.\{2,4\}"  >> t
-       sort t | uniq > tphrase.t
-
-alltradphrases.t: tphrase.t s2t_1tomany.t tradphrases_exclude.manual
-       for i in `cat s2t_1tomany.t | $(SED) 's/.*=>".//' | $(SED) 's/"//g' |$(SED) 's/,/\n/' | $(SED) 's/\(.\)/\1\n/g' |sort | uniq`; do $(GREP) -s $$i tphrase.t ; done  > alltradphrases.t || true
-       cat alltradphrases.t | $(GREP) -vf tradphrases_exclude.manual > alltradphrases.tt ; mv alltradphrases.tt alltradphrases.t
-
-
-tradphrases_2.t: alltradphrases.t
-       cat alltradphrases.t | $(GREP)  "^..$$" | sort | uniq > tradphrases_2.t
-
-tradphrases_3.t: alltradphrases.t
-       cat alltradphrases.t | $(GREP)  "^...$$" | sort | uniq > tradphrases_3.t
-       for i in `cat tradphrases_2.t`; do $(GREP) $$i tradphrases_3.t ; done | sort | uniq > t3 || true
-       $(DIFF) t3 tradphrases_3.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t tradphrases_3.t
-
-
-tradphrases_4.t: alltradphrases.t
-       cat alltradphrases.t | $(GREP)  "^....$$" | sort | uniq > tradphrases_4.t
-       for i in `cat tradphrases_2.t`; do $(GREP) $$i tradphrases_4.t ; done | sort | uniq > t3 || true
-       $(DIFF) t3 tradphrases_4.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t tradphrases_4.t
-       for i in `cat tradphrases_3.t`; do $(GREP) $$i tradphrases_4.t ; done | sort | uniq > t3 || true
-       $(DIFF) t3 tradphrases_4.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t tradphrases_4.t
-
-tradphrases.t: tradphrases.manual tradphrases_2.t tradphrases_3.t tradphrases_4.t t2s_1tomany.t
-       cat tradphrases.manual tradphrases_2.t tradphrases_3.t tradphrases_4.t |sort | uniq > tradphrases.t
-       for i in `$(SED) 's/"\(.\).*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i tradphrases.t ; done | $(DIFF) tradphrases.t - | $(GREP) '<' | $(SED) 's/< //' > t
-       for i in `$(SED) 's/"\(..\)..*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i tradphrases.t ; done | $(DIFF) tradphrases.t - | $(GREP) '<' | $(SED) 's/< //' >> t
-       mv t tradphrases.t
-       cat tradphrases.t | sort | uniq > t
-       mv t tradphrases.t
-
-tradphrases.notsure: tradphrases_2.t tradphrases_3.t tradphrases_4.t t2s_1tomany.t
-       cat tradphrases_2.t tradphrases_3.t tradphrases_4.t |sort | uniq > t
-       for i in `$(SED) 's/"\(.\).*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i t; done | $(DIFF) t - | $(GREP) '>' | $(SED) 's/> //' > tradphrases.notsure
-
-
-ph.t: phrase_lib.txt
-       $(SED) 's/[\t0-9a-zA-Z]//g' phrase_lib.txt | $(GREP) "^.\{2,4\}$$" > ph.t
-
-Wubi.t: Wubi.txt.in
-       $(SED) '1,/BEGIN_TABLE/d' Wubi.txt.in | colrm 1 8 | $(SED) 's/\t.*//' | $(GREP) "^...*" > Wubi.t
-
-Ziranma.t: Ziranma.txt.in
-       $(SED) '1,/BEGIN_TABLE/d' Ziranma.txt.in | colrm 1 8 | $(SED) 's/\t.*//' | $(GREP) "^...*" > Ziranma.t
-
-
-allsimpphrases.t: t2s_1tomany.t ph.t Wubi.t Ziranma.t simpphrases_exclude.manual
-       rm -f allsimpphrases.t
-       for i in `cat t2s_1tomany.t | $(SED) 's/.*=>".//' | $(SED) 's/"//g' | $(SED) 's/,/\n/' | $(SED) 's/\(.\)/\1\n/g' | sort | uniq `; do $(GREP) $$i Wubi.t >> allsimpphrases.t; done
-       for i in `cat t2s_1tomany.t | $(SED) 's/.*=>".//' | $(SED) 's/"//g' | $(SED) 's/,/\n/' | $(SED) 's/\(.\)/\1\n/g' | sort | uniq `; do $(GREP) $$i Ziranma.t >> allsimpphrases.t; done
-       for i in `cat t2s_1tomany.t | $(SED) 's/.*=>".//' | $(SED) 's/"//g' | $(SED) 's/,/\n/' | $(SED) 's/\(.\)/\1\n/g' | sort | uniq `; do $(GREP) $$i ph.t >> allsimpphrases.t; done
-       cat allsimpphrases.t | $(GREP) -vf simpphrases_exclude.manual > allsimpphrases.tt ; mv allsimpphrases.tt allsimpphrases.t
-
-simpphrases_2.t: allsimpphrases.t
-       cat allsimpphrases.t | $(GREP) "^..$$" | sort | uniq > simpphrases_2.t
-
-simpphrases_3.t: allsimpphrases.t
-       cat allsimpphrases.t | $(GREP) "^...$$" | sort | uniq > simpphrases_3.t
-       for i in `cat simpphrases_2.t`; do $(GREP) $$i simpphrases_3.t ; done | sort | uniq > t3 || true
-       $(DIFF) t3 simpphrases_3.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t simpphrases_3.t
-
-simpphrases_4.t: allsimpphrases.t
-       cat allsimpphrases.t | $(GREP) "^....$$" | sort | uniq > simpphrases_4.t
-       rm -f t
-       for i in `cat simpphrases_2.t`; do $(GREP) $$i simpphrases_4.t >> t; done || true
-       sort t | uniq > t3
-       $(DIFF) t3 simpphrases_4.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t simpphrases_4.t
-       for i in `cat simpphrases_3.t`; do $(GREP) $$i simpphrases_4.t; done | sort | uniq > t3 || true
-       $(DIFF) t3 simpphrases_4.t | $(GREP) ">" | $(SED) 's/> //' > t
-       mv t simpphrases_4.t
-
-simpphrases.t: simpphrases.manual simpphrases_2.t simpphrases_3.t simpphrases_4.t t2s_1tomany.t
-       cat simpphrases.manual simpphrases_2.t simpphrases_3.t simpphrases_4.t > simpphrases.t
-       for i in `$(SED) 's/"\(.\).*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i simpphrases.t ; done | $(DIFF) simpphrases.t - | $(GREP) '<' | $(SED) 's/< //' > t
-       for i in `$(SED) 's/"\(..\)..*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i simpphrases.t ; done | $(DIFF) simpphrases.t - | $(GREP) '<' | $(SED) 's/< //' >> t
-       mv t simpphrases.t
-       cat simpphrases.t | sort | uniq > t
-       mv t simpphrases.t
-
-simpphrases.notsure: simpphrases_2.t simpphrases_3.t simpphrases_4.t t2s_1tomany.t
-       cat simpphrases_2.t simpphrases_3.t simpphrases_4.t > t
-       for i in `$(SED) 's/"\(.\).*/\1/' t2s_1tomany.t ` ; do $(GREP) $$i t ; done | $(DIFF) t - | $(GREP) '>' | $(SED) 's/> //' > simpphrases.notsure
-
-trad2simp1to1.t: t2s_1tomany.t t2s_1to1.t trad2simp_noconvert.manual
-       $(SED)  's/\(.......\).*/\1",/' t2s_1tomany.t > tt
-       colrm 1 7 < trad2simp.manual | colrm 3 > trad2simpcharsrc.t
-       colrm 1 17 < trad2simp.manual | colrm 3 > trad2simpchardest.t
-       cat trad2simpcharsrc.t | $(GREP) -f trad2simpchardest.t > trad2simprepeatedchar.t
-       cat tt | $(GREP) -vf trad2simprepeatedchar.t > trad2simp1to1.t
-       cat t2s_1to1.t >> trad2simp1to1.t
-       cat trad2simp1to1.t | $(GREP) -vf trad2simp_noconvert.manual > tt
-       mv tt trad2simp1to1.t
-
-simp2trad1to1.t: s2t_1tomany.t s2t_1to1.t simp2trad.manual simp2trad_noconvert.manual
-       $(SED)  's/\(.......\).*/\1",/' s2t_1tomany.t > tt
-       colrm 1 7 < simp2trad.manual | colrm 3 > simp2tradcharsrc.t
-       colrm 1 17 < simp2trad.manual | colrm 3 > simp2tradchardest.t
-       cat simp2tradcharsrc.t | $(GREP) -f simp2tradchardest.t > simp2tradrepeatedchar.t
-       cat tt | $(GREP) -vf simp2tradrepeatedchar.t > simp2trad1to1.t
-       cat s2t_1to1.t >> simp2trad1to1.t
-       cat simp2trad1to1.t | $(GREP) -vf simp2trad_noconvert.manual > tt
-       mv tt simp2trad1to1.t
-
-trad2simp.php: trad2simp1to1.t tradphrases.t trad2simp_supp_unset.manual trad2simp_supp_set.manual
-       printf '<?php\n$$trad2simp=array(' > trad2simp.php
-       cat trad2simp1to1.t >> trad2simp.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' trad2simp_supp_set.manual >> trad2simp.php
-       printf ');\n$$str=\n"' >> trad2simp.php
-       cat tradphrases.t >> trad2simp.php
-       printf '";\n$$t=strtr($$str, $$trad2simp);\necho $$t;\n?>' >> trad2simp.php
-       cat trad2simp1to1.t | $(GREP) -vf trad2simp_supp_unset.manual > tt
-       mv tt trad2simp1to1.t
-
-simp2trad.php: simp2trad1to1.t simpphrases.t simp2trad_supp_set.manual
-       printf '<?php\n$$simp2trad=array(' > simp2trad.php
-       cat simp2trad1to1.t >> simp2trad.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' simp2trad_supp_set.manual >> simp2trad.php
-       printf ');\n$$str=\n"' >> simp2trad.php
-       cat simpphrases.t >> simp2trad.php
-       printf '";\n$$t=strtr($$str, $$simp2trad);\necho $$t;\n?>' >> simp2trad.php
-
-simp2trad.phrases.t: trad2simp.php tradphrases.t simp2trad_supp_set.manual
-       php -f trad2simp.php | $(SED)  's/\(.*\)/"\1" => /' > tmp1
-       cat tradphrases.t | $(SED)  's/\(.*\)/"\1",/' > tmp2
-       paste tmp1 tmp2 > simp2trad.phrases.t
-       colrm 3 < simp2trad_supp_set.manual > simp2trad_supp_noconvert.t
-       cat trad2simp.php | $(GREP) -vf simp2trad_supp_noconvert.t > trad2simp.tt
-       mv trad2simp.tt trad2simp.php
-
-trad2simp.phrases.t: simp2trad.php simpphrases.t trad2simp_supp_set.manual
-       php -f simp2trad.php | $(SED)  's/\(.*\)/"\1" => /' > tmp1
-       cat simpphrases.t | $(SED)  's/\(.*\)/"\1",/' > tmp2
-       paste tmp1 tmp2 > trad2simp.phrases.t
-       colrm 3 < trad2simp_supp_set.manual > trad2simp_supp_noconvert.t
-       cat simp2trad.php | $(GREP) -vf trad2simp_supp_noconvert.t > simp2trad.tt
-       mv simp2trad.tt simp2trad.php
-
-toHans.dict: trad2simp1to1.t trad2simp.phrases.t toSimp.manual
-       cat trad2simp1to1.t | $(SED) 's/[, \t]//g' | $(SED) 's/=>/\t/' > toHans.dict
-       cat trad2simp.phrases.t | $(SED) 's/[, \t]//g' | $(SED) 's/=>/\t/' >> toHans.dict
-       cat toSimp.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' >> toHans.dict
-
-toHant.dict: simp2trad1to1.t simp2trad.phrases.t toTrad.manual
-       cat simp2trad1to1.t | $(SED) 's/[, \t]//g' | $(SED) 's/=>/\t/' > toHant.dict
-       cat simp2trad.phrases.t | $(SED) 's/[, \t]//g' | $(SED) 's/=>/\t/' >> toHant.dict
-       cat toTrad.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' >> toHant.dict
-
-toTW.dict: toTW.manual
-       cat toTW.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' > toTW.dict
-
-toHK.dict: toHK.manual
-       cat toHK.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' > toHK.dict
-
-toCN.dict: toCN.manual
-       cat toCN.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' > toCN.dict
-
-toSG.dict: toSG.manual
-       cat toSG.manual | $(SED) 's/ //g' | $(SED) 's/\(^.*\)\t\(.*\)/"\1"\t"\2"/' > toSG.dict
-
-ZhConversion.php: simp2trad1to1.t simp2trad.phrases.t trad2simp1to1.t trad2simp.phrases.t toSimp.manual toTrad.manual toCN.manual toHK.manual toSG.manual toTW.manual
-       printf '<?php\n/**\n * Simplified / Traditional Chinese conversion tables\n' > ZhConversion.php
-       printf ' *\n * Automatically generated using code and data in includes/zhtable/\n' >> ZhConversion.php
-       printf ' * Do not modify directly!\n */\n\n' >> ZhConversion.php
-       printf '$$zh2Hant = array(\n' >> ZhConversion.php
-       cat simp2trad1to1.t >> ZhConversion.php
-       echo >> ZhConversion.php
-       cat simp2trad.phrases.t >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toTrad.manual >> ZhConversion.php
-       echo ');' >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf '$$zh2Hans = array(\n' >> ZhConversion.php
-       cat trad2simp1to1.t >> ZhConversion.php
-       echo >> ZhConversion.php
-       cat trad2simp.phrases.t >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toSimp.manual >> ZhConversion.php
-       echo ');' >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf '$$zh2TW = array(\n' >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toTW.manual >> ZhConversion.php
-       echo ');' >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf '$$zh2HK = array(\n' >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toHK.manual >> ZhConversion.php
-       echo ');' >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf '$$zh2CN = array(\n' >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toCN.manual >> ZhConversion.php
-       echo ');' >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf '$$zh2SG = array(\n' >> ZhConversion.php
-       $(SED) 's/\(.*\)\t\(.*\)/"\1" => "\2",/' toSG.manual >> ZhConversion.php
-       echo >> ZhConversion.php
-       printf ');' >> ZhConversion.php
-
-clean: cleantmp cleandl
-
-cleantmp:
-       # Stuff unpacked from the files fetched by wget
-       rm -f \
-               Unihan.txt \
-               EZ.txt.in \
-               Wubi.txt.in \
-               Ziranma.txt.in \
-               phrase_lib.txt \
-               tsi.src
-       # Temporary files and other trash
-       rm -f ZhConversion.php tmp1 tmp2 tmp3 t3 *.t trad2simp.php simp2trad.php *.dict printutf8 *~ \
-               simpphrases.notsure tradphrases.notsure wordlist
-
-cleandl:
-       rm -f \
-               Unihan.zip \
-               scim-tables-$(SCIM_TABLES_VER).tar.gz \
-               scim-pinyin-$(SCIM_PINYIN_VER).tar.gz \
-               libtabe-$(LIBTABE_VER).tgz
-
diff --git a/includes/zhtable/Makefile.py b/includes/zhtable/Makefile.py
deleted file mode 100755 (executable)
index 1342066..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @author Philip
-import tarfile as tf
-import zipfile as zf
-import os, re, shutil, sys, platform
-
-pyversion = platform.python_version()
-islinux = platform.system().lower() == 'linux'
-
-if pyversion[:3] in ['2.6', '2.7']:
-    import urllib as urllib_request
-    import codecs
-    open = codecs.open
-    _unichr = unichr
-    if sys.maxunicode < 0x10000:
-        def unichr(i):
-            if i < 0x10000:
-                return _unichr(i)
-            else:
-                return _unichr( 0xD7C0 + ( i>>10 ) ) + _unichr( 0xDC00 + ( i & 0x3FF ) )
-elif pyversion[:2] == '3.':
-    import urllib.request as urllib_request
-    unichr = chr
-
-def unichr2( *args ):
-    return [unichr( int( i.split('<')[0][2:], 16 ) ) for i in args]
-
-def unichr3( *args ):
-    return [unichr( int( i[2:7], 16 ) ) for i in args if i[2:7]]
-
-# DEFINE
-UNIHAN_VER = '6.2.0'
-SF_MIRROR = 'dfn'
-SCIM_TABLES_VER = '0.5.11'
-SCIM_PINYIN_VER = '0.5.92'
-LIBTABE_VER = '0.2.3'
-# END OF DEFINE
-
-def download( url, dest ):
-    if os.path.isfile( dest ):
-        print( 'File %s is up to date.' % dest )
-        return
-    global islinux
-    if islinux:
-        # we use wget instead urlretrieve under Linux, 
-        # because wget could display details like download progress
-        os.system( 'wget %s -O %s' % ( url, dest ) )
-    else:
-        print( 'Downloading from [%s] ...' % url )
-        urllib_request.urlretrieve( url, dest )
-        print( 'Download complete.\n' )
-    return
-
-def uncompress( fp, member, encoding = 'U8' ):
-    name = member.rsplit( '/', 1 )[-1]
-    print( 'Extracting %s ...' % name )
-    fp.extract( member )
-    shutil.move( member, name )
-    if '/' in member:
-        shutil.rmtree( member.split( '/', 1 )[0] )
-    return open( name, 'rb', encoding, 'ignore' )
-
-unzip = lambda path, member, encoding = 'U8': \
-        uncompress( zf.ZipFile( path ), member, encoding )
-
-untargz = lambda path, member, encoding = 'U8': \
-        uncompress( tf.open( path, 'r:gz' ), member, encoding )
-
-def parserCore( fp, pos, beginmark = None, endmark = None ):
-    if beginmark and endmark:
-        start = False
-    else: start = True
-    mlist = set()
-    for line in fp:
-        if beginmark and line.startswith( beginmark ):
-            start = True
-            continue
-        elif endmark and line.startswith( endmark ):
-            break
-        if start and not line.startswith( '#' ):
-            elems = line.split()
-            if len( elems ) < 2:
-                continue
-            elif len( elems[0] ) > 1 and \
-                len( elems[pos] ) > 1: # words only
-                mlist.add( elems[pos] )
-    return mlist
-
-def tablesParser( path, name ):
-    """ Read file from scim-tables and parse it. """
-    global SCIM_TABLES_VER
-    src = 'scim-tables-%s/tables/zh/%s' % ( SCIM_TABLES_VER, name )
-    fp = untargz( path, src, 'U8' )
-    return parserCore( fp, 1, 'BEGIN_TABLE', 'END_TABLE' )
-
-ezbigParser = lambda path: tablesParser( path, 'EZ-Big.txt.in' )
-wubiParser = lambda path: tablesParser( path, 'Wubi.txt.in' )
-zrmParser = lambda path: tablesParser( path, 'Ziranma.txt.in' )
-
-def phraseParser( path ):
-    """ Read phrase_lib.txt and parse it. """
-    global SCIM_PINYIN_VER
-    src = 'scim-pinyin-%s/data/phrase_lib.txt' % SCIM_PINYIN_VER
-    dst = 'phrase_lib.txt'
-    fp = untargz( path, src, 'U8' )
-    return parserCore( fp, 0 )
-
-def tsiParser( path ):
-    """ Read tsi.src and parse it. """
-    src = 'libtabe/tsi-src/tsi.src'
-    dst = 'tsi.src'
-    fp = untargz( path, src, 'big5hkscs' )
-    return parserCore( fp, 0 )
-
-def unihanParser( path ):
-    """ Read Unihan_Variants.txt and parse it. """
-    fp = unzip( path, 'Unihan_Variants.txt', 'U8' )
-    t2s = dict()
-    s2t = dict()
-    for line in fp:
-        if line.startswith( '#' ):
-            continue
-        else:
-            elems = line.split()
-            if len( elems ) < 3:
-                continue
-            type = elems.pop( 1 )
-            elems = unichr2( *elems )
-            if type == 'kTraditionalVariant':
-                s2t[elems[0]] = elems[1:]
-            elif type == 'kSimplifiedVariant':
-                t2s[elems[0]] = elems[1:]
-    fp.close()
-    return ( t2s, s2t )
-
-def applyExcludes( mlist, path ):
-    """ Apply exclude rules from path to mlist. """
-    excludes = open( path, 'rb', 'U8' ).read().split()
-    excludes = [word.split( '#' )[0].strip() for word in excludes]
-    excludes = '|'.join( excludes )
-    excptn = re.compile( '.*(?:%s).*' % excludes )
-    diff = [mword for mword in mlist if excptn.search( mword )]
-    mlist.difference_update( diff )
-    return mlist
-
-def charManualTable( path ):
-    fp = open( path, 'rb', 'U8' )
-    ret = {}
-    for line in fp:
-        elems = line.split( '#' )[0].split( '|' )
-        elems = unichr3( *elems )
-        if len( elems ) > 1:
-            ret[elems[0]] = elems[1:]
-    return ret
-        
-def toManyRules( src_table ):
-    tomany = set()
-    for ( f, t ) in src_table.iteritems():
-        for i in range( 1, len( t ) ):
-            tomany.add( t[i] )
-    return tomany
-
-def removeRules( path, table ):
-    fp = open( path, 'rb', 'U8' )
-    texc = list()
-    for line in fp:
-        elems = line.split( '=>' )
-        f = t = elems[0].strip()
-        if len( elems ) == 2:
-            t = elems[1].strip()
-        f = f.strip('"').strip("'")
-        t = t.strip('"').strip("'")
-        if f:
-            try:
-                table.pop( f )
-            except:
-                pass
-        if t:
-            texc.append( t )
-    texcptn = re.compile( '^(?:%s)$' % '|'.join( texc ) )
-    for (tmp_f, tmp_t) in table.copy().iteritems():
-        if texcptn.match( tmp_t ):
-            table.pop( tmp_f )
-    return table
-
-def customRules( path ):
-    fp = open( path, 'rb', 'U8' )
-    ret = dict()
-    for line in fp:
-        elems = line.split( '#' )[0].split()
-        if len( elems ) > 1:
-            ret[elems[0]] = elems[1]
-    return ret
-
-def dictToSortedList( src_table, pos ):
-    return sorted( src_table.items(), key = lambda m: m[pos] )
-
-def translate( text, conv_table ):
-    i = 0
-    while i < len( text ):
-        for j in range( len( text ) - i, 0, -1 ):
-            f = text[i:][:j]
-            t = conv_table.get( f )
-            if t:
-                text = text[:i] + t + text[i:][j:]
-                i += len(t) - 1
-                break
-        i += 1
-    return text
-
-def manualWordsTable( path, conv_table, reconv_table ):
-    fp = open( path, 'rb', 'U8' )
-    reconv_table = {}
-    wordlist = [line.split( '#' )[0].strip() for line in fp]
-    wordlist = list( set( wordlist ) )
-    wordlist.sort( key = len, reverse = True )
-    while wordlist:
-        word = wordlist.pop()
-        new_word = translate( word, conv_table )
-        rcv_word = translate( word, reconv_table )
-        if word != rcv_word:
-            reconv_table[word] = word
-        reconv_table[new_word] = word
-    return reconv_table
-
-def defaultWordsTable( src_wordlist, src_tomany, char_conv_table, char_reconv_table ):
-    wordlist = list( src_wordlist )
-    wordlist.sort( key = len, reverse = True )
-    word_conv_table = {}
-    word_reconv_table = {}
-    conv_table = char_conv_table.copy()
-    reconv_table = char_reconv_table.copy()
-    tomanyptn = re.compile( '(?:%s)' % '|'.join( src_tomany ) )
-    while wordlist:
-        conv_table.update( word_conv_table )
-        reconv_table.update( word_reconv_table )
-        word = wordlist.pop()
-        new_word_len = word_len = len( word )
-        while new_word_len == word_len:
-            add = False
-            test_word = translate( word, reconv_table )
-            new_word = translate( word, conv_table )
-            if not reconv_table.get( new_word ) \
-               and ( test_word != word \
-               or ( tomanyptn.search( word ) \
-               and word != translate( new_word, reconv_table ) ) ):
-                word_conv_table[word] = new_word
-                word_reconv_table[new_word] = word
-            try:
-                word = wordlist.pop()
-            except IndexError:
-                break
-            new_word_len = len(word)
-    return word_reconv_table
-
-def PHPArray( table ):
-    lines = ['\'%s\' => \'%s\',' % (f, t) for (f, t) in table if f and t]
-    return '\n'.join(lines)
-
-def main():
-    #Get Unihan.zip:
-    url = 'http://www.unicode.org/Public/%s/ucd/Unihan.zip' % UNIHAN_VER
-    han_dest = 'Unihan.zip'
-    download( url, han_dest )
-    
-    # Get scim-tables-$(SCIM_TABLES_VER).tar.gz:
-    url  = 'http://%s.dl.sourceforge.net/sourceforge/scim/scim-tables-%s.tar.gz' % ( SF_MIRROR, SCIM_TABLES_VER )
-    tbe_dest = 'scim-tables-%s.tar.gz' % SCIM_TABLES_VER
-    download( url, tbe_dest )
-    
-    # Get scim-pinyin-$(SCIM_PINYIN_VER).tar.gz:
-    url  = 'http://%s.dl.sourceforge.net/sourceforge/scim/scim-pinyin-%s.tar.gz' % ( SF_MIRROR, SCIM_PINYIN_VER )
-    pyn_dest = 'scim-pinyin-%s.tar.gz' % SCIM_PINYIN_VER
-    download( url, pyn_dest )
-    
-    # Get libtabe-$(LIBTABE_VER).tgz:
-    url  = 'http://%s.dl.sourceforge.net/sourceforge/libtabe/libtabe-%s.tgz' % ( SF_MIRROR, LIBTABE_VER )
-    lbt_dest = 'libtabe-%s.tgz' % LIBTABE_VER
-    download( url, lbt_dest )
-    
-    # Unihan.txt
-    ( t2s_1tomany, s2t_1tomany ) = unihanParser( han_dest )
-
-    t2s_1tomany.update( charManualTable( 'trad2simp.manual' ) )
-    s2t_1tomany.update( charManualTable( 'simp2trad.manual' ) )
-    
-    t2s_1to1 = dict( [( f, t[0] ) for ( f, t ) in t2s_1tomany.iteritems()] )
-    s2t_1to1 = dict( [( f, t[0] ) for ( f, t ) in s2t_1tomany.iteritems()] )
-    
-    s_tomany = toManyRules( t2s_1tomany )
-    t_tomany = toManyRules( s2t_1tomany )
-
-    # noconvert rules
-    t2s_1to1 = removeRules( 'trad2simp_noconvert.manual', t2s_1to1 )
-    s2t_1to1 = removeRules( 'simp2trad_noconvert.manual', s2t_1to1 )
-    
-    # the supper set for word to word conversion
-    t2s_1to1_supp = t2s_1to1.copy()
-    s2t_1to1_supp = s2t_1to1.copy()
-    t2s_1to1_supp.update( customRules( 'trad2simp_supp_set.manual' ) )
-    s2t_1to1_supp.update( customRules( 'simp2trad_supp_set.manual' ) )
-    
-    # word to word manual rules
-    t2s_word2word_manual = manualWordsTable( 'simpphrases.manual', s2t_1to1_supp, t2s_1to1_supp )
-    t2s_word2word_manual.update( customRules( 'toSimp.manual' ) )
-    s2t_word2word_manual = manualWordsTable( 'tradphrases.manual', t2s_1to1_supp, s2t_1to1_supp )
-    s2t_word2word_manual.update( customRules( 'toTrad.manual' ) )
-
-    # word to word rules from input methods
-    t_wordlist = set()
-    s_wordlist = set()
-    t_wordlist.update( ezbigParser( tbe_dest ),
-                       tsiParser( lbt_dest ) )
-    s_wordlist.update( wubiParser( tbe_dest ),
-                       zrmParser( tbe_dest ),
-                       phraseParser( pyn_dest ) )
-
-    # exclude
-    s_wordlist = applyExcludes( s_wordlist, 'simpphrases_exclude.manual' )
-    t_wordlist = applyExcludes( t_wordlist, 'tradphrases_exclude.manual' )
-
-    s2t_supp = s2t_1to1_supp.copy()
-    s2t_supp.update( s2t_word2word_manual )
-    t2s_supp = t2s_1to1_supp.copy()
-    t2s_supp.update( t2s_word2word_manual )
-
-    # parse list to dict
-    t2s_word2word = defaultWordsTable( s_wordlist, s_tomany, s2t_1to1_supp, t2s_supp )
-    t2s_word2word.update( t2s_word2word_manual )
-    s2t_word2word = defaultWordsTable( t_wordlist, t_tomany, t2s_1to1_supp, s2t_supp )
-    s2t_word2word.update( s2t_word2word_manual )
-    
-    # Final tables
-    # sorted list toHans
-    t2s_1to1 = dict( [( f, t ) for ( f, t ) in t2s_1to1.iteritems() if f != t] )
-    toHans = dictToSortedList( t2s_1to1, 0 ) + dictToSortedList( t2s_word2word, 1 )
-    # sorted list toHant
-    s2t_1to1 = dict( [( f, t ) for ( f, t ) in s2t_1to1.iteritems() if f != t] )
-    toHant = dictToSortedList( s2t_1to1, 0 ) + dictToSortedList( s2t_word2word, 1 )
-    # sorted list toCN
-    toCN = dictToSortedList( customRules( 'toCN.manual' ), 1 )
-    # sorted list toHK
-    toHK = dictToSortedList( customRules( 'toHK.manual' ), 1 )
-    # sorted list toSG
-    toSG = dictToSortedList( customRules( 'toSG.manual' ), 1 )
-    # sorted list toTW
-    toTW = dictToSortedList( customRules( 'toTW.manual' ), 1 )
-    
-    # Get PHP Array
-    php = '''<?php
-/**
- * Simplified / Traditional Chinese conversion tables
- *
- * Automatically generated using code and data in includes/zhtable/
- * Do not modify directly!
- *
- * @file
- */
-
-$zh2Hant = array(\n'''
-    php += PHPArray( toHant ) \
-        +  '\n);\n\n$zh2Hans = array(\n' \
-        +  PHPArray( toHans ) \
-        +  '\n);\n\n$zh2TW = array(\n' \
-        +  PHPArray( toTW ) \
-        +  '\n);\n\n$zh2HK = array(\n' \
-        +  PHPArray( toHK ) \
-        +  '\n);\n\n$zh2CN = array(\n' \
-        +  PHPArray( toCN ) \
-        +  '\n);\n\n$zh2SG = array(\n' \
-        +  PHPArray( toSG ) \
-        +  '\n);\n'
-    
-    f = open( os.path.join( '..', 'ZhConversion.php' ), 'wb', encoding = 'utf8' )
-    print ('Writing ZhConversion.php ... ')
-    f.write( php )
-    f.close()
-    
-    # Remove temporary files
-    print ('Deleting temporary files ... ')
-    os.remove('EZ-Big.txt.in')
-    os.remove('phrase_lib.txt')
-    os.remove('tsi.src')
-    os.remove('Unihan_Variants.txt')
-    os.remove('Wubi.txt.in')
-    os.remove('Ziranma.txt.in')
-    
-
-if __name__ == '__main__':
-    main()
diff --git a/includes/zhtable/README b/includes/zhtable/README
deleted file mode 100644 (file)
index 7e3f87e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-The various .manual files contains special mappings not included in the
-unihan database, and phrases not included in the SCIM package. 
-
-- simp2trad.manual: Simplified to Traditional character mapping. Most
-  data adapted from
-
-   冯寿忠,“非对称繁简字”对照表, 《语文建设通讯》1997-9第53期.
-   /http://www.yywzw.com/jt/feng/fengb01.htm
-
-- trad2simp.manual: Traditional to Simplified character mapping.
-
-- simp2trad_noconvert.manual: Do not convert the chars as inapporiate.
-
-- trad2simp_noconvert.manual: Do not convert the chars as inapporiate.
-
-- tradphrases.manual: Phrases in Traditional Chinese. A portition is obtained
-  from the TongWen package (http://tongwen.mozdev.org/)
-
-- simpphrases.manual: Phrases in Simplified Chinese.
-
-- tradphrases_exclude.manual: Excluding several phrases from 
-  the SCIM phrases as inappoiated.
-
-- simpphrases_exclude.manual: Excluding several phrases from
-  the SCIM phrases as inapporated.
-
-- toTrad.manual, toSimp.manual: Special phrase mappings that 
-  tradphrases.manual or simphrases.manual cannot be handled.
-
-- toTW.manual, toCN.manual, toSG.manual and toHK.manual: Special phrase
-  mappings. 
-
-zhengzhu at gmail dot com & shinjiman at gmail dot com
diff --git a/includes/zhtable/printutf8.c b/includes/zhtable/printutf8.c
deleted file mode 100644 (file)
index b6ccf17..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-/* 
- Unicode                   UTF8
-0x00000000 - 0x0000007F: 0xxxxxxx
-0x00000080 - 0x000007FF: 110xxx xx 10xx xxxx
-0x00000800 - 0x0000FFFF: 1110xxxx  10xxxx xx 10xx xxxx
-0x00010000 - 0x001FFFFF: 11110x xx 10xx xxxx 10xxxx xx 10xx xxxx
-0x00200000 - 0x03FFFFFF: 111110xx  10xxxx xx 10xx xxxx 10xxxx xx 10xx xxxx
-0x04000000 - 0x7FFFFFFF: 1111110x  10xx xxxx 10xxxx xx 10xx xxxx 10xxxx xx 10xx xxxx
-
-0000 0      1001 9
-0001 1      1010 A
-0010 2      1011 B
-0011 3      1100 C
-0100 4      1101 D 
-0101 5      1110 E
-0110 6      1111 F
-0111 7
-1000 8
-*/
-void printUTF8(long long u) {
-  long long m;
-  if(u<0x80) {
-    printf("%c", (unsigned char)u);
-  }
-  else if(u<0x800) {
-    m = ((u&0x7c0)>>6) | 0xc0;
-    printf("%c", (unsigned char)m);
-    m = (u&0x3f) | 0x80;
-    printf("%c", (unsigned char)m);
-  }
-  else if(u<0x10000) {
-    m = ((u&0xf000)>>12) | 0xe0;
-    printf("%c",(unsigned char)m);
-    m = ((u&0xfc0)>>6) | 0x80;
-    printf("%c",(unsigned char)m);
-    m = (u & 0x3f) | 0x80;
-    printf("%c",(unsigned char)m);
-  }
-  else if(u<0x200000) {
-    m = ((u&0x1c0000)>>18) | 0xf0;
-    printf("%c", (unsigned char)m);
-    m = ((u& 0x3f000)>>12) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u& 0xfc0)>>6) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = (u&0x3f) | 0x80;
-    printf("%c", (unsigned char)m);
-  }
-  else if(u<0x4000000){
-    m = ((u&0x3000000)>>24) | 0xf8;
-    printf("%c", (unsigned char)m);
-    m = ((u&0xfc0000)>>18) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u&0x3f000)>>12) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u&0xfc00)>>6) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = (u&0x3f) | 0x80;
-    printf("%c", (unsigned char)m);
-  }
-  else {
-    m = ((u&0x40000000)>>30) | 0xfc;
-    printf("%c", (unsigned char)m);
-    m = ((u&0x3f000000)>>24) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u&0xfc0000)>>18) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u&0x3f000)>>12) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = ((u&0xfc0)>>6) | 0x80;
-    printf("%c", (unsigned char)m);
-    m = (u&0x3f)| 0x80;
-    printf("%c", (unsigned char)m);
-  }
-}
-
-int main() {
-  int i,j;
-  long long n1, n2;
-  unsigned char b1[15], b2[15];
-  unsigned char buf[1024];
-  i=0;
-  while(fgets(buf, 1024, stdin)) {
-    //    printf("read %s\n", buf);
-    for(i=0;i<strlen(buf); i++) 
-      if(buf[i]=='U') {
-       if(buf[i+1] == '+') {
-         n1 = strtoll(buf+i+2,0,16);
-         printf("U+%05x", n1);
-         printUTF8(n1);printf("|");
-       }
-      }
-    printf("\n");
-  }
-}
-
diff --git a/includes/zhtable/simp2trad.manual b/includes/zhtable/simp2trad.manual
deleted file mode 100644 (file)
index 1b84f8e..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-U+03CE0㳠|U+06FBE澾|
-U+0447D䑽|U+26A99𦪙|
-U+0497A䥺|U+091FE釾|
-U+0497D䥽|U+093FA鏺|
-U+04983䦃|U+0942F鐯|
-U+04985䦅|U+09425鐥|
-U+04B6A䭪|U+297AF𩞯|
-U+04C9F䲟|U+09BA3鮣|
-U+04CA0䲠|U+09C06鰆|
-U+04CA1䲡|U+09C0C鰌|
-U+04CA2䲢|U+09C27鰧|
-U+04CA3䲣|U+04C77䱷|
-U+04DAE䶮|U+09F91龑|
-U+04E07万|U+0842C萬|U+04E07万|
-U+04E0E与|U+08207與|U+04E0E与|
-U+04E11丑|U+04E11丑|U+0919C醜|
-U+04E2A个|U+0500B個|U+07B87箇|
-U+04E30丰|U+08C50豐|U+04E30丰|
-U+04E3A为|U+070BA為|U+07232爲|
-U+04E48么|U+04E48么|U+09EBD麽|U+05E7A幺|U+09EBC麼|
-U+04E86了|U+04E86了|U+077AD瞭|
-U+04E8E于|U+065BC於|U+04E8E于|
-U+04E91云|U+096F2雲|U+04E91云|
-U+04EA7产|U+07522產|U+07523産|
-U+04EC6仆|U+04EC6仆|U+050D5僕|
-U+04EC7仇|U+04EC7仇|U+08B8E讎|
-U+04ED1仑|U+04F96侖|U+05D19崙|
-U+04EF7价|U+050F9價|U+04EF7价|
-U+04F17众|U+0773E眾|U+08846衆|
-U+04F19伙|U+04F19伙|U+05925夥|
-U+04F2A伪|U+0507D偽|U+050DE僞|
-U+04F53体|U+09AD4體|U+04F53体|
-U+04F59余|U+04F59余|U+09918餘|
-U+04F63佣|U+04F63佣|U+050AD傭|
-U+0501F借|U+0501F借|U+085C9藉|
-U+0513F儿|U+05152兒|U+0513F儿|
-U+0514B克|U+0514B克|U+0524B剋|
-U+0515A党|U+09EE8黨|U+0515A党|
-U+051AC冬|U+051AC冬|U+09F15鼕|
-U+051B2冲|U+06C96沖|U+0885D衝|
-U+051C6准|U+051C6准|U+06E96準|
-U+051E0几|U+05E7E幾|U+051E0几|
-U+051EB凫|U+09CE7鳧|U+09CEC鳬|
-U+051FA出|U+051FA出|U+09F63齣|
-U+05212划|U+05283劃|U+05212划|
-U+0522B别|U+05225別|U+05F46彆|
-U+0522E刮|U+0522E刮|U+098B3颳|
-U+05236制|U+05236制|U+088FD製|
-U+05343千|U+05343千|U+097C6韆|
-U+05347升|U+05347升|U+06607昇|U+0965E陞|
-U+0535C卜|U+0535C卜|U+08514蔔|
-U+05360占|U+05360占|U+04F54佔|
-U+05364卤|U+09E75鹵|U+06EF7滷|
-U+05377卷|U+05377卷|U+06372捲|
-U+0537A卺|U+05DF9巹|
-U+05382厂|U+05EE0廠|U+05382厂|
-U+05386历|U+06B77歷|U+066C6曆|U+053A4厤|
-U+05395厕|U+05EC1廁|U+053A0厠|
-U+05398厘|U+05398厘|U+091D0釐|
-U+053D1发|U+0767C發|U+09AEE髮|
-U+053EA只|U+053EA只|U+096BB隻|
-U+053F0台|U+053F0台|U+081FA臺|U+06AAF檯|U+098B1颱|
-U+053F6叶|U+08449葉|U+053F6叶|
-U+05401吁|U+05401吁|U+07C72籲|
-U+05408合|U+05408合|U+095A4閤|
-U+0540A吊|U+0540A吊|U+05F14弔|
-U+0540C同|U+0540C同|U+08855衕|
-U+0540E后|U+05F8C後|U+0540E后|
-U+05411向|U+05411向|U+056AE嚮|U+066CF曏|
-U+0542F启|U+0555F啟|U+05553啓|
-U+05446呆|U+05446呆|U+07343獃|
-U+054B8咸|U+054B8咸|U+09E79鹹|
-U+054C4哄|U+054C4哄|U+09B28鬨|
-U+05582喂|U+05582喂|U+09935餵|
-U+056DE回|U+056DE回|U+08FF4迴|
-U+056E2团|U+05718團|U+07CF0糰|
-U+056F0困|U+056F0困|U+0774F睏|
-U+05742坂|U+05742坂|U+0962A阪|
-U+0574F坏|U+058DE壞|U+0574F坏|
-U+0575B坛|U+058C7壇|U+07F48罈|
-U+057FC埼|U+057FC埼|U+07895碕|
-U+05899墙|U+07246牆|U+058BB墻|
-U+058F3壳|U+06BBC殼|U+06BBB殻|
-U+0590D复|U+05FA9復|U+08907複|
-U+05956奖|U+0734E獎|U+0596C奬|
-U+05978奸|U+05978奸|U+059E6姦|
-U+059AB妫|U+05AAF媯|U+05B00嬀|
-U+059DC姜|U+059DC姜|U+08591薑|
-U+05B81宁|U+05BE7寧|U+05B81宁|
-U+05BB6家|U+05BB6家|U+050A2傢|
-U+05C3D尽|U+076E1盡|U+05118儘|
-U+05CB3岳|U+05CB3岳|U+05DBD嶽|
-U+05E03布|U+05E03布|U+04F48佈|
-U+05E18帘|U+07C3E簾|U+05E18帘|
-U+05E5E幞|U+08946襆|
-U+05E72干|U+05E72干|U+04E7E乾|U+05E79幹|U+069A6榦|
-U+05E76并|U+04E26並|U+04F75併|
-U+05E78幸|U+05E78幸|U+05016倖|
-U+05E7F广|U+05EE3廣|U+05E7F广|
-U+05E84庄|U+05E84庄|U+0838A莊|
-U+05EB5庵|U+05EB5庵|U+083F4菴|
-U+05F25弥|U+05F4C彌|U+07030瀰|
-U+05F53当|U+07576當|U+05679噹|
-U+05F55录|U+09304錄|U+09332録|
-U+05F69彩|U+05F69彩|U+07DB5綵|
-U+05F81征|U+05F81征|U+05FB5徵|
-U+05FA1御|U+05FA1御|U+079A6禦|
-U+05FD7志|U+05FD7志|U+08A8C誌|
-U+06076恶|U+060E1惡|U+05641噁|
-U+060AB悫|U+06128愨|U+06164慤|
-U+0613F愿|U+09858願|U+0613F愿|
-U+0621A戚|U+0621A戚|U+0617C慼|U+093DA鏚|
-U+0624D才|U+0624D才|U+07E94纔|
-U+0624E扎|U+0624E扎|U+07D2E紮|
-U+06258托|U+06258托|U+08A17託|
-U+06298折|U+06298折|U+0647A摺|
-U+062C5担|U+064D4擔|U+062C5担|
-U+062FC拼|U+062FC拼|U+062DA拚|
-U+06328挨|U+06328挨|U+06371捱|
-U+0633D挽|U+0633D挽|U+08F13輓|
-U+0636E据|U+064DA據|U+0636E据|
-U+06597斗|U+06597斗|U+09B25鬥|
-U+065CB旋|U+065CB旋|U+0955F镟|
-U+065D7旗|U+065D7旗|U+065C2旂|
-U+066F2曲|U+066F2曲|U+09EAF麯|U+09EB4麯|
-U+0672F术|U+08853術|U+0672E朮|
-U+06731朱|U+06731朱|U+07843硃|
-U+06734朴|U+06734朴|U+06A38樸|
-U+0676F杯|U+0676F杯|U+076C3盃|
-U+0677E松|U+0677E松|U+09B06鬆|
-U+0677F板|U+0677F板|U+095C6闆|
-U+06781极|U+06975極|U+06781极|
-U+067DC柜|U+06AC3櫃|U+067DC柜|
-U+06817栗|U+06817栗|U+06144慄|
-U+06881梁|U+06881梁|U+06A11樑|
-U+068F1棱|U+068F1棱|U+07A1C稜|
-U+06B32欲|U+06B32欲|U+0617E慾|
-U+06C47汇|U+0532F匯|U+06ED9滙|U+05F59彙|
-U+06C84沄|U+06C84沄|U+06F90澐|
-U+06C88沈|U+06C88沈|U+0700B瀋|
-U+06CA9沩|U+06E88溈|U+06F59潙|
-U+06CE8注|U+06CE8注|U+08A3B註|
-U+06D82涂|U+05857塗|U+06D82涂|
-U+06D8C涌|U+06D8C涌|U+06E67湧|
-U+06DC0淀|U+06DC0淀|U+06FB1澱|
-U+06E38游|U+06E38游|U+0904A遊|
-U+06EAF溯|U+06EAF溯|U+06CDD泝|
-U+06F13漓|U+06F13漓|U+07055灕|
-U+070BC炼|U+07149煉|U+0934A鍊|
-U+0753B画|U+0756B畫|U+07575畵|
-U+075C7症|U+075C7症|U+07665癥|
-U+07618瘘|U+0763A瘺|U+0763B瘻|
-U+0786E确|U+078BA確|U+0786E确|
-U+07877硷|U+07906礆|U+09E7C鹼|
-U+079CB秋|U+079CB秋|U+097A6鞦|
-U+079CD种|U+07A2E種|U+079CD种|
-U+07A57穗|U+07A57穗|U+07E50繐|
-U+07AD6竖|U+08C4E豎|U+07AEA竪|
-U+07B51筑|U+07BC9築|U+07B51筑|
-U+07B7E签|U+07C3D簽|U+07C64籤|
-U+07CFB系|U+07CFB系|U+07E6B繫|U+04FC2係|
-U+07D2F累|U+07D2F累|U+07E8D纍|
-U+07EA4纤|U+07E96纖|U+07E34縴|
-U+07EBF线|U+07DDA線|U+07DAB綫|
-U+07EDD绝|U+07D55絕|U+07D76絶|
-U+07EE3绣|U+07D89綉|U+07E61繡|
-U+07EE6绦|U+07D5B絛|U+07E27縧|
-U+07EF1绱|U+07DD4緔|U+0979D鞝|
-U+07EF7绷|U+07DB3綳|U+07E43繃|
-U+07EFF绿|U+07DA0綠|U+07DD1緑|
-U+07F30缰|U+097C1韁|U+07E6E繮|
-U+07FA1羡|U+07FA8羨|
-U+080DC胜|U+052DD勝|U+080DC胜|
-U+080E1胡|U+080E1胡|U+09B0D鬍|U+0885A衚|
-U+0810F脏|U+081DF臟|U+09AD2髒|
-U+0814A腊|U+081D8臘|U+0814A腊|
-U+081F4致|U+081F4致|U+07DFB緻|
-U+0820D舍|U+0820D舍|U+06368捨|
-U+082B8芸|U+082B8芸|U+08553蕓|
-U+082CE苎|U+082E7苧|
-U+082CF苏|U+08607蘇|U+056CC囌|U+07C64甦|
-U+082E7苧|U+085B4薴|
-U+082F9苹|U+0860B蘋|U+082F9苹|
-U+08303范|U+08303范|U+07BC4範|
-U+0836F药|U+0846F葯|U+085E5藥|
-U+083B7获|U+07372獲|U+07A6B穫|
-U+083BC莼|U+08493蒓|U+084F4蓴|
-U+08499蒙|U+08499蒙|U+077C7矇|U+06FDB濛|U+061DE懞|
-U+084D1蓑|U+084D1蓑|U+07C11簑|
-U+08511蔑|U+08511蔑|U+0884A衊|
-U+08574蕴|U+0860A蘊|U+085F4藴|
-U+0866B虫|U+087F2蟲|U+0866B虫|
-U+08721蜡|U+0881F蠟|U+08721蜡|
-U+0874E蝎|U+0880D蠍|
-U+08868表|U+08868表|U+09336錶|
-U+08BF4说|U+08AAA說|U+08AAC説|
-U+08C23谣|U+08B20謠|U+08B21謡|
-U+08C2B谫|U+08B7E譾|U+08B2D謭|
-U+08C37谷|U+08C37谷|U+07A40穀|
-U+08D43赃|U+08D13贓|U+08D1C贜|
-U+08D4D赍|U+09F4E齎|U+08CEB賫|
-U+08D5D赝|U+08D17贗|U+08D0B贋|
-U+08D5E赞|U+08D0A贊|U+08B9A讚|
-U+08F9F辟|U+08F9F辟|U+095E2闢|
-U+09002适|U+09069適|U+09002适|
-U+090C1郁|U+090C1郁|U+09B31鬱|
-U+0915D酝|U+0919E醞|U+09196醖|
-U+09170酰|U+09170酰|U+091AF醯|
-U+09178酸|U+09178酸|U+075E0痠|
-U+091C7采|U+091C7采|U+063A1採|U+057F0埰|
-U+091CC里|U+091CC里|U+088E1裡|U+088CF裏|
-U+093AD鎭|U+093AE鎮|
-U+0949F钟|U+0937E鍾|U+09418鐘|
-U+094A9钩|U+09264鉤|U+0920E鈎|
-U+094B5钵|U+07F3D缽|U+09262鉢|
-U+094F2铲|U+093DF鏟|U+05277剷|
-U+09508锈|U+092B9銹|U+093FD鏽|
-U+09510锐|U+092B3銳|U+092ED鋭|
-U+09528锨|U+06774杴|U+09341鍁|
-U+0954C镌|U+0942B鐫|U+093B8鎸|
-U+09562镢|U+09481钁|U+0941D鐝|
-U+09605阅|U+095B1閱|U+095B2閲|
-U+096C7雇|U+096C7雇|U+050F1僱|
-U+096D5雕|U+096D5雕|U+09D70鵰|
-U+09709霉|U+09709霉|U+09EF4黴|
-U+09762面|U+09762面|U+09EB5麵|U+09EAA麪|U+09EAB麫|
-U+097B2鞲|U+097DD韝|
-U+0987B须|U+09808須|U+09B1A鬚|
-U+09893颓|U+09839頹|U+0983D頽|
-U+0989C颜|U+0984F顏|U+09854顔|
-U+09965饥|U+098E2飢|U+09951饑|
-U+09980馀|U+09918餘|
-U+09986馆|U+09928館|U+08218舘|
-U+09A82骂|U+07F75罵|U+099E1駡|
-U+09C87鲇|U+09BF0鯰|U+09B8E鮎|
-U+09C9E鲞|U+09BD7鯗|U+09B9D鮝|
-U+09CC4鳄|U+09C77鱷|U+09C10鰐|
-U+09E21鸡|U+096DE雞|U+09DC4鷄|
-U+09E5A鹚|U+09DBF鶿|U+09DC0鷀|
-U+09E6E鹮|U+04D09䴉|
-U+09F44齄|U+09F47齇|
-U+20BB6𠮶|U+055F0嗰|
-U+26216𦈖|U+04308䌈|
-U+28C3E𨰾|U+093B7鎷|
-U+28C3F𨰿|U+091F3釳|
-U+28C40𨱀|U+2895B𨥛|
-U+28C41𨱁|U+09220鈠|
-U+28C42𨱂|U+0920B鈋|
-U+28C43𨱃|U+09232鈲|
-U+28C44𨱄|U+0922F鈯|
-U+28C45𨱅|U+09241鉁|
-U+28C47𨱇|U+092B6銶|
-U+28C48𨱈|U+092C9鋉|
-U+28C49𨱉|U+09344鍄|
-U+28C4A𨱊|U+289F1𨧱|
-U+28C4B𨱋|U+09302錂|
-U+28C4C𨱌|U+093C6鏆|
-U+28C4D𨱍|U+093AF鎯|
-U+28C4E𨱎|U+0936E鍮|
-U+28C4F𨱏|U+0939D鎝|
-U+28C50𨱐|U+28AD2𨫒|
-U+28C52𨱒|U+093C9鏉|
-U+28C53𨱓|U+0940E鐎|
-U+28C54𨱔|U+0940F鐏|
-U+28C55𨱕|U+28B82𨮂|
-U+28E02𨸂|U+0958D閍|
-U+28E03𨸃|U+09590閐|
-U+293FC𩏼|U+04A8F䪏|
-U+293FD𩏽|U+293EA𩏪|
-U+293FE𩏾|U+293A2𩎢|
-U+293FF𩏿|U+04A98䪘|
-U+29400𩐀|U+04A97䪗|
-U+29595𩖕|U+294E3𩓣|
-U+29596𩖖|U+09843顃|
-U+29597𩖗|U+04AF4䫴|
-U+29665𩙥|U+098B0颰|
-U+29666𩙦|U+295C0𩗀|
-U+29667𩙧|U+295E1𩗡|
-U+29668𩙨|U+29639𩘹|
-U+29669𩙩|U+29600𩘀|
-U+2966A𩙪|U+098B7颷|
-U+2966B𩙫|U+098BE颾|
-U+2966C𩙬|U+2963A𩘺|
-U+2966D𩙭|U+2961D𩘝|
-U+2966E𩙮|U+04B18䬘|
-U+2966F𩙯|U+04B1D䬝|
-U+29670𩙰|U+29648𩙈|
-U+29805𩠅|U+297D0𩟐|
-U+29806𩠆|U+29726𩜦|
-U+29807𩠇|U+04B40䭀|
-U+29808𩠈|U+04B43䭃|
-U+2980B𩠋|U+29754𩝔|
-U+2980C𩠌|U+09938餸|
-U+299E6𩧦|U+2987A𩡺|
-U+299E8𩧨|U+099CE駎|
-U+299E9𩧩|U+2990A𩤊|
-U+299EA𩧪|U+04BBE䮾|
-U+299EB𩧫|U+099DA駚|
-U+299EC𩧬|U+298A1𩢡|
-U+299ED𩧭|U+04B7F䭿|
-U+299EE𩧮|U+298BE𩢾|
-U+299EF𩧯|U+09A4B驋|
-U+299F0𩧰|U+04B9D䮝|
-U+299F1𩧱|U+29949𩥉|
-U+299F2𩧲|U+099E7駧|
-U+299F3𩧳|U+298B8𩢸|
-U+299F4𩧴|U+099E9駩|
-U+299F5𩧵|U+298B4𩢴|
-U+299F6𩧶|U+298CF𩣏|
-U+299FA𩧺|U+099F6駶|
-U+299FB𩧻|U+298F5𩣵|
-U+299FC𩧼|U+298FA𩣺|
-U+299FF𩧿|U+04BA0䮠|
-U+29A00𩨀|U+09A14騔|
-U+29A01𩨁|U+04B9E䮞|
-U+29A03𩨃|U+09A1D騝|
-U+29A04𩨄|U+09A2A騪|
-U+29A05𩨅|U+29938𩤸|
-U+29A06𩨆|U+29919𩤙|
-U+29A08𩨈|U+09A1F騟|
-U+29A09𩨉|U+29932𩤲|
-U+29A0A𩨊|U+09A1A騚|
-U+29A0B𩨋|U+29944𩥄|
-U+29A0C𩨌|U+29951𩥑|
-U+29A0D𩨍|U+29947𩥇|
-U+29A0F𩨏|U+04BB3䮳|
-U+29A10𩨐|U+299C6𩧆|
-U+29F79𩽹|U+09B65魥|
-U+29F7A𩽺|U+29D69𩵩|
-U+29F7B𩽻|U+29D79𩵹|
-U+29F7C𩽼|U+09BF6鯶|
-U+29F7D𩽽|U+29DB1𩶱|
-U+29F7E𩽾|U+09B9F鮟|
-U+29F7F𩽿|U+29DB0𩶰|
-U+29F80𩾀|U+09B95鮕|
-U+29F81𩾁|U+09BC4鯄|
-U+29F83𩾃|U+09BB8鮸|
-U+29F84𩾄|U+29DF0𩷰|
-U+29F85𩾅|U+29E03𩸃|
-U+29F86𩾆|U+29E26𩸦|
-U+29F87𩾇|U+09BF1鯱|
-U+29F88𩾈|U+04C59䱙|
-U+29F8A𩾊|U+04C6C䱬|
-U+29F8B𩾋|U+04C70䱰|
-U+29F8C𩾌|U+09C47鱇|
-U+29F8C𩾌|U+09C47鱇|
-U+29F8E𩾎|U+29F47𩽇|
-U+2A242𪉂|U+04CB0䲰|
-U+2A243𪉃|U+09CFC鳼|
-U+2A244𪉄|U+29FEA𩿪|
-U+2A245𪉅|U+2A026𪀦|
-U+2A246𪉆|U+09D32鴲|
-U+2A248𪉈|U+09D1C鴜|
-U+2A249𪉉|U+2A048𪁈|
-U+2A24A𪉊|U+09DE8鷨|
-U+2A24B𪉋|U+2A03E𪀾|
-U+2A24C𪉌|U+2A056𪁖|
-U+2A24D𪉍|U+09D5A鵚|
-U+2A24E𪉎|U+2A086𪂆|
-U+2A24F𪉏|U+2A0CF𪃏|
-U+2A250𪉐|U+2A0CD𪃍|
-U+2A251𪉑|U+09DD4鷔|
-U+2A252𪉒|U+2A115𪄕|
-U+2A254𪉔|U+2A106𪄆|
-U+2A255𪉕|U+2A1F3𪇳|
-U+2A388𪎈|U+04D2C䴬|
-U+2A389𪎉|U+09EB2麲|
-U+2A38A𪎊|U+09EA8麨|
-U+2A38B𪎋|U+04D34䴴|
-U+2A38C𪎌|U+09EB3麳|
-U+2A68F𪚏|U+2A600𪘀|
-U+2A690𪚐|U+2A62F𪘯|
diff --git a/includes/zhtable/simp2trad_noconvert.manual b/includes/zhtable/simp2trad_noconvert.manual
deleted file mode 100644 (file)
index a46560a..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-著
-竈
-彞
-=>"余"
-=>"𫗭"
-=>"𪨧"
-=>"𫚭"
-=>"𫔀"
-=>"𫊻"
-=>"𫋌"
-=>"蚃"
-=>"𩾂"
-=>"𫚜"
-=>"𫚢"
-=>"𧉰"
-=>"䙌"
-=>"𫊮"
-=>"𫋇"
-=>"𫉄"
-=>"𫘛"
-=>"𫘜"
-=>"𫘝"
-=>"𫘟"
-=>"𩧨"
-=>"𩧫"
-=>"𫘞"
-=>"𫘠"
-=>"𩧲"
-=>"𩧴"
-=>"𫘡"
-=>"𩧺"
-=>"𫘣"
-=>"𫘤"
-=>"𫘧"
-=>"𫘥"
-=>"𫘦"
-=>"𩨀"
-=>"𩨊"
-=>"𫘩"
-=>"𩨃"
-=>"𫘪"
-=>"𫘪"
-=>"𫘫"
-=>"𫘬"
-=>"𩨈"
-=>"𫘨"
-=>"𩨄"
-=>"𫘭"
-=>"𩧯"
-=>"𫘯"
-=>"𫘰"
-=>"𫘱"
-=>"𫘽"
-=>"𫚉"
-=>"𩽹"
-=>"𫚌"
-=>"𫚍"
-=>"𫚒"
-=>"𫚑"
-=>"𫚖"
-=>"𩽾"
-=>"䲟"
-=>"𫚓"
-=>"𫚗"
-=>"𫚔"
-=>"𫚛"
-=>"𩾃"
-=>"𫚚"
-=>"𩾁"
-=>"𫚙"
-=>"𫚡"
-=>"𫚞"
-=>"𩾇"
-=>"𩽼"
-=>"𫚣"
-=>"䲠"
-=>"䲡"
-=>"𫚊"
-=>"𫚥"
-=>"𫚕"
-=>"𫚤"
-=>"䲢"
-=>"𫚦"
-=>"𫚧"
-=>"𫚋"
-=>"𩾌"
-=>"𫚪"
-=>"𫚫"
-=>"𫚈"
-=>"𫚭"
-=>"𫛛"
-=>"𪉃"
-=>"𫛚"
-=>"𫛜"
-=>"𫛞"
-=>"𫛝"
-=>"𫛤"
-=>"𫛡"
-=>"𫁡"
-=>"𪉈"
-=>"𫛣"
-=>"𫛦"
-=>"𪉆"
-=>"𫛩"
-=>"𫛪"
-=>"𫛥"
-=>"𪉍"
-=>"𫛭"
-=>"𫛨"
-=>"𫛳"
-=>"𫛱"
-=>"𫛲"
-=>"𫛵"
-=>"𫛶"
-=>"𫛸"
-=>"𫛷"
-=>"𫛯"
-=>"𫛫"
-=>"𫛽"
-=>"𫜀"
-=>"𪉑"
-=>"𫜃"
-=>"𫛴"
-=>"𪉊"
-=>"𫜁"
-=>"𫜄"
-=>"𫛢"
-=>"𫛟"
-=>"𪎊"
-=>"𤿲"
-=>"𪎉"
-=>"𪎌"
-=>"𫜑"
-=>"𫜩"
-=>"𫜪"
-=>"𫜭"
-=>"𫜬"
-=>"𫜮"
-=>"𫜰"
diff --git a/includes/zhtable/simp2trad_supp_set.manual b/includes/zhtable/simp2trad_supp_set.manual
deleted file mode 100644 (file)
index a5038a5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-余    餘
-着    著
\ No newline at end of file
diff --git a/includes/zhtable/simpphrases.manual b/includes/zhtable/simpphrases.manual
deleted file mode 100644 (file)
index d8602fe..0000000
+++ /dev/null
@@ -1,2239 +0,0 @@
-乾上乾下
-乾为天
-乾为阳
-乾九
-乾乾
-乾亨
-乾仪
-乾位
-乾健
-乾元
-乾光
-乾兴
-乾冈
-乾刘
-乾刚
-乾化
-乾卦
-乾县
-乾台
-乾吉
-乾启
-乾命
-乾和
-乾嘉
-乾图
-乾坤
-乾城
-乾基
-乾始
-乾姓
-乾宁
-乾宅
-乾宇
-乾安
-乾定
-乾封
-乾居
-乾岗
-乾巛
-乾州
-乾式
-乾录
-乾律
-乾德
-乾心
-乾文
-乾断
-乾方
-乾施
-乾旦
-乾明
-乾昧
-乾晖
-乾景
-乾晷
-乾曜
-乾构
-乾枢
-乾栋
-乾步
-乾氏
-乾泉
-乾清宫
-乾渥
-乾灵
-乾男
-乾皋
-乾盛世
-乾矢
-乾祐
-乾穹
-乾窦
-乾竺
-乾笃
-乾符
-乾策
-乾精
-乾红
-乾纲
-乾纽
-乾络
-乾统
-乾维
-乾罗
-乾花
-乾荫
-乾行
-乾衡
-乾覆
-乾象
-乾象历
-乾贞
-乾贶
-乾车
-乾轴
-乾造
-乾道
-乾鉴
-乾钧
-乾闼
-乾陀
-乾陵
-乾隆
-乾音
-乾顾
-乾风
-乾首
-乾马
-乾鹄
-乾鹊
-乾龙
-乾,健也
-乾,天也
-乾健也
-乾天也
-坤乾
-天道为乾
-尼乾陀
-康乾
-张法乾
-旋乾转坤
-易·乾
-《易乾
-周易乾
-易经·乾
-易经乾
-李乾德
-萧乾
-郭子乾
-雍乾
-乾务
-乾沓和
-乾沓婆
-乾通
-乾忠
-乾淳
-李乾顺
-黄润乾
-男性为乾
-男为乾
-阳为乾
-乾一组
-乾一坛
-陈乾生
-陈公乾生
-字乾生
-不着痕迹
-不着边际
-与着
-与著书
-与著作
-与著名
-与著录
-与著称
-与著者
-与著述
-丑着
-丑著书
-丑著作
-丑著名
-丑著录
-丑著称
-丑著者
-丑著述
-临着
-临著书
-临著作
-临著名
-临著录
-临著称
-临著者
-临著述
-丽着
-丽著书
-丽著作
-丽著名
-丽著录
-丽著称
-丽著者
-丽著述
-乐着
-乐著书
-乐著作
-乐著名
-乐著录
-乐著称
-乐著者
-乐著述
-乘着
-乘著书
-乘著作
-乘著名
-乘著录
-乘著称
-乘著者
-乘著述
-争着
-争著书
-争著作
-争著名
-争著录
-争著称
-争著者
-争著述
-亮着
-亮著书
-亮著作
-亮著名
-亮著录
-亮著称
-亮著者
-亮著述
-仗着
-仗著书
-仗著作
-仗著名
-仗著录
-仗著称
-仗著者
-仗著述
-代表着
-代表著书
-代表著作
-代表著名
-代表著录
-代表著称
-代表著者
-代表著述
-伴着
-伴著书
-伴著作
-伴著名
-伴著录
-伴著称
-伴著者
-伴著述
-低着
-低著书
-低著作
-低著名
-低著录
-低著称
-低著者
-低著述
-住着
-住著书
-住著作
-住著名
-住著录
-住著称
-住著者
-住著述
-侧着
-侧著书
-侧著作
-侧著名
-侧著录
-侧著称
-侧著者
-侧著述
-保障着
-保障著书
-保障著作
-保障著名
-保障著录
-保障著称
-保障著者
-保障著述
-信着
-信著书
-信著作
-信著名
-信著录
-信著称
-信著者
-信著述
-候着
-候著书
-候著作
-候著名
-候著录
-候著称
-候著者
-候著述
-借着
-借著书
-借著作
-借著名
-借著录
-借著称
-借著者
-借著述
-做着
-做著书
-做著作
-做著名
-做著录
-做著称
-做著者
-做著述
-偷着
-偷著书
-偷著作
-偷著名
-偷著录
-偷著称
-偷著者
-偷著述
-光着
-光著书
-光著作
-光著名
-光著录
-光著称
-光著者
-光著述
-关着
-关著书
-关著作
-关著名
-关著录
-关著称
-关著者
-关著述
-冀着
-冀著书
-冀著作
-冀著名
-冀著录
-冀著称
-冀著者
-冀著述
-冒着
-冒著书
-冒著作
-冒著名
-冒著录
-冒著称
-冒著者
-冒著述
-写着
-写著书
-写著作
-写著名
-写著录
-写著称
-写著者
-写著述
-凉着
-凉著书
-凉著作
-凉著名
-凉著录
-凉著称
-凉著者
-凉著述
-制着
-制著书
-制著作
-制著名
-制著录
-制著称
-制著者
-制著述
-刻着
-刻著书
-刻著作
-刻著名
-刻著录
-刻著称
-刻著者
-刻著述
-办着
-办著书
-办著作
-办著名
-办著录
-办著称
-办著者
-办著述
-动着
-动著书
-动著作
-动著名
-动著录
-动著称
-动著者
-动著述
-努力着
-努力著书
-努力著作
-努力著名
-努力著录
-努力著称
-努力著者
-努力著述
-努着
-努著书
-努著作
-努著名
-努著录
-努著称
-努著者
-努著述
-印着
-印著书
-印著作
-印著名
-印著录
-印著称
-印著者
-印著述
-压着
-压著书
-压著作
-压著名
-压著录
-压著称
-压著者
-压著述
-去着
-去著书
-去著作
-去著名
-去著录
-去著称
-去著者
-去著述
-受着
-受著书
-受著作
-受著名
-受著录
-受著称
-受著者
-受著述
-变着
-变著书
-变著作
-变著名
-变著录
-变著称
-变著者
-变著述
-叫着
-叫著书
-叫著作
-叫著名
-叫著录
-叫著称
-叫著者
-叫著述
-向着
-向著书
-向著作
-向著名
-向著录
-向著称
-向著者
-向著述
-含着
-含著书
-含著作
-含著名
-含著录
-含著称
-含著者
-含著述
-听得着
-听不着
-听着
-听著书
-听著作
-听著名
-听著录
-听著称
-听著者
-听著述
-吹着
-吹著书
-吹著作
-吹著名
-吹著录
-吹著称
-吹著者
-吹著述
-味着
-味著书
-味著作
-味著名
-味著录
-味著称
-味著者
-味著述
-响着
-响著书
-响著作
-响著名
-响著录
-响著称
-响著者
-响著述
-哭着
-哭著书
-哭著作
-哭著名
-哭著录
-哭著称
-哭著者
-哭著述
-唱着
-唱著书
-唱著作
-唱著名
-唱著录
-唱著称
-唱著者
-唱著述
-喝着
-喝著书
-喝著作
-喝著名
-喝著录
-喝著称
-喝著者
-喝著述
-嚷着
-嚷著书
-嚷著作
-嚷著名
-嚷著录
-嚷著称
-嚷著者
-嚷著述
-因着
-因著书
-因著作
-因著名
-因著录
-因著称
-因著者
-因著述
-困着
-困著书
-困著作
-困著名
-困著录
-困著称
-困著者
-困著述
-围着
-围著书
-围著作
-围著名
-围著录
-围著称
-围著者
-围著述
-在着
-在著书
-在著作
-在著名
-在著录
-在著称
-在著者
-在著述
-坐着
-坐著书
-坐著作
-坐著名
-坐著录
-坐著称
-坐著者
-坐著述
-备着
-备著书
-备著作
-备著名
-备著录
-备著称
-备著者
-备著述
-夹着
-夹著书
-夹著作
-夹著名
-夹著录
-夹著称
-夹著者
-夹著述
-孤着
-孤著书
-孤著作
-孤著名
-孤著录
-孤著称
-孤著者
-孤著述
-学着
-学著书
-学著作
-学著名
-学著录
-学著称
-学著者
-学著述
-守着
-守著书
-守著作
-守著名
-守著录
-守著称
-守著者
-守著述
-定着
-定著书
-定著作
-定著名
-定著录
-定著称
-定著者
-定著述
-对着
-对著书
-对著作
-对著名
-对著录
-对著称
-对著者
-对著述
-寻着
-寻著书
-寻著作
-寻著名
-寻著录
-寻著称
-寻著者
-寻著述
-展着
-展著书
-展著作
-展著名
-展著录
-展著称
-展著者
-展著述
-带着
-带著书
-带著作
-带著名
-带著录
-带著称
-带著者
-带著述
-帮着
-帮著书
-帮著作
-帮著名
-帮著录
-帮著称
-帮著者
-帮著述
-应着
-应著书
-应著作
-应著名
-应著录
-应著称
-应著者
-应著述
-康着
-康著书
-康著作
-康著名
-康著录
-康著称
-康著者
-康著述
-开着
-开著书
-开著作
-开著名
-开著录
-开著称
-开著者
-开著述
-当着
-当著书
-当著作
-当著名
-当著录
-当著称
-当著者
-当著述
-待着
-待著书
-待著作
-待著名
-待著录
-待著称
-待著者
-待著述
-得着
-得著书
-得著作
-得著名
-得著录
-得著称
-得著者
-得著述
-循着
-循著书
-循著作
-循著名
-循著录
-循著称
-循著者
-循著述
-心着
-心著书
-心著作
-心著名
-心著录
-心著称
-心著者
-心著述
-忍着
-忍著书
-忍著作
-忍著名
-忍著录
-忍著称
-忍著者
-忍著述
-志着
-志著书
-志著作
-志著名
-志著录
-志著称
-志著者
-志著述
-忙着
-忙著书
-忙著作
-忙著名
-忙著录
-忙著称
-忙著者
-忙著述
-怀着
-怀著书
-怀著作
-怀著名
-怀著录
-怀著称
-怀著者
-怀著述
-急着
-急著书
-急著作
-急著名
-急著录
-急著称
-急著者
-急著述
-性着
-性著书
-性著作
-性著名
-性著录
-性著称
-性著者
-性著述
-恋着
-恋著书
-恋著作
-恋著名
-恋著录
-恋著称
-恋著者
-恋著述
-悠着
-悠著书
-悠著作
-悠著名
-悠著录
-悠著称
-悠著者
-悠著述
-惯着
-惯著书
-惯著作
-惯著名
-惯著录
-惯著称
-惯著者
-惯著述
-想着
-想著书
-想著作
-想著名
-想著录
-想著称
-想著者
-想著述
-战着
-战著书
-战著作
-战著名
-战著录
-战著称
-战著者
-战著述
-戴着
-戴著书
-戴著作
-戴著名
-戴著录
-戴著称
-戴著者
-戴著述
-扎着
-扎著书
-扎著作
-扎著名
-扎著录
-扎著称
-扎著者
-扎著述
-打着
-打著书
-打著作
-打著名
-打著录
-打著称
-打著者
-打著述
-扛着
-扛著书
-扛著作
-扛著名
-扛著录
-扛著称
-扛著者
-扛著述
-找得着
-找不着
-抓着
-抓著作
-抓著名
-抓著录
-抓著称
-抓著者
-抓著述
-披着
-披著书
-披著作
-披著名
-披著录
-披著称
-披著者
-披著述
-抬着
-抬著作
-抬著名
-抬著录
-抬著称
-抬著者
-抬著述
-抱着
-抱著作
-抱著名
-抱著录
-抱著称
-抱著者
-抱著述
-拉着
-拉著书
-拉著作
-拉著名
-拉著录
-拉著称
-拉著者
-拉著述
-拎着
-拎著作
-拎著名
-拎著录
-拎著称
-拎著者
-拎著述
-拖着
-拖著作
-拖著名
-拖著录
-拖著称
-拖著者
-拖著述
-拼着
-拼著作
-拼著名
-拼著录
-拼著称
-拼著者
-拼著述
-拿着
-拿著作
-拿著名
-拿著录
-拿著称
-拿著者
-拿著述
-持着
-持著作
-持著名
-持著录
-持著称
-持著者
-持著述
-挑着
-挑著作
-挑著名
-挑著录
-挑著称
-挑著者
-挑著述
-挡着
-挡著作
-挡著名
-挡著录
-挡著称
-挡著者
-挡著述
-挣着
-挣著书
-挣著作
-挣著名
-挣著录
-挣著称
-挣著者
-挣著述
-挥着
-挥著作
-挥著名
-挥著录
-挥著称
-挥著者
-挥著述
-挨着
-挨著作
-挨著名
-挨著录
-挨著称
-挨著者
-挨著述
-捆着
-捆著作
-捆著名
-捆著录
-捆著称
-捆著者
-捆著述
-据着
-据著书
-据著作
-据著名
-据著录
-据著称
-据著者
-据著述
-掖着
-掖著作
-掖著名
-掖著录
-掖著称
-掖著者
-掖著述
-接着
-接著作
-接著名
-接著录
-接著称
-接著者
-接著述
-揉着
-揉著书
-揉著作
-揉著名
-揉著录
-揉著称
-揉著者
-揉著述
-提着
-提著作
-提著名
-提著录
-提著称
-提著者
-提著述
-搂着
-搂著作
-搂著名
-搂著录
-搂著称
-搂著者
-搂著述
-摆着
-摆著作
-摆著名
-摆著录
-摆著称
-摆著者
-摆著述
-撼着
-撼著书
-撼著作
-撼著名
-撼著录
-撼著称
-撼著者
-撼著述
-敞着
-敞著作
-敞著名
-敞著录
-敞著称
-敞著者
-敞著述
-数着
-数著作
-数著名
-数著录
-数著称
-数著者
-数著述
-斗着
-斗著书
-斗著作
-斗著名
-斗著录
-斗著称
-斗著者
-斗著述
-斥着
-斥著书
-斥著作
-斥著名
-斥著录
-斥著称
-斥著者
-斥著述
-昂着
-昂著书
-昂著作
-昂著名
-昂著录
-昂著称
-昂著者
-昂著述
-映着
-映著书
-映著作
-映著名
-映著录
-映著称
-映著者
-映著述
-晃着
-晃著作
-晃著名
-晃著录
-晃著称
-晃著者
-晃著述
-暗着
-暗著书
-暗著作
-暗著名
-暗著录
-暗著称
-暗著者
-暗著述
-有着
-有著书
-有著作
-有著名
-有著录
-有著称
-有著者
-有著述
-望着
-望著作
-望著名
-望著录
-望著称
-望著者
-望著述
-朝着
-朝著作
-朝著名
-朝著录
-朝著称
-朝著者
-朝著述
-本着
-本著书
-本著作
-本著名
-本著录
-本著称
-本著者
-本著述
-杀着
-杀著书
-杀著作
-杀著名
-杀著录
-杀著称
-杀著者
-杀著述
-杂着
-杂著书
-杂著作
-杂著名
-杂著录
-杂著称
-杂著者
-杂著述
-来着
-来著书
-来著作
-来著名
-来著录
-来著称
-来著者
-来著述
-枕着
-枕著作
-枕著名
-枕著录
-枕著称
-枕著者
-枕著述
-梦着
-梦著书
-梦著作
-梦著名
-梦著录
-梦著称
-梦著者
-梦著述
-梳着
-梳著作
-梳著名
-梳著录
-梳著称
-梳著者
-梳著述
-求着
-求著书
-求著作
-求著名
-求著录
-求著称
-求著者
-求著述
-沉着
-沉著书
-沉著作
-沉著名
-沉著录
-沉著称
-沉著者
-沉著述
-沿着
-沿著书
-沿著作
-沿著名
-沿著录
-沿著称
-沿著者
-沿著述
-活着
-活著书
-活著作
-活著名
-活著录
-活著称
-活著者
-活著述
-流着
-流著书
-流著作
-流著名
-流著录
-流著称
-流著者
-流著述
-浮着
-浮著书
-浮著作
-浮著名
-浮著录
-浮著称
-浮著者
-浮著述
-润着
-润著书
-润著作
-润著名
-润著录
-润著称
-润著者
-润著述
-涵着
-涵著书
-涵著作
-涵著名
-涵著录
-涵著称
-涵著者
-涵著述
-渴着
-渴著书
-渴著作
-渴著名
-渴著录
-渴著称
-渴著者
-渴著述
-溢着
-溢著书
-溢著作
-溢著名
-溢著录
-溢著称
-溢著者
-溢著述
-演着
-演著书
-演著作
-演著名
-演著录
-演著称
-演著者
-演著述
-漫着
-漫著书
-漫著作
-漫著名
-漫著录
-漫著称
-漫著者
-漫著述
-点着
-点著作
-点著名
-点著录
-点著称
-点著者
-点著述
-烧着
-烧著作
-烧著名
-烧著录
-烧著称
-烧著者
-烧著述
-照着
-照著书
-照著作
-照著名
-照著录
-照著称
-照著者
-照著述
-爱着
-爱著书
-爱著作
-爱著名
-爱著录
-爱著称
-爱著者
-爱著述
-牵着
-牵著书
-牵著作
-牵著名
-牵著录
-牵著称
-牵著者
-牵著述
-犯得着
-犯不着
-独着
-独著书
-独著作
-独著名
-独著录
-独著称
-独著者
-独著述
-猜着
-猜着书
-猜著作
-猜著名
-猜著录
-猜著称
-猜著者
-猜著述
-甜着
-甜著书
-甜著作
-甜著名
-甜著录
-甜著称
-甜著者
-甜著述
-用得着
-用不着
-用着
-用著书
-用著作
-用著名
-用著录
-用著称
-用著者
-用著述
-留着
-留着书
-留著作
-留著名
-留著录
-留著称
-留著者
-留著述
-疑着
-疑著书
-疑著作
-疑著名
-疑著录
-疑著称
-疑著者
-疑著述
-皱着
-皱著书
-皱著作
-皱著名
-皱著录
-皱著称
-皱著者
-皱著述
-盛着
-盛著书
-盛著作
-盛著名
-盛著录
-盛著称
-盛著者
-盛著述
-盯着
-盯着书
-盯著作
-盯著名
-盯著录
-盯著称
-盯著者
-盯著述
-盾着
-盾著书
-盾著作
-盾著名
-盾著录
-盾著称
-盾著者
-盾著述
-看得着
-看不着
-看着
-看着书
-看著作
-看著名
-看著录
-看著称
-看著者
-看著述
-瞧着
-瞧着书
-瞧著作
-瞧著名
-瞧著录
-瞧著称
-瞧著者
-瞧著述
-着业
-着丝
-着么
-着人
-着什么急
-着他
-着令
-着位
-着体
-着你
-着便
-着凉
-着力
-着劲
-着号
-着呢
-着哩
-着地
-着墨
-着声
-着处
-着她
-着妳
-着姓
-着它
-着定
-着实
-着己
-着帐
-着床
-着庸
-着式
-着录
-着心
-着志
-着忙
-着急
-着恼
-着惊
-着想
-着意
-着慌
-着我
-着手
-着抹
-着摸
-着撰
-着数
-着明
-着末
-着极
-着格
-着棋
-着槁
-着气
-着法
-着浅
-着火
-着然
-着甚
-着生
-着疑
-着白
-着相
-着眼
-着着
-着祂
-着积
-着稿
-着笔
-着籍
-着紧
-着緑
-着绊
-着绩
-着绯
-着绿
-着肉
-着脚
-着舰
-着色
-着节
-着花
-着莫
-着落
-着藁
-着衣
-着装
-着要
-着警
-着趣
-着边
-着迷
-着迹
-着重
-着録
-着闻
-着陆
-着雝
-着鞭
-着题
-着魔
-睡得着
-睡不着
-睡着
-睡著书
-睡著作
-睡著名
-睡著录
-睡著称
-睡著者
-睡著述
-瞒着
-瞒著书
-瞒著作
-瞒著名
-瞒著录
-瞒著称
-瞒著者
-瞒著述
-瞪着
-瞪著书
-瞪著作
-瞪著名
-瞪著录
-瞪著称
-瞪著者
-瞪著述
-福着
-福著书
-福著作
-福著名
-福著录
-福著称
-福著者
-福著述
-空着
-空著书
-空著作
-空著名
-空著录
-空著称
-空著者
-空著述
-穿着
-穿著书
-穿著作
-穿著名
-穿著录
-穿著称
-穿著者
-穿著述
-竖着
-竖著书
-竖著作
-竖著名
-竖著录
-竖著称
-竖著者
-竖著述
-站着
-站著书
-站著作
-站著名
-站著录
-站著称
-站著者
-站著述
-笑着
-笑著书
-笑著作
-笑著名
-笑著录
-笑著称
-笑著者
-笑著述
-管着
-管著书
-管著作
-管著名
-管著录
-管著称
-管著者
-管著述
-绑着
-绑著书
-绑著作
-绑著名
-绑著录
-绑著称
-绑著者
-绑著述
-绕着
-绕著书
-绕著作
-绕著名
-绕著录
-绕著称
-绕著者
-绕著述
-缠着
-缠著书
-缠著作
-缠著名
-缠著录
-缠著称
-缠著者
-缠著述
-罩着
-罩著书
-罩著作
-罩著名
-罩著录
-罩著称
-罩著者
-罩著述
-美着
-美著书
-美著作
-美著名
-美著录
-美著称
-美著者
-美著述
-耀着
-耀著书
-耀著作
-耀著名
-耀著录
-耀著称
-耀著者
-耀著述
-考着
-考著书
-考著作
-考著名
-考著录
-考著称
-考著者
-考著述
-背着
-背著书
-背著作
-背著名
-背著录
-背著称
-背著者
-背著述
-胶着
-胶著书
-胶著作
-胶著名
-胶著录
-胶著称
-胶著者
-胶著述
-艺着
-艺著书
-艺著作
-艺著名
-艺著录
-艺著称
-艺著者
-艺著述
-苦着
-苦著书
-苦著作
-苦著名
-苦著录
-苦著称
-苦著者
-苦著述
-获着
-获著书
-获著作
-获著名
-获著录
-获著称
-获著者
-获著述
-落着
-落著书
-落著作
-落著名
-落著录
-落著称
-落著者
-落著述
-蒙着
-蒙著书
-蒙著作
-蒙著名
-蒙著录
-蒙著称
-蒙著者
-蒙著述
-藏着
-藏著书
-藏著作
-藏著名
-藏著录
-藏著称
-藏著者
-藏著述
-蘸着
-蘸著书
-蘸著作
-蘸著名
-蘸著录
-蘸著称
-蘸著者
-蘸著述
-行着
-行著书
-行著作
-行著名
-行著录
-行著称
-行著者
-行著述
-衣着
-衣著书
-衣著作
-衣著名
-衣著录
-衣著称
-衣著者
-衣著述
-装着
-装著书
-装著作
-装著名
-装著录
-装著称
-装著者
-装著述
-裹着
-裹著书
-裹著作
-裹著名
-裹著录
-裹著称
-裹著者
-裹著述
-见着
-见著书
-见著作
-见著名
-见著录
-见著称
-见著者
-见著述
-记着
-记著书
-记著作
-记著名
-记著录
-记著称
-记著者
-记著述
-试着
-试著书
-试著作
-试著名
-试著录
-试著称
-试著者
-试著述
-语着
-语著书
-语著作
-语著名
-语著录
-语著称
-语著者
-语著述
-豫着
-豫著书
-豫著作
-豫著名
-豫著录
-豫著称
-豫著者
-豫著述
-贞着
-贞著书
-贞著作
-贞著名
-贞著录
-贞著称
-贞著者
-贞著述
-走着
-走著书
-走著作
-走著名
-走著录
-走著称
-走著者
-走著述
-赶着
-赶著书
-赶著作
-赶著名
-赶著录
-赶著称
-赶著者
-赶著述
-趴着
-趴著书
-趴著作
-趴著名
-趴著录
-趴著称
-趴著者
-趴著述
-跃着
-跃著书
-跃著作
-跃著名
-跃著录
-跃著称
-跃著者
-跃著述
-跑着
-跑著书
-跑著作
-跑著名
-跑著录
-跑著称
-跑著者
-跑著述
-跟着
-跟著书
-跟著作
-跟著名
-跟著录
-跟著称
-跟著者
-跟著述
-跪着
-跪著书
-跪著作
-跪著名
-跪著录
-跪著称
-跪著者
-跪著述
-跳着
-跳著书
-跳著作
-跳著名
-跳著录
-跳著称
-跳著者
-跳著述
-踏着
-踏著书
-踏著作
-踏著名
-踏著录
-踏著称
-踏著者
-踏著述
-踩着
-踩著书
-踩著作
-踩著名
-踩著录
-踩著称
-踩著者
-踩著述
-身着
-身著书
-身著作
-身著名
-身著录
-身著称
-身著者
-身著述
-躺着
-躺著书
-躺著作
-躺著名
-躺著录
-躺著称
-躺著者
-躺著述
-转着
-转著书
-转著作
-转著名
-转著录
-转著称
-转著者
-转著述
-载着
-载著书
-载著作
-载著名
-载著录
-载著称
-载著者
-载著述
-达着
-达著书
-达著作
-达著名
-达著录
-达著称
-达著者
-达著述
-远着
-远著书
-远著作
-远著名
-远著录
-远著称
-远著者
-远著述
-连着
-连著书
-连著作
-连著名
-连著录
-连著称
-连著者
-连著述
-追着
-追著书
-追著作
-追著名
-追著录
-追著称
-追著者
-追著述
-逆着
-逆著书
-逆著作
-逆著名
-逆著录
-逆著称
-逆著者
-逆著述
-逼着
-逼著书
-逼著作
-逼著名
-逼著录
-逼著称
-逼著者
-逼著述
-遇着
-遇著书
-遇著作
-遇著名
-遇著录
-遇著称
-遇著者
-遇著述
-配着
-配著书
-配著作
-配著名
-配著录
-配著称
-配著者
-配著述
-酿着
-酿著书
-酿著作
-酿著名
-酿著录
-酿著称
-酿著者
-酿著述
-铺着
-铺著书
-铺著作
-铺著名
-铺著录
-铺著称
-铺著者
-铺著述
-闭着
-闭著书
-闭著作
-闭著名
-闭著录
-闭著称
-闭著者
-闭著述
-闲着
-闲著书
-闲著作
-闲著名
-闲著录
-闲著称
-闲著者
-闲著述
-附着
-附著书
-附著作
-附著名
-附著录
-附著称
-附著者
-附著述
-陋着
-陋著书
-陋著作
-陋著名
-陋著录
-陋著称
-陋著者
-陋著述
-陪着
-陪著书
-陪著作
-陪著名
-陪著录
-陪著称
-陪著者
-陪著述
-随着
-随著书
-随著作
-随著名
-随著录
-随著称
-随著者
-随著述
-隔着
-隔著书
-隔著作
-隔著名
-隔著录
-隔著称
-隔著者
-隔著述
-雅着
-雅著书
-雅著作
-雅著名
-雅著录
-雅著称
-雅著者
-雅著述
-顶着
-顶著书
-顶著作
-顶著名
-顶著录
-顶著称
-顶著者
-顶著述
-顺着
-顺著书
-顺著作
-顺著名
-顺著录
-顺著称
-顺著者
-顺著述
-领着
-领著书
-领著作
-领著名
-领著录
-领著称
-领著者
-领著述
-飘着
-飘著书
-飘著作
-飘著名
-飘著录
-飘著称
-飘著者
-飘著述
-驾着
-驾著书
-驾著作
-驾著名
-驾著录
-驾著称
-驾著者
-驾著述
-骂着
-骂著书
-骂著作
-骂著名
-骂著录
-骂著称
-骂著者
-骂著述
-骑着
-骑著书
-骑著作
-骑著名
-骑著录
-骑著称
-骑著者
-骑著述
-骗着
-骗著书
-骗著作
-骗著名
-骗著录
-骗著称
-骗著者
-骗著述
-高着
-高著书
-高著作
-高著名
-高著录
-高著称
-高著者
-高著述
-髭着
-髭著书
-髭著作
-髭著名
-髭著录
-髭著称
-髭著者
-髭著述
-黏着
-黏著书
-黏著作
-黏著名
-黏著录
-黏著称
-黏著者
-黏著述
-新著龙虎门
-护着
-护著书
-护著作
-护著名
-护著录
-护著称
-护著者
-护著述
-保护着
-爱护着
-庇护着
-传着
-传著书
-传著作
-传著名
-传著录
-传著称
-传著者
-传著述
-标志着
-流露着
-靠着
-靠著作
-靠著名
-靠著录
-靠著称
-靠著者
-靠著述
-玩着
-迫着
-吃得着
-吃不着
-吃着
-闻得着
-闻不着
-闻着
-嗅得着
-嗅不着
-嗅着
-警戒着
-於乎
-於戏
-魏徵
-柳诒徵
-於姓
-於氏
-於夫罗
-於梨华
-卷舌
-樊於期
-於菟
-於潜县
-石碁镇
-因著《
-因著〈
-李泽钜
-於祥玉
-於崇文
-於世成
-於乙宇同
-於宇同
-朴於宇同
-於哲
-於除鞬
-於志贺
-覆蓋
-五箇山
-麽麽
-幺厮
-幺半群
-幺元
-幺爹
-幺叔
-幺舅
-幺爸
-幺妈
-幺姨
-幺娘
-幺妹
-幺小
-幺姓
-姓幺
-幺氏
-麽氏
-幺蛾子
-幺麽
-幺麽小丑
-幺凤
-幺二三
-幺篇
-幺谦
-麴义
-麴英
-麯崇裕
-阿部正瞭
-醯酱
-醯鸡
-醯醋
-醯醢
-醯壶
-苧烯
-近角聪信
-米泽瑠美
-峯岸南
-僧伽吒
-王道乾
-後姓
diff --git a/includes/zhtable/simpphrases_exclude.manual b/includes/zhtable/simpphrases_exclude.manual
deleted file mode 100644 (file)
index 3e9d3ec..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-整飭
-後
-谘
-彷佛
-三番四复
-三复
-藉
-关於
-对於
-属於
-至於
-夥计
-薹
-嚇
-醣
-捱
-簑
-樑
-摺叠
-餗
-安甯
\ No newline at end of file
diff --git a/includes/zhtable/toCN.manual b/includes/zhtable/toCN.manual
deleted file mode 100644 (file)
index 243f61b..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-」    ”
-「    “
-『    ‘
-』    ’
-記憶體      内存
-預設 默认
-串列 串行
-串列加速器        串列加速器
-乙太網      以太网
-點陣圖      位图
-常式 例程
-光碟 光盘
-光碟機      光驱
-全形 全角
-載入 加载
-半形 半角
-變數 变量
-雜訊 噪声
-因數 因子
-功能變數名稱     域名
-音效卡      声卡
-字型大小   字号
-字型檔      字库
-欄位 字段
-字元 字符
-字元济      字元济
-字元濟      字元济
-字元会      字元会
-字元會      字元会
-存檔 存盘
-定址 寻址
-章節附註   尾注
-非同步      异步
-匯流排      总线
-括弧 括号
-介面 接口
-控制項      控件
-許可權      权限
-碟片 盘片
-矽片 硅片
-矽谷 硅谷
-硬碟 硬盘
-磁碟 磁盘
-磁軌 磁道
-程式控制   程控
-遠程控制   远程控制
-远程控制   远程控制
-運算元      算子
-演算法      算法
-晶片 芯片
-晶元 芯片
-片語 词组
-軟碟機      软驱
-快閃記憶體        快闪存储器
-滑鼠 鼠标
-滑鼠蛇      滑鼠蛇
-二進位      二进制
-滿二進位   满二进位
-六進位      六进制
-滿六進位   满六进位
-滿十六進位        满十六进位
-八進位      八进制
-滿八進位   满八进位
-十進位      十进制
-滿十進位   满十进位
-16進位       16进位
-滿16進位    满16进位
-二進位制   二进位制
-六進位制   六进位制
-八進位制   八进位制
-十進位制   十进位制
-16進位制    16进位制
-互動式      交互式
-優先順序   优先级
-感測 传感
-攜帶型      便携式
-資訊理論   信息论
-迴圈 循环
-防寫 写保护
-解析度      分辨率
-伺服器      服务器
-等於 等于
-區域網      局域网
-巨集 宏
-掃瞄器      扫瞄仪
-寬頻 宽带
-資料庫      数据库
-萬曆 万历
-永曆 永历
-辭彙 词汇
-母音 元音
-字母 字母
-頭槌 头球
-進球 入球
-顆進球      粒入球
-射門 打门
-蓋火鍋      火锅盖帽
-印表機      打印机
-打印機      打印机
-位元組      字节
-字節 字节
-列印 打印
-打印 打印
-硬體 硬件
-二極體      二极管
-二極管      二极管
-三極體      三极管
-三極管      三极管
-軟體 软件
-軟件 软件
-網路 网络
-網絡 网络
-人工智慧   人工智能
-太空梭      航天飞机
-穿梭機      航天飞机
-網際網路   互联网
-互聯網      互联网
-機械人      机器人
-機器人      机器人
-行動電話   移动电话
-流動電話   移动电话
-調制解調器        调制解调器
-數據機      调制解调器
-短訊 短信
-簡訊 短信
-烏茲別克   乌兹别克斯坦
-葉門 也门
-伯利茲      伯利兹
-貝里斯      伯利兹
-維德角      佛得角
-克羅埃西亞        克罗地亚
-甘比亞      冈比亚
-幾內亞比索        几内亚比绍
-列支敦斯登        列支敦士登
-賴比瑞亞   利比里亚
-迦納 加纳
-加彭 加蓬
-波札那      博茨瓦纳
-盧安達      卢旺达
-瓜地馬拉   危地马拉
-厄瓜多爾   厄瓜多尔
-厄瓜多尔   厄瓜多尔
-厄瓜多      厄瓜多尔
-厄利垂亞   厄立特里亚
-吉布地      吉布提
-哈薩克      哈萨克斯坦
-哥斯大黎加        哥斯达黎加
-吐瓦魯      图瓦卢
-土庫曼      土库曼斯坦
-聖露西亞   圣卢西亚
-聖吉斯納域斯     圣基茨和尼维斯
-聖克里斯多福及尼維斯 圣基茨和尼维斯
-聖文森及格瑞那丁       圣文森特和格林纳丁斯
-聖馬利諾   圣马力诺
-蓋亞那      圭亚那
-坦尚尼亞   坦桑尼亚
-衣索匹亞   埃塞俄比亚
-衣索比亞   埃塞俄比亚
-吉里巴斯   基里巴斯
-塔吉克      塔吉克斯坦
-塞拉利昂   塞拉利昂
-塞普勒斯   塞浦路斯
-塞席爾      塞舌尔
-多米尼克   多米尼加国
-安地卡及巴布達  安提瓜和巴布达
-尼日利亞   尼日利亚
-尼日利亚   尼日利亚
-奈及利亞   尼日利亚
-尼日爾      尼日尔
-尼日尔      尼日尔
-巴貝多      巴巴多斯
-巴布亞紐幾內亞  巴布亚新几内亚
-布基納法索        布基纳法索
-布吉納法索        布基纳法索
-蒲隆地      布隆迪
-帛琉 帕劳
-義大利      意大利
-索羅門群島        所罗门群岛
-汶萊 文莱
-史瓦濟蘭   斯威士兰
-斯洛維尼亞        斯洛文尼亚
-紐西蘭      新西兰
-格瑞那達   格林纳达
-茅利塔尼亞        毛里塔尼亚
-毛里裘斯   毛里求斯
-模里西斯   毛里求斯
-沙地阿拉伯        沙特阿拉伯
-沙烏地阿拉伯     沙特阿拉伯
-波士尼亞赫塞哥維納    波斯尼亚和黑塞哥维那
-辛巴威      津巴布韦
-宏都拉斯   洪都拉斯
-千里達托貝哥     特立尼达和托巴哥
-諾魯 瑙鲁
-萬那杜      瓦努阿图
-溫納圖      瓦努阿图
-葛摩 科摩罗
-象牙海岸   科特迪瓦
-突尼西亞   突尼斯
-索馬利亞   索马里
-寮國 老挝
-肯雅 肯尼亚
-肯亞 肯尼亚
-蘇利南      苏里南
-莫三比克   莫桑比克
-賴索托      莱索托
-貝南 贝宁
-尚比亞      赞比亚
-亞塞拜然   阿塞拜疆
-阿拉伯聯合大公國       阿拉伯联合酋长国
-南韓 韩国
-馬爾地夫   马尔代夫
-馬爾他      马耳他
-馬利共和國        马里共和国
-即食麵      方便面
-快速面      方便面
-速食麵      方便面
-泡麵 方便面
-笨豬跳      蹦极跳
-绑紧跳      蹦极跳
-冷盤 凉菜
-冷菜 凉菜
-散钱 零钱
-谐星 笑星
-夜学 夜校
-华乐 民乐
-中樂 民乐
-軍中樂園    军中乐园
-华乐街      华乐街
-屋价 房价
-計程車      出租车
-單車 自行车
-節慶 节日
-芝士 乾酪
-狗隻 犬只
-士多啤梨   草莓
-忌廉 奶油
-桌球 台球
-撞球 台球
-衞生 卫生
-衛生 卫生
-賓士 奔驰
-平治 奔驰
-平治之亂   平治之乱
-平治之乱   平治之乱
-積架 捷豹
-福斯 大众
-福士 大众
-萬事得      马自达
-寶獅 标志
-拿破崙      拿破仑
-布殊 布什
-布希 布什
-布希亞      布希亚
-布希亚      布希亚
-柯林頓      克林顿
-海珊 侯赛因
-梵谷 凡高
-大衛碧咸   大卫·贝克汉姆
-米高奧雲   迈克尔·欧文
-卡佩雅蒂   珍妮弗·卡普里亚蒂
-沙芬 马拉特·萨芬
-舒麥加      迈克尔·舒马赫
-希特拉      希特勒
-黛安娜      戴安娜
-榴槤 榴莲
-榴梿 榴莲
-矽    硅
-矽肺 矽肺
-矽塵 矽尘
-矽尘 矽尘
-矽鋼 矽钢
-矽钢 矽钢
-侏儸紀      侏罗纪
-甚麽 什么
-甚麼 什么
diff --git a/includes/zhtable/toHK.manual b/includes/zhtable/toHK.manual
deleted file mode 100644 (file)
index 1f7fe7d..0000000
+++ /dev/null
@@ -1,2300 +0,0 @@
-”    」
-“    「
-‘    『
-’    』
-鉤    鈎
-衛    衞
-凶殺 兇殺
-凶殘 兇殘
-緝凶 緝兇
-買凶 買兇
-印表機      打印機
-字节 位元組
-字節 位元組
-列印 打印
-硬件 硬件
-硬體 硬件
-二極體      二極管
-三極體      三極管
-軟體 軟件
-網路 網絡
-人工智慧   人工智能
-航天飞机   穿梭機
-太空梭      穿梭機
-因特网      互聯網
-網際網路   互聯網
-机器人      機械人
-機器人      機械人
-移动电话   流動電話
-行動電話   流動電話
-數據機      調制解調器
-短信 短訊
-簡訊 短訊
-查德 乍得
-葉門 也門
-貝里斯      伯利茲
-維德角      佛得角
-克羅埃西亞        克羅地亞
-甘比亞      岡比亞
-幾內亞比索        幾內亞比紹
-列支敦斯登        列支敦士登
-賴比瑞亞   利比里亞
-迦納 加納
-加彭 加蓬
-波札那      博茨瓦納
-盧安達      盧旺達
-瓜地馬拉   危地馬拉
-厄瓜多尔   厄瓜多爾
-厄瓜多爾   厄瓜多爾
-厄瓜多      厄瓜多爾
-厄利垂亞   厄立特里亞
-吉布地      吉布堤
-哥斯大黎加        哥斯達黎加
-吐瓦魯      圖瓦盧
-聖露西亞   聖盧西亞
-圣基茨和尼维斯  聖吉斯納域斯
-聖克里斯多福及尼維斯 聖吉斯納域斯
-聖文森及格瑞那丁       聖文森特和格林納丁斯
-聖馬利諾   聖馬力諾
-蓋亞那      圭亞那
-坦尚尼亞   坦桑尼亞
-衣索匹亞   埃塞俄比亞
-衣索比亞   埃塞俄比亞
-吉里巴斯   基里巴斯
-塞普勒斯   塞浦路斯
-塞席爾      塞舌爾
-安地卡及巴布達  安提瓜和巴布達
-尼日利亚   尼日利亞
-尼日利亞   尼日利亞
-奈及利亞   尼日利亞
-尼日尔      尼日爾
-尼日爾      尼日爾
-尼日 尼日爾
-巴貝多      巴巴多斯
-巴布亞紐幾內亞  巴布亞新畿內亞
-布吉納法索        布基納法索
-蒲隆地      布隆迪
-帕劳 帛琉
-義大利      意大利
-索羅門群島        所羅門群島
-文莱 汶萊
-史瓦濟蘭   斯威士蘭
-斯洛維尼亞        斯洛文尼亞
-紐西蘭      新西蘭
-格瑞那達   格林納達
-茅利塔尼亞        毛里塔尼亞
-毛里求斯   毛里裘斯
-模里西斯   毛里裘斯
-沙地阿拉伯        沙特阿拉伯
-沙烏地阿拉伯     沙特阿拉伯
-波士尼亞赫塞哥維納    波斯尼亞黑塞哥維那
-辛巴威      津巴布韋
-宏都拉斯   洪都拉斯
-千里達托貝哥     特立尼達和多巴哥
-諾魯 瑙魯
-萬那杜      瓦努阿圖
-葛摩 科摩羅
-索馬利亞   索馬里
-寮國 老撾
-肯尼亚      肯雅
-肯亞 肯雅
-莫三比克   莫桑比克
-賴索托      萊索托
-貝南 貝寧
-尚比亞      贊比亞
-亞塞拜然   阿塞拜疆
-阿拉伯聯合大公國       阿拉伯聯合酋長國
-馬爾地夫   馬爾代夫
-馬利共和國        馬里共和國
-方便面      即食麵
-快速面      即食麵
-速食麵      即食麵
-泡麵 即食麵
-土豆 馬鈴薯
-土豆网      土豆網
-土豆網      土豆網
-华乐 中樂
-民乐 中樂
-計程車      的士
-出租车      的士
-公車 巴士
-公車上書   公車上書
-自行车      單車
-犬只 狗隻
-台球 桌球
-撞球 桌球
-冰淇淋      雪糕
-賓士 平治
-捷豹 積架
-福斯 福士
-雪铁龙      先進
-雪鐵龍      先進
-沃尓沃      富豪
-马自达      萬事得
-馬自達      萬事得
-寶獅 標致
-布什 布殊
-布希 布殊
-布希亞      布希亞
-布希亚      布希亞
-柯林頓      克林頓
-萨达姆      薩達姆
-海珊 侯賽因
-大卫·贝克汉姆   大衛碧咸
-迈克尔·欧文      米高奧雲
-珍妮弗·卡普里亚蒂     卡佩雅蒂
-马拉特·萨芬      沙芬
-迈克尔·舒马赫   舒麥加
-希特勒      希特拉
-狄安娜      戴安娜
-黛安娜      戴安娜
-颁布 頒佈
-頒布 頒佈
-挨著 挨着
-愛著 愛着
-暗著 暗着
-昂著 昂着
-擺著 擺着
-伴著 伴着
-辦著 辦着
-幫著 幫着
-綁著 綁着
-抱著 抱着
-背著 背着
-備著 備着
-本著 本着
-逼著 逼着
-閉著 閉着
-變著 變着
-猜著 猜着
-踩著 踩着
-藏著 藏着
-側著 側着
-纏著 纏着
-敞著 敞着
-唱著 唱着
-朝著 朝着
-沉著 沉着
-乘著 乘着
-持著 持着
-斥著 斥着
-醜著 醜着
-穿著 穿着
-吹著 吹着
-達著 達着
-打著 打着
-待著 待着
-帶著 帶着
-戴著 戴着
-當著 當着
-擋著 擋着
-得著 得着
-瞪著 瞪着
-低著 低着
-點著 點着
-盯著 盯着
-頂著 頂着
-定著 定着
-動著 動着
-鬥著 鬥着
-獨著 獨着
-對著 對着
-盾著 盾着
-犯得著      犯得着
-犯不著      犯不着
-福著 福着
-趕著 趕着
-高著 高着
-隔著 隔着
-跟著 跟着
-孤著 孤着
-關著 關着
-管著 管着
-慣著 慣着
-光著 光着
-跪著 跪着
-裹著 裹着
-撼著 撼着
-喝著 喝着
-候著 候着
-懷著 懷着
-晃著 晃着
-揮著 揮着
-活著 活着
-獲著 獲着
-獲著 獲着
-急著 急着
-記著 記着
-冀著 冀着
-夾著 夾着
-駕著 駕着
-見著 見着
-閑著 閑着
-叫著 叫着
-接著 接着
-借著 借着
-借著 借着
-據著 據着
-開著 開着
-看得著      看得着
-看不著      看不着
-看著 看着
-康著 康着
-扛著 扛着
-考著 考着
-渴著 渴着
-刻著 刻着
-空著 空着
-哭著 哭着
-苦著 苦着
-捆著 捆着
-困著 困着
-拉著 拉着
-來著 來着
-樂著 樂着
-努力著      努力着
-麗著 麗着
-連著 連着
-戀著 戀着
-涼著 涼着
-亮著 亮着
-臨著 臨着
-拎著 拎着
-領著 領着
-流著 流着
-留著 留着
-摟著 摟着
-陋著 陋着
-落著 落着
-罵著 罵着
-瞞著 瞞着
-漫著 漫着
-忙著 忙着
-冒著 冒着
-美著 美着
-夢著 夢着
-蒙著 蒙着
-拿著 拿着
-逆著 逆着
-釀著 釀着
-努著 努着
-趴著 趴着
-跑著 跑着
-陪著 陪着
-配著 配着
-披著 披着
-騙著 騙着
-飄著 飄着
-拼著 拼着
-鋪著 鋪着
-騎著 騎着
-牽著 牽着
-求著 求着
-去著 去着
-嚷著 嚷着
-繞著 繞着
-忍著 忍着
-揉著 揉着
-潤著 潤着
-燒著 燒着
-身著 身着
-沉著 沉着
-盛著 盛着
-試著 試着
-守著 守着
-受著 受着
-梳著 梳着
-豎著 豎着
-數著 數着
-睡得著      睡得着
-睡不著      睡不着
-睡著 睡着
-順著 順着
-隨著 隨着
-踏著 踏着
-抬著 抬着
-躺著 躺着
-提著 提着
-甜著 甜着
-挑著 挑着
-跳著 跳着
-聽得著      聽得着
-聽不著      聽不着
-聽著 聽着
-偷著 偷着
-拖著 拖着
-望著 望着
-圍著 圍着
-味著 味着
-想著 想着
-響著 響着
-向著 向着
-笑著 笑着
-心著 心着
-信著 信着
-行著 行着
-性著 性着
-學著 學着
-尋著 尋着
-循著 循着
-壓著 壓着
-雅著 雅着
-沿著 沿着
-耀著 耀着
-掖著 掖着
-衣著 衣着
-疑著 疑着
-溢著 溢着
-藝著 藝着
-因著 因着
-印著 印着
-應著 應着
-映著 映着
-用得著      用得着
-用不著      用不着
-用著 用着
-悠著 悠着
-有著 有着
-與著 與着
-語著 語着
-豫著 豫着
-遠著 遠着
-躍著 躍着
-雜著 雜着
-載著 載着
-在著 在着
-紮著 紮着
-展著 展着
-站著 站着
-戰著 戰着
-蘸著 蘸着
-仗著 仗着
-找得著      找得着
-找不著      找不着
-照著 照着
-罩著 罩着
-貞著 貞着
-枕著 枕着
-爭著 爭着
-掙著 掙着
-制著 制着
-志著 志着
-皺著 皺着
-住著 住着
-抓著 抓着
-轉著 轉着
-裝著 裝着
-追著 追着
-髭著 髭着
-走著 走着
-坐著 坐着
-做著 做着
-含著 含着
-涵著 涵着
-演著 演着
-保障著      保障着
-黏著 黏着
-膠著 膠着
-附著 附着
-代表著      代表着
-浮著 浮着
-寫著 寫着
-遇著 遇着
-殺著 殺着
-著筆 着筆
-著鞭 着鞭
-著法 着法
-著火 着火
-著急 着急
-著艦 着艦
-著腳 着腳
-著她 着她
-著緊 着緊
-著力 着力
-著涼 着涼
-著陸 着陸
-著錄 着錄
-著落 着落
-著忙 着忙
-著迷 着迷
-著墨 着墨
-著妳 着妳
-著你 着你
-著色 着色
-著什麼急   着什麼急
-著實 着實
-著手 着手
-著數 着數
-著絲 着絲
-著他 着他
-著它 着它
-著祂 着祂
-著我 着我
-著想 着想
-著眼 着眼
-著衣 着衣
-著意 着意
-著重 着重
-著重 着重
-著裝 着裝
-著地 着地
-不著邊際   不着邊際
-不著痕跡   不着痕跡
-挨著作      挨著作
-挨著者      挨著者
-挨著名      挨著名
-挨著述      挨著述
-挨著稱      挨著稱
-挨著錄      挨著錄
-愛著作      愛著作
-愛著者      愛著者
-愛著名      愛著名
-愛著述      愛著述
-愛著稱      愛著稱
-愛著錄      愛著錄
-愛著書      愛著書
-暗著作      暗著作
-暗著者      暗著者
-暗著名      暗著名
-暗著述      暗著述
-暗著稱      暗著稱
-暗著錄      暗著錄
-暗著書      暗著書
-昂著作      昂著作
-昂著者      昂著者
-昂著名      昂著名
-昂著述      昂著述
-昂著稱      昂著稱
-昂著錄      昂著錄
-昂著書      昂著書
-擺著作      擺著作
-擺著者      擺著者
-擺著名      擺著名
-擺著述      擺著述
-擺著稱      擺著稱
-擺著錄      擺著錄
-伴著作      伴著作
-伴著者      伴著者
-伴著名      伴著名
-伴著述      伴著述
-伴著稱      伴著稱
-伴著錄      伴著錄
-伴著書      伴著書
-辦著作      辦著作
-辦著者      辦著者
-辦著名      辦著名
-辦著述      辦著述
-辦著稱      辦著稱
-辦著錄      辦著錄
-辦著書      辦著書
-幫著作      幫著作
-幫著者      幫著者
-幫著名      幫著名
-幫著述      幫著述
-幫著稱      幫著稱
-幫著錄      幫著錄
-幫著書      幫著書
-綁著作      綁著作
-綁著者      綁著者
-綁著名      綁著名
-綁著述      綁著述
-綁著稱      綁著稱
-綁著錄      綁著錄
-綁著書      綁著書
-抱著作      抱著作
-抱著者      抱著者
-抱著名      抱著名
-抱著述      抱著述
-抱著稱      抱著稱
-抱著錄      抱著錄
-背著作      背著作
-背著者      背著者
-背著名      背著名
-背著述      背著述
-背著稱      背著稱
-背著錄      背著錄
-背著書      背著書
-備著作      備著作
-備著者      備著者
-備著名      備著名
-備著述      備著述
-備著稱      備著稱
-備著錄      備著錄
-備著書      備著書
-本著作      本著作
-本著者      本著者
-本著名      本著名
-本著述      本著述
-本著稱      本著稱
-本著錄      本著錄
-本著書      本著書
-逼著作      逼著作
-逼著者      逼著者
-逼著名      逼著名
-逼著述      逼著述
-逼著稱      逼著稱
-逼著錄      逼著錄
-逼著書      逼著書
-閉著作      閉著作
-閉著者      閉著者
-閉著名      閉著名
-閉著述      閉著述
-閉著稱      閉著稱
-閉著錄      閉著錄
-閉著書      閉著書
-變著作      變著作
-變著者      變著者
-變著名      變著名
-變著述      變著述
-變著稱      變著稱
-變著錄      變著錄
-變著書      變著書
-猜著作      猜著作
-猜著者      猜著者
-猜著名      猜著名
-猜著述      猜著述
-猜著稱      猜著稱
-猜著錄      猜著錄
-猜著書      猜著書
-踩著作      踩著作
-踩著者      踩著者
-踩著名      踩著名
-踩著述      踩著述
-踩著稱      踩著稱
-踩著錄      踩著錄
-踩著書      踩著書
-藏著作      藏著作
-藏著者      藏著者
-藏著名      藏著名
-藏著述      藏著述
-藏著稱      藏著稱
-藏著錄      藏著錄
-藏著書      藏著書
-側著作      側著作
-側著者      側著者
-側著名      側著名
-側著述      側著述
-側著稱      側著稱
-側著錄      側著錄
-側著書      側著書
-纏著作      纏著作
-纏著者      纏著者
-纏著名      纏著名
-纏著述      纏著述
-纏著稱      纏著稱
-纏著錄      纏著錄
-纏著書      纏著書
-敞著作      敞著作
-敞著者      敞著者
-敞著名      敞著名
-敞著述      敞著述
-敞著稱      敞著稱
-敞著錄      敞著錄
-唱著作      唱著作
-唱著者      唱著者
-唱著名      唱著名
-唱著述      唱著述
-唱著稱      唱著稱
-唱著錄      唱著錄
-唱著書      唱著書
-朝著作      朝著作
-朝著者      朝著者
-朝著名      朝著名
-朝著述      朝著述
-朝著稱      朝著稱
-朝著錄      朝著錄
-沉著作      沉著作
-沉著者      沉著者
-沉著名      沉著名
-沉著述      沉著述
-沉著稱      沉著稱
-沉著錄      沉著錄
-沉著書      沉著書
-乘著作      乘著作
-乘著者      乘著者
-乘著名      乘著名
-乘著述      乘著述
-乘著稱      乘著稱
-乘著錄      乘著錄
-乘著書      乘著書
-持著作      持著作
-持著者      持著者
-持著名      持著名
-持著述      持著述
-持著稱      持著稱
-持著錄      持著錄
-斥著作      斥著作
-斥著者      斥著者
-斥著名      斥著名
-斥著述      斥著述
-斥著稱      斥著稱
-斥著錄      斥著錄
-斥著書      斥著書
-醜著作      醜著作
-醜著者      醜著者
-醜著名      醜著名
-醜著述      醜著述
-醜著稱      醜著稱
-醜著錄      醜著錄
-醜著書      醜著書
-穿著作      穿著作
-穿著者      穿著者
-穿著名      穿著名
-穿著述      穿著述
-穿著稱      穿著稱
-穿著錄      穿著錄
-穿著書      穿著書
-吹著作      吹著作
-吹著者      吹著者
-吹著名      吹著名
-吹著述      吹著述
-吹著稱      吹著稱
-吹著錄      吹著錄
-吹著書      吹著書
-達著作      達著作
-達著者      達著者
-達著名      達著名
-達著述      達著述
-達著稱      達著稱
-達著錄      達著錄
-達著書      達著書
-打著作      打著作
-打著者      打著者
-打著名      打著名
-打著述      打著述
-打著稱      打著稱
-打著錄      打著錄
-打著書      打著書
-待著作      待著作
-待著者      待著者
-待著名      待著名
-待著述      待著述
-待著稱      待著稱
-待著錄      待著錄
-待著書      待著書
-帶著作      帶著作
-帶著者      帶著者
-帶著名      帶著名
-帶著述      帶著述
-帶著稱      帶著稱
-帶著錄      帶著錄
-帶著書      帶著書
-戴著作      戴著作
-戴著者      戴著者
-戴著名      戴著名
-戴著述      戴著述
-戴著稱      戴著稱
-戴著錄      戴著錄
-戴著書      戴著書
-當著作      當著作
-當著者      當著者
-當著名      當著名
-當著述      當著述
-當著稱      當著稱
-當著錄      當著錄
-當著書      當著書
-擋著作      擋著作
-擋著者      擋著者
-擋著名      擋著名
-擋著述      擋著述
-擋著稱      擋著稱
-擋著錄      擋著錄
-得著作      得著作
-得著者      得著者
-得著名      得著名
-得著述      得著述
-得著稱      得著稱
-得著錄      得著錄
-得著書      得著書
-瞪著作      瞪著作
-瞪著者      瞪著者
-瞪著名      瞪著名
-瞪著述      瞪著述
-瞪著稱      瞪著稱
-瞪著錄      瞪著錄
-瞪著書      瞪著書
-低著作      低著作
-低著者      低著者
-低著名      低著名
-低著述      低著述
-低著稱      低著稱
-低著錄      低著錄
-低著書      低著書
-點著作      點著作
-點著者      點著者
-點著名      點著名
-點著述      點著述
-點著稱      點著稱
-點著錄      點著錄
-點著書      點著書
-盯著作      盯著作
-盯著者      盯著者
-盯著名      盯著名
-盯著述      盯著述
-盯著稱      盯著稱
-盯著錄      盯著錄
-盯著書      盯著書
-頂著作      頂著作
-頂著者      頂著者
-頂著名      頂著名
-頂著述      頂著述
-頂著稱      頂著稱
-頂著錄      頂著錄
-頂著書      頂著書
-定著作      定著作
-定著者      定著者
-定著名      定著名
-定著述      定著述
-定著稱      定著稱
-定著錄      定著錄
-定著書      定著書
-動著作      動著作
-動著者      動著者
-動著名      動著名
-動著述      動著述
-動著稱      動著稱
-動著錄      動著錄
-動著書      動著書
-鬥著作      鬥著作
-鬥著者      鬥著者
-鬥著名      鬥著名
-鬥著述      鬥著述
-鬥著稱      鬥著稱
-鬥著錄      鬥著錄
-鬥著書      鬥著書
-獨著作      獨著作
-獨著者      獨著者
-獨著名      獨著名
-獨著述      獨著述
-獨著稱      獨著稱
-獨著錄      獨著錄
-獨著書      獨著書
-對著作      對著作
-對著者      對著者
-對著名      對著名
-對著述      對著述
-對著稱      對著稱
-對著錄      對著錄
-對著書      對著書
-盾著作      盾著作
-盾著者      盾著者
-盾著名      盾著名
-盾著述      盾著述
-盾著稱      盾著稱
-盾著錄      盾著錄
-盾著書      盾著書
-犯不著作   犯不著作
-犯不著者   犯不著者
-犯不著名   犯不著名
-犯不著述   犯不著述
-犯不著稱   犯不著稱
-犯不著錄   犯不著錄
-犯不著書   犯不著書
-福著作      福著作
-福著者      福著者
-福著名      福著名
-福著述      福著述
-福著稱      福著稱
-福著錄      福著錄
-福著書      福著書
-趕著作      趕著作
-趕著者      趕著者
-趕著名      趕著名
-趕著述      趕著述
-趕著稱      趕著稱
-趕著錄      趕著錄
-趕著書      趕著書
-高著作      高著作
-高著者      高著者
-高著名      高著名
-高著述      高著述
-高著稱      高著稱
-高著錄      高著錄
-高著書      高著書
-隔著作      隔著作
-隔著者      隔著者
-隔著名      隔著名
-隔著述      隔著述
-隔著稱      隔著稱
-隔著錄      隔著錄
-隔著書      隔著書
-跟著作      跟著作
-跟著者      跟著者
-跟著名      跟著名
-跟著述      跟著述
-跟著稱      跟著稱
-跟著錄      跟著錄
-跟著書      跟著書
-孤著作      孤著作
-孤著者      孤著者
-孤著名      孤著名
-孤著述      孤著述
-孤著稱      孤著稱
-孤著錄      孤著錄
-孤著書      孤著書
-關著作      關著作
-關著者      關著者
-關著名      關著名
-關著述      關著述
-關著稱      關著稱
-關著錄      關著錄
-關著書      關著書
-管著作      管著作
-管著者      管著者
-管著名      管著名
-管著述      管著述
-管著稱      管著稱
-管著錄      管著錄
-管著書      管著書
-慣著作      慣著作
-慣著者      慣著者
-慣著名      慣著名
-慣著述      慣著述
-慣著稱      慣著稱
-慣著錄      慣著錄
-慣著書      慣著書
-光著作      光著作
-光著者      光著者
-光著名      光著名
-光著述      光著述
-光著稱      光著稱
-光著錄      光著錄
-光著書      光著書
-跪著作      跪著作
-跪著者      跪著者
-跪著名      跪著名
-跪著述      跪著述
-跪著稱      跪著稱
-跪著錄      跪著錄
-跪著書      跪著書
-裹著作      裹著作
-裹著者      裹著者
-裹著名      裹著名
-裹著述      裹著述
-裹著稱      裹著稱
-裹著錄      裹著錄
-裹著書      裹著書
-撼著作      撼著作
-撼著者      撼著者
-撼著名      撼著名
-撼著述      撼著述
-撼著稱      撼著稱
-撼著錄      撼著錄
-撼著書      撼著書
-喝著作      喝著作
-喝著者      喝著者
-喝著名      喝著名
-喝著述      喝著述
-喝著稱      喝著稱
-喝著錄      喝著錄
-喝著書      喝著書
-候著作      候著作
-候著者      候著者
-候著名      候著名
-候著述      候著述
-候著稱      候著稱
-候著錄      候著錄
-候著書      候著書
-懷著作      懷著作
-懷著者      懷著者
-懷著名      懷著名
-懷著述      懷著述
-懷著稱      懷著稱
-懷著錄      懷著錄
-懷著書      懷著書
-晃著作      晃著作
-晃著者      晃著者
-晃著名      晃著名
-晃著述      晃著述
-晃著稱      晃著稱
-晃著錄      晃著錄
-揮著作      揮著作
-揮著者      揮著者
-揮著名      揮著名
-揮著述      揮著述
-揮著稱      揮著稱
-揮著錄      揮著錄
-活著作      活著作
-活著者      活著者
-活著名      活著名
-活著述      活著述
-活著稱      活著稱
-活著錄      活著錄
-活著書      活著書
-獲著作      獲著作
-獲著者      獲著者
-獲著名      獲著名
-獲著述      獲著述
-獲著稱      獲著稱
-獲著錄      獲著錄
-獲著書      獲著書
-獲著作      獲著作
-獲著者      獲著者
-獲著名      獲著名
-獲著述      獲著述
-獲著稱      獲著稱
-獲著錄      獲著錄
-獲著書      獲著書
-急著作      急著作
-急著者      急著者
-急著名      急著名
-急著述      急著述
-急著稱      急著稱
-急著錄      急著錄
-急著書      急著書
-記著作      記著作
-記著者      記著者
-記著名      記著名
-記著述      記著述
-記著稱      記著稱
-記著錄      記著錄
-記著書      記著書
-冀著作      冀著作
-冀著者      冀著者
-冀著名      冀著名
-冀著述      冀著述
-冀著稱      冀著稱
-冀著錄      冀著錄
-冀著書      冀著書
-夾著作      夾著作
-夾著者      夾著者
-夾著名      夾著名
-夾著述      夾著述
-夾著稱      夾著稱
-夾著錄      夾著錄
-夾著書      夾著書
-駕著作      駕著作
-駕著者      駕著者
-駕著名      駕著名
-駕著述      駕著述
-駕著稱      駕著稱
-駕著錄      駕著錄
-駕著書      駕著書
-見著作      見著作
-見著者      見著者
-見著名      見著名
-見著述      見著述
-見著稱      見著稱
-見著錄      見著錄
-見著書      見著書
-閑著作      閑著作
-閑著者      閑著者
-閑著名      閑著名
-閑著述      閑著述
-閑著稱      閑著稱
-閑著錄      閑著錄
-閑著書      閑著書
-叫著作      叫著作
-叫著者      叫著者
-叫著名      叫著名
-叫著述      叫著述
-叫著稱      叫著稱
-叫著錄      叫著錄
-叫著書      叫著書
-接著作      接著作
-接著者      接著者
-接著名      接著名
-接著述      接著述
-接著稱      接著稱
-接著錄      接著錄
-借著作      借著作
-借著者      借著者
-借著名      借著名
-借著述      借著述
-借著稱      借著稱
-借著錄      借著錄
-借著書      借著書
-借著作      借著作
-借著者      借著者
-借著名      借著名
-借著述      借著述
-借著稱      借著稱
-借著錄      借著錄
-借著書      借著書
-據著作      據著作
-據著者      據著者
-據著名      據著名
-據著述      據著述
-據著稱      據著稱
-據著錄      據著錄
-據著書      據著書
-開著作      開著作
-開著者      開著者
-開著名      開著名
-開著述      開著述
-開著稱      開著稱
-開著錄      開著錄
-開著書      開著書
-看著作      看著作
-看著者      看著者
-看著名      看著名
-看著述      看著述
-看著稱      看著稱
-看著錄      看著錄
-看著書      看著書
-康著作      康著作
-康著者      康著者
-康著名      康著名
-康著述      康著述
-康著稱      康著稱
-康著錄      康著錄
-康著書      康著書
-扛著作      扛著作
-扛著者      扛著者
-扛著名      扛著名
-扛著述      扛著述
-扛著稱      扛著稱
-扛著錄      扛著錄
-扛著書      扛著書
-考著作      考著作
-考著者      考著者
-考著名      考著名
-考著述      考著述
-考著稱      考著稱
-考著錄      考著錄
-考著書      考著書
-渴著作      渴著作
-渴著者      渴著者
-渴著名      渴著名
-渴著述      渴著述
-渴著稱      渴著稱
-渴著錄      渴著錄
-渴著書      渴著書
-刻著作      刻著作
-刻著者      刻著者
-刻著名      刻著名
-刻著述      刻著述
-刻著稱      刻著稱
-刻著錄      刻著錄
-刻著書      刻著書
-空著作      空著作
-空著者      空著者
-空著名      空著名
-空著述      空著述
-空著稱      空著稱
-空著錄      空著錄
-空著書      空著書
-哭著作      哭著作
-哭著者      哭著者
-哭著名      哭著名
-哭著述      哭著述
-哭著稱      哭著稱
-哭著錄      哭著錄
-哭著書      哭著書
-苦著作      苦著作
-苦著者      苦著者
-苦著名      苦著名
-苦著述      苦著述
-苦著稱      苦著稱
-苦著錄      苦著錄
-苦著書      苦著書
-捆著作      捆著作
-捆著者      捆著者
-捆著名      捆著名
-捆著述      捆著述
-捆著稱      捆著稱
-捆著錄      捆著錄
-困著作      困著作
-困著者      困著者
-困著名      困著名
-困著述      困著述
-困著稱      困著稱
-困著錄      困著錄
-困著書      困著書
-拉著作      拉著作
-拉著者      拉著者
-拉著名      拉著名
-拉著述      拉著述
-拉著稱      拉著稱
-拉著錄      拉著錄
-拉著書      拉著書
-來著作      來著作
-來著者      來著者
-來著名      來著名
-來著述      來著述
-來著稱      來著稱
-來著錄      來著錄
-來著書      來著書
-樂著作      樂著作
-樂著者      樂著者
-樂著名      樂著名
-樂著述      樂著述
-樂著稱      樂著稱
-樂著錄      樂著錄
-樂著書      樂著書
-努力著作   努力著作
-努力著者   努力著者
-努力著名   努力著名
-努力著述   努力著述
-努力著稱   努力著稱
-努力著錄   努力著錄
-努力著書   努力著書
-麗著作      麗著作
-麗著者      麗著者
-麗著名      麗著名
-麗著述      麗著述
-麗著稱      麗著稱
-麗著錄      麗著錄
-麗著書      麗著書
-連著作      連著作
-連著者      連著者
-連著名      連著名
-連著述      連著述
-連著稱      連著稱
-連著錄      連著錄
-連著書      連著書
-戀著作      戀著作
-戀著者      戀著者
-戀著名      戀著名
-戀著述      戀著述
-戀著稱      戀著稱
-戀著錄      戀著錄
-戀著書      戀著書
-涼著作      涼著作
-涼著者      涼著者
-涼著名      涼著名
-涼著述      涼著述
-涼著稱      涼著稱
-涼著錄      涼著錄
-涼著書      涼著書
-亮著作      亮著作
-亮著者      亮著者
-亮著名      亮著名
-亮著述      亮著述
-亮著稱      亮著稱
-亮著錄      亮著錄
-亮著書      亮著書
-臨著作      臨著作
-臨著者      臨著者
-臨著名      臨著名
-臨著述      臨著述
-臨著稱      臨著稱
-臨著錄      臨著錄
-臨著書      臨著書
-拎著作      拎著作
-拎著者      拎著者
-拎著名      拎著名
-拎著述      拎著述
-拎著稱      拎著稱
-拎著錄      拎著錄
-領著作      領著作
-領著者      領著者
-領著名      領著名
-領著述      領著述
-領著稱      領著稱
-領著錄      領著錄
-領著書      領著書
-流著作      流著作
-流著者      流著者
-流著名      流著名
-流著述      流著述
-流著稱      流著稱
-流著錄      流著錄
-流著書      流著書
-留著作      留著作
-留著者      留著者
-留著名      留著名
-留著述      留著述
-留著稱      留著稱
-留著錄      留著錄
-留著書      留著書
-摟著作      摟著作
-摟著者      摟著者
-摟著名      摟著名
-摟著述      摟著述
-摟著稱      摟著稱
-摟著錄      摟著錄
-陋著作      陋著作
-陋著者      陋著者
-陋著名      陋著名
-陋著述      陋著述
-陋著稱      陋著稱
-陋著錄      陋著錄
-陋著書      陋著書
-落著作      落著作
-落著者      落著者
-落著名      落著名
-落著述      落著述
-落著稱      落著稱
-落著錄      落著錄
-落著書      落著書
-罵著作      罵著作
-罵著者      罵著者
-罵著名      罵著名
-罵著述      罵著述
-罵著稱      罵著稱
-罵著錄      罵著錄
-罵著書      罵著書
-瞞著作      瞞著作
-瞞著者      瞞著者
-瞞著名      瞞著名
-瞞著述      瞞著述
-瞞著稱      瞞著稱
-瞞著錄      瞞著錄
-瞞著書      瞞著書
-漫著作      漫著作
-漫著者      漫著者
-漫著名      漫著名
-漫著述      漫著述
-漫著稱      漫著稱
-漫著錄      漫著錄
-漫著書      漫著書
-忙著作      忙著作
-忙著者      忙著者
-忙著名      忙著名
-忙著述      忙著述
-忙著稱      忙著稱
-忙著錄      忙著錄
-忙著書      忙著書
-冒著作      冒著作
-冒著者      冒著者
-冒著名      冒著名
-冒著述      冒著述
-冒著稱      冒著稱
-冒著錄      冒著錄
-冒著書      冒著書
-美著作      美著作
-美著者      美著者
-美著名      美著名
-美著述      美著述
-美著稱      美著稱
-美著錄      美著錄
-美著書      美著書
-夢著作      夢著作
-夢著者      夢著者
-夢著名      夢著名
-夢著述      夢著述
-夢著稱      夢著稱
-夢著錄      夢著錄
-夢著書      夢著書
-蒙著作      蒙著作
-蒙著者      蒙著者
-蒙著名      蒙著名
-蒙著述      蒙著述
-蒙著稱      蒙著稱
-蒙著錄      蒙著錄
-蒙著書      蒙著書
-拿著作      拿著作
-拿著者      拿著者
-拿著名      拿著名
-拿著述      拿著述
-拿著稱      拿著稱
-拿著錄      拿著錄
-逆著作      逆著作
-逆著者      逆著者
-逆著名      逆著名
-逆著述      逆著述
-逆著稱      逆著稱
-逆著錄      逆著錄
-逆著書      逆著書
-釀著作      釀著作
-釀著者      釀著者
-釀著名      釀著名
-釀著述      釀著述
-釀著稱      釀著稱
-釀著錄      釀著錄
-釀著書      釀著書
-努著作      努著作
-努著者      努著者
-努著名      努著名
-努著述      努著述
-努著稱      努著稱
-努著錄      努著錄
-努著書      努著書
-趴著作      趴著作
-趴著者      趴著者
-趴著名      趴著名
-趴著述      趴著述
-趴著稱      趴著稱
-趴著錄      趴著錄
-趴著書      趴著書
-跑著作      跑著作
-跑著者      跑著者
-跑著名      跑著名
-跑著述      跑著述
-跑著稱      跑著稱
-跑著錄      跑著錄
-跑著書      跑著書
-陪著作      陪著作
-陪著者      陪著者
-陪著名      陪著名
-陪著述      陪著述
-陪著稱      陪著稱
-陪著錄      陪著錄
-陪著書      陪著書
-配著作      配著作
-配著者      配著者
-配著名      配著名
-配著述      配著述
-配著稱      配著稱
-配著錄      配著錄
-配著書      配著書
-披著作      披著作
-披著者      披著者
-披著名      披著名
-披著述      披著述
-披著稱      披著稱
-披著錄      披著錄
-披著書      披著書
-騙著作      騙著作
-騙著者      騙著者
-騙著名      騙著名
-騙著述      騙著述
-騙著稱      騙著稱
-騙著錄      騙著錄
-騙著書      騙著書
-飄著作      飄著作
-飄著者      飄著者
-飄著名      飄著名
-飄著述      飄著述
-飄著稱      飄著稱
-飄著錄      飄著錄
-飄著書      飄著書
-拼著作      拼著作
-拼著者      拼著者
-拼著名      拼著名
-拼著述      拼著述
-拼著稱      拼著稱
-拼著錄      拼著錄
-鋪著作      鋪著作
-鋪著者      鋪著者
-鋪著名      鋪著名
-鋪著述      鋪著述
-鋪著稱      鋪著稱
-鋪著錄      鋪著錄
-鋪著書      鋪著書
-騎著作      騎著作
-騎著者      騎著者
-騎著名      騎著名
-騎著述      騎著述
-騎著稱      騎著稱
-騎著錄      騎著錄
-騎著書      騎著書
-牽著作      牽著作
-牽著者      牽著者
-牽著名      牽著名
-牽著述      牽著述
-牽著稱      牽著稱
-牽著錄      牽著錄
-牽著書      牽著書
-求著作      求著作
-求著者      求著者
-求著名      求著名
-求著述      求著述
-求著稱      求著稱
-求著錄      求著錄
-求著書      求著書
-去著作      去著作
-去著者      去著者
-去著名      去著名
-去著述      去著述
-去著稱      去著稱
-去著錄      去著錄
-去著書      去著書
-嚷著作      嚷著作
-嚷著者      嚷著者
-嚷著名      嚷著名
-嚷著述      嚷著述
-嚷著稱      嚷著稱
-嚷著錄      嚷著錄
-嚷著書      嚷著書
-繞著作      繞著作
-繞著者      繞著者
-繞著名      繞著名
-繞著述      繞著述
-繞著稱      繞著稱
-繞著錄      繞著錄
-繞著書      繞著書
-忍著作      忍著作
-忍著者      忍著者
-忍著名      忍著名
-忍著述      忍著述
-忍著稱      忍著稱
-忍著錄      忍著錄
-忍著書      忍著書
-揉著作      揉著作
-揉著者      揉著者
-揉著名      揉著名
-揉著述      揉著述
-揉著稱      揉著稱
-揉著錄      揉著錄
-揉著書      揉著書
-潤著作      潤著作
-潤著者      潤著者
-潤著名      潤著名
-潤著述      潤著述
-潤著稱      潤著稱
-潤著錄      潤著錄
-潤著書      潤著書
-燒著作      燒著作
-燒著者      燒著者
-燒著名      燒著名
-燒著述      燒著述
-燒著稱      燒著稱
-燒著錄      燒著錄
-燒著書      燒著書
-身著作      身著作
-身著者      身著者
-身著名      身著名
-身著述      身著述
-身著稱      身著稱
-身著錄      身著錄
-身著書      身著書
-沉著作      沉著作
-沉著者      沉著者
-沉著名      沉著名
-沉著述      沉著述
-沉著稱      沉著稱
-沉著錄      沉著錄
-沉著書      沉著書
-盛著作      盛著作
-盛著者      盛著者
-盛著名      盛著名
-盛著述      盛著述
-盛著稱      盛著稱
-盛著錄      盛著錄
-盛著書      盛著書
-試著作      試著作
-試著者      試著者
-試著名      試著名
-試著述      試著述
-試著稱      試著稱
-試著錄      試著錄
-試著書      試著書
-守著作      守著作
-守著者      守著者
-守著名      守著名
-守著述      守著述
-守著稱      守著稱
-守著錄      守著錄
-守著書      守著書
-受著作      受著作
-受著者      受著者
-受著名      受著名
-受著述      受著述
-受著稱      受著稱
-受著錄      受著錄
-受著書      受著書
-梳著作      梳著作
-梳著者      梳著者
-梳著名      梳著名
-梳著述      梳著述
-梳著稱      梳著稱
-梳著錄      梳著錄
-豎著作      豎著作
-豎著者      豎著者
-豎著名      豎著名
-豎著述      豎著述
-豎著稱      豎著稱
-豎著錄      豎著錄
-豎著書      豎著書
-數著作      數著作
-數著者      數著者
-數著名      數著名
-數著述      數著述
-數著稱      數著稱
-數著錄      數著錄
-睡著作      睡著作
-睡著者      睡著者
-睡著名      睡著名
-睡著述      睡著述
-睡著稱      睡著稱
-睡著錄      睡著錄
-睡著書      睡著書
-順著作      順著作
-順著者      順著者
-順著名      順著名
-順著述      順著述
-順著稱      順著稱
-順著錄      順著錄
-順著書      順著書
-隨著作      隨著作
-隨著者      隨著者
-隨著名      隨著名
-隨著述      隨著述
-隨著稱      隨著稱
-隨著錄      隨著錄
-隨著書      隨著書
-踏著作      踏著作
-踏著者      踏著者
-踏著名      踏著名
-踏著述      踏著述
-踏著稱      踏著稱
-踏著錄      踏著錄
-抬著作      抬著作
-抬著者      抬著者
-抬著名      抬著名
-抬著述      抬著述
-抬著稱      抬著稱
-抬著錄      抬著錄
-躺著作      躺著作
-躺著者      躺著者
-躺著名      躺著名
-躺著述      躺著述
-躺著稱      躺著稱
-躺著錄      躺著錄
-躺著書      躺著書
-提著作      提著作
-提著者      提著者
-提著名      提著名
-提著述      提著述
-提著稱      提著稱
-提著錄      提著錄
-甜著作      甜著作
-甜著者      甜著者
-甜著名      甜著名
-甜著述      甜著述
-甜著稱      甜著稱
-甜著錄      甜著錄
-甜著書      甜著書
-挑著作      挑著作
-挑著者      挑著者
-挑著名      挑著名
-挑著述      挑著述
-挑著稱      挑著稱
-挑著錄      挑著錄
-跳著作      跳著作
-跳著者      跳著者
-跳著名      跳著名
-跳著述      跳著述
-跳著稱      跳著稱
-跳著錄      跳著錄
-跳著書      跳著書
-聽著作      聽著作
-聽著者      聽著者
-聽著名      聽著名
-聽著述      聽著述
-聽著稱      聽著稱
-聽著錄      聽著錄
-聽著書      聽著書
-偷著作      偷著作
-偷著者      偷著者
-偷著名      偷著名
-偷著述      偷著述
-偷著稱      偷著稱
-偷著錄      偷著錄
-偷著書      偷著書
-拖著作      拖著作
-拖著者      拖著者
-拖著名      拖著名
-拖著述      拖著述
-拖著稱      拖著稱
-拖著錄      拖著錄
-望著作      望著作
-望著者      望著者
-望著名      望著名
-望著述      望著述
-望著稱      望著稱
-望著錄      望著錄
-望著書      望著書
-圍著作      圍著作
-圍著者      圍著者
-圍著名      圍著名
-圍著述      圍著述
-圍著稱      圍著稱
-圍著錄      圍著錄
-圍著書      圍著書
-味著作      味著作
-味著者      味著者
-味著名      味著名
-味著述      味著述
-味著稱      味著稱
-味著錄      味著錄
-味著書      味著書
-想著作      想著作
-想著者      想著者
-想著名      想著名
-想著述      想著述
-想著稱      想著稱
-想著錄      想著錄
-想著書      想著書
-響著作      響著作
-響著者      響著者
-響著名      響著名
-響著述      響著述
-響著稱      響著稱
-響著錄      響著錄
-響著書      響著書
-向著作      向著作
-向著者      向著者
-向著名      向著名
-向著述      向著述
-向著稱      向著稱
-向著錄      向著錄
-向著書      向著書
-笑著作      笑著作
-笑著者      笑著者
-笑著名      笑著名
-笑著述      笑著述
-笑著稱      笑著稱
-笑著錄      笑著錄
-笑著書      笑著書
-心著作      心著作
-心著者      心著者
-心著名      心著名
-心著述      心著述
-心著稱      心著稱
-心著錄      心著錄
-心著書      心著書
-信著作      信著作
-信著者      信著者
-信著名      信著名
-信著述      信著述
-信著稱      信著稱
-信著錄      信著錄
-信著書      信著書
-行著作      行著作
-行著者      行著者
-行著名      行著名
-行著述      行著述
-行著稱      行著稱
-行著錄      行著錄
-行著書      行著書
-性著作      性著作
-性著者      性著者
-性著名      性著名
-性著述      性著述
-性著稱      性著稱
-性著錄      性著錄
-性著書      性著書
-學著作      學著作
-學著者      學著者
-學著名      學著名
-學著述      學著述
-學著稱      學著稱
-學著錄      學著錄
-學著書      學著書
-尋著作      尋著作
-尋著者      尋著者
-尋著名      尋著名
-尋著述      尋著述
-尋著稱      尋著稱
-尋著錄      尋著錄
-尋著書      尋著書
-循著作      循著作
-循著者      循著者
-循著名      循著名
-循著述      循著述
-循著稱      循著稱
-循著錄      循著錄
-循著書      循著書
-壓著作      壓著作
-壓著者      壓著者
-壓著名      壓著名
-壓著述      壓著述
-壓著稱      壓著稱
-壓著錄      壓著錄
-壓著書      壓著書
-雅著作      雅著作
-雅著者      雅著者
-雅著名      雅著名
-雅著述      雅著述
-雅著稱      雅著稱
-雅著錄      雅著錄
-雅著書      雅著書
-沿著作      沿著作
-沿著者      沿著者
-沿著名      沿著名
-沿著述      沿著述
-沿著稱      沿著稱
-沿著錄      沿著錄
-沿著書      沿著書
-耀著作      耀著作
-耀著者      耀著者
-耀著名      耀著名
-耀著述      耀著述
-耀著稱      耀著稱
-耀著錄      耀著錄
-耀著書      耀著書
-掖著作      掖著作
-掖著者      掖著者
-掖著名      掖著名
-掖著述      掖著述
-掖著稱      掖著稱
-掖著錄      掖著錄
-衣著作      衣著作
-衣著者      衣著者
-衣著名      衣著名
-衣著述      衣著述
-衣著稱      衣著稱
-衣著錄      衣著錄
-衣著書      衣著書
-疑著作      疑著作
-疑著者      疑著者
-疑著名      疑著名
-疑著述      疑著述
-疑著稱      疑著稱
-疑著錄      疑著錄
-疑著書      疑著書
-溢著作      溢著作
-溢著者      溢著者
-溢著名      溢著名
-溢著述      溢著述
-溢著稱      溢著稱
-溢著錄      溢著錄
-溢著書      溢著書
-藝著作      藝著作
-藝著者      藝著者
-藝著名      藝著名
-藝著述      藝著述
-藝著稱      藝著稱
-藝著錄      藝著錄
-藝著書      藝著書
-因著作      因著作
-因著者      因著者
-因著名      因著名
-因著述      因著述
-因著稱      因著稱
-因著錄      因著錄
-因著書      因著書
-印著作      印著作
-印著者      印著者
-印著名      印著名
-印著述      印著述
-印著稱      印著稱
-印著錄      印著錄
-印著書      印著書
-應著作      應著作
-應著者      應著者
-應著名      應著名
-應著述      應著述
-應著稱      應著稱
-應著錄      應著錄
-應著書      應著書
-映著作      映著作
-映著者      映著者
-映著名      映著名
-映著述      映著述
-映著稱      映著稱
-映著錄      映著錄
-映著書      映著書
-用著作      用著作
-用著者      用著者
-用著名      用著名
-用著述      用著述
-用著稱      用著稱
-用著錄      用著錄
-用著書      用著書
-悠著作      悠著作
-悠著者      悠著者
-悠著名      悠著名
-悠著述      悠著述
-悠著稱      悠著稱
-悠著錄      悠著錄
-悠著書      悠著書
-有著作      有著作
-有著者      有著者
-有著名      有著名
-有著述      有著述
-有著稱      有著稱
-有著錄      有著錄
-有著書      有著書
-與著作      與著作
-與著者      與著者
-與著名      與著名
-與著述      與著述
-與著稱      與著稱
-與著錄      與著錄
-與著書      與著書
-語著作      語著作
-語著者      語著者
-語著名      語著名
-語著述      語著述
-語著稱      語著稱
-語著錄      語著錄
-語著書      語著書
-豫著作      豫著作
-豫著者      豫著者
-豫著名      豫著名
-豫著述      豫著述
-豫著稱      豫著稱
-豫著錄      豫著錄
-豫著書      豫著書
-遠著作      遠著作
-遠著者      遠著者
-遠著名      遠著名
-遠著述      遠著述
-遠著稱      遠著稱
-遠著錄      遠著錄
-遠著書      遠著書
-躍著作      躍著作
-躍著者      躍著者
-躍著名      躍著名
-躍著述      躍著述
-躍著稱      躍著稱
-躍著錄      躍著錄
-躍著書      躍著書
-雜著作      雜著作
-雜著者      雜著者
-雜著名      雜著名
-雜著述      雜著述
-雜著稱      雜著稱
-雜著錄      雜著錄
-雜著書      雜著書
-載著作      載著作
-載著者      載著者
-載著名      載著名
-載著述      載著述
-載著稱      載著稱
-載著錄      載著錄
-載著書      載著書
-在著作      在著作
-在著者      在著者
-在著名      在著名
-在著述      在著述
-在著稱      在著稱
-在著錄      在著錄
-在著書      在著書
-紮著作      紮著作
-紮著者      紮著者
-紮著名      紮著名
-紮著述      紮著述
-紮著稱      紮著稱
-紮著錄      紮著錄
-紮著書      紮著書
-展著作      展著作
-展著者      展著者
-展著名      展著名
-展著述      展著述
-展著稱      展著稱
-展著錄      展著錄
-展著書      展著書
-站著作      站著作
-站著者      站著者
-站著名      站著名
-站著述      站著述
-站著稱      站著稱
-站著錄      站著錄
-站著書      站著書
-戰著作      戰著作
-戰著者      戰著者
-戰著名      戰著名
-戰著述      戰著述
-戰著稱      戰著稱
-戰著錄      戰著錄
-戰著書      戰著書
-蘸著作      蘸著作
-蘸著者      蘸著者
-蘸著名      蘸著名
-蘸著述      蘸著述
-蘸著稱      蘸著稱
-蘸著錄      蘸著錄
-蘸著書      蘸著書
-仗著作      仗著作
-仗著者      仗著者
-仗著名      仗著名
-仗著述      仗著述
-仗著稱      仗著稱
-仗著錄      仗著錄
-仗著書      仗著書
-照著作      照著作
-照著者      照著者
-照著名      照著名
-照著述      照著述
-照著稱      照著稱
-照著錄      照著錄
-照著書      照著書
-罩著作      罩著作
-罩著者      罩著者
-罩著名      罩著名
-罩著述      罩著述
-罩著稱      罩著稱
-罩著錄      罩著錄
-罩著書      罩著書
-貞著作      貞著作
-貞著者      貞著者
-貞著名      貞著名
-貞著述      貞著述
-貞著稱      貞著稱
-貞著錄      貞著錄
-貞著書      貞著書
-枕著作      枕著作
-枕著者      枕著者
-枕著名      枕著名
-枕著述      枕著述
-枕著稱      枕著稱
-枕著錄      枕著錄
-爭著作      爭著作
-爭著者      爭著者
-爭著名      爭著名
-爭著述      爭著述
-爭著稱      爭著稱
-爭著錄      爭著錄
-爭著書      爭著書
-掙著作      掙著作
-掙著者      掙著者
-掙著名      掙著名
-掙著述      掙著述
-掙著稱      掙著稱
-掙著錄      掙著錄
-掙著書      掙著書
-制著作      制著作
-制著者      制著者
-制著名      制著名
-制著述      制著述
-制著稱      制著稱
-制著錄      制著錄
-制著書      制著書
-志著作      志著作
-志著者      志著者
-志著名      志著名
-志著述      志著述
-志著稱      志著稱
-志著錄      志著錄
-志著書      志著書
-皺著作      皺著作
-皺著者      皺著者
-皺著名      皺著名
-皺著述      皺著述
-皺著稱      皺著稱
-皺著錄      皺著錄
-皺著書      皺著書
-住著作      住著作
-住著者      住著者
-住著名      住著名
-住著述      住著述
-住著稱      住著稱
-住著錄      住著錄
-住著書      住著書
-抓著作      抓著作
-抓著者      抓著者
-抓著名      抓著名
-抓著述      抓著述
-抓著稱      抓著稱
-抓著錄      抓著錄
-轉著作      轉著作
-轉著者      轉著者
-轉著名      轉著名
-轉著述      轉著述
-轉著稱      轉著稱
-轉著錄      轉著錄
-轉著書      轉著書
-裝著作      裝著作
-裝著者      裝著者
-裝著名      裝著名
-裝著述      裝著述
-裝著稱      裝著稱
-裝著錄      裝著錄
-裝著書      裝著書
-追著作      追著作
-追著者      追著者
-追著名      追著名
-追著述      追著述
-追著稱      追著稱
-追著錄      追著錄
-追著書      追著書
-髭著作      髭著作
-髭著者      髭著者
-髭著名      髭著名
-髭著述      髭著述
-髭著稱      髭著稱
-髭著錄      髭著錄
-髭著書      髭著書
-走著作      走著作
-走著者      走著者
-走著名      走著名
-走著述      走著述
-走著稱      走著稱
-走著錄      走著錄
-走著書      走著書
-坐著作      坐著作
-坐著者      坐著者
-坐著名      坐著名
-坐著述      坐著述
-坐著稱      坐著稱
-坐著錄      坐著錄
-坐著書      坐著書
-做著作      做著作
-做著者      做著者
-做著名      做著名
-做著述      做著述
-做著稱      做著稱
-做著錄      做著錄
-做著書      做著書
-含著作      含著作
-含著者      含著者
-含著名      含著名
-含著述      含著述
-含著稱      含著稱
-含著錄      含著錄
-含著書      含著書
-涵著作      涵著作
-涵著者      涵著者
-涵著名      涵著名
-涵著述      涵著述
-涵著稱      涵著稱
-涵著錄      涵著錄
-涵著書      涵著書
-演著作      演著作
-演著者      演著者
-演著名      演著名
-演著述      演著述
-演著稱      演著稱
-演著錄      演著錄
-演著書      演著書
-保障著作   保障著作
-保障著者   保障著者
-保障著名   保障著名
-保障著述   保障著述
-保障著稱   保障著稱
-保障著錄   保障著錄
-保障著書   保障著書
-黏著作      黏著作
-黏著者      黏著者
-黏著名      黏著名
-黏著述      黏著述
-黏著稱      黏著稱
-黏著錄      黏著錄
-黏著書      黏著書
-膠著作      膠著作
-膠著者      膠著者
-膠著名      膠著名
-膠著述      膠著述
-膠著稱      膠著稱
-膠著錄      膠著錄
-膠著書      膠著書
-附著作      附著作
-附著者      附著者
-附著名      附著名
-附著述      附著述
-附著稱      附著稱
-附著錄      附著錄
-附著書      附著書
-代表著作   代表著作
-代表著者   代表著者
-代表著名   代表著名
-代表著述   代表著述
-代表著稱   代表著稱
-代表著錄   代表著錄
-代表著書   代表著書
-浮著作      浮著作
-浮著者      浮著者
-浮著名      浮著名
-浮著述      浮著述
-浮著稱      浮著稱
-浮著錄      浮著錄
-浮著書      浮著書
-寫著作      寫著作
-寫著者      寫著者
-寫著名      寫著名
-寫著述      寫著述
-寫著稱      寫著稱
-寫著錄      寫著錄
-寫著書      寫著書
-遇著作      遇著作
-遇著者      遇著者
-遇著名      遇著名
-遇著述      遇著述
-遇著稱      遇著稱
-遇著錄      遇著錄
-遇著書      遇著書
-殺著作      殺著作
-殺著者      殺著者
-殺著名      殺著名
-殺著述      殺著述
-殺著稱      殺著稱
-殺著錄      殺著錄
-殺著書      殺著書
-標誌著      標誌着
-幹著 幹着
-干着 幹着
-干着急      干着急
-流露著      流露着
-靠著 靠着
-靠著作      靠著作
-靠著名      靠著名
-靠著錄      靠著錄
-靠著录      靠著錄
-靠著稱      靠著稱
-靠著称      靠著稱
-靠著者      靠著者
-靠著述      靠著述
-新著龍虎門        新著龍虎門
-迫著 迫着
-心繫著      心繫着
-藉著 藉着
-吃得著      吃得着
-吃不著      吃不着
-吃著 吃着
-聞得著      闻得着
-聞不著      闻不着
-聞著 闻着
-嗅得著      嗅得着
-嗅不著      嗅不着
-嗅著 嗅着
-警戒著      警戒着
-榴莲 榴槤
-榴蓮 榴槤
-发布 發佈
-發布 發佈
-掛鉤 掛鈎
-鉤心鬥角   鈎心鬥角
-咤    咤
-叱吒 叱咤
-叱咤 叱咤
-醯    酰
-醯醬 醯醬
-醯雞 醯雞
-醯酱 醯醬
-醯鸡 醯雞
-醯醋 醯醋
-醯醢 醯醢
-醯壶 醯壺
-醯壺 醯壺
-菸    煙
-雪裡紅      雪裏紅
-雪裡蕻      雪裏蕻
-雪里蕻      雪裏蕻
-雪里红      雪裏紅
-森林裡      森林裏
-森林里      森林裏
-日子裡      日子裏
-日子里      日子裏
-故事裡      故事裏
-故事里      故事裏
-領域裡      領域裏
-领域里      領域裏
-時間裡      時間裏
-时间里      時間裏
-深淵裡      深淵裏
-深渊里      深渊裏
-醫院裡      醫院裏
-医院里      医院裏
-春假裡      春假裏
-春假里      春假裏
-暑假裡      暑假裏
-暑假里      暑假裏
-秋假裡      秋假裏
-秋假里      秋假裏
-寒假裡      寒假裏
-寒假里      寒假裏
-春天裡      春天裏
-春天里      春天裏
-夏天裡      夏天裏
-夏天里      夏天裏
-秋天裡      秋天裏
-秋天里      秋天裏
-冬天裡      冬天裏
-冬天里      冬天裏
-春日裡      春日裏
-夏日裡      夏日裏
-秋日裡      秋日裏
-冬日裡      冬日裏
-春日里      春日裏
-夏日里      夏日裏
-秋日里      秋日裏
-冬日里      冬日裏
-嘴裡 嘴裏
-嘴里 嘴裏
-心裡 心裏
-心里 心裏
-皮裡陽秋   皮裏陽秋
-皮里阳秋   皮裏陽秋
-肚裡 肚裏
-肚里 肚裏
-苦裡 苦裏
-苦里 苦裏
-裡勾外連   裏勾外連
-里勾外连   裏勾外連
-裡面 裏面
-里面 裏面
-這裡 這裏
-這里 這裏
-點裡 點裏
-点里 點裏
-中文裡      中文裏
-中文里      中文裏
-山洞里      山洞裏
-山洞裡      山洞裏
-近角聪信   近角聰信
-近角聰信   近角聰信
-世界里      世界裏
-世界裡      世界裏
-眼睛里      眼睛裏
-眼睛裡      眼睛裏
-百科裡      百科裏
-百科里      百科裏
-歷史裡      歷史裏
-历史里      歷史裏
-戲裡 戲裏
-戏里 戲裏
-作品裡      作品裏
-作品里      作品裏
-專輯裡      專輯裏
-专辑里      專輯裏
-年代裡      年代裏
-年代里      年代裏
-棺材裡      棺材裏
-棺材里      棺材裏
-學裡 學裏
-学里 學裏
-獄裡 獄裏
-狱里 獄裏
-館裡 館裏
-馆里 館裏
-系列裡      系列裏
-系列里      系列裏
-村子裡      村子裏
-村子里      村子裏
-分布 分佈
-分布于      分佈於
-分布於      分佈於
-想象 想像
-無線電視   無綫電視
-无线电视   無綫電視
-無線收費   無綫收費
-无线收费   無綫收費
-無線節目   無綫節目
-无线节目   無綫節目
-無線劇集   無綫劇集
-无线剧集   無綫劇集
-東鐵線      東鐵綫
-东铁线      東鐵綫
-觀塘線      觀塘綫
-观塘线      觀塘綫
-荃灣線      荃灣綫
-荃湾线      荃灣綫
-港島線      港島綫
-港岛线      港島綫
-東涌線      東涌綫
-东涌线      東涌綫
-將軍澳線   將軍澳綫
-将军澳线   將軍澳綫
-西鐵線      西鐵綫
-西铁线      西鐵綫
-馬鞍山線   馬鞍山綫
-马鞍山线   馬鞍山綫
-迪士尼線   迪士尼綫
-迪士尼线   迪士尼綫
-沙田至中環線     沙田至中環綫
-沙田至中环线     沙田至中環綫
-沙中線      沙中綫
-沙中线      沙中綫
-北環線      北環綫
-北环线      北環綫
-機場快線   機場快綫
-机场快线   機場快綫
-505線 505綫
-505线 505綫
-507線 507綫
-507线 507綫
-610線 610綫
-610线 610綫
-614線 614綫
-614线 614綫
-614P線        614P綫
-614P线        614P綫
-615線 615綫
-615线 615綫
-615P線        615P綫
-615P线        615P綫
-705線 705綫
-705线 705綫
-706線 706綫
-706线 706綫
-751線 751綫
-751线 751綫
-751P線        751P綫
-751P线        751P綫
-761P線        761P綫
-761P线        761P綫
diff --git a/includes/zhtable/toSG.manual b/includes/zhtable/toSG.manual
deleted file mode 100644 (file)
index 2d39aa3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-」    ”
-「    “
-『    ‘
-』    ’
-方便面      快速面
-速食麵      快速面
-即食麵      快速面
-泡麵 快速面
-蹦极跳      绑紧跳
-笨豬跳      绑紧跳
-凉菜 冷菜
-冷盤 冷菜
-零钱 散钱
-散紙 散钱
-笑星 谐星
-夜校 夜学
-民乐 华乐
-住房 住屋
-房价 屋价
-榴莲 榴梿
-榴蓮 榴梿
\ No newline at end of file
diff --git a/includes/zhtable/toSimp.manual b/includes/zhtable/toSimp.manual
deleted file mode 100644 (file)
index 739d04c..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-乾县 乾县
-萧乾 萧乾
-乾断 乾断
-乾图 乾图
-乾纲 乾纲
-乾红 乾红
-乾清宫      乾清宫
-乾仪 乾仪
-乾兴 乾兴
-乾冈 乾冈
-乾刘 乾刘
-乾刚 乾刚
-乾启 乾启
-乾宁 乾宁
-乾岗 乾岗
-乾录 乾录
-乾晖 乾晖
-乾构 乾构
-乾枢 乾枢
-乾栋 乾栋
-乾灵 乾灵
-乾窦 乾窦
-乾笃 乾笃
-乾纽 乾纽
-乾络 乾络
-乾统 乾统
-乾维 乾维
-乾罗 乾罗
-乾荫 乾荫
-乾象历      乾象历
-乾贞 乾贞
-乾贶 乾贶
-乾车 乾车
-乾轴 乾轴
-乾鉴 乾鉴
-乾钧 乾钧
-乾闼 乾闼
-乾顾 乾顾
-乾风 乾风
-乾马 乾马
-乾鹄 乾鹄
-乾鹊 乾鹊
-乾龙 乾龙
-张法乾      张法乾
-旋乾转坤   旋乾转坤
-天道为乾   天道为乾
-易经·乾    易经·乾
-易经乾      易经乾
-乾务 乾务
-黄润乾      黄润乾
-男性为乾   男性为乾
-男为乾      男为乾
-阳为乾      阳为乾
-男性为乾   男性为乾
-男性爲乾   男性为乾
-男为乾      男为乾
-男爲乾      男为乾
-阳为乾      阳为乾
-陽爲乾      阳为乾
-乾一组      乾一组
-乾一坛      乾一坛
-陈乾生      陈乾生
-陈公乾生   陈公乾生
-柳诒徵      柳诒徵
-於夫罗      於夫罗
-於梨华      於梨华
-於潜县      於潜县
-於志贺      於志贺
-憑藉 凭借
-藉端 借端
-藉故 借故
-藉口 借口
-藉助 借助
-藉手 借手
-藉詞 借词
-藉機 借机
-藉此 借此
-藉由 借由
-藉著 借着
-藉着 借着
-沈積 沉积
-沈船 沉船
-沈默 沉默
-沈沒 沉没
-彷彿 仿佛
-項鍊 项链
-肘手鍊足   肘手链足
-鍊子 链子
-鍊條 链条
-拉鍊 拉链
-鉸鍊 铰链
-鍊鎖 链锁
-鎖鍊 锁链
-鐵鍊 铁链
-金鍊 金链
-銀鍊 银链
-鍊錘 链锤
-洗鍊 洗练
-石碁镇      石碁镇
-反覆 反复
-回覆 回复
-答覆 答复
-反反覆覆   反反复复
-重覆 重复
-覆核 复核
-覆查 复查
-鬱姓 鬱姓
-鬱氏 鬱氏
-侏儸紀      侏罗纪
-夥計 伙计
-吳其濬      吴其濬
-吴其濬      吴其濬
-乾泉水      干泉水
-么半群      幺半群
-么元 幺元
-么爹 幺爹
-么叔 幺叔
-么舅 幺舅
-么爸 幺爸
-么媽 幺妈
-么姨 幺姨
-么娘 幺娘
-么孃 幺娘
-幺孃 幺娘
-么妹 幺妹
-么小 幺小
-么姓 幺姓
-么氏 幺氏
-么蛾子      幺蛾子
-幺厮 幺厮
-睪丸 睾丸
-附睪 附睾
-隱睪 隱睾
-麼麼 麽麽
-么麼 幺麽
-么麼小丑   幺麽小丑
-么鳳 幺凤
-么二三      幺二三
-么篇 幺篇
-么謙 幺谦
-麴义 麴义
-乾乾淨淨   干干净净
-乾乾脆脆   干干脆脆
-肉乾乾      肉干干
-魚乾乾      鱼干干
-於于同      於于同
-於乙于同   於乙于同
-閻懷禮      闫怀礼
-醯酱 醯酱
-醯鸡 醯鸡
-醯壶 醯壶
-苧烯 苧烯
-李乾顺      李乾顺
-幹著 干着
-氾濫 泛滥
-显著 显著
-顯著 显著
-標誌著      标志着
-近角聪信   近角聪信
-修鍊 修炼
-米泽瑠美   米泽瑠美
-太閤 太阁
-候覆 候复
-待覆 待复
-批覆 批复
diff --git a/includes/zhtable/toTW.manual b/includes/zhtable/toTW.manual
deleted file mode 100644 (file)
index 1a14e99..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-”    」
-“    「
-‘    『
-’    』
-着    著
-鈎    鉤
-钩    鉤
-衞 衛
-元凶 元凶
-元兇 元凶
-凶器 凶器
-兇器 凶器
-凶徒 凶徒
-兇徒 凶徒
-凶手 凶手
-兇手 凶手
-凶案 凶案
-兇案 凶案
-凶残 凶殘
-凶殘 凶殘
-兇殘 凶殘
-凶杀 凶殺
-凶殺 凶殺
-兇殺 凶殺
-疑凶 疑凶
-疑兇 疑凶
-真凶 真凶
-真兇 真凶
-缉凶 緝凶
-緝凶 緝凶
-緝兇 緝凶
-行凶 行凶
-行兇 行凶
-行凶后      行凶後
-行凶後      行凶後
-行兇後      行凶後
-买凶 買凶
-買凶 買凶
-買兇 買凶
-追凶 追凶
-追兇 追凶
-逞凶斗狠   逞凶鬥狠
-逞凶鬥狠   逞凶鬥狠
-逞兇鬥狠   逞凶鬥狠
-复苏 復甦
-復蘇 復甦
-缺省 預設
-串行 串列
-串列加速器        串列加速器
-以太网      乙太網
-位图 點陣圖
-例程 常式
-光标 游標
-光盘 光碟
-光驱 光碟機
-全角 全形
-加载 載入
-半角 半形
-变量 變數
-噪声 雜訊
-脱机 離線
-声卡 音效卡
-老字号      老字號
-连字号      連字號
-字号 字型大小
-字库 字型檔
-字段 欄位
-字符 字元
-字符集      字符集
-存盘 存檔
-寻址 定址
-尾注 章節附註
-异步 非同步
-总线 匯流排
-括号 括弧
-接口 介面
-控件 控制項
-权限 許可權
-盘片 碟片
-硅片 矽片
-硅谷 矽谷
-硬盘 硬碟
-磁盘 磁碟
-磁道 磁軌
-程控 程式控制
-远程控制   遠程控制
-遠程控制   遠程控制
-行程控制   行程控制
-流程控制   流程控制
-端口 埠
-算子 運算元
-算法 演算法
-芯片 晶片
-芯片 晶元
-词组 片語
-译码 解碼
-软驱 軟碟機
-快闪存储器        快閃記憶體
-闪存 快閃記憶體
-鼠标 滑鼠
-进制 進位
-交互式      互動式
-仿真 模擬
-优先级      優先順序
-传感 感測
-便携式      攜帶型
-信息论      資訊理論
-写保护      防寫
-分辨率      解析度
-服务器      伺服器
-等于 等於
-局域网      區域網
-扫瞄仪      掃瞄器
-宽带 寬頻
-数据库      資料庫
-奶酪 乳酪
-手电 手電筒
-手电筒      手電筒
-万历 萬曆
-永历 永曆
-词汇 辭彙
-习用 慣用
-元音 母音
-新纪元      新紀元
-新紀元      新紀元
-宋元 宋元
-头球 頭槌
-入球 進球
-粒入球      顆進球
-打门 射門
-火锅盖帽   蓋火鍋
-打印机      印表機
-打印機      印表機
-字节 位元組
-字節 位元組
-打印 列印
-打印 列印
-硬件 硬體
-硬件 硬體
-二极管      二極體
-二極管      二極體
-三极管      三極體
-三極管      三極體
-软件 軟體
-軟件 軟體
-网络 網路
-網絡 網路
-人工智能   人工智慧
-航天飞机   太空梭
-航天大学   航天大學
-穿梭機      太空梭
-因特网      網際網路
-互聯網      網際網路
-机器人      機器人
-機械人      機器人
-移动电话   行動電話
-流動電話   行動電話
-调制解调器        數據機
-調制解調器        數據機
-短信 簡訊
-短訊 簡訊
-乌兹别克斯坦     烏茲別克
-乍得 查德
-乍得 查德
-也门 葉門
-也門 葉門
-伯利兹      貝里斯
-伯利茲      貝里斯
-佛得角      維德角
-克罗地亚   克羅埃西亞
-克羅地亞   克羅埃西亞
-冈比亚      甘比亞
-岡比亞      甘比亞
-几内亚比绍        幾內亞比索
-幾內亞比紹        幾內亞比索
-列支敦士登        列支敦斯登
-列支敦士登        列支敦斯登
-利比里亚   賴比瑞亞
-利比里亞   賴比瑞亞
-加纳 迦納
-加納 迦納
-加蓬 加彭
-加蓬 加彭
-博茨瓦纳   波札那
-博茨瓦納   波札那
-卡塔尔      卡達
-卡塔爾      卡達
-卢旺达      盧安達
-盧旺達      盧安達
-危地马拉   瓜地馬拉
-危地馬拉   瓜地馬拉
-厄瓜多尔   厄瓜多
-厄瓜多爾   厄瓜多
-厄立特里亚        厄利垂亞
-厄立特里亞        厄利垂亞
-吉布提      吉布地
-吉布堤      吉布地
-哈萨克斯坦        哈薩克
-哥斯达黎加        哥斯大黎加
-哥斯達黎加        哥斯大黎加
-图瓦卢      吐瓦魯
-圖瓦盧      吐瓦魯
-土库曼斯坦        土庫曼
-圣卢西亚   聖露西亞
-聖盧西亞   聖露西亞
-圣基茨和尼维斯  聖克里斯多福及尼維斯
-聖吉斯納域斯     聖克里斯多福及尼維斯
-圣文森特和格林纳丁斯 聖文森及格瑞那丁
-聖文森特和格林納丁斯 聖文森及格瑞那丁
-圣马力诺   聖馬利諾
-聖馬力諾   聖馬利諾
-圭亚那      蓋亞那
-圭亞那      蓋亞那
-坦桑尼亚   坦尚尼亞
-坦桑尼亞   坦尚尼亞
-埃塞俄比亚        衣索比亞
-埃塞俄比亞        衣索比亞
-基里巴斯   吉里巴斯
-基里巴斯   吉里巴斯
-塔吉克斯坦        塔吉克
-塞拉利昂   獅子山
-塞拉利昂   獅子山
-塞浦路斯   塞普勒斯
-塞浦路斯   塞普勒斯
-塞舌尔      塞席爾
-塞舌爾      塞席爾
-多米尼加共和国  多明尼加
-多米尼加共和國  多明尼加
-多明尼加共和國  多明尼加
-多米尼加国        多米尼克
-多明尼加國        多米尼克
-安提瓜和巴布达  安地卡及巴布達
-安提瓜和巴布達  安地卡及巴布達
-尼日利亚   奈及利亞
-尼日利亞   奈及利亞
-尼日尔      尼日
-尼日爾      尼日
-巴巴多斯   巴貝多
-巴布亚新几内亚  巴布亞紐幾內亞
-巴布亞新畿內亞  巴布亞紐幾內亞
-布基纳法索        布吉納法索
-布基納法索        布吉納法索
-布隆迪      蒲隆地
-布隆迪      蒲隆地
-帕劳 帛琉
-意大利      義大利
-所罗门群岛        索羅門群島
-所羅門群島        索羅門群島
-文莱 汶萊
-斯威士兰   史瓦濟蘭
-斯威士蘭   史瓦濟蘭
-斯洛文尼亚        斯洛維尼亞
-斯洛文尼亞        斯洛維尼亞
-新西兰      紐西蘭
-新西蘭      紐西蘭
-格林纳达   格瑞那達
-格林納達   格瑞那達
-格鲁吉亚   喬治亞
-格魯吉亞   喬治亞
-佐治亚      喬治亞
-佐治亞      喬治亞
-毛里塔尼亚        茅利塔尼亞
-毛里塔尼亞        茅利塔尼亞
-毛里求斯   模里西斯
-毛里裘斯   模里西斯
-沙特阿拉伯        沙烏地阿拉伯
-沙地阿拉伯        沙烏地阿拉伯
-波斯尼亚和黑塞哥维那 波士尼亞赫塞哥維納
-波斯尼亞黑塞哥維那    波士尼亞赫塞哥維納
-津巴布韦   辛巴威
-津巴布韋   辛巴威
-洪都拉斯   宏都拉斯
-洪都拉斯   宏都拉斯
-特立尼达和托巴哥       千里達托貝哥
-特立尼達和多巴哥       千里達托貝哥
-瑙鲁 諾魯
-瑙魯 諾魯
-瓦努阿图   萬那杜
-瓦努阿圖   萬那杜
-溫納圖萬   那杜
-科摩罗      葛摩
-科摩羅      葛摩
-科特迪瓦   象牙海岸
-突尼斯      突尼西亞
-索马里      索馬利亞
-索馬里      索馬利亞
-老挝 寮國
-老撾 寮國
-肯尼亚      肯亞
-肯雅 肯亞
-苏里南      蘇利南
-莫桑比克   莫三比克
-莱索托      賴索托
-萊索托      賴索托
-贝宁 貝南
-貝寧 貝南
-赞比亚      尚比亞
-贊比亞      尚比亞
-阿塞拜疆   亞塞拜然
-阿拉伯联合酋长国       阿拉伯聯合大公國
-阿拉伯聯合酋長國       阿拉伯聯合大公國
-马尔代夫   馬爾地夫
-馬爾代夫   馬爾地夫
-马耳他      馬爾他
-马里共和国        馬利共和國
-馬里共和國        馬利共和國
-方便面      速食麵
-快速面      速食麵
-即食麵      速食麵
-薯仔 土豆
-土豆网      土豆網
-土豆網      土豆網
-蹦极跳      笨豬跳
-绑紧跳      笨豬跳
-冷菜 冷盤
-凉菜 冷盤
-出租车      計程車
-台球 撞球
-桌球 撞球
-卫生 衛生
-衞生 衛生
-平治之亂   平治之亂
-平治之乱   平治之亂
-平治 賓士
-奔驰 賓士
-積架 捷豹
-雪铁龙      雪鐵龍
-萬事得      馬自達
-拿破仑      拿破崙
-拿破侖      拿破崙
-布什 布希
-布殊 布希
-克林顿      柯林頓
-克林頓      柯林頓
-侯赛因      海珊
-侯賽因      海珊
-凡高 梵谷
-狄安娜      黛安娜
-戴安娜      黛安娜
-颁布 頒布
-頒佈 頒布
-彩带 彩帶
-彩排 彩排
-彩楼 彩樓
-彩牌楼      彩牌樓
-彩球 綵球
-彩绸 綵綢
-彩线 綵線
-彩船 綵船
-彩衣 綵衣
-结彩 結綵
-戏彩娱亲   戲綵娛親
-剪彩 剪綵
-榴莲 榴槤
-榴蓮 榴槤
-掛鈎 掛鉤
-挂钩 掛鉤
-鈎心鬥角   鉤心鬥角
-钩心斗角   鉤心鬥角
-酰    醯
-雪裏紅      雪裡紅
-雪裏蕻      雪裡蕻
-森林裏      森林裡
-日子裏      日子裡
-故事裏      故事裡
-領域裏      領域裡
-時間裏      時間裡
-深淵裏      深淵裡
-醫院裏      醫院裡
-春假裏      春假裡
-暑假裏      暑假裡
-秋假裏      秋假裡
-寒假裏      寒假裡
-春天裏      春天裡
-夏天裏      夏天裡
-秋天裏      秋天裡
-冬天裏      冬天裡
-春日裏      春日裡
-夏日裏      夏日裡
-秋日裏      秋日裡
-冬日裏      冬日裡
-百科裏      百科裡
-歷史裏      歷史裡
-戲裏 戲裡
-作品裏      作品裡
-專輯裏      專輯裡
-年代裏      年代裡
-棺材裏      棺材裡
-嘴裏 嘴裡
-心裏 心裡
-皮裏陽秋   皮裡陽秋
-肚裏 肚裡
-苦裏 苦裡
-裏勾外連   裡勾外連
-裏面 裡面
-這裏 這裡
-點裏 點裡
-中文裏      中文裡
-山洞裏      山洞裡
-世界裏      世界裡
-眼睛裏      眼睛裡
-學裏 學裡
-獄裏 獄裡
-館裏 館裡
-系列裏      系列裡
-村子裏      村子裡
-青霉素      青黴素
-想象 想像
-锎    鉲
-信道 信道
-綫    線
diff --git a/includes/zhtable/toTrad.manual b/includes/zhtable/toTrad.manual
deleted file mode 100644 (file)
index b0efd28..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-手塚治虫   手塚治虫
-校仇 校讎
-仇校 讎校
-仇夷 讎夷
-仇問 讎問
-無言不仇   無言不讎
-視如寇仇   視如寇讎
-往日無仇   往日無讎
-近日無仇   近日無讎
-李連杰      李連杰
-周杰倫      周杰倫
-寶曆 寶曆
-涂謹申      涂謹申
-涂鴻欽      涂鴻欽
-涂壯勳      涂壯勳
-於姓 於姓
-於氏 於氏
-於夫羅      於夫羅
-於梨華      於梨華
-鄭凱云      鄭凱云
-筑陽 筑陽
-筑後 筑後
-采石磯      采石磯
-采石之戰   采石之戰
-張三丰      張三丰
-丰韻 丰韻
-丰儀 丰儀
-丰標不凡   丰標不凡
-干細胞      幹細胞
-干熱 乾熱
-二里頭      二里頭
-水里鄉      水里鄉
-蒙胧 朦朧
-酒曲 酒麴
-呆里呆气   呆裡呆氣
-拜托 拜託
-委托书      委託書
-委托 委託
-挽詞 輓詞
-挽聯 輓聯
-挽詩 輓詩
-於夫罗      於夫羅
-府干預      府干預
-府干擾      府干擾
-分布圖      分布圖
-頁面 頁面
-面條目      面條目
-黃鈺筑      黃鈺筑
-仿佛 彷彿
-凶殘 兇殘
-凶殺 兇殺
-緝凶 緝兇
-行凶後      行兇後
-買凶 買兇
-逞凶鬥狠   逞兇鬥狠
-合著者      合著者
-答复 答覆
-反复 反覆
-索馬里      索馬里
-洗练 洗鍊
-朝乾夕惕   朝乾夕惕
-乾象曆      乾象曆
-乾象历      乾象曆
-不好干預   不好干預
-不干預      不干預
-不干擾      不干擾
-不干牠      不干牠
-矽谷 矽谷
-范文瀾      范文瀾
-發表 發表
-機械系      機械系
-頂多 頂多
-馬占山      馬占山
-叱咤樂壇   叱咤樂壇
-闫怀礼      閆懷禮
-变髒 變髒
-薴烯 薴烯
-后豐 后豐
-于謙 于謙
-詩云 詩云
-鄭凱云      鄭凱云
-云為 云為
-古書云      古書云
-古語云      古語云
-經有云      經有云
-語有云      語有云
-显著标志   顯著標志
-占領 佔領
-采納 採納
-風采 風采
-于樂 于樂
-于軍 于軍
-于堅 于堅
-于帥 于帥
-于濤 于濤
-于贈 于贈
-于會泳      于會泳
-于偉國      于偉國
-于光遠      于光遠
-于鳳至      于鳳至
-于台煙      于台煙
-于國楨      于國楨
-于大寶      于大寶
-于學忠      于學忠
-于小偉      于小偉
-于山國      于山國
-于幼軍      于幼軍
-于廣洲      于廣洲
-于從濂      于從濂
-于志寧      于志寧
-于成龍      于成龍
-于明濤      于明濤
-于根偉      于根偉
-于樹潔      于樹潔
-于正昇      于正昇
-于漢超      于漢超
-于洪區      于洪區
-于湘蘭      于湘蘭
-于蔭霖      于蔭霖
-于遠偉      于遠偉
-于都縣      于都縣
-于震寰      于震寰
-于震環      于震環
-于非闇      于非闇
-于風政      于風政
-于鳳桐      于鳳桐
-于默奧      于默奧
-于爾岑      于爾岑
-于默奧      于默奧
-于貝爾      于貝爾
-于爾根      于爾根
-于雙戈      于雙戈
-于澤爾      于澤爾
-于斯達爾   于斯達爾
-于爾里克   于爾里克
-于奇庫杜克        于奇庫杜克
-于韋斯屈萊        于韋斯屈萊
-于克-蘭多縣       于克-蘭多縣
-于斯納爾斯貝里  于斯納爾斯貝里
-夏于喬      夏于喬
-涂澤民      涂澤民
-涂長望      涂長望
-涂敏恆      涂敏恆
-台历 枱曆
-艷后 艷后
-廢后 廢后
-后髮座      后髮座
-后髮星系團        后髮星系團
-后髮FK型星 后髮FK型星
-后海灣      后海灣
-賈后 賈后
-賢后 賢后
-呂后 呂后
-蟻后 蟻后
-馬格里布   馬格里布
-佳里鎮      佳里鎮
-埔裡社撫墾局     埔裏社撫墾局
-埔裏社撫墾局     埔裏社撫墾局
-有只採      有只採
-任何表達   任何表達
-會干擾      會干擾
-党項 党項
-余三勝      余三勝
-簡筑翎      簡筑翎
-楊雅筑      楊雅筑
-杰威爾音樂        杰威爾音樂
-尸羅精舍   尸羅精舍
-索馬里      索馬里
-騰格里      騰格里
-村里長      村里長
-進制 進制
-模范三軍   模范三軍
-黃詩杰      黃詩杰
-陳冲 陳冲
-劉佳怜      劉佳怜
-范賢惠      范賢惠
-于國治      于國治
-于楓 于楓
-黎吉雲      黎吉雲
-于飛島      于飛島
-鄉愿 鄉愿
-奇迹 奇蹟
-候复 候覆
-待复 待覆
-批复 批覆
-划槳 划槳
diff --git a/includes/zhtable/trad2simp.manual b/includes/zhtable/trad2simp.manual
deleted file mode 100644 (file)
index 747a240..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-U+04E99亙|U+04E98亘|
-U+04F48佈|U+05E03布|
-U+04F48佈|U+05E03布|
-U+04F54佔|U+05360占|
-U+05016倖|U+05E78幸|
-U+050A2傢|U+05BB6家|
-U+050F1僱|U+096C7雇|
-U+05138儸|U+03469㑩|U+07F57罗|
-U+05147兇|U+051F6凶|
-U+05277剷|U+094F2铲|
-U+052F3勳|U+052CB勋|
-U+0537D卽|U+05373即|
-U+053A4厤|U+05386历|
-U+055AB喫|U+05403吃|
-U+05641噁|U+06076恶|
-U+05690嚐|U+05C1D尝|
-U+056A5嚥|U+054BD咽|
-U+056AE嚮|U+05411向|
-U+056CC囌|U+082CF苏|
-U+0585A塚|U+051A2冢|
-U+058B0墰|U+0575B坛|
-U+058DC壜|U+0575B坛|
-U+05925夥|U+04F19伙|
-U+05BC0寀|U+091C7采|
-U+05D11崑|U+06606昆|
-U+05D19崙|U+04ED1仑|
-U+05D57嵗|U+05C81岁|
-U+05DBD嶽|U+05CB3岳|
-U+05DD6巖|U+05CA9岩|
-U+05DF9巹|U+0537A卺|
-U+05F14弔|U+0540A吊|
-U+05F46彆|U+0522B别|
-U+0617C慼|U+0621A戚|
-U+0617E慾|U+06B32欲|
-U+061DE懞|U+08499蒙|
-U+062DA拚|U+062FC拼|
-U+06331挱|U+06332挲|
-U+06371捱|U+06328挨|
-U+06372捲|U+05377卷|
-U+0647A摺|U+06298折|
-U+065C2旂|U+065D7旗|
-U+065E3旣|U+065E2既|
-U+06607昇|U+05347升|
-U+0672E朮|U+0672F术|
-U+068CA棊|U+068CB棋|
-U+069A6榦|U+05E72干|
-U+069D3槓|U+06760杠|
-U+06A11樑|U+06881梁|
-U+06B05欅|U+06989榉|
-U+06B4E歎|U+053F9叹|
-U+06BAD殭|U+050F5僵|
-U+06C59汙|U+06C61污|
-U+06CDD泝|U+06EAF溯|
-U+06D29洩|U+06CC4泄|
-U+06DD2淒|U+051C4凄|
-U+06DE8淨|U+051C0净|
-U+06DE9淩|U+051CC凌|
-U+06E67湧|U+06D8C涌|
-U+06ED9滙|U+06C47汇|
-U+06F90澐|U+06C84沄|
-U+06FBE澾|U+03CE0㳠|
-U+06FDB濛|U+06FDB濛|U+08499蒙|
-U+07030瀰|U+05F25弥|
-U+071EC燬|U+06BC1毁|
-U+07232爲|U+04E3A为|
-U+07343獃|U+05446呆|
-U+07515甕|U+074EE瓮|
-U+07526甦|U+082CF苏|
-U+0752F甯|U+05B81宁|
-U+0756B畫|U+0753B画|U+05212划|
-U+07575畵|U+0753B画|U+05212划|
-U+075E0痠|U+09178酸|
-U+07652癒|U+06108愈|
-U+07661癡|U+075F4痴|
-U+076C3盃|U+0676F杯|
-U+0771E眞|U+0771F真|
-U+077AD瞭|U+04E86了|
-U+077C7矇|U+08499蒙|
-U+07843硃|U+06731朱|
-U+07895碕|U+057FC埼|
-U+07958祘|U+07B97算|
-U+07A1C稜|U+068F1棱|
-U+07B87箇|U+04E2A个|
-U+07C11簑|U+084D1蓑|
-U+07C64籤|U+07B7E签|
-U+07C72籲|U+05401吁|
-U+07CF0糰|U+056E2团|
-U+07D2E紮|U+0624E扎|
-U+07DAB綫|U+07EBF线|
-U+07DB5綵|U+05F69彩|U+0433D䌽|
-U+07E34縴|U+07EA4纤|
-U+07E50繐|U+07A57穗|
-U+07E94纔|U+0624D才|
-U+07F4E罎|U+0575B坛|
-U+07FA8羨|U+07FA1羡|
-U+08123脣|U+05507唇|
-U+081E5臥|U+05367卧|
-U+08218舘|U+09986馆|
-U+083F4菴|U+05EB5庵|
-U+08457著|U+08457著|U+07740着|
-U+08518蔘|U+053C2参|
-U+08591薑|U+059DC姜|
-U+085C9藉|U+085C9藉|U+0501F借|
-U+0880D蠍|U+0874E蝎|
-U+0884A衊|U+08511蔑|
-U+088CF裏|U+091CC里|
-U+08946襆|U+05E5E幞|
-U+08986覆|U+08986覆|U+0590D复|
-U+08A17託|U+06258托|U+08BAC讬|
-U+08AEE諮|U+054A8咨|U+08C18谘|
-U+08B6D譭|U+06BC1毁|
-U+08B8E讎|U+04EC7仇|
-U+08B9A讚|U+08D5E赞|
-U+08C54豔|U+08273艳|
-U+08FF4迴|U+056DE回|
-U+09031週|U+05468周|
-U+0904A遊|U+06E38游|
-U+09061遡|U+06EAF溯|
-U+091A3醣|U+07CD6糖|
-U+091AF醯|U+09170酰|
-U+0934A鍊|U+070BC炼|U+094FE链|
-U+0938C鎌|U+09570镰|
-U+093AD鎭|U+093AE镇|
-U+093DA鏚|U+0621A戚|
-U+09451鑑|U+09274鉴|
-U+0955F镟|U+065CB旋|
-U+09592閒|U+095F2闲|
-U+095A4閤|U+05408合|
-U+095E2闢|U+08F9F辟|
-U+0962A阪|U+0962A阪|U+05742坂|
-U+0965E陞|U+05347升|
-U+097A6鞦|U+079CB秋|U+097A7鞧|
-U+097C6韆|U+05343千|
-U+097DD韝|U+097B2鞲|
-U+09858願|U+0613F愿|
-U+098F1飱|U+098E7飧|
-U+09918餘|U+04F59余|U+09980馀|
-U+09931餱|U+07CC7糇|
-U+09935餵|U+05582喂|
-U+09B28鬨|U+054C4哄|
-U+09D70鵰|U+096D5雕|U+05F6B彫|
-U+09E7C鹼|U+078B1碱|U+07877硷|
-U+09EAA麪|U+09762面|
-U+09EAB麫|U+09762面|
-U+09EAF麯|U+066F2曲|
-U+09EB4麴|U+066F2曲|U+09EB4麴|
-U+09EF4黴|U+09709霉|
-U+09F15鼕|U+051AC冬|
-U+09F47齇|U+09F44齄|
-U+09F63齣|U+051FA出|
-U+09F91龑|U+04DAE䶮|
-U+21ED5𡻕|U+05C81岁|
-U+298F5𩣵|U+299FB𩧻|
diff --git a/includes/zhtable/trad2simp_noconvert.manual b/includes/zhtable/trad2simp_noconvert.manual
deleted file mode 100644 (file)
index 052bab6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-"余"=>
-碁
-藉
-=>"獃"
-𫚭
diff --git a/includes/zhtable/trad2simp_supp_set.manual b/includes/zhtable/trad2simp_supp_set.manual
deleted file mode 100644 (file)
index d1728f0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-著    着
-藉    借
-濛    蒙
\ No newline at end of file
diff --git a/includes/zhtable/trad2simp_supp_unset.manual b/includes/zhtable/trad2simp_supp_unset.manual
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/includes/zhtable/tradphrases.manual b/includes/zhtable/tradphrases.manual
deleted file mode 100644 (file)
index e20ca05..0000000
+++ /dev/null
@@ -1,4311 +0,0 @@
-零隻
-〇隻
-一隻
-二隻
-兩隻
-三隻
-四隻
-五隻
-六隻
-七隻
-八隻
-九隻
-0隻
-1隻
-2隻
-3隻
-4隻
-5隻
-6隻
-7隻
-8隻
-9隻
-0隻
-1隻
-2隻
-3隻
-4隻
-5隻
-6隻
-7隻
-8隻
-9隻
-0只支援
-1只支援
-2只支援
-3只支援
-4只支援
-5只支援
-6只支援
-7只支援
-8只支援
-9只支援
-0只支持
-1只支持
-2只支持
-3只支持
-4只支持
-5只支持
-6只支持
-7只支持
-8只支持
-9只支持
-百隻
-千隻
-萬隻
-億隻
-最多
-至多
-頂多
-多隻
-0多隻
-0多隻
-零多隻
-十多隻
-百多隻
-千多隻
-萬多隻
-億多隻
-這只能
-這只可
-這只在
-這只是
-這只需
-這只會
-這只用
-那只能
-那只可
-那只在
-那只是
-那只需
-那只會
-那只用
-多只能
-多只可
-多只在
-多只有
-多只是
-多只需
-多只會
-多只用
-大只能
-大只可
-大只在
-大只有
-大只是
-大只需
-大只會
-小只能
-小只可
-小只在
-小只有
-小只是
-小只需
-小只會
-隻身
-形單影隻
-首隻
-數天後
-幾天後
-多天後
-零天後
-一天後
-二天後
-兩天後
-三天後
-四天後
-五天後
-六天後
-七天後
-八天後
-九天後
-十天後
-百天後
-千天後
-萬天後
-億天後
-0天後
-1天後
-2天後
-3天後
-4天後
-5天後
-6天後
-7天後
-8天後
-9天後
-0天後
-1天後
-2天後
-3天後
-4天後
-5天後
-6天後
-7天後
-8天後
-9天後
-天後來
-天後天
-天後半
-後印
-萬象
-並存著
-乾絲
-乾著急
-乾魚
-魚乾
-乾梅
-糕乾
-黃乾黑瘦
-馬乾
-香乾
-趲幹
-謀幹
-詞幹
-蟶乾
-薄幹
-腦幹
-營幹
-老乾
-老幹部
-管幹
-盲幹
-煨乾
-海乾
-乾漆
-淚乾
-沒幹
-沒乾沒淨
-枝不得大於榦
-杯乾
-打幹
-打乾噦
-徐幹
-府幹
-乾館
-乾顙
-幹革命
-乾霍亂
-乾雷
-乾阿奶
-乾量
-乾醋
-乾逼
-乾貨
-乾衣
-幹蠱
-乾虔
-乾落
-幹營生
-乾茶錢
-乾茨臘
-乾苔
-乾花
-乾肥
-乾耗
-幹缺
-乾繃
-乾結
-乾餱
-乾篾片
-乾稿
-乾禮
-乾瞪眼
-乾白兒
-乾疥
-乾生子
-乾生受
-幹父之蠱
-乾熬
-乾燈盞
-乾濕
-乾澀
-幹濟
-乾沒
-乾死
-乾村沙
-乾暖
-乾料
-乾敲梆子不賣油
-乾支支
-乾支剌
-乾擦
-乾撇下
-乾撂台
-乾折
-乾急
-幹當
-乾式
-乾屎橛
-幹家
-乾奴才
-幹頭
-乾塢
-乾圓潔淨
-乾回付
-乾啼
-乾哭
-乾噦
-乾咽
-乾和
-幹吏
-乾吊著下巴
-乾號
-乾颱
-乾卦
-乾剝剝
-乾刻版
-乾芻
-幹人
-乾產
-乾喬
-夯幹
-大目乾連
-國之楨榦
-唇乾
-單幹
-勾幹
-豆乾
-果乾
-如果幹
-乾麵
-乾柴
-枯乾
-晒乾
-顛乾倒坤
-強幹
-乾著
-乾眼
-幹的停當
-乾巴
-偎乾
-眼乾
-偷雞不著
-几絲
-划著
-划著走
-別著
-刮著
-千絲萬縷
-參合
-參考價值
-參與
-參與人員
-參與制
-參與感
-參與者
-參觀團
-參觀團體
-參閱
-吃著不盡
-合著
-吊帶褲
-吊掛著
-吊著
-吊褲
-吊褲帶
-向著
-嚴絲合縫
-回絲
-回著
-塗著
-壟斷價格
-壟斷資產
-壟斷集團
-姜絲
-帶團參加
-干著急
-幾絲
-彆著
-怎麼著
-憑藉著
-憑藉
-接著說
-擔著
-擔負著
-敘說著
-斗轉參橫
-旋繞著
-板著臉
-正當著
-沈著
-沖著
-派團參加
-涂著
-湊合著
-瀰漫著
-為著
-煙斗絲
-率團參加
-畫著
-當著
-發著
-直接參与
-睡著了
-秋褲
-積极參与
-積极參加
-簽著
-系著
-絕對參照
-絲來線去
-絲布
-絲板
-絲瓜布
-絲絨布
-絲線
-絲織廠
-絲蟲
-緊繃著
-繃著
-繃著臉
-繃著臉兒
-繫著
-罵著
-肉絲麵
-背向著
-菌絲體
-著兒
-著書立說
-著色軟體
-著重指出
-著錄
-著錄規則
-薑絲
-藉著
-蘊含著
-蘊涵著
-衝著
-被覆著
-覆著
-覆蓋著
-反覆
-訴說著
-說著
-請參閱
-謝絕參觀
-豎著
-豐濱
-豐濱鄉
-豐度
-象徵著
-這麼著
-那麼著
-配合著
-醞釀著
-錄著
-鍛鍊出
-關係著
-雞絲
-雞絲麵
-面朝著
-面臨著
-颳著
-髮絲
-斷髮
-不斷發
-判斷發
-評斷發
-買斷發
-賣斷發
-打斷發
-披頭散髮
-髮禁
-鬥著
-鬧著玩兒
-鯰魚
-世界盃
-其次辟地
-開闢
-闢地
-精闢
-別闢
-另闢
-闢佛
-闢田
-闢築
-闢謠
-闢辟
-透闢
-墾闢
-翕闢
-軒闢
-闢建
-闢室
-各闢
-增闢
-闢邪以律
-錶盤
-錶板
-錶帶
-錶針
-錶蒙子
-袋錶
-腕錶
-碼錶
-錶冠
-魔錶
-彆口氣
-彆強
-皺彆
-一彆頭
-并州
-併兼
-併產
-併骨
-併網
-併線
-併流
-逼併
-併名
-併當
-併火
-併肩子
-併除
-併疊
-忙併
-打併
-簡併
-並發表
-並發現
-並發展
-並發動
-並發布
-火並非
-舉手表
-揮手表
-併一不二
-連三併四
-相併
-撤併
-數罪併罰
-催併
-狂併潮
-薝蔔
-提摩太後書
-當家纔知柴米價
-剛纔一載
-裏海
-骨頭裡掙出來的錢纔做得肉
-恰纔
-遠縣纔至
-別日南鴻纔北去
-然身死纔數月耳
-纔得兩年
-纔則
-纔此
-你纔子發昏
-纔可容顏十五餘
-不採
-披榛採蘭
-謬採虛聲
-採樵人
-回採
-觀採
-開採
-揪採
-樵採
-採訪
-採辦
-採補
-採買
-採風問俗
-採納
-採獵
-採蓮
-採錄
-採購
-採光
-採礦
-採花
-採集
-採擷
-採掘
-採芹人
-採取
-採選
-採摭
-採摘
-採珠
-採種
-採茶
-採石
-採拾
-採收
-採生折割
-採樹種
-採擇
-採藥
-採薇
-採用
-盜採
-採信
-採行
-採證
-採菊
-博採
-採空採穗
-採挖
-採鐵
-採金
-採氣
-採油
-採煤
-採鹽
-採區
-採運
-採風
-官地為寀
-寮寀
-蔘綏
-個人# “個人參數”不是“個人蔘數”
-人蔘
-蕭蔘
-人參與
-人參選
-人參觀
-人參考
-人參展
-人參加
-人參議
-人參謀
-人參酌
-人參照
-人參政
-人參戰
-人參拜
-人參閱
-人參禪
-人參贊
-人參見
-人參透
-人參看
-東衝西突
-天克地衝
-六衝
-撞陣衝軍
-衝波
-衝風
-衝頭陣
-衝堅陷陣
-衝陷
-衝心
-衝州撞府
-衝殺
-衝然
-衝盹
-左衝右突
-虫部
-手塚治虫
-群醜
-百拙千醜
-大醜
-地醜德齊
-丟醜
-亮醜
-揭醜
-倛醜
-嫌好道醜
-醜巴怪
-醜末
-醜婦
-醜地
-醜頭怪臉
-醜女效顰
-醜剌剌
-醜話
-醜媳
-醜吒
-醜聲遠播
-醜夷
-弄醜
-露醜
-摧堅獲醜
-謷醜
-不嫌母醜
-一爭兩醜
-惡直醜正
-很醜
-醜男
-醜斃了
-醜奴兒
-醜言
-醜徒
-醜雜
-醜儕
-醜沮
-醜辭
-醜比
-醜辱
-醜逆
-醜史
-醜賊生
-醜婆子
-出乖弄醜
-出乖露醜
-獲匪其醜
-乙丑
-丁丑
-己丑
-辛丑
-癸丑
-丑時
-丑日
-丑月
-丑年
-文丑
-武丑
-女丑
-小丑
-大丑
-丑婆子
-丑旦
-丑角
-丑三
-丑表功
-公孫丑
-么麼小丑
-齣電影
-齣電視
-齣動畫
-齣節目
-齣卡通
-齣戲
-齣劇
-平平當當
-滿滿當當
-當當丁丁
-丁丁當當
-停停當當
-快快當當
-咯噹
-啷噹
-党參
-党進
-党太尉
-党項
-撲鼕
-洗髮
-牽一髮
-白發其事
-后髮座
-后髮星系團
-后髮FK型星
-波髮藻
-辮髮
-逋髮
-抿髮
-髮漂
-髮匪
-髮腳
-髮癬
-髮釵
-髮飾
-髮紗
-髮上指冠
-髮上沖冠
-髮乳
-髮引千鈞
-髮踴沖冠
-董氏封髮
-胎髮
-禿妃之髮
-捉髮
-綠髮
-括髮
-髡髮
-鵠髮
-截髮
-解髮佯狂
-淨髮
-秋髮
-噙齒戴髮
-青山一髮
-晞髮
-細不容髮
-心細如髮
-祝髮
-擢髮
-齒髮
-齒危髮秀
-沖冠髮怒
-甩髮
-絲髮
-絲恩髮怨
-蒜髮
-算髮
-有髮頭陀寺
-髮箋
-髮屋
-櫛髮工
-鬒髮
-模范棒棒堂
-模范三軍
-模范七棒
-模范14棒
-模范21棒
-顏範
-儀範
-典範
-坤範
-壼範
-容範
-懿範
-明範
-格範
-模範
-樣範
-母範
-洪範
-淑範
-遺範
-科範
-立範
-貽範
-道範
-閨範
-閫範
-雅範
-霽範
-鴻範
-沒樣範
-錢範
-銅範
-金範
-範金
-垂範
-範性形變
-範字
-有事之無範
-置言成範
-吾爲之範我馳驅
-天地為範
-範數
-丰采
-丰標不凡
-丰神
-丰茸
-丰儀
-丰度
-丰情
-丰韵
-子之丰兮
-艸木丰丰
-張三丰
-復始
-複分析
-複輔音
-複元音
-複平面
-複函數
-複流
-反複製
-複對數
-顛覆
-答覆
-覆沒
-覆亡
-覆水難收
-翻雲覆雨
-覆雨翻雲
-覆轍
-覆巢之下無完卵
-覆蓋
-覆命
-天翻地覆
-天覆地載
-撥穀
-扁擬穀盜蟲
-不穀
-辟穀
-米穀
-田穀
-脫穀機
-年穀
-礱穀機
-孤寡不穀
-穀米
-穀旦
-穀圭
-穀貴餓農
-穀食
-穀日
-館穀
-禾穀
-積穀
-嘉穀
-嚼穀
-九穀
-戩穀
-錢穀
-息穀
-殖穀
-川穀
-曬穀
-臧穀亡羊
-種穀
-颳雪
-刮風下雪倒便宜
-广部
-亂鬨不過來
-斗鬨
-亂鬨
-開鬨
-花鬨
-鬨動
-交鬨
-喧鬨
-起鬨
-內鬨
-於後
-猜三划五
-划龍舟
-南迴線
-南迴鐵路
-北迴線
-北迴鐵路
-文匯報
-河流匯集
-品彙
-博彙
-滙豐
-伙頭
-方几
-伏几
-高几
-雪窗螢几
-燕几
-隱几
-饑饉
-乾薑
-毛薑
-薑母
-薑湯
-薑桂
-薑是老的辣
-吃薑
-薑老辣
-野薑
-咬薑呷醋
-薑蓉
-薑黃
-狐藉虎威
-滑藉
-藉寇兵
-藉箸代籌
-藉手
-藉此
-龍捲
-捲舌
-夸父
-夸克
-夸特
-夸毗
-夸麗
-夸姣
-夸人
-夸容
-大言非夸
-言大而夸
-睏覺
-愛睏
-纍堆
-纍紲
-纍臣
-纍瓦結繩
-湘纍
-印纍綬若
-灕湘
-灕然
-澤滲灕而下降
-裏勾外連
-裏手
-水里鄉
-水里溪
-水里濁水溪
-二里頭
-年歷史
-西歷史
-國歷史
-國歷代
-國歷任
-國歷屆
-國歷經
-國歷來
-新歷史
-夏歷史
-百花曆
-寶曆
-穆罕默德曆
-大明曆
-大曆
-台曆
-太初曆
-通曆
-曆本
-曆命
-曆紀
-曆始
-曆室
-曆日
-曆尾
-曆元
-律曆志
-官曆
-回曆
-巧曆
-慶曆
-朱理安曆
-長曆
-藏曆
-四分曆
-三統曆
-額我略曆
-埃及曆
-伊斯蘭教曆
-合曆
-玉曆
-農民曆
-桌曆
-商曆
-周曆
-大衍曆
-皇極曆
-儒略改革曆
-希伯來曆
-格里曆
-格里高利曆
-共和曆
-掛曆
-曆獄
-天文曆表
-日心曆表
-地心曆表
-復活節曆表
-月球曆表
-伊爾汗曆表
-延曆
-共和歷史
-厤物之意
-爰定祥厤
-白黴
-黴黧
-黴黑
-麴黴
-蒙霧露
-懞懞懂懂
-懞直
-老懞
-放懞掙
-矇著
-矇聵
-矇瞍
-矇事
-矇頭轉
-矇松雨
-藏矇歌兒
-矇著鍋兒
-朦朧
-濛濛細雨
-濛汜
-冥濛
-溟濛
-淡濛濛
-凌濛初
-涳濛
-灰濛濛
-澒濛
-瀰山遍野
-瀰瀰
-冷麵
-撈麵
-煮麵
-炆麵
-煎麵
-泡麵
-食麵
-公仔麵
-方便麵
-白粉麵
-棒子麵
-麵缸
-麵坯兒
-麵碼兒
-麵坊
-麵湯
-麵疙瘩
-麵館
-麵漿
-甜水麵
-麵人兒
-麵塑
-捏麵人
-趕麵棍
-擀麵
-過水麵
-蕎麥麵
-巧婦做不得無麵餺飥
-削麵
-小米麵
-壯麵
-吃板刀麵
-吃辣麵
-扯麵
-搋麵
-重羅麵
-雜麵
-雜合麵兒
-溲麵
-索麵
-一鍋麵
-伊府麵
-藥麵兒
-意大利麵
-湯下麵
-茶麵
-麵糰
-冷面相
-糞穢衊面
-湟潦生苹
-食野之苹
-苹縈
-青苹
-青蘋果
-僕僕
-有僕
-冉有僕
-屢顧爾僕
-僕少
-僕雖罷駑
-僕夫
-僕僮
-僕吏
-僕姑
-僕固懷恩
-僕程
-僕使
-僕憎
-僕歐
-僕射
-太僕
-僮僕
-金僕姑
-僕婢
-樸實
-樸訥
-樸念仁
-白樸
-抱素懷樸
-抱朴而長吟兮
-樸鄙
-樸馬
-樸父
-樸陋
-樸魯
-樸厚
-樸學
-樸質
-樸拙
-樸重
-樸素
-樸樕
-樸野
-反樸
-古樸
-胡樸安
-返樸
-渾樸
-儉樸
-簡樸
-拙樸
-斫雕為樸
-斲雕為樸
-質樸
-誠樸
-純樸
-曾樸
-郁樸
-棫樸
-敦樸
-樸鈍
-樸直
-見素抱樸
-掣籤
-標籤
-書籤
-發籤
-粉籤子
-路籤
-更籤
-好籤
-火籤
-籤幐
-籤押
-照入籤
-制籤
-抽公籤
-瑤籤
-藥籤
-萬籤插架
-雲笈七籤
-上簽名
-上簽字
-上簽收
-上簽寫
-下簽名
-下簽字
-下簽收
-下簽寫
-犖确
-磽确
-确瘠
-言辯而确
-數與虜确
-關弓與我确
-拚捨
-廣捨
-齊王捨牛
-捨墮
-捨實
-棄捨
-捨安就危
-施舍之道
-瀋河
-瀋水
-瀋州
-瀋山線
-瀋吉線
-墨沈
-瀋海鐵路
-遼瀋
-胜肽
-胜鍵
-雙胜類
-兀朮
-白朮
-蒼朮
-赤朮
-朮赤
-髼鬆
-皮鬆
-濛鬆雨
-發鬆
-翻鬆
-浮鬆
-弄鬆
-精鬆
-懈鬆
-鬆蛋
-鬆寬
-鬆氣
-鬆一口氣
-鬆元音
-鬆喉
-囉囉囌囌
-囉囌
-骨罈
-罈騞
-餵驢
-剪牡丹喂牛
-鹹粥
-鹹食
-鹹潟
-鹹嘴淡舌
-鹽打怎麼鹹
-鹹派
-鹹批
-錦綉花園
-籲天
-勃鬱
-怫鬱
-氣鬱
-沉鬱
-神荼鬱壘
-躁鬱
-蒼鬱
-漚鬱
-伊鬱
-壹鬱
-悒鬱
-氤鬱
-湮鬱
-陰鬱
-泱鬱
-坱鬱
-滃鬱
-蓊鬱
-紆鬱
-鬱勃
-鬱陶
-鬱律
-鬱壘
-鬱火
-鬱積
-鬱金
-鬱江
-鬱血
-鬱蒸
-鬱症
-鬱沉沉
-鬱熱
-鬱塞
-鬱伊
-鬱邑
-鬱挹
-鬱堙不偶
-鬱泱
-鬱蓊
-鬱紆
-鬱燠
-肝鬱
-鬱卒
-鬱鬱不平
-鬱鬱不樂
-鬱鬱寡歡
-鬱鬱蔥蔥
-鬱鬱而終
-愿樸
-愿而恭
-許愿起經
-北嶽
-嶽麓
-但云
-胡云
-詩云
-注云
-鄭凱云
-云乎
-云然
-云為
-對摺
-網誌
-標標致致
-澄澹精致
-呆緻緻
-光緻緻
-工緻
-功緻
-縝緻
-堅緻
-种放
-种師道
-种師中
-後庄
-舊庄
-正官庄
-龜山庄
-寶山庄
-冬山庄
-員山庄
-松山庄
-厂部
-閤府
-佈道
-剪綵
-衝量
-衝車
-書獃子
-相干
-府干預
-府干涉
-府干政
-府干擾
-府干犯
-府干卿
-一干人
-未乾
-未干涉
-抹乾
-餅乾
-拭乾
-擦乾
-晾乾
-烘乾
-肉乾
-菜乾
-腐乾
-乾脆
-乾淨
-乾燥
-乾旱
-乾涸
-乾洗
-乾女
-乾等
-乾糧
-乾枯
-乾薪
-乾爹
-乾粉
-乾爽
-乾兒
-乾子
-乾渴
-乾股
-乾果
-乾草
-乾菜
-乾笑
-乾餾
-乾電
-乾飯
-乾冰
-乾嘔
-乾材
-乾媽
-乾季
-葡萄乾
-提子乾
-蘿蔔乾
-蘋果乾
-芒果乾
-菠蘿乾
-鳳梨乾
-豆腐乾
-果子乾
-龍眼乾
-乾乾淨淨
-乾柴烈火
-乾乾兒的
-桑乾
-撈乾
-搭乾鋪
-揩乾
-敢幹
-幹探
-幹事
-幹什麼
-幹細胞
-悶著頭兒幹
-配水幹管
-繐幃飄井幹
-站乾岸兒
-秋陰入井幹
-沒梢幹
-楨幹
-據榦而窺井底
-井榦摧敗
-杰特
-李連杰
-周杰倫
-杰倫
-姜文杰
-稜鏡
-稜角
-稜台
-稜錐
-觚稜
-稜子
-稜層
-稜柱
-盧稜伽
-波稜菜
-菠稜菜
-稜縫
-稜等登
-稜稜
-嶒稜
-蹭稜子
-稜體
-二不稜登
-有稜有角
-威稜
-負債纍纍
-傷痕纍纍
-儒略曆
-伊斯蘭曆
-酒麴
-昇平
-爾冬陞
-澹臺
-拜託
-委託
-輓曲
-敬輓
-万俟
-万旗
-鬚鯨
-鬚鯊
-兇手
-兇徒
-兇案
-兇器
-兇殺
-兇殘
-行兇
-緝兇
-追兇
-真兇
-疑兇
-買兇
-元兇
-叶韻
-叶音
-叶恭弘
-叶 恭弘
-叶 恭弘
-於1
-於2
-於3
-於4
-於5
-於6
-於7
-於8
-於9
-於0
-於1
-於2
-於3
-於4
-於5
-於6
-於7
-於8
-於9
-於0
-於一
-於二
-於三
-於四
-於五
-於六
-於七
-於八
-於九
-於十
-於半
-於夫羅
-於梨華
-置於
-佈於
-散於
-播於
-國於
-敗於
-於一役
-畢於
-畢業於
-寒於
-任於
-拘於
-插於
-中於
-於市
-於野
-敏於
-聽於
-短於
-成於
-樊於期
-淡於
-於陸
-於密
-於盡
-禍於
-格於
-猛於
-施於
-於牆
-於物
-於己
-於你
-於我
-於他
-於她
-於它
-於祂
-拒人於
-拒於
-潰於
-窮於
-相於
-形於
-半於
-於始
-於終
-詢於
-美於
-醜於
-好於
-坏於
-強於
-弱於
-差於
-劣於
-於美
-於醜
-於好
-於坏
-於強
-於弱
-於差
-於劣
-於垂
-染指於
-於火
-存十一於千百
-存於
-於勤
-隱於
-藏於
-嚴於
-寬於
-於幕
-給於
-於穆
-於呼哀哉
-於時
-於該
-危於
-於伏
-於何
-於家
-於國
-於潛縣
-於焉
-於徵
-離於
-於畢
-麗於
-下於
-亞於
-同於
-屑於
-絕於
-致於
-於行
-遜於
-任教於
-教於
-自於
-來於
-附於
-於人
-於世
-阻於
-於民
-於盲
-於色
-囿於
-直於
-建於
-都於
-於農
-於樂
-於前
-役於
-於心
-於法
-於事
-助於
-害於
-損於
-益於
-從於
-隨於
-順於
-汲於
-溺於
-迷於
-醉於
-行於
-泥於
-身於
-足於
-溢於
-於衷
-畏於
-視於
-衷於
-狃於
-疲於
-通於
-於途
-老於
-耿於
-於懷
-服於
-臻於
-匿於
-因於
-似於
-遷於
-怒於
-心於
-集於
-容於
-髒詞
-髒心
-新紮
-紙紮
-紮鐵
-紮寨
-一紮
-兩紮
-三紮
-四紮
-五紮
-六紮
-七紮
-八紮
-九紮
-十紮
-百紮
-千紮
-萬紮
-佔1
-佔2
-佔3
-佔4
-佔5
-佔6
-佔7
-佔8
-佔9
-佔0
-佔1
-佔2
-佔3
-佔4
-佔5
-佔6
-佔7
-佔8
-佔9
-佔0
-佔零
-佔〇
-佔一
-佔二
-佔兩
-佔三
-佔四
-佔五
-佔六
-佔七
-佔八
-佔九
-佔十
-佔百
-佔千
-佔万
-佔億
-佔超過
-佔不足
-佔至少
-佔少
-佔至多
-佔半
-佔多
-佔大
-佔小
-佔中
-佔東
-佔西
-佔南
-佔北
-佔平均
-佔總
-獨佔鰲頭
-所佔
-市佔
-佔率
-市佔率
-佔市場
-佔世界
-佔全
-佔國內
-佔美
-佔台
-佔香
-佔澳
-佔加
-佔新
-佔馬
-佔印
-佔英
-佔法
-佔德
-佔葡
-佔俄
-佔蘇
-佔缺
-佔A
-佔B
-佔C
-佔D
-佔E
-佔F
-佔G
-佔H
-佔I
-佔J
-佔K
-佔L
-佔M
-佔N
-佔O
-佔P
-佔Q
-佔R
-佔S
-佔T
-佔U
-佔V
-佔W
-佔X
-佔Y
-佔Z
-佔a
-佔b
-佔c
-佔d
-佔e
-佔f
-佔g
-佔h
-佔i
-佔j
-佔k
-佔l
-佔m
-佔n
-佔o
-佔p
-佔q
-佔r
-佔s
-佔t
-佔u
-佔v
-佔w
-佔x
-佔y
-佔z
-佔A
-佔B
-佔C
-佔D
-佔E
-佔F
-佔G
-佔H
-佔I
-佔J
-佔K
-佔L
-佔M
-佔N
-佔O
-佔P
-佔Q
-佔R
-佔S
-佔T
-佔U
-佔V
-佔W
-佔X
-佔Y
-佔Z
-佔a
-佔b
-佔c
-佔d
-佔e
-佔f
-佔g
-佔h
-佔i
-佔j
-佔k
-佔l
-佔m
-佔n
-佔o
-佔p
-佔q
-佔r
-佔s
-佔t
-佔u
-佔v
-佔w
-佔x
-佔y
-佔z
-佔不佔
-不佔
-佔了
-佔穩
-佔資源
-佔人便宜
-佔頭
-佔道
-佔屋
-佔網
-佔床
-佔座
-佔分
-佔飯
-佔個位
-佔後
-佔著
-佔山
-馬占山
-佔比
-佔停車
-佔哺乳
-佔下風
-少佔
-多佔
-費佔
-佔查
-佔壓
-佔優
-佔劣
-穩佔
-佔整體
-佔局部
-日佔
-美佔
-英佔
-德佔
-法佔
-俄佔
-葡佔
-西佔
-奧佔
-意佔
-義佔
-地佔
-佔場
-佔耕
-狂佔
-徵佔
-圈佔
-已佔
-佔囁
-佔主
-佔次
-寡佔
-佔去
-將佔
-將占卜
-要佔
-要占卜
-會佔
-會占卜
-占卜
-夢有五不占
-占有五不驗
-誌異
-筑前
-筑後
-筑紫
-筑波
-筑州
-筑肥
-筑西
-筑北
-肥筑方言
-筑邦
-筑陽
-南筑
-批准的
-核准的
-為準
-準直
-擺鐘
-編鐘
-碰鐘
-鳴鐘
-晨鐘
-鐘體
-飯後鐘
-盜鐘
-一天鐘
-撞鐘
-殿鐘自鳴
-天文鐘
-天文學鐘
-洛鐘東應
-亮鐘
-郘鐘
-歌鐘
-鐘不撞不鳴
-毀鐘為鐸
-洪鐘
-擊鐘
-警世鐘
-竊鐘掩耳
-琴鐘
-見鐘不打
-釁鐘
-朝鐘
-木鐘
-鐘不扣不鳴
-鐘鳴
-鐘塔
-鐘漏
-鐘琴
-鐘磬
-鐘形蟲
-鐘乳洞
-鐘乳石
-鐘在寺裡
-詩鐘
-懸鐘
-山崩鐘應
-坐鐘
-宗周鐘
-塞耳盜鐘
-二缶鐘惑
-口鐘
-鐘的
-的鐘
-這鐘
-叩鐘
-音聲如鐘
-應鐘
-原子鐘
-泳氣鐘
-電子鐘
-電子鐘錶
-石英鐘錶
-石英鐘
-鐘錶王
-鐘律
-看鐘
-看錶
-看表面
-鐵鐘
-看下鐘
-看下錶
-瞅下鐘
-瞅下錶
-拿下鐘
-拿下錶
-鐘不敲不響
-對準鐘
-對準鐘錶
-對準錶
-鐘錶快
-鐘快
-錶快
-鐘錶慢
-鐘慢
-錶慢
-響鐘
-鐘敲
-大本鐘敲
-大笨鐘敲
-世紀鐘錶
-世紀鐘
-錶王
-鐘王
-鐘錶
-古鐘
-古鐘錶
-鐘面
-鐘表面
-南京鐘
-南京鐘錶
-造鐘錶
-造鐘
-九龍表行
-鐘錶行
-鐘行
-錶行
-小型鐘表面
-小型鐘面
-小型鐘錶
-小型鐘
-中型鐘表面
-中型鐘面
-中型鐘錶
-中型鐘
-大型鐘表面
-大型鐘面
-大型鐘錶
-大型鐘
-鐘匠
-深山何處鐘
-下課鐘
-上課鐘
-老爺鐘
-萬年曆錶
-個鐘
-個鐘錶
-喜歡鐘
-喜歡鐘錶
-喜歡錶
-大鐘
-佛鐘
-鐘壁
-鐘腰
-鐘口
-鐘身
-鐘模
-鐘頂
-鐘紐
-鐘座
-他鐘
-寺鐘
-座鐘
-盜鐘
-大笨鐘
-大本鐘
-鐘錶歷史
-錶的歷史
-鐘錶的歷史
-點多鐘
-點半鐘
-分多鐘
-刻多鐘
-分半鐘
-刻半鐘
-教學鐘
-操作鐘
-南屏晚鐘
-敲鐘
-瞧著鐘
-瞧著鐘錶
-瞧著錶
-警報鐘
-猶如鐘
-猶如鐘錶
-猶如錶
-舊鐘錶
-繁鐘
-四面鐘
-更鐘
-警示鐘
-鐘差
-任何鐘錶
-任何鐘
-任何錶
-任何表示
-任何表達
-任何表演
-選手表現
-選手表達
-選手表示
-選手表明
-選手表決
-分子鐘
-飛行鐘
-鐘罩
-主鐘差
-花鐘
-磬鐘
-主鐘曲線
-鐘速
-紅鐘
-各類鐘
-打著鐘
-鐘意
-衛星鐘
-該鐘
-錶轉
-鐘調
-調鐘錶
-調錶
-原鐘
-鐘錶速
-件鐘
-鐘發音
-逆鐘
-拂鐘無聲
-鐘不空則啞
-看著鐘錶
-看著鐘
-看著錶
-晚鐘
-潛水鐘錶
-潛水鐘
-潛水錶
-樂器鐘
-鐘左右
-埋頭尋鐘錶
-埋頭尋鐘
-埋頭尋錶
-鐘陳列
-驚鐘
-望著鐘錶
-望著鐘
-望著錶
-鐘錶停
-鐘停
-銫鐘
-數字鐘錶
-數字鐘
-顯示鐘錶
-顯示鐘
-顯示錶
-坐如鐘
-錶停
-西周鐘
-東周鐘
-錶速
-機械鐘錶
-機械鐘
-機械錶
-之鐘
-鐘形
-架鐘
-順鐘向
-逆鐘向
-遺傳鐘
-鬧錶
-華嚴鐘
-懷鐘
-生物鐘
-鐘錶的
-錶的嘀嗒
-的鐘錶
-嘀嗒的錶
-鐘好
-鐘太
-鐘不
-鐘有
-鐘盤
-鐘錶盤
-鐘沒
-鐘被
-制鐘
-布穀鳥鐘
-咕咕鐘
-拉克施爾德鐘
-鐘上
-鐘下
-摸鐘
-舊鐘
-舊錶
-台鐘
-鐘響
-叩鐘
-計時錶
-防水錶
-射鵰
-神鵰
-神雕像
-采石磯
-采石之戰
-采石之役
-聊齋志異
-部落發
-角落發
-村落發
-蛇髮女妖
-畢生發展
-對華發動
-中美發表
-尸魂界
-樹樑
-屋樑
-樑柱
-柱樑
-下樑
-上梁山
-昇陽
-僥倖
-夏遊
-秋遊
-冬遊
-黑奴籲天錄
-林郁方
-讚歌
-編餘
-餘墨
-唾餘
-餘韻
-歸餘
-公餘
-寬餘
-餘糧
-餘慶
-餘殃
-餘燼
-劫餘
-結餘
-燼餘
-淨餘
-餕餘
-餘暉
-餘輝
-羨餘
-餘悸
-心餘
-刑餘
-緒餘
-血餘
-朱慶餘
-諸餘
-餘論
-茶餘
-廚餘
-餘裕
-餘氣
-詩餘
-詞餘
-餘僇
-餘辜
-餘責
-餘罪
-無餘
-耳餘
-餘烈
-餘思
-鹽餘
-嬴餘
-贏餘
-王餘魚
-紆餘
-餘波
-餘杯
-餘步
-餘妙
-餘音
-餘聲
-餘明
-餘風
-餘黨
-餘毒
-餘桃
-餘桶
-餘利
-餘瀝
-餘膏
-餘光
-餘杭
-餘竅
-餘缺
-餘暇
-餘閒
-餘羨
-餘響
-餘興
-餘蓄
-餘緒
-餘珍
-餘眾
-餘酲
-餘喘
-餘食
-餘熱
-餘刃
-餘閏
-餘存
-餘業
-餘姚
-餘蔭
-餘映
-餘外
-餘威
-餘味
-餘溫
-餘勇
-多餘
-剩餘
-餘生
-餘歡
-有餘
-一餘
-二餘
-兩餘
-三餘
-四餘
-五餘
-六餘
-七餘
-八餘
-九餘
-十餘
-百餘
-千餘
-萬餘
-億餘
-兆餘
-0餘
-1餘
-2餘
-3餘
-4餘
-5餘
-6餘
-7餘
-8餘
-9餘
-0餘
-1餘
-2餘
-3餘
-4餘
-5餘
-6餘
-7餘
-8餘
-9餘
-余姓
-余光生
-余光中
-余思敏
-余威德
-余子明
-余三勝
-崑山
-崑曲
-崑腔
-崑調
-崑劇
-崑蘇
-蘇崑
-分布圖
-一干家中
-星期後
-不准你
-不准我
-不准他
-不准她
-不准它
-不准誰
-不准許
-准不准你
-准不准我
-准不准他
-准不准她
-准不准它
-准不准誰
-准不准許
-依依不捨
-戀戀不捨
-窮追不捨
-緊追不捨
-鍥而不捨
-稜登
-前言不答後語
-繃扒弔拷
-不弔
-不通弔慶
-陪弔
-盆弔
-屁股大弔了心
-撇弔
-憑弔
-門弔兒
-伐罪弔民
-打出弔入
-搗鬼弔白
-弔膀子
-弔民
-弔民伐罪
-弔奠
-弔頭
-弔古
-弔古尋幽
-弔詭
-弔詭矜奇
-弔客
-弔拷
-弔拷繃扒
-弔扣
-弔賀迎送
-弔鶴
-弔喉
-弔謊
-弔祭
-弔腳兒事
-弔頸
-弔橋
-弔取
-弔孝
-弔紙
-弔者大悅
-弔場
-弔書
-弔詞
-弔死問孤
-弔死問疾
-弔撒
-弔喪
-弔喪問疾
-弔腰撒跨
-弔唁
-弔宴
-弔喭
-弔影
-弔慰
-弔文
-弔問
-頭巾弔在水裡
-提心弔膽
-弄鬼弔猴
-管人弔腳兒事
-開弔
-鶴弔
-昊天不弔
-花馬弔嘴
-會弔
-吉凶慶弔
-蟣蝨相弔
-祭弔
-祭弔文
-青蠅弔客
-慶弔
-形影相弔
-哀弔
-一弔
-唁弔
-於水
-安於
-迫於
-罷於
-蹪於
-於敝
-於過
-甚於
-等於
-定於
-利於
-對於
-推舟於陸
-退藏於密
-歸於
-難於
-移禍於
-生於
-立於
-多於
-勝於
-傳於
-流於
-過於
-關於
-毀於
-基於
-急於
-嫁禍於
-借聽於聾
-見於
-鑒於
-謹於心
-求道於盲
-始於
-於藍
-出於
-輕於
-行百里者半於九十
-幸於
-怠於
-詢於芻蕘
-止於
-至於
-拙於
-忠於
-終於
-重於
-垂於
-善於
-死於
-屬於
-浮於
-在於
-厝薪於火
-易於
-精於
-由於
-於此
-燕巢於幕
-於菟
-於乎
-於戲
-於邑
-補於
-位於
-於今
-於是
-於是乎
-於斯
-寓於
-月離於畢
-月麗於箕
-源於
-且於
-長於
-短於
-現於
-較於
-於之
-分布於
-分散於
-優於
-早於
-晚於
-感於
-鬼谷子
-于美人
-緊緻
-冗餘
-曰云
-若干
-徵婚
-鬥鬨
-事有鬥巧
-歹鬥
-鬥茶
-鬥鴨
-爭奇鬥妍
-誇能鬥智
-春香鬥學
-鬥引
-鬥彩
-鬥武
-鬥悶
-鬥牙拌齒
-鬥幌子
-鬥腳
-雞吵鵝鬥
-辯鬥
-廝鬥
-誇多鬥靡
-臨潼鬥寶
-鬥趣
-撩鬥
-傲霜鬥雪
-賭鬥
-搬鬥
-鬥爭鬥合
-鬥疊
-鬥文
-耍鬥
-鬥巧
-油鬥
-蚊動牛鬥
-卵與石鬥
-挑鬥
-爭奇鬥異
-鬥葉子
-鬥分子
-爭妍鬥奇
-不鬥
-鬥心眼
-鬥頭
-挌鬥
-好鬥
-鬥合
-拚鬥
-兩虎共鬥
-兩鼠鬥穴
-鬥犀臺
-鬥牙鬥齒
-惡鬥
-鬥勝
-鬥富
-鬥艦
-鬥葉兒
-鬥彆氣
-鬥話
-鬥牌
-鬥百草
-鬥打
-鬥犬
-鬥風
-鬥雪紅
-鬥暴
-鬥閑氣
-龍鬥虎傷
-殷師牛鬥
-二虎相鬥
-鬥力
-爭紅鬥紫
-鬥麗
-鬥狠
-鬥飣
-虎鬥
-引鬥
-爭妍鬥豔
-轉鬥千里
-鬥而鑄兵
-困鬥
-好勇鬥狠
-爭奇鬥豔
-使其鬥
-鬥地主
-石樑
-木樑
-藏歷史
-頁面
-方面
-表面
-面條目
-課餘
-節餘
-盈餘
-病餘
-餘地
-餘力
-餘子
-餘事
-扶餘國
-腐餘
-富餘
-之餘
-餘澤
-流風餘俗
-流風餘韻
-淋餘土
-餘一
-餘二
-餘三
-餘四
-餘五
-餘六
-餘七
-餘八
-餘九
-餘十
-零餘
-〇餘
-餘零
-餘〇
-餘1
-餘2
-餘3
-餘4
-餘5
-餘6
-餘7
-餘8
-餘9
-餘0
-餘1
-餘2
-餘3
-餘4
-餘5
-餘6
-餘7
-餘8
-餘9
-餘0
-餘數
-其餘
-尸居餘氣
-賸餘
-餘孽
-殘餘
-業餘
-餘割
-餘款
-餘角
-餘切
-餘霞
-餘下
-餘弦
-餘震
-餘貾
-餘額
-禹餘糧
-餘人
-編余
-病余
-餘俗
-餘倍
-同餘
-大讚
-唄讚
-褒讚
-謬讚
-誄讚
-祝讚
-詩讚
-賞讚
-讚唄
-飛紮
-紮裹
-紮腳
-紮詐
-紮囮
-住紮
-佔畢
-佔頭籌
-佔高枝兒
-隱佔
-憑摺
-沒摺至
-大摺兒
-大週摺
-火摺子
-裝摺
-變徵
-談徵
-納徵
-流徵
-柳詒徵
-固徵
-貴徵
-考徵
-咎徵
-杞宋無徵
-休徵
-徵辟
-徵名責實
-徵發
-徵風召雨
-徵答
-徵啟
-徵選
-徵招
-徵士
-徵庸
-之徵
-瑞徵
-三徵七辟
-額徵
-有徵
-有征服
-有征戰
-有征伐
-有征討
-無徵不信
-文徵明
-徵跡
-徵車
-徵效
-徵怪
-徵聖
-徵咎
-徵吏
-徵令
-本徵
-船鐘
-黃鈺筑
-齊莊
-鴻案相莊
-項莊
-韋莊
-鍋莊
-鄭莊公
-通莊
-蒙莊
-端莊
-票莊
-矜莊
-楚莊問鼎
-楚莊絕纓
-整莊
-打路莊板
-莊騷
-莊語
-莊舄越吟
-莊房
-莊客
-莊農
-平泉莊
-布莊
-香山庄
-寶莊
-坐莊
-周莊王
-發莊
-卞莊
-包莊
-剔莊貨
-劉克莊
-冷莊子
-石家莊
-卞莊子
-新莊市
-當準
-憑準
-沒準
-蜂準
-推情準理
-寇準
-合準
-準保
-準譜
-準分子
-準點
-一個準
-準擬
-準貨幣
-準軍事
-準式
-認準
-三準
-鵝準
-有準
-崑崙
-鎌倉
-請君入甕
-甕安
-痊癒
-治癒
-病癒
-大病初癒
-癒合
-槓桿
-宣洩
-圖鑑
-諮詢
-勳章
-張勳
-趙治勳
-殭屍
-有栖川
-兇惡
-兇狠
-兇猛
-兇橫
-兇悍
-兇險
-兇相
-兇犯
-嫌兇
-兇嫌
-兇疑
-兇刀
-兇槍
-很兇
-兇巴巴
-行兇前
-凝鍊
-鍊貧
-鍊度
-鍊形
-鍊師
-鍊石
-鍊字
-鍊冶
-細鍊
-陳鍊
-闖鍊
-鍊汞
-淬鍊
-鋼之鍊金術師
-索馬里
-范登堡
-世田谷
-製漿
-三統歷史
-伊斯蘭教歷史
-伊斯蘭歷史
-儒略改革歷史
-儒略歷史
-公歷史
-台歷史
-合歷史
-周歷史
-商歷史
-四分歷史
-回歷史
-埃及歷史
-大明歷史
-大歷史
-大衍歷史
-太初歷史
-官歷史
-寶歷史
-巧歷史
-希伯來歷史
-弘歷史
-慶歷史
-日歷史
-星歷史
-月歷史
-朱理安歷史
-桌歷史
-永歷史
-玉歷史
-百花歷史
-皇歷史
-皇極歷史
-穆罕默德歷史
-算歷史
-紀歷史
-舊歷史
-航海歷史
-萬歷史
-行事歷史
-農歷史
-農民歷史
-通歷史
-長歷史
-陰歷史
-陽歷史
-額我略歷史
-黃歷史
-天曆
-天歷史
-美醜
-獻醜
-出醜
-家醜
-遮醜
-醜八怪
-醜名
-醜詆
-醜態
-醜女
-醜類
-醜陋
-醜虜
-醜化
-醜劇
-醜媳婦
-醜小鴨
-醜行
-醜事
-醜聲
-醜人
-醜惡
-醜丫頭
-醜聞
-醜語
-母醜
-一齣子
-齣兒
-賣獃
-發獃
-大獃
-獃獃
-獃等
-獃頭
-獃腦
-獃根
-獃磕
-獃憨獃
-獃話
-獃氣
-獃想
-獃性
-獃滯
-獃著
-獃痴
-獃串了皮
-獃事
-獃人
-獃子
-好獃
-占便宜的是獃
-阿獃
-丰標
-丰姿
-丰韻
-鵰翎
-鵰心雁爪
-鵰鶚
-雙鵰
-撲鼕鼕
-普鼕鼕
-鼕鼕鼓
-令人髮指
-爆發指數
-開發
-剪其髮
-吐哺捉髮
-吐哺握髮
-含齒戴髮
-大金髮苔
-寸髮千金
-心長髮短
-戴髮含齒
-拔髮
-拔鬚
-揪髮
-揪鬚
-整髮用品
-斷髮文身
-滿頭洋髮
-燙一個髮
-燙一次髮
-燙個髮
-燙完髮
-燙次髮
-理一個髮
-理一次髮
-理個髮
-理完髮
-理次髮
-細如髮
-繫於一髮
-膚髮
-皮膚
-生華髮
-蒼髮
-被髮佯狂
-被髮入山
-被髮左衽
-被髮纓冠
-被髮陽狂
-身體髮膚
-髒髮
-髮光可鑑
-髮已霜白
-髮油
-髮為血之本
-髮網
-髮踊沖冠
-髮際
-黃髮
-齒落髮白
-剷頭
-剷刈
-口燥唇乾
-舌乾唇焦
-花菴詞選
-渾箇
-箇中原因
-箇中理由
-箇中高手
-箇中好手
-箇中強手
-箇中滋味
-箇中奧秘
-箇中奧妙
-箇中玄機
-箇中消息
-箇中資訊
-箇中訊息
-對表達
-對表現
-對表演
-對表揚
-對表中
-對表明
-不準確
-並不準確
-一伙頭
-一伙食
-一半只
-一干弟兄
-一干弟子
-一干部下
-一斗斗
-一面食
-萬一只
-上面糊
-不克自制
-不准沒
-不加自制
-不占凶吉
-不占卜
-不占吉凶
-不占算
-不好干涉
-不好干預
-不干預
-不干涉
-不干休
-不干犯
-不干擾
-不干你
-不干我
-不干他
-不干她
-不干它
-不干事
-不斗膽
-不每只
-不采聲
-專向往
-丰容
-之一只
-之二只
-之八九只
-也斗了膽
-事情干脆
-事都干脆
-二只得
-亦云
-人云
-以自制
-們斗了膽
-你斗了膽
-其一只
-其二只
-其八九只
-內面包
-內面包的
-准保護
-准保釋
-几上
-几淨窗明
-几凳
-几子
-几旁
-几椅
-几榻
-几面上
-出征收
-擊扑
-划一槳
-划了一會
-划到岸
-划到江心
-前面店
-千只可
-千只夠
-千只怕
-千只能
-千只足夠
-半只可
-半只夠
-占了卜
-口干冒
-口干政
-口干涉
-口干犯
-口干預
-古書云
-古語云
-只占卜
-只占吉
-只占神問卜
-只占算
-只身上已
-只身上無
-只身上有
-只身上沒
-只身上的
-只身世
-只身為
-只身份
-只身體
-只身前
-只身受
-只身後
-只身子
-只身形
-只身影
-只身心
-只身旁
-只身材
-只身段
-只身邊
-只身首
-只身高
-只采聲
-可自制
-台子女
-台子孫
-台布景
-台面前
-合府上
-後面店
-向往常
-向往日
-向往時
-向往來
-唯一只
-喂了一聲
-喜向往
-四出徵收
-四面包
-多半只
-好斗大
-好斗室
-好斗笠
-好斗篷
-好斗膽
-好斗蓬
-家具體
-家具備
-家具有
-小几
-尸利
-尸祿
-尸臣
-尸鳩
-已占卜
-已占算
-并迭
-所云
-所云云
-所占卜
-所占星
-所占算
-手表決
-手表態
-手表明
-手表演
-手表現
-手表示
-手表達
-手表露
-手表面
-才干休
-才干戈
-才干擾
-才干政
-才干涉
-才干預
-扎好底子
-扎好根
-扑撻
-打吨
-折向往
-拉面上
-拉面具
-拉面前
-拉面巾
-拉面無
-拉面皮
-拉面罩
-拉面色
-拉面部
-捉奸黨
-捉奸徒
-捉奸細
-捉奸賊
-敢情欲
-敢斗了膽
-敲扑
-方向往
-望了望
-桌几
-每每只
-法自制
-洒滌
-洒淅
-洒濯
-洒然
-灘涂
-特制住
-特制定
-特制止
-特制訂
-百只可
-百只夠
-百只怕
-百只足夠
-皮制服
-相克制
-相克服
-短几
-石几
-秒表明
-秒表示
-窗明几亮
-竹几
-精制伏
-精制住
-精制服
-經有云
-給我干脆
-編制法
-能干休
-能干戈
-能干擾
-能干政
-能干涉
-能干預
-能自制
-自制一下
-自制下來
-自制不
-自制之力
-自制之能
-自制他
-自制伏
-自制你
-自制地
-自制她
-自制情
-自制我
-自制服
-自制的能
-自制能力
-船只得
-船只有
-船只能
-草荐
-荐居
-荐臻
-荐饑
-要自制
-語有云
-跌扑
-轉向往
-酒帘
-裡面包
-金表態
-金表情
-金表揚
-金表明
-金表演
-金表現
-金表示
-金表達
-金表露
-金表面
-長几
-隆准許
-雄斗斗
-面包住
-面包辦
-面包廂
-面包含
-面包圍
-面包容
-面包庇
-面包紮
-面包抄
-面包括
-面包攬
-面包涵
-面包管
-面包羅
-面包著
-面包藏
-面包裝
-面包裹
-面包起
-面店舖
-面粉碎
-面粉紅
-面食麵
-面食飯
-顛顛仆仆
-高干擾
-高干預
-高度自制
-黃金表
-天后宮
-一吊錢
-不食乾腊
-傳位于四太子
-儉确之教
-党懷英
-八蜡
-憑几
-南宮适
-大蜡
-子云
-分子雲
-小价
-歲聿云暮
-崖广
-恕乏价催
-悲筑
-折子戲
-揮杆
-搤肮拊背
-文采郁郁
-木杆
-洪适
-球杆
-腊之以為餌
-腊毒
-蜡月
-蜡祭
-言云
-宜云
-貴价
-郁郁菲菲
-馬杆
-造麯
-麴生
-麴秀才
-麴塵
-麴櫱
-大麴
-黃麴毒素
-酒醴麴櫱
-麴道士
-麴錢
-麴車
-麴院
-鼠麴草
-不乾不淨
-生發生
-必須
-須根據
-·范
-、剋制
-,剋制
-。剋制
-!剋制
-?剋制
-;剋制
-:剋制
-不剋制
-也剋制
-了剋制
-他剋制
-們剋制
-剋制不了
-剋制不住
-力剋制
-力求剋制
-可以剋制
-和剋制
-在剋制
-地剋制
-夠剋制
-她剋制
-你剋制
-您剋制
-就剋制
-彼此剋制
-得剋制
-快剋制
-想剋制
-意剋制
-應剋制
-我剋制
-才剋制
-於剋制
-易剋制
-無法剋制
-的剋制
-盡量剋制
-而剋制
-能剋制
-與剋制
-著剋制
-要剋制
-軍隊剋制
-空投佈雷
-火箭佈雷
-海灣佈雷
-空中佈雷
-海上佈雷
-佈雷的
-佈雷,
-佈雷、
-佈雷。
-佈雷;
-佈雷艦
-佈雷艇
-佈雷速度
-佈雷封鎖
-滿拚自盡
-拚生盡死
-拚卻
-拚老命
-拚絕
-成於思
-單單於
-積澱
-澱積
-澱北片
-澱解物
-澱謂之滓
-淺澱
-堙澱
-茂都澱
-並曰入澱
-澱乃不耕之地
-藍澱
-皆可作澱
-澱山
-海淀山後
-澱澱
-掛鈎
-薴悴
-絡腮鬍
-落腮鬍
-山羊鬍
-幸運鬍
-刮鬍
-剃鬍
-吹鬍
-蓄鬍
-白鬍
-長鬍
-鬍髯
-髯鬍
-髭鬍
-鬚鬍
-范文瀾
-范文同
-范文正公
-范文程
-范文芳
-范文藤
-范文虎
-范文照
-發表
-乾重
-若干
-鈎心鬥角
-若干
-乾重
-全面包圍
-全面包裹
-機械系
-體系
-心理
-複分解
-鹰鵰
-叱咤903
-叱咤MY903
-叱咤My903
-叱咤樂壇
-叱咤咤
-叱咤叱咤叱咤咤
-叱咤叱叱咤
-正在叱咤
-空餘
-變髒
-天地志狼
-薴烯
-阿斯圖里亞斯
-雙折射
-心繫家
-心繫國
-心繫祖
-心繫北
-心繫京
-心繫南
-心繫西
-心繫東
-心繫四
-心繫川
-心繫浙
-心繫汶
-心繫廣
-心繫湖
-心繫山
-心繫台
-心繫江
-心繫昌
-心繫香
-心繫澳
-心繫港
-心繫泰
-心繫健
-心繫天
-心繫地
-心繫大
-心繫小
-心繫全
-心繫眾
-心繫奧
-心繫世
-心繫中
-心繫高
-心繫災
-心繫非
-心繫群
-心繫新
-心繫沈
-心繫唐
-心繫黃
-心繫乔
-心繫阮
-心繫父
-心繫母
-心繫病
-心繫故
-心繫哪
-心繫中
-心繫英
-心繫美
-心繫日
-心繫德
-心繫功
-心繫曉
-心繫神
-心繫萬
-心繫的
-心繫在
-心繫兩
-心繫社
-心繫曼
-心繫彼
-心繫風
-心繫募
-心繫一
-心繫何
-心繫困
-心繫輸
-心繫人
-心繫民
-心繫十
-心繫百
-心繫千
-心繫和
-心繫選
-心繫囑
-心繫我
-心繫你
-心繫您
-心繫他
-心繫她
-心繫它
-心繫伊
-心繫長
-心繫舞
-心繫蘭
-心繫五
-心繫生
-心繫婦
-心繫幼
-心繫茶
-心繫動
-心繫沙
-心繫林
-心繫摩
-心繫农
-心繫慈
-心繫麥
-心繫貧
-心繫富
-心繫遠
-心繫近
-心繫宣
-心繫傳
-心繫紅
-心繫老
-心繫重
-心繫震
-心繫妻
-心繫夫
-心繫女
-心繫子
-心繫著
-重回
-挑大樑
-扛大樑
-后豐
-製得
-限制
-控制
-製取
-第四出局
-心臟
-肝臟
-脾臟
-肺臟
-腎臟
-參與
-浮誇
-星巴克
-于謙
-于寘
-淳于
-于禁
-于敏中
-註:# 不作“注:”
-呆呆獸
-劃為# 不作“划為”
-併為一體
-併為一家
-一個# 避免“個裡”的錯誤
-兩個
-二個
-三個
-四個
-五個
-六個
-七個
-八個
-九個
-十個
-百個
-千個
-萬個
-億個
-兆個
-零個
-云:# 不作“雲:”
-電子表格
-雪裡紅
-雪裡蕻
-森林裡
-日子裡
-故事裡
-領域裡
-時間裡
-深淵裡
-醫院裡
-春假裡
-暑假裡
-秋假裡
-寒假裡
-春天裡
-夏天裡
-秋天裡
-冬天裡
-春日裡
-夏日裡
-秋日裡
-冬日裡
-嘴裡
-心裡
-皮裡陽秋
-肚裡
-苦裡
-裡勾外連
-裡面
-這裡
-中文裡
-山洞裡
-世界裡
-眼睛裡
-首發
-夸脫
-誰幹的
-鐘螺
-風采
-代碼表
-編碼表
-字碼表
-電碼表
-科斗
-佔領
-灕水
-點裡
-這只是
-這只不
-這只容
-這只允
-這只採
-這只用
-有只是
-有只不
-有只容
-有只允
-有只採
-有只用
-葉叶琹
-胡子昂
-包括
-特别致
-分别致
-會上簽訂
-會上簽署
-周一 # (及以下)避免“周一齣版”的錯誤
-周二
-周三
-周四
-周五
-周六
-韶山沖
-總裁制
-于丹
-于樂
-于冕
-于軍
-于吉
-于堅
-于姓
-于氏
-于娜
-于娟
-于山
-于帥
-于慧
-于振
-于敏
-于斌
-于晴
-于波
-于濤
-于衡
-于贈
-于越
-于靖
-于勒
-于格
-于仁泰
-于會泳
-于偉國
-于佳卉
-于光遠
-于克勒
-于凌奎
-于鳳至
-于化虎
-于占元
-于台煙
-于品海
-于國楨
-于大寶
-于天仁
-于子千
-于孔兼
-于學忠
-于家堡
-于小偉
-于小彤
-于山國
-于幼軍
-于廣洲
-于康震
-于式枚
-于從濂
-于德海
-于志寧
-于慎行
-于成龍
-于振武
-于明濤
-于是之
-于晨楠
-于根偉
-于樹潔
-于欣源
-于正昇
-于正昌
-于永波
-于漢超
-于江震
-于洪區
-于浩威
-于海洋
-于湘蘭
-于特森
-于玉立
-于秀敏
-于素秋
-于若木
-于蔭霖
-于西翰
-于遠偉
-于道泉
-于都縣
-于震寰
-于震環
-于非闇
-于風政
-于鳳桐
-于默奧
-于家堡
-于爾岑
-于默奧
-于貝爾
-于爾根
-于雙戈
-于里察
-于澤爾
-于斯塔德
-于斯達爾
-于爾里克
-于奇庫杜克
-于韋斯屈萊
-于克-蘭多縣
-于斯納爾斯貝里
-夏于喬
-涂姓
-涂坤
-涂天相
-涂序瑄
-涂澤民
-涂紹煃
-涂羽卿
-涂逢年
-涂長望
-涂謹申
-涂鴻欽
-涂壯勳
-涂醒哲
-涂善妮
-涂敏恆
-總裁制
-故云
-強制作用
-鬱南
-西米谷
-一出生
-二出生
-三出生
-四出生
-五出生
-六出生
-七出生
-八出生
-九出生
-十出生
-一出版
-二出版
-三出版
-四出版
-五出版
-六出版
-七出版
-八出版
-九出版
-十出版
-一出刊
-二出刊
-三出刊
-四出刊
-五出刊
-六出刊
-七出刊
-八出刊
-九出刊
-十出刊
-一出逃
-二出逃
-三出逃
-四出逃
-五出逃
-六出逃
-七出逃
-八出逃
-九出逃
-十出逃
-一出口
-二出口
-三出口
-四出口
-五出口
-六出口
-七出口
-八出口
-九出口
-十出口
-一出祁山
-二出祁山
-三出祁山
-四出祁山
-五出祁山
-六出祁山
-七出祁山
-八出祁山
-九出祁山
-十出祁山
-鬱林
-饑荒
-免徵
-亞美尼亞曆
-百科裡
-歷史裡
-戲裡
-作品裡
-專輯裡
-年代裡
-棺材裡
-注釋
-月面
-路面
-修杰楷
-修杰麟
-學裡
-獄裡
-館裡
-系列裡
-村子裡
-艷后
-廢后
-妖后
-后海灣
-仙后
-賈后
-賢后
-蜂后
-皇后
-王后
-王侯后
-母后
-武后
-歌后
-影后
-封后
-太后
-天后
-呂后
-后里
-后街
-后羿
-后稷
-后座
-后平路
-后安路
-后土
-后北街
-后冠
-望后石
-后角
-蟻后
-后妃
-大周后
-小周后
-染殿后
-准三后
-風后
-后母戊
-風後,
-人如風後入江雲
-中風後
-屏風後
-颱風後
-颳風後
-整風後
-打風後
-遇風後
-聞風後
-逆風後
-順風後
-大風後
-馬格里布
-伊里布
-劃入
-中庄子
-埔裏社撫墾局
-懸掛
-僱傭
-四捨六入
-宿舍
-會干擾
-代表
-高清愿
-瓷製
-竹製
-絲製
-莜麵
-劃入
-簡筑翎
-楊雅筑
-魔杰座
-杰威爾音樂
-彭于晏
-尸羅精舍
-索馬里 # (及以下)避免里海=>裏海的轉換
-西西里
-騰格里
-阿里
-村里長
-進制
-黃詩杰
-陳冲
-何杰
-劉佳怜
-于小惠
-于品海
-于耘婕
-于洋
-于澄
-于光新
-范賢惠
-于國治
-于楓
-于熙珍
-涂善妮
-邱于庭
-熊杰
-卜云吉
-黎吉雲
-于飛島
-代表
-水無怜奈
-傲遊 # 浏览器名
-夏于喬
-賭后
-后海灣
-立后綜
-甲后路
-劉芸后
-謝華后
-趙惠后
-趙威后
-聖后
-陳有后
-許虬
-網遊
-狄志杰
-伊適杰
-于冠華
-于台煙
-于雲鶴
-于忠肅集
-于友澤
-于和偉
-于來山
-于樂
-于天龍
-于謹
-于榮光
-電波鐘
-余三勝
-掛名
-啟發式
-舞后
-甄后
-郭后
-0年 # 協助分詞
-1年
-2年
-3年
-4年
-5年
-6年
-7年
-8年
-9年
-0年
-1年
-2年
-3年
-4年
-5年
-6年
-7年
-8年
-9年
-〇年
-零年
-一年
-兩年
-二年
-三年
-四年
-五年
-六年
-七年
-八年
-九年
-十年
-百年
-千年
-萬年
-億年
-周后
-0周後
-1周後
-2周後
-3周後
-4周後
-5周後
-6周後
-7周後
-8周後
-9周後
-0周後
-1周後
-2周後
-3周後
-4周後
-5周後
-6周後
-7周後
-8周後
-9周後
-零周後
-〇周後
-一周後
-二周後
-兩周後
-三周後
-四周後
-五周後
-六周後
-七周後
-八周後
-九周後
-十周後
-百周後
-千周後
-萬周後
-億周後
-幾周後
-多周後
-前往
-后瑞站
-帝后臺
-新井里美
-樗里子
-伊達里子
-濱田里佳子
-尊后
-叶志穗
-叶不二子
-于立成
-山谷道
-李志喜
-于欣
-于少保
-于海
-於海邊
-於海上
-于凌辰
-于魁智
-于鬯
-于仲文
-于再清
-于震
-於震前
-於震后
-於震中
-固定制
-毗婆尸佛
-尸棄佛
-划船
-划不來
-划拳
-划槳
-划動
-划艇
-划行
-划算
-總裁制
-恒生
-嚴云農
-手裏劍
-秦莊襄王
-伊東怜
-衛後莊公
-餘量
-並行
-郁郁青青
-協防
-對表格
-對表示
-對表達
-對表演
-對表明
-了然後
-戴表元
-張樂于張徐
-余力為
-葉叶琴
-万俟
-幾個
-澀谷區
-協調
-選手
-併發症
-併發重症
-併發模式
-併發型模式
-金色長髮
-紅色長髮
-一頭長髮
-的長髮
-黑色長髮
-前天
-昨天
-今天
-明天
-後天
-數學家
-科學家
-物理學家
-化學家
-生物學家
-天文學家
-游離
-子晳
-紅后假說
-書面
-不只
-高涌泉
-請求
-考試
-測試
-筆試
-口試
-冰冷
-王田里
-后姓
-台州
-田庄英雄
-計劃
-抑制劑
diff --git a/includes/zhtable/tradphrases_exclude.manual b/includes/zhtable/tradphrases_exclude.manual
deleted file mode 100644 (file)
index e6abb4e..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-三國誌
-聊齋誌異
-北迴
-南迴
-併排
-併進
-併在
-併成
-衝衝
-臺
-著
-佈
-纔
-采
-着
-借
-甦
-荐
-担
-可憐虫
-一齣
-上弔
-弔車
-弔橋
-弔嗓子
-弔床
-弔架
-弔桶
-弔桿
-弔橋
-弔燈
-弔環
-弔籃
-弔胃口
-弔臂
-弔銷
-形影相弔
-被髮
-散髮
-長髮
-髮毛
-髮端
-周而複始
-答複
-複興
-複舊
-顛複
-修複
-報複
-複活
-反複
-迴首
-彙總
-饑餓
-饑不擇食
-饑荒
-憑藉
-藉故
-藉口
-藉端
-藉詞
-藉酒
-蛋捲
-行李捲
-克裡
-纍纍
-華裡
-裡海
-瞭解
-明瞭
-發黴
-矇蔽
-矇住
-濛濛
-矇矇
-下麵
-白麵
-切麵
-和麵
-過水麵
-復甦
-複蘇
-甦醒
-体
-繫數
-遊擊
-馥鬱
-鬱鬱
-改製
-獃住
-獃氣
-獃子
-獃頭獃腦
-儘量
-希腊
-腊肉
-瞭如
-昇
-武鬆
-赤鬆
-黑鬆
-鬆林
-鬆科
-鬆濤
-鬆毛蟲
-鬆節油
-濕地鬆
-尼克鬆
-紮伊爾
-阿布紮比
-阿紮尼亞
-利比裡亞
-斯裡蘭卡
-烏蘇裡江
-加裡寧
-歐幾裡得
-格裡
-巴裡
-居裡
-卡裡
-墨索裡尼
-底裡
-裡人
-裡加
-裡裡
-馬裡
-裡拉
-阿裡
-裡斯
-鄰裡
-鄉裡
-百裡
-特裡
-海裡
-三元裡
-漏鬥
-春捲
-採邑
-嚮日
-佔城
-水錶
-名錶
-錶面
-彆腳
-併力
-併列
-併為
-豐富多採
-採採
-尼採
-小醜
-辛醜
-整齣
-嚴複
-枯幹
-干著急
-單於
-攻剋
-剋服
-闢邪
-釐米
-後樑
-石樑
-木樑
-舊莊
-介係詞
-介繫詞
-餘年
-大阪
-阪田
-豪杰
-七拚八湊
-一捲
-十捲
-上捲
-下捲
-加捲
-不捨
-不識檯舉
-稜登
-半弔子
-分布圖
-星鬥
-筋鬥
-斗鬨
-料鬥
-煙鬥
-熨鬥
-笆鬥
-箕鬥
-金鬥
-門鬥
-風鬥
-鬥子
-鬥笠
-老板娘
-剋制
-洋麵
-病癥
-製裁
-台製
-石家庄
-酒盃
-積极
-殭尸
-上梁不正
-項鍊
-鍊子
-鍊條
-拉鍊
-鉸鍊
-鍊鎖
-鐵鍊
-鍛鍊
-鍊乳
-鍊丹
-至于
-浮于
-附于
-次于
-于人
-助于
-行于
-于衷
-于事
-低于
-大于
-高于
-等于
-位于
-用于
-答覆
-複蓋
-反覆
-藉藉
-蘊藉
-蹈藉
-醞藉
-氆氌
-慰藉
-文藉
-枕藉
-狼藉
-別隻
-鼕鼕
-矇松雨
-佈雷
-丰度
-剪彩
-脣
-菴
-公裡
-箇中
-樑子
-樑書
-讚成
-讚同
-鐘表店
-精採
-鞭尸
-尸身
-尸首
-行尸走肉
-裹尸
-慼慼
-痠
-簑
-捱
-朝乾夕惕
-大曲酒
-神麴
-便于
-偏于
-勇于
-居于
-常見于
-強加于
-從事于
-忙于
-敢于
-服務于
-服從于
-樂于
-歸罪于
-歸諸于
-活動于
-瀕于
-苦于
-莫過于
-處于
-適于
-乾和
-鉤
-高陞
-大胆
-託福
-繫系
-酰
-醯
-大樑
-光採
-鍾錶
-複原
-參与
-浮夸
-剋日
-羡
-旅游
-穀風
-復讎
-避暑山庄
-遊牧
-烟草
-征
-占領
-入夥
-懸挂
-註釋
-浮遊
-冶鍊
-裡子
-裡外
-單隻
-聯係
-那裏
-殺虫藥
-好家伙
-姦污
-併發
-衚衕
index 24dc948..0a1cd37 100644 (file)
@@ -177,7 +177,11 @@ class Language {
         * @return Language
         */
        static function factory( $code ) {
-               global $wgLangObjCacheSize;
+               global $wgDummyLanguageCodes, $wgLangObjCacheSize;
+
+               if ( isset( $wgDummyLanguageCodes[$code] ) ) {
+                       $code = $wgDummyLanguageCodes[$code];
+               }
 
                // get the language object to process
                $langObj = isset( self::$mLangObjCache[$code] )
@@ -3012,25 +3016,26 @@ class Language {
         * @return string
         */
        function listToText( array $l ) {
-               $s = '';
                $m = count( $l ) - 1;
-
-               if ( $m === 0 ) {
-                       return $l[0];
-               } elseif ( $m === 1 ) {
-                       return $l[0] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $l[1];
-               } else {
-                       for ( $i = $m; $i >= 0; $i-- ) {
-                               if ( $i == $m ) {
-                                       $s = $l[$i];
-                               } elseif ( $i == $m - 1 ) {
-                                       $s = $l[$i] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $s;
-                               } else {
-                                       $s = $l[$i] . $this->getMessageFromDB( 'comma-separator' ) . $s;
-                               }
+               if ( $m < 0 ) {
+                       return '';
+               }
+               if ( $m > 0 ) {
+                       $and = $this->getMessageFromDB( 'and' );
+                       $space = $this->getMessageFromDB( 'word-separator' );
+                       if ( $m > 1 ) {
+                               $comma = $this->getMessageFromDB( 'comma-separator' );
                        }
-                       return $s;
                }
+               $s = $l[$m];
+               for ( $i = $m - 1; $i >= 0; $i-- ) {
+                       if ( $i == $m - 1 ) {
+                               $s = $l[$i] . $and . $space . $s;
+                       } else {
+                               $s = $l[$i] . $comma . $s;
+                       }
+               }
+               return $s;
        }
 
        /**
index fed8835..43afe65 100644 (file)
@@ -410,7 +410,7 @@ class LanguageConverter {
                                        $attr = $attrs[$attrName];
                                        // Don't convert URLs
                                        if ( !strpos( $attr, '://' ) ) {
-                                               $attr = $this->convertTo( $attr, $toVariant );
+                                               $attr = $this->recursiveConvertTopLevel( $attr, $toVariant );
                                        }
 
                                        // Remove HTML tags to avoid disrupting the layout
index ea81afb..04b2e16 100644 (file)
@@ -86,7 +86,7 @@ class LanguageZh_hans extends Language {
                $segments = array();
 
                foreach ( $intervals as $intervalName => $intervalValue ) {
-                       $message = new Message( 'duration-' . $intervalName, array( $intervalValue ) );
+                       $message = wfMessage( 'duration-' . $intervalName )->numParams( $intervalValue );
                        $segments[] = $message->inLanguage( $this )->escaped();
                }
 
index 0a5f059..0a380a6 100644 (file)
@@ -42,5 +42,9 @@
                <pluralRules locales="fa hu ja vi">
                        <pluralRule count="one">n is 1</pluralRule>
                </pluralRules>
+               <!-- Copied from "bh" -->
+               <pluralRules locales="bho">
+                       <pluralRule count="one">n in 0..1</pluralRule>
+               </pluralRules>
        </plurals>
 </supplementalData>
index 799710a..abd4d1c 100644 (file)
@@ -584,9 +584,9 @@ Alamat IP Droëneuh nakeuh $3, ngön ID neutheun nakeuh $5. Tulông peuseureuta
 'newarticletext' => "Droëneuh   ka neuseutot u ôn nyang goh na. Keu peugöt ôn nyan, neukeutik asoë ôn di  kutak di yup nyoë (ngiëng [[{{MediaWiki:Helppage}}|ôn bantu]] keu beurita leubèh lanjut). Meunyo Droëneuh  hana neusaja ka trôk keunoë, teugon '''back''' nyang na bak layeuë.",
 'noarticletext' => 'Hana naseukah jinoë lam ôn nyoë.
 Ji Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] bak ôn-ôn la’én, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} log nyang na hubôngan], atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} neu\'andam ôn nyoë]</span>.',
-'noarticletext-nopermission' => 'Hana asoe bak on nyoe jinoe.
-Droeneuh jeuet [[Special:Search/{{PAGENAME}}|neumita keu nan on nyoe]] bak on la\'en,
-atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} neumita log nyang na hubongan]</span>.',
+'noarticletext-nopermission' => 'Hana asoë bak ôn nyoë jinoë.
+Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] bak ôn-ôn la\'én,
+atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} neumita log nyang na meuhubông]</span>, tapi Droëneuh hana idin keu neupeugöt ôn nyoë',
 'updated' => '(Seubarô)',
 'note' => "'''Ceunatat:'''",
 'previewnote' => "'''Beu neuingat meunyo ôn nyoë goh lom neukeubah!'''",
@@ -719,6 +719,9 @@ Surat-e droeneuh h'an geupeugah keu ureueng nyan.",
 
 'grouppage-sysop' => '{{ns:project}}:Ureuëng urôh',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ureuëng nguy barô',
+
 # User rights log
 'rightslog' => 'Log neuubah hak peuhah',
 
@@ -894,9 +897,6 @@ Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 'linksearch-ok' => 'Mita',
 'linksearch-line' => '$1 meusambat nibak $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ureuëng nguy barô',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(dapeuta anggèëta)',
 
@@ -969,10 +969,11 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
 # Namespace form on various pages
 'namespace' => 'Ruweuëng nan:',
 'invert' => 'Peubalék peuniléh',
+'namespace_association' => 'Ruweuëng nan meuhubông',
 'blanknamespace' => '(Keuë)',
 
 # Contributions
-'contributions' => 'Peuneugöt',
+'contributions' => 'Peuneugöt {{GENDER:$1|ureuëng nguy}}',
 'contributions-title' => 'Peuneugöt ureuëng nguy keu $1',
 'mycontris' => 'Peuneugöt',
 'contribsub2' => 'Keu $1 ($2)',
@@ -1006,7 +1007,7 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
 'whatlinkshere-hideredirs' => '$1 peuninah',
 'whatlinkshere-hidetrans' => '$1 transklusi',
 'whatlinkshere-hidelinks' => '$1 hubông',
-'whatlinkshere-hideimages' => '$1 hubong gamba',
+'whatlinkshere-hideimages' => '$1 hubông beureukaih',
 'whatlinkshere-filters' => 'Saréng',
 
 # Block/unblock
index 8f83464..a4a0b31 100644 (file)
@@ -764,7 +764,6 @@ $2
 'template-protected' => '(حماية كاملة)',
 'template-semiprotected' => '(حماية جزئية)',
 'hiddencategories' => '{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:',
-'nocreatetitle' => 'تم تحديد إنشاء الصفحات',
 'nocreatetext' => 'قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.
 يمكنك العودة وتحرير صفحة موجودة بالفعل، أو [[Special:UserLogin|الدخول أو تسجيل حساب]].',
 'nocreate-loggedin' => 'أنت لا تمتلك الصلاحية لإنشاء صفحات جديدة.',
@@ -1040,6 +1039,9 @@ $1",
 'prefs-help-email' => 'عنوان البريد الإلكتروني هو أمر اختياري، ولكن ستحتاج لإعادة تعيين كلمة المرور، إن نسيت كلمة المرور الخاصة بك.',
 'prefs-help-email-others' => 'يمكنك أيضا اختيار للسماح للآخرين الاتصال بك عن طريق صفحة المستخدم أو نقاش المستخدم الخاص بك دون الحاجة إلى الكشف عن الهوية الخاصة بك.',
 
+# Special:Log/newusers
+'newuserlogpage' => 'سجل إنشاء المستخدمين',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'modifi hal page',
 
@@ -1148,9 +1150,6 @@ $1",
 # Special:LinkSearch
 'linksearch-line' => '$1 موصولة من $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'سجل إنشاء المستخدمين',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(قائمة الأعضاء)',
 
index de1bc5a..244c803 100644 (file)
@@ -975,6 +975,7 @@ Dit lyk of dit verwyder is.',
 'edit-already-exists' => 'Die bladsy is nie geskep nie.
 Dit bestaan alreeds.',
 'defaultmessagetext' => 'Verstekteks',
+'content-failed-to-parse' => 'Dit was nie moontlik om die inhoud van die MIME-tipe $2 vir die model $1 te verwerk nie: $3.',
 'invalid-content-data' => 'Ongeldige inhoud',
 'content-not-allowed-here' => '"$1" word nie op bladsy [[$2]] toegelaat nie.',
 
@@ -1348,7 +1349,7 @@ Die aksie kan nie ongedaan gemaak word nie.',
 'prefs-textboxsize' => 'Afmetings van die wysigingsvenster',
 'youremail' => 'E-pos',
 'username' => 'Gebruikersnaam:',
-'uid' => 'Gebruiker-ID:',
+'uid' => '{{GENDER:$1|Gebruikersnommer}}:',
 'prefs-memberingroups' => 'Lid van {{PLURAL:$1|groep|groepe}}:',
 'prefs-registration' => 'Registrasiedatum:',
 'yourrealname' => 'Regte naam:',
@@ -1499,12 +1500,13 @@ Die inligting is vir ander gebruikers sigbaar.',
 'right-sendemail' => 'Stuur e-pos aan ander gebruikers',
 'right-passwordreset' => 'Wys e-posse vir herstel van wagwoord',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboek van nuwe gebruikers',
+'newuserlogpagetext' => "Dit is 'n logboek van gebruikers wat onlangs ingeteken het.",
+
 # User rights log
 'rightslog' => 'Gebruikersregtelogboek',
 'rightslogtext' => 'Hier onder is die logboek van gebruikersregte wat verander is.',
-'rightslogentry' => 'wysig gebruikersregte vir $1 van $2 na $3',
-'rightslogentry-autopromote' => 'was outomaties bevorder van $2 na $3',
-'rightsnone' => '(geen)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lees die bladsy',
@@ -1748,6 +1750,7 @@ As daar steeds probleme is, kontak 'n [[Special:ListUsers/sysop|administrateur]]
 'backend-fail-notsame' => "'n Nie-identiese lêer bestaan al reeds by $1.",
 'backend-fail-invalidpath' => "$1 is nie 'n geldige stoorplek nie.",
 'backend-fail-delete' => 'Die lêer $1 kon nie geskrap word nie.',
+'backend-fail-describe' => 'Kon nie metadata vir lêer "$1" verander nie.',
 'backend-fail-alreadyexists' => 'Die lêer $1 bestaan al reeds.',
 'backend-fail-store' => 'Kon nie lêer $1 in $2 stoor nie.',
 'backend-fail-copy' => 'Kon nie lêer $1 na $2 kopieer nie.',
@@ -2157,10 +2160,6 @@ Ondersteunde protokolle: <code>$1</code> (moenie hierdie in u soektog gebruik ni
 'activeusers-hidesysops' => 'Versteek administrateurs',
 'activeusers-noresult' => 'Geen gebruikers gevind nie.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboek van nuwe gebruikers',
-'newuserlogpagetext' => "Dit is 'n logboek van gebruikers wat onlangs ingeteken het.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gebruikersgroepregte',
 'listgrouprights-summary' => "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.
@@ -2257,6 +2256,11 @@ As u die bladsy later van u dophoulys wil verwyder, kliek \"verwyder van dophoul
 'enotif_mailer' => '{{SITENAME}} E-pos kennisgewings',
 'enotif_reset' => 'Merk alle bladsye as besoek',
 'enotif_impersonal_salutation' => '{{SITENAME}} gebruiker',
+'enotif_subject_deleted' => '{{SITENAME}}: bladsy $1 is verwyder deur {{GENDER:$2|$2}}',
+'enotif_subject_created' => '{{SITENAME}}: bladsy $1 is geskep deur {{GENDER:$2|$2}}',
+'enotif_subject_moved' => '{{SITENAME}}: bladsy $1 is geskuif deur {{GENDER:$2|$2}}',
+'enotif_subject_restored' => '{{SITENAME}}: bladsy $1 is teruggeplaas deur {{GENDER:$2|$2}}',
+'enotif_subject_changed' => '{{SITENAME}}: bladsy $1 is gewysig deur {{GENDER:$2|$2}}',
 'enotif_lastvisited' => 'Sien $1 vir alle wysigings sedert u laaste besoek.',
 'enotif_lastdiff' => 'Sien $1 om hierdie wysiging te bekyk.',
 'enotif_anon_editor' => 'anonieme gebruiker $1',
@@ -2289,6 +2293,8 @@ $UNWATCHURL
 
 Terugvoer en verdere bystand:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'geskep',
+'changed' => 'verander',
 
 # Delete
 'deletepage' => 'Skrap bladsy',
@@ -2749,6 +2755,7 @@ Die teikenartikel "[[:$1]]" bestaan reeds. Wil u dit skrap om plek te maak vir d
 'immobile-target-namespace-iw' => "'n Interwiki-skakel is nie 'n geldige bestemming vir die skuif van die bladsy nie.",
 'immobile-source-page' => 'Die bladsy kan nie geskuif word nie.',
 'immobile-target-page' => 'Dit is nie moontlik om na die titel toe te skuif nie.',
+'bad-target-model' => "Die gewenste bestemming gebruik 'n ander inhoudsmodel. Dit is nie moontlik van $1 na $2 om te skakel nie.",
 'imagenocrossnamespace' => "'n Medialêer kan nie na 'n ander naamruimte geskuif word nie",
 'nonfile-cannot-move-to-file' => 'Net lêers kan na die lêernaamspasie geskuif word',
 'imagetypemismatch' => 'Die nuwe lêer se uitbreiding pas nie by die lêertipe nie',
@@ -2862,6 +2869,7 @@ Die lêer is slegs gedeeltelik opgelaai.',
 '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-options-wrong' => 'Verkeerde {{PLURAL:$2|opsie|opsies}}: <nowiki>$1</nowiki>',
 
 # Import log
 'importlogpage' => 'Invoer logboek',
@@ -2981,10 +2989,12 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
 
 # Info page
 'pageinfo-title' => 'Inligting oor "$1"',
+'pageinfo-not-current' => 'Hierdie gegewens is slegs vir die huidige weergawe beskikbaar.',
 'pageinfo-header-basic' => 'Basiese inligting',
 'pageinfo-header-edits' => 'Wysigingsgeskiedenis',
 'pageinfo-header-restrictions' => 'Bladsybeskerming',
 'pageinfo-header-properties' => 'Bladsy-eienskappe',
+'pageinfo-display-title' => 'Wys titel',
 'pageinfo-default-sort' => 'Standaard sorteerwyse',
 'pageinfo-length' => 'Bldasylengte (in grepe)',
 'pageinfo-article-id' => 'Bladsy-ID',
@@ -2996,6 +3006,7 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
 'pageinfo-watchers' => 'Aantal dophouers',
 'pageinfo-redirects-name' => 'Aansture na die bladsy',
 'pageinfo-subpages-name' => 'Subblaaie van die bladsy',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|aanstuur|aansture}}; $3 {{PLURAL:$3|nie-aanstuur|nie-aansture}})',
 'pageinfo-firstuser' => 'Gebruiker die die bladsy geskep het',
 'pageinfo-firsttime' => 'Datum waarop die bladsy geskep is',
 'pageinfo-lastuser' => 'Laatste wysiger',
@@ -3010,8 +3021,11 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
 'pageinfo-toolboxlink' => 'Bladinligting',
 'pageinfo-redirectsto' => 'Stuur aan na',
 'pageinfo-redirectsto-info' => 'Inligting',
+'pageinfo-contentpage' => "Getel as 'n bladsy met inhoud",
 'pageinfo-contentpage-yes' => 'Ja',
+'pageinfo-protect-cascading' => 'Beveiliging werk vanaf hier deur',
 'pageinfo-protect-cascading-yes' => 'Ja',
+'pageinfo-protect-cascading-from' => "Bladsy is vanuit 'n ander blad beveilig",
 
 # Skin names
 'skinname-standard' => 'Standaard',
@@ -3028,6 +3042,8 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
 'markedaspatrollederror' => 'Kan nie as gekontroleerd merk nie',
 'markedaspatrollederrortext' => "U moet 'n weergawe spesifiseer om as gekontroleerd te merk.",
 'markedaspatrollederror-noautopatrol' => 'U kan nie u eie veranderinge as gekontroleerd merk nie.',
+'markedaspatrollednotify' => 'Hierdie wysiging aan $1 is as gekontroleerd gemerk.',
+'markedaspatrollederrornotify' => 'Merk as gekontroleerd het misluk.',
 
 # Patrol log
 'patrol-log-page' => 'Kontroleringslogboek',
@@ -3090,6 +3106,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuut|$1 minute}}',
 'hours' => '{{PLURAL:$1|$1 uur|$1 ure}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dae}}',
+'months' => '{{PLURAL:$1|een maand|$1 maande}}',
+'years' => '{{PLURAL:$1|een jaar|$1 jaar}}',
 'ago' => '$1 gelede',
 'just-now' => 'Nou net',
 
@@ -3701,6 +3719,7 @@ U kan ook die [[Special:EditWatchlist|standaard opdaterigskerm gebruik]].',
 'version-license' => 'Lisensie',
 'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[//www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
 'version-poweredby-others' => 'andere',
+'version-credits-summary' => 'Ons erken graag die volgende persone vir hul bydrae aan [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki is vrye sagteware, u kan MediaWiki versprei en/of wysig onder die voorwaardes van die "GNU Algemene Publieke Lisensie", soos deur die "Free Software Foundation" gepubliseer; óf weergawe 2 van die lisensie, of (as u wil) enige latere weergawe daarvan.
 
 MediaWiki word versprei met die hoop dat dit nuttig sal wees, maar SONDER ENIGE WAARBORGE, selfs sonder geïmpliseerde waarborg van VERHANDELBAARHEID of GESKIKTHEID VIR \'N SPESIFIEKE DOEL. Verwys na die "GNU Algemene Publieke Lisensie" vir meer besonderhede.
@@ -3845,6 +3864,10 @@ Beelde word in hulle volle resolusie gewys. Ander lêertipes word direk met hull
 'logentry-newusers-create2' => 'Gebruiker $3 is deur $1 geskep',
 'logentry-newusers-autocreate' => 'Die gebruiker $1 is outomaties geskep',
 'newuserlog-byemail' => 'wagwoord is per e-pos versend',
+'logentry-rights-rights' => '$1 het groepslidmaatskap vir $3 van $4 na $5 gewysig',
+'logentry-rights-rights-legacy' => '$1 het groepslidmaatskap vir $3 gewysig',
+'logentry-rights-autopromote' => '$1 is outomaties gepromoveerd van $4 na $5',
+'rightsnone' => '(geen)',
 
 # Feedback
 'feedback-bugornote' => 'As u reg is om \'n tegniese probleem in detail te beskryf, [$1 rapporteer \'n fout].
index 859e6d7..88632af 100644 (file)
@@ -1130,11 +1130,12 @@ Mundeni me zgjedhe që të tjerët me ju kontaktue përmjet faqe së diskutimit
 'right-userrights' => 'Redakto të gjitha të drejtat e përdoruesit',
 'right-passwordreset' => 'Fjalëkalimi Reset e një përdoruesi ([[Special:PasswordReset|faqe veçantë]])',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Regjistri i krijimit të përdoruesve',
+
 # User rights log
 'rightslog' => 'Regjsitri i tagrit të përdoruesve',
 'rightslogtext' => 'Ky është një regjistër për ndryshimet e titujve të përdoruesve.',
-'rightslogentry' => 'të drejtat e $1 u ndryshuan prej $2 në $3',
-'rightsnone' => '(asgjë)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lexo këtë faqe',
@@ -1272,9 +1273,6 @@ Faqet në [[Special:Watchlist|listën tuej të mbikëqyrjes]] janë '''të theks
 # Special:LinkSearch
 'linksearch' => 'Vegzat e jashtme',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Regjistri i krijimit të përdoruesve',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lista e antarëve)',
 
@@ -1612,6 +1610,7 @@ Tjerat kanë me mbetë të mshefuna.
 # New logging system
 'revdelete-restricted' => 'u vendosën kufizime për administruesit',
 'revdelete-unrestricted' => 'u hoqën kufizimet për administruesit',
+'rightsnone' => '(asgjë)',
 
 # Search suggestions
 'searchsuggest-search' => 'Kërkim',
diff --git a/languages/messages/MessagesAls.php b/languages/messages/MessagesAls.php
deleted file mode 100644 (file)
index 867d2a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/** Alemannisch
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- * @comment Deprecated code. Falls back to 'gsw'.
- */
-
-$fallback = 'gsw, de';
index aa2c49b..d3f815b 100644 (file)
@@ -1022,11 +1022,13 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'right-userrights' => 'ያባላት ሁሉ መብቶች ለማስተካከል',
 'right-sendemail' => 'ወደ ሌላ አባል ኢ-ሜል ለመላክ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'የአባልነት መዝገብ (user log)',
+'newuserlogpagetext' => 'ይህ መዝገብ ወደ አባልነት የገቡትን ብዕር ስሞች ይዘርዝራል።',
+
 # User rights log
 'rightslog' => 'የአባል መብቶች መዝገብ',
 'rightslogtext' => 'ይህ መዝገብ የአባል መብቶች ሲለወጡ ይዘረዝራል።',
-'rightslogentry' => 'የ$1 ማዕረግ ከ$2 ወደ $3 ለወጠ',
-'rightsnone' => '(የለም)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ይህን ገጽ ለማንበብ',
@@ -1480,10 +1482,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'activeusers-hidesysops' => 'መጋቢዎች ይደበቁ',
 'activeusers-noresult' => 'ማንም ተጠቃሚ አልተገኘም።',
 
-# Special:Log/newusers
-'newuserlogpage' => 'የአባልነት መዝገብ (user log)',
-'newuserlogpagetext' => 'ይህ መዝገብ ወደ አባልነት የገቡትን ብዕር ስሞች ይዘርዝራል።',
-
 # Special:ListGroupRights
 'listgrouprights' => 'የተጠቃሚ ስብስባ መብቶች',
 'listgrouprights-group' => 'ስብስባ',
@@ -1582,6 +1580,8 @@ $NEWPAGE
 
 በተጨማሪ ለመረዳት፦
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ተፈጠረ',
+'changed' => 'ተለወጠ',
 
 # Delete
 'deletepage' => 'ገጹ ይጥፋ',
@@ -2573,6 +2573,7 @@ $3
 # New logging system
 'logentry-delete-delete' => '$1 ገጹን $3 አጠፋ',
 'newuserlog-byemail' => 'ማለፊያ-ቃል በኤ-መልዕክት ተልኳል',
+'rightsnone' => '(የለም)',
 
 # Feedback
 'feedback-cancel' => 'ይቅር',
index b5a3674..3e81728 100644 (file)
@@ -1338,12 +1338,13 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
 'right-sendemail' => 'Ninviar un correu electronico a atros usuarios',
 'right-passwordreset' => 'Veyer os correus electronicos de restabimiento de claus',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Rechistro de nuevos usuarios',
+'newuserlogpagetext' => "Isto ye un rechistro de creyación d'usuarios.",
+
 # User rights log
 'rightslog' => "Rechistro de cambios en os dreitos d'os usuarios",
 'rightslogtext' => "Iste ye un rechistro d'os cambios en os dreitos d'os usuarios",
-'rightslogentry' => "ha cambiato os dreitos d'usuario de $1: de $2 a $3",
-'rightslogentry-autopromote' => "S'ha promovito automaticament dende $2 ta $3",
-'rightsnone' => '(garra)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leyer ista pachina',
@@ -1956,10 +1957,6 @@ Protocolos suportados: <code>$1</code> (no los adhiba en a suya busca).',
 'activeusers-hidesysops' => 'Amagar administradors',
 'activeusers-noresult' => "No s'han trobato usuarios.",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Rechistro de nuevos usuarios',
-'newuserlogpagetext' => "Isto ye un rechistro de creyación d'usuarios.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Dreitos d'a colla d'usuarios",
 'listgrouprights-summary' => "Contino trobará a lista de collas d'usuario definitas en iste wiki, con os suyos dreitos d'acceso asociatos. Tamién puet trobar aquí [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre os dreitos individuals.",
@@ -2082,6 +2079,8 @@ Ta eliminar a pachina d\'a suya lista de seguimiento, vaiga ta $UNWATCHURL
 
 Sucherencias y aduya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creyata',
+'changed' => 'editata',
 
 # Delete
 'deletepage' => 'Borrar ista pachina',
@@ -3603,6 +3602,7 @@ As imachens s'amuestran en resolución completa, a resta de fichers fan encetar
 'logentry-newusers-create2' => "$1 creyó una cuenta d'usuario $3",
 'logentry-newusers-autocreate' => "S'ha creyau automaticament a cuenta $1",
 'newuserlog-byemail' => 'Clau ninviata por correu electronico',
+'rightsnone' => '(garra)',
 
 # Feedback
 'feedback-bugornote' => "Si creye que puede describir en detalle un problema tecnico, [$1 informe d'un bug] por favor.
index 69a8b5d..87e3aaa 100644 (file)
@@ -631,6 +631,9 @@ folcliċum āgnunge oþþe ȝelīċum frēom horde (sēo $1 for āscungum).
 
 'grouppage-sysop' => '{{ns:project}}:Beƿitendas',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brūcenda ȝesceaft ȝetalu',
+
 # User rights log
 'rightslog' => 'Brūcenda riht cranic',
 
@@ -833,9 +836,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ActiveUsers
 'activeusers' => 'Hƿata brūcenda ȝetalu',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brūcenda ȝesceaft ȝetalu',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Clīeƿen',
 'listgrouprights-rights' => 'Riht',
@@ -877,6 +877,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'enotif_lastvisited' => 'Sēo $1 for eall hƿearfas siþþan þīn læst cyme.',
 'enotif_lastdiff' => 'Sēo $1 to sēonne þisne hƿearf.',
 'enotif_anon_editor' => 'uncūþ brūcend $1',
+'created' => 'ȝescapen',
+'changed' => 'hƿorfen',
 
 # Delete
 'deletepage' => 'Sīdan āfeorsian',
index 5591f1e..f04d2bb 100644 (file)
@@ -602,7 +602,7 @@ $messages = array(
 'newwindow' => '(تفتح في نافذة جديدة)',
 'cancel' => 'إلغاء',
 'moredotdotdot' => 'المزيد...',
-'mypage' => 'صÙ\81حتÙ\8a',
+'mypage' => 'صÙ\81حة',
 'mytalk' => 'نقاش',
 'anontalk' => 'النقاش لعنوان الأيبي هذا',
 'navigation' => 'إبحار',
@@ -635,6 +635,7 @@ $messages = array(
 'namespaces' => 'النطاقات',
 'variants' => 'المتغيرات',
 
+'navigation-heading' => 'قائمة التصفح',
 'errorpagetitle' => 'خطأ',
 'returnto' => 'ارجع إلى $1.',
 'tagline' => 'من {{SITENAME}}',
@@ -847,7 +848,7 @@ $1',
 'actionthrottled' => 'لا يمكن عمل المزيد من هذا الفعل',
 'actionthrottledtext' => 'كإجراء ضد السبام، أنت ممنوع من إجراء هذا الفعل عدد كبير من المرات في فترة زمنية قصيرة، ولقد تجاوزت هذا الحد.
 من فضلك حاول مرة ثانية خلال عدة دقائق.',
-'protectedpagetext' => 'هذه الصفحة تمت حمايتها لمنع التعديل.',
+'protectedpagetext' => 'هذه الصفحة تمت حمايتها لمنع التعديل أو أية عمليات أخرى.',
 'viewsourcetext' => 'يمكنك رؤية ونسخ مصدر هذه الصفحة:',
 'viewyourtext' => "يمكنك رؤية ونسخ مصدر ''' تعديلاتك ''' في هذه الصفحة:",
 'protectedinterface' => 'توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.
@@ -899,7 +900,7 @@ $2',
 'userlogin' => 'دخول / إنشاء حساب',
 'userloginnocreate' => 'تسجيل الدخول',
 'logout' => 'تسجيل الخروج',
-'userlogout' => 'تسجÙ\8aÙ\84 Ø§Ù\84خرÙ\88ج',
+'userlogout' => 'اخرج',
 'notloggedin' => 'غير مسجل الدخول',
 'nologin' => "ليس لديك حساب؟ '''$1'''.",
 'nologinlink' => 'أنشئ حسابا',
@@ -986,6 +987,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => "خطأ غير معروف في وظيفة البريد PHP's mail()",
 'user-mail-no-addy' => 'لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.',
+'user-mail-no-body' => 'محاول ارسال بريد إلكتروني فارغ أو ذو نص قصير.',
 
 # Change password dialog
 'resetpass' => 'تغيير كلمة السر',
@@ -1046,6 +1048,7 @@ $2
 'changeemail-oldemail' => 'عنوان البريد الإلكتروني الحالي:',
 'changeemail-newemail' => 'عنوان البريد الإلكتروني الجديد:',
 'changeemail-none' => '(لا شيء)',
+'changeemail-password' => 'كلمة سر {{SITENAME}} الخاصة بك:',
 'changeemail-submit' => 'غيّر البريد الإلكتروني',
 'changeemail-cancel' => 'إلغاء',
 
@@ -1175,7 +1178,7 @@ $2
 'note' => "'''ملاحظة:'''",
 'previewnote' => "'''تذكر أن هذه مجرد معاينة أولية.'''
 لم تحفظ تغييراتك إلى الآن!",
-'continue-editing' => 'Ø£Ù\83Ù\85Ù\84 التحرير',
+'continue-editing' => 'اذÙ\87ب Ù\84صÙ\86دÙ\88Ù\82 التحرير',
 'previewconflict' => 'هذا العرض يوضح النص الموجود في صندوق التحرير العلوي والذي سيظهر إذا اخترت الحفظ.',
 'session_fail_preview' => "'''عذرا! لم نتمكن من حفظ التعديلات التي قمت بها نتيجة لضياع بيانات هذه الجلسة.
 من فضلك حاول مرة أخرى.
@@ -1638,9 +1641,9 @@ $1",
 'prefs-emailconfirm-label' => 'تأكيد البريد الإلكتروني:',
 'prefs-textboxsize' => 'حجم نافذة التحرير',
 'youremail' => 'البريد:',
-'username' => 'اسم المستخدم:',
-'uid' => 'رقم المستخدم:',
-'prefs-memberingroups' => 'عضو في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:',
+'username' => '{{GENDER:$1|اسم المستخدم|اسم المستخدمة}}:',
+'uid' => 'رقم {{GENDER:$1|المستخدم|المستخدمة}}:',
+'prefs-memberingroups' => '{{GENDER:$2|عضو|عضوة}} في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:',
 'prefs-registration' => 'وقت التسجيل:',
 'yourrealname' => 'الاسم الحقيقي:',
 'yourlanguage' => 'اللغة:',
@@ -1660,7 +1663,7 @@ $1",
 'prefs-help-realname' => 'الاسم الحقيقي اختياري.
 لو اخترت أن توفره، فسيستخدم في الإشارة إلى عملك.',
 'prefs-help-email' => 'تحديد عنوان البريد الإلكتروني اختياري، ولكنه يلزم لإعادة تعيين كلمة المرور في حال نسيت كلمة المرور الخاصة بك.',
-'prefs-help-email-others' => 'يمكنك أيضا أن {{GENDER:$1|تسمح|تسمحي}} للآخرين الاتصال بك عن طريق وصلة في صفحة المستخدم أو نقاش المستخدم الخاصة بك. لا يكشف بريدك الإلكتروني عندما يراسلك أحد بهذه الطريقة، ولكن إذا راسلت أحداً سيرى بريدك الإلكتروني.',
+'prefs-help-email-others' => 'يمكنك أيضا أن تسمح للآخرين الاتصال بك عن طريق وصلة في صفحة المستخدم أو نقاش المستخدم الخاصة بك. لا يكشف بريدك الإلكتروني عندما يراسلك أحد بهذه الطريقة، ولكن إذا قمت بالرد سيرى بريدك الإلكتروني.',
 'prefs-help-email-required' => 'عنوان البريد الإلكتروني مطلوب.',
 'prefs-info' => 'المعلومات الأساسية',
 'prefs-i18n' => 'الترجمة',
@@ -1789,15 +1792,13 @@ $1",
 'right-sendemail' => 'إرسال رسائل بريد إلكتروني إلى مستخدمين آخرين',
 'right-passwordreset' => 'عرض رسائل إعادة ضبط كلمات السر',
 
+# Special:Log/newusers
+'newuserlogpage' => 'سجل إنشاء المستخدمين',
+'newuserlogpagetext' => 'هذا سجل بعمليات إنشاء المستخدمين.',
+
 # User rights log
 'rightslog' => 'سجل صلاحيات المستخدمين',
 'rightslogtext' => 'هذا سجل بالتغييرات في صلاحيات المستخدمين.',
-'rightslogentry' => 'غير صلاحيات $1 من $2 إلى $3',
-'rightslogentry-autopromote' => 'تمت ترقيته تلقائيا من $2 إلى $3',
-'logentry-rights-rights' => 'غير $1 صلاحيات $3 من $4 إلى $5',
-'logentry-rights-rights-legacy' => 'غير $1 صلاحيات $3',
-'logentry-rights-autopromote' => 'تمت ترقية $1 تلقائياً من  $4 إلى $5',
-'rightsnone' => '(لا شيء)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'قراءة هذه الصفحة',
@@ -1937,7 +1938,7 @@ $1",
 'filename-tooshort' => 'اسم الملف قصير جدا.',
 'filetype-banned' => 'نوع الملف هذا ممنوع.',
 'verification-error' => 'لم يجتز الملف تحقق صحة الملفات.',
-'hookaborted' => 'اÙ\84تعدÙ\8aÙ\84 Ø§Ù\84Ø°Ù\8a ØªØ­Ø§Ù\88Ù\84 Ø£Ù\86 ØªÙ\82Ù\88Ù\85 Ø¨Ù\87 Ø£Ø¬Ù\87ض Ù\85Ù\86 Ù\82بÙ\84 ØªÙ\85دÙ\8aد Ù\87Ù\88Ù\83',
+'hookaborted' => 'اÙ\84تعدÙ\8aÙ\84 Ø§Ù\84Ø°Ù\8a ØªØ­Ø§Ù\88Ù\84 Ø£Ù\86 ØªÙ\82Ù\88Ù\85 Ø¨Ù\87 Ø£Ø¬Ù\87ض Ù\85Ù\86 Ù\82بÙ\84 Ø§Ù\85تداد.',
 'illegal-filename' => 'لا يسمح باسم الملف هذا.',
 'overwrite' => 'لا يسمح بالكتابة فوق ملف موجود.',
 'unknown-error' => 'خطأ غير معروف حدث.',
@@ -2438,7 +2439,7 @@ $1',
 'linksearch-ok' => 'بحث',
 'linksearch-text' => 'Wildcards مثل "*.wikipedia.org" يمكن استخدامها.
 تحتاج على الأقل إلى نطاق ذو مستوى أعلى، كمثال "*.org".<br />
-البروتوكولات المدعومة: <code>$1</code> (لا تقم بإضافة أي من هذه إلى بحثك).',
+{{PLURAL:$2|البروتوكول المدعوم|البروتوكولان المدعومان|البروتوكولات المدعومة}}: <code>$1</code> (تتم إضافة http:// تلقائيا عند عدم تحديد أي بروتوكول).',
 'linksearch-line' => '$1 موصولة من $2',
 'linksearch-error' => 'الكروت الخاصة يمكن أن تظهر فقط في بداية اسم المضيف.',
 
@@ -2457,10 +2458,6 @@ $1',
 'activeusers-hidesysops' => 'أخف الإداريين',
 'activeusers-noresult' => 'لم يعثر على أي مستخدمين',
 
-# Special:Log/newusers
-'newuserlogpage' => 'سجل إنشاء المستخدمين',
-'newuserlogpagetext' => 'هذا سجل بعمليات إنشاء المستخدمين.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
 'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
@@ -2487,7 +2484,7 @@ $1',
 'emailuser-title-target' => 'راسل بالبريد الإلكتروني هذا  {{GENDER:$1| المستخدم}}',
 'emailuser-title-notarget' => 'مراسلة المستخدم',
 'emailpage' => 'إرسال رسالة للمستخدم',
-'emailpagetext' => 'يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى هذا المستخدم.
+'emailpagetext' => 'يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.
 سيظهر عنوان البريد الإلكتروني الذي أدخلته في [[Special:Preferences|تفضيلاتك]] كعنوان المرسل في البريد الإلكتروني، كي يستطيع المتلقي الرد عليك مباشرة.',
 'usermailererror' => 'جسم البريد أرجع خطأ:',
 'defemailsubject' => 'رسالة {{SITENAME}} من المستخدم "$1"',
@@ -2526,8 +2523,8 @@ $1',
 'watchnologin' => 'غير مسجل الدخول',
 'watchnologintext' => 'يجب أن تكون [[Special:UserLogin|مسجل الدخول]] لتعدل قائمة مراقبتك.',
 'addwatch' => 'إضافة إلى قائمة المراقبة',
-'addedwatchtext' => "أضيفت الصفحة  \"[[:\$1]]\" إلى [[Special:Watchlist|قائمة مراقبتك]].
-التغييرات القادمة على هذه الصفحة وصفحة نقاشها سيتم وضعها هناك، وسيتم إظهار اسم الصفحة بخط '''غليظ''' في صفحة [[Special:RecentChanges|أحدث التغييرات]] لتسهيل تحديدها واكتشافها.",
+'addedwatchtext' => 'أضيفت الصفحة  "[[:$1]]" إلى [[Special:Watchlist|قائمة مراقبتك]].
+التغييرات القادمة على هذه الصفحة وصفحة نقاشها سيتم وضعها هناك.',
 'removewatch' => 'إزالة من قائمة المراقبة',
 'removedwatchtext' => 'أزيلت الصفحة "[[:$1]]" من [[Special:Watchlist|قائمة مراقبتك]].',
 'watch' => 'راقب',
@@ -2558,14 +2555,22 @@ $1',
 'enotif_impersonal_salutation' => 'مستخدم {{SITENAME}}',
 'enotif_subject_deleted' => 'الصفحة {{SITENAME}} $1 حذفها {{الجنس: $2 | $2 }}',
 'enotif_subject_created' => 'الصفحة {{SITENAME}}  $1  أنشأها {{الجنس: $2 | $2 }}',
-'enotif_body_intro_deleted' => 'إن صفحة {{SITENAME}} بعنوان $1 {{GENDER:$2|حذفها|حذفتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.',
+'enotif_subject_moved' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|نقلها|نقلتها}} $2',
+'enotif_subject_restored' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|استرجعها|استرجعتها}} $2',
+'enotif_subject_changed' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|عدلها|عدلتها}} $2',
+'enotif_body_intro_deleted' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|حذفها|حذفتها}} $2 في $PAGEEDITDATE.راجع $3.',
+'enotif_body_intro_created' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|أنشأها|أنشأتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.',
+'enotif_body_intro_moved' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|نقلها|نقلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.',
+'enotif_body_intro_restored' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|استرجعها|استرجعتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.',
+'enotif_body_intro_changed' => 'صفحة {{SITENAME}} $1 {{GENDER:$2|عدلها|عدلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.',
 'enotif_lastvisited' => 'انظر $1 لكل التغييرات منذ زيارتك الأخيرة.',
 'enotif_lastdiff' => 'انظر $1 لرؤية هذا التغيير.',
 'enotif_anon_editor' => 'مستخدم مجهول $1',
 'enotif_body' => 'عزيزي $WATCHINGUSERNAME
-صفحة  $PAGETITLE قد  $CHANGEDORCREATED في $PAGEEDITDATE بواسطة $PAGEEDITOR, انظر $PAGETITLE_URL للنسخة الحالية
-ملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT
 
+$PAGEINTRO $NEWPAGE
+
+ملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT
 
 الاتصال بالمحرر:
 البريد: $PAGEEDITOR_EMAIL
@@ -2574,7 +2579,7 @@ $1',
 لن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة.
 يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.
 
-                       نظام {{SITENAME}} للإعلام بالبريد الإلكتروني
+                   نظام {{SITENAME}} للإعلام بالبريد الإلكتروني
 
 --
 لتغيير إعدادات الإعلام بالبريد الإلكتروني الخاص بك، قم بزيارة
@@ -2586,8 +2591,10 @@ $1',
 لحذف الصفحة من قائمة مراقبتك، قم بزيارة
 $UNWATCHURL
 
-التغذية المرتدة، والحصول على مساعدة إضافية:
+للمقترحات والحصول على مساعدة إضافية:
 {{canonicalurl: {{MediaWiki:Helppage}}}}',
+'created' => 'أنشئت',
+'changed' => 'غيرت',
 
 # Delete
 'deletepage' => 'حذف الصفحة',
@@ -2661,6 +2668,8 @@ $UNWATCHURL
 'prot_1movedto2' => 'نُقلت [[$1]] إلى [[$2]]',
 'protect-badnamespace-title' => 'نطاق لا يحمى',
 'protect-badnamespace-text' => 'صفحات هذا النطاق لا يمكن حمايتها',
+'protect-norestrictiontypes-text' => 'لا يمكن حماية هذه الصفحة لعدم توافر أنواع المحددات المطلوبة.',
+'protect-norestrictiontypes-title' => 'صفحة غير قابلة للحماية',
 'protect-legend' => 'تأكيد الحماية',
 'protectcomment' => 'السبب:',
 'protectexpiry' => 'تنتهي في:',
@@ -2775,11 +2784,11 @@ $1',
 'invert' => 'اعكس الاختيار',
 'tooltip-invert' => 'علم على هذا الصندوق لإخفاء التغييرات للصفحات في النطاق المختار (والنطاق المصاحب لو معلم عليها)',
 'namespace_association' => 'النطاق المقترن',
-'tooltip-namespace_association' => 'علم على هذا الصندوق لتضمين نطاق النقاش أو الموضوع لالمصاحب للنطاق المختار',
+'tooltip-namespace_association' => 'علم على هذا الصندوق لتضمين نطاق النقاش أو الموضوع المصاحب للنطاق المختار',
 'blanknamespace' => '(رئيسي)',
 
 # Contributions
-'contributions' => 'مساهمات المستخدم',
+'contributions' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}}',
 'contributions-title' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمة}} $1',
 'mycontris' => 'مساهماتي',
 'contribsub2' => 'ل$1 ($2)',
@@ -2822,7 +2831,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 التحويلات',
 'whatlinkshere-hidetrans' => '$1 التضمينات',
 'whatlinkshere-hidelinks' => '$1 الوصلات',
-'whatlinkshere-hideimages' => '$1 Ù\88صÙ\84Ø© ØµÙ\88رة',
+'whatlinkshere-hideimages' => '$1 Ù\88صÙ\84ات Ø§Ù\84Ù\85Ù\84Ù\81ات',
 'whatlinkshere-filters' => 'مرشحات',
 
 # Block/unblock
@@ -3327,7 +3336,7 @@ $1',
 
 # Info page
 'pageinfo-title' => 'المعلومات عن «$1»',
-'pageinfo-not-current' => 'لا يمكن إظهار المعلومات إلا عن المراجعة الأخيرة للصفحة',
+'pageinfo-not-current' => 'عذرا، لا يمكن عرض تلك المعلومات للنسخ القديمة.',
 'pageinfo-header-basic' => 'المعلومات الأساسية',
 'pageinfo-header-edits' => 'التعديلات',
 'pageinfo-header-restrictions' => 'حماية الصفحة',
@@ -3356,6 +3365,7 @@ $1',
 'pageinfo-magic-words' => '{{PLURAL:$1|لا كلمات سحرية|الكلمة|الكلمات}} السحرية ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|لا تصنيفات مخفية|التصنيف المخفي|التصنيفان المخفيان|التصنيفات المخفية ($1)}}',
 'pageinfo-templates' => '{{PLURAL:$1|لا قوالب مضمنة|القالب المضمن|القالبان المضمنان|القوالب المضمنة ($1)}}',
+'pageinfo-transclusions' => '{{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}} مضمنة في ($1)',
 'pageinfo-toolboxlink' => 'معلومات عن هذه الصفحة',
 'pageinfo-redirectsto' => 'تحويلة إلى',
 'pageinfo-redirectsto-info' => 'معلومات',
@@ -3364,6 +3374,10 @@ $1',
 'pageinfo-protect-cascading' => 'مصدر توريث  الحماية للصفحات المدمجة',
 'pageinfo-protect-cascading-yes' => 'نعم',
 'pageinfo-protect-cascading-from' => 'حماية الصفحات المدمجة موروثة من',
+'pageinfo-category-info' => 'معلومات التصنيف',
+'pageinfo-category-pages' => 'عدد الصفحات',
+'pageinfo-category-subcats' => 'عدد التصنيفات الفرعية',
+'pageinfo-category-files' => 'عدد الملفات',
 
 # Skin names
 'skinname-standard' => 'كلاسيك',
@@ -3454,6 +3468,8 @@ $1',
 'minutes' => '{{PLURAL:$1||دقيقة واحدة|دقيقتين|$1 دقائق|$1 دقيقة}}',
 'hours' => '{{PLURAL:$1||ساعة واحدة|ساعتين|$1 ساعات|$1 ساعة}}',
 'days' => '{{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}}',
+'months' => '{{PLURAL:$1||شهر واحد|شهرين|$1 شهور|$1 شهرا|$1 شهر}}',
+'years' => '{{PLURAL:$1||سنة واحدة|سنتين|$1 سنين|$1 سنة}}',
 'ago' => 'قبل $1',
 'just-now' => 'الآن فقط',
 
@@ -4188,7 +4204,7 @@ $5
 'version-license' => 'الرخصة',
 'version-poweredby-credits' => "تدار هذه الويكي ب'''[//www.mediawiki.org/ ميدياويكي]''', حقوق النشر © 2001-$1 $2.",
 'version-poweredby-others' => 'آخرون',
-'version-credits-summary' => 'نود أن نعرف بالأشخاص التالية أسماؤهم لمساهمتهم في [[خاص:نسخة|ميدياويكي]].',
+'version-credits-summary' => 'نود أن نعرف بالأشخاص التالية أسماؤهم لمساهمتهم في [[Special:Version|ميدياويكي]].',
 'version-license-info' => "ميدياويكي برنامج حر، يحق لك توزيعه و/أو تعديله وفقاً لبنود رخصة غنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، الإصدار الثاني أو (وفقا لاختيارك أنت) أي إصدار لاحق.
 
 هذا البرنامج يوزع على أمل أن يكون مفيداً، ولكن '''دون أية ضمانات'''، بما في ذلك ضمانات '''التسويق''' أو '''الملاءمة لغرض معين'''. انظر رخصة غنو العمومية لمزيد من التفاصيل.
@@ -4330,11 +4346,15 @@ $5
 'logentry-move-move_redir-noredirect' => 'نقل $1 صفحة $3 إلى التحويلة $4 دون ترك تحويلة',
 'logentry-patrol-patrol' => '$1 مراجعة معلمة $4 للصفحة $3 تم معاينتها',
 'logentry-patrol-patrol-auto' => '$1 مراجعة معلمة تلقائيا $4 للصفحة $3 تم مراجعتها',
-'logentry-newusers-newusers' => 'Ø£Ù\86شأ $1 Ø­Ø³Ø§Ø¨ Ù\85ستخدÙ\85',
-'logentry-newusers-create' => 'Ø£Ù\86شأ $1 Ø­Ø³Ø§Ø¨ Ù\85ستخدÙ\85',
-'logentry-newusers-create2' => 'Ø£Ù\86شأ $1 Ø­Ø³Ø§Ø¨ Ø§Ù\84Ù\85ستخدÙ\85 $3',
+'logentry-newusers-newusers' => 'تÙ\85 Ø¥Ù\86شاء Ø§Ù\84حساب $1',
+'logentry-newusers-create' => 'تÙ\85 Ø¥Ù\86شاء Ø§Ù\84حساب $1',
+'logentry-newusers-create2' => 'Ø£Ù\86شأ $1 Ø§Ù\84حساب $3',
 'logentry-newusers-autocreate' => 'أنشئ حساب $1 تلقائياً',
 'newuserlog-byemail' => 'كلمة السر تم إرسالها بواسطة البريد الإلكتروني',
+'logentry-rights-rights' => 'غير $1 صلاحيات $3 من $4 إلى $5',
+'logentry-rights-rights-legacy' => 'غير $1 صلاحيات $3',
+'logentry-rights-autopromote' => 'تمت ترقية $1 تلقائياً من  $4 إلى $5',
+'rightsnone' => '(لا شيء)',
 
 # Feedback
 'feedback-bugornote' => 'إن كنت مستعدا لشرح  مشكلة تقنية بالتفصيل، رجاءا [$1 قدم تقريرا بالخلل].
index 0081813..c056031 100644 (file)
@@ -827,9 +827,12 @@ $1',
 'right-mergehistory' => 'ܚܒܘܛ ܬܫܥܝܬܐ ܕܦܐܬܬ̈ܐ',
 'right-userrights' => 'ܫܚܠܦ ܟܠ ܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ܣܓܠܐ ܕܒܪܝܬܐ ܕܡܦܠܚܢܐ',
+'newuserlogpagetext' => 'ܗܢܘ ܣܓܠܐ ܕܒܪܝܐ ܕܡܦܠܚܢ̈ܐ',
+
 # User rights log
 'rightslog' => 'ܣܓܠܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
-'rightsnone' => '(ܠܐ ܡܕܡ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ܩܪܝ ܦܐܬܐ ܗܕܐ',
@@ -1159,10 +1162,6 @@ $1',
 'activeusers-hidesysops' => 'ܛܫܝ ܡܕܒܪ̈ܢܐ',
 'activeusers-noresult' => 'ܠܐ ܐܫܬܟܚ ܡܦܠܚܢ̈ܐ ܐܢܫ̈ܝܢ.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ܣܓܠܐ ܕܒܪܝܬܐ ܕܡܦܠܚܢܐ',
-'newuserlogpagetext' => 'ܗܢܘ ܣܓܠܐ ܕܒܪܝܐ ܕܡܦܠܚܢ̈ܐ',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ܙܕ̈ܩܐ ܕܟܢܘܫܬܐ ܕܡܦܠܚܢ̈ܐ',
 'listgrouprights-group' => 'ܟܢܘܫܬܐ',
@@ -1783,6 +1782,7 @@ $1',
 'logentry-newusers-create2' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3 ܐܬܒܪܐ ܒܝܕ $1',
 'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
 'newuserlog-byemail' => 'ܡܠܬܐ ܕܥܠܠܐ ܐܫܬܕܪܬ ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
+'rightsnone' => '(ܠܐ ܡܕܡ)',
 
 # Feedback
 'feedback-subject' => 'ܡܠܘܐܐ:',
index 4dc6321..c4014a1 100644 (file)
@@ -1186,11 +1186,13 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'right-override-export-depth' => 'tsdir sfahi obinha sfahi lmawsola hta lomq 5',
 'right-sendemail' => 'sift email lmostkhdimin lkhrin',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Ṫariĥ dyal l-ḫsabaṫ j-jdad',
+'newuserlogpagetext' => "hada sijill d-inċa'aṫ l-moṣṫĥdimin.",
+
 # User rights log
 'rightslog' => 'Ĝamaliyaṫ ḫoqoq l-mosṫeĥdim',
 'rightslogtext' => 'hada sijil btaghyirat f salahiyat lmostkhdimin',
-'rightslogentry' => 'ghyr salahiyat $1 mn $2 l $3',
-'rightsnone' => '(walo)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => "Ĥṫareĝ had 'ṣ-ṣefḫa",
@@ -1608,10 +1610,6 @@ daba ka ṫḫwwal l-[[$2]].',
 'activeusers-hidesysops' => 'Khbbi lidariyin',
 'activeusers-noresult' => 'ta mostakhdim matlgach.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Ṫariĥ dyal l-ḫsabaṫ j-jdad',
-'newuserlogpagetext' => "hada sijill d-inċa'aṫ l-moṣṫĥdimin.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'salahiyat mjmoat lmostkhdimin',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">ḫoqoq mĝtiyya</span>
@@ -1694,6 +1692,8 @@ L-Kṫaba dyal had ṣ-ṣefḫa ġaṫban '''ġliḍa''' fe [[Special:RecentCha
 'enotif_lastvisited' => 'Sir ċof $1 baċ ṫċof ṫ-ṫeġyiraṫ kamlin men ziyarṫek l-leĥĥraniya.',
 'enotif_lastdiff' => 'Ċof $1 baċ ṫċof had ṫ-ṫeġyiraṫ.',
 'enotif_anon_editor' => 'mosṫeĥdim ma mċejjelċ $1',
+'created' => "tnch'at",
+'changed' => 'Beddel',
 
 # Delete
 'deletepage' => "Mḫi had 'ṣ-ṣefḫa",
@@ -2712,5 +2712,6 @@ jrreb l-ĝṛḍ l-ĝadi.',
 'revdelete-restricted' => 'tḅḅq ḍ-ḍawaḅit ll-idariyyin',
 'revdelete-unrestricted' => 'ḫyyd ḍ-ḍawaḅit ll-idariyyin',
 'newuserlog-byemail' => "lmot de passe raha tsiftat f l'email",
+'rightsnone' => '(walo)',
 
 );
index 61bad03..1155020 100644 (file)
@@ -1477,11 +1477,13 @@ $1",
 'right-sendemail' => 'يبعت إيميل لليوزرز التانيين',
 'right-passwordreset' => 'إعادة ضبط كلمة سر مستخدم([[Special:PasswordReset|صفحة خاصة]])',
 
+# Special:Log/newusers
+'newuserlogpage' => 'سجل اليوزرز الجداد',
+'newuserlogpagetext' => 'دا سجل لليوزرز الجداد',
+
 # User rights log
 'rightslog' => 'سجل صلاحيات اليوزرز',
 'rightslogtext' => 'ده سجل بالتغييرات ف صلاحيات اليوزرز .',
-'rightslogentry' => 'غير صلاحيات $1 من $2 ل $3',
-'rightsnone' => '(فاضى)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'قراية الصفحه دى',
@@ -2023,10 +2025,6 @@ PICT # misc.
 'activeusers-hidesysops' => 'خبى السيسوبات',
 'activeusers-noresult' => 'مالقيناش اى يوزر',
 
-# Special:Log/newusers
-'newuserlogpage' => 'سجل اليوزرز الجداد',
-'newuserlogpagetext' => 'دا سجل لليوزرز الجداد',
-
 # Special:ListGroupRights
 'listgrouprights' => 'حقوق مجموعات اليوزرز',
 'listgrouprights-summary' => 'دى لستة بمجموعات اليوزرز المتعرفة فى الويكى دا، بالحقوق اللى معاهم.
@@ -2138,6 +2136,8 @@ $UNWATCHURL
 
 الfeedback و مساعده اكتر:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'إتنشأت',
+'changed' => 'اتغيرت',
 
 # Delete
 'deletepage' => 'امسح الصفحه',
@@ -3476,6 +3476,7 @@ $5
 'revdelete-restricted' => 'طبق التعليمات على السيسوبات',
 'revdelete-unrestricted' => 'شيل الضوابط من على السيسوبات',
 'newuserlog-byemail' => 'الباسورد اتبعتت بالايميل',
+'rightsnone' => '(فاضى)',
 
 # Search suggestions
 'searchsuggest-search' => 'تدوير',
index fc626d9..76bd39e 100644 (file)
@@ -1492,15 +1492,13 @@ $1",
 'right-sendemail' => 'আন সদস্যলৈ ই-পত্ৰ ঠিকনা পঠিয়াওক',
 'right-passwordreset' => 'পাছৱৰ্ড ৰি-চেটৰ ই-মেইলসমূহ দেখুৱাওক',
 
+# Special:Log/newusers
+'newuserlogpage' => 'সদস্যৰ সৃষ্টি অভিলেখ',
+'newuserlogpagetext' => 'এইখন এখন সদস্য সৃষ্টিৰ ল’গ।',
+
 # User rights log
 'rightslog' => 'সভ্যৰ অধিকাৰৰ লেখ',
 'rightslogtext' => 'সদস্য অধিকাৰৰ পৰিৱৰ্তনসমূহৰ ল’গ',
-'rightslogentry' => "$1-ৰ গোট সদস্যপদ $2-ৰ পৰা $3-লৈ সলনি কৰা হ'ল",
-'rightslogentry-autopromote' => '$2ৰ পৰা $3লৈ স্বয়ংক্ৰিয়ভাৱে পদোন্নীত হ’ল',
-'logentry-rights-rights' => "$1ৰ গোট সদস্যপদ $3ৰ পৰা $4লৈ $5 লৈ সলনি কৰা হ'ল",
-'logentry-rights-rights-legacy' => "$1-ৰ গোট সদস্যপদ $3-লৈ সলনি কৰা হ'ল",
-'logentry-rights-autopromote' => '$1ক  $4ৰ পৰা $5লৈ স্বয়ংক্ৰিয়ভাৱে পদোন্নীত কৰা হ’ল',
-'rightsnone' => '(নাই)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'এই পৃষ্ঠা পঢ়ক',
@@ -2148,10 +2146,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'activeusers-hidesysops' => 'প্ৰশাসক নেদেখুৱাব',
 'activeusers-noresult' => "কোনো সদস্য পোৱা নগ'ল।",
 
-# Special:Log/newusers
-'newuserlogpage' => 'সদস্যৰ সৃষ্টি অভিলেখ',
-'newuserlogpagetext' => 'এইখন এখন সদস্য সৃষ্টিৰ ল’গ।',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ব্যৱহাৰকাৰী গোটৰ অধিকাৰ',
 'listgrouprights-summary' => 'এই ৱিকিত থকা গোটসমূহৰ তালিকা সেইবোৰৰ প্ৰৱেশাধিকাৰসহ তলত দিয়া হ’ল ।
@@ -2290,6 +2284,8 @@ $UNWATCHURL
 
 প্ৰতিক্ৰিয়া আৰু অধিক সহযোগিতাৰ বাবে:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'সৃষ্টি কৰা হ’ল',
+'changed' => 'সলোৱা হৈছে',
 
 # Delete
 'deletepage' => 'পৃষ্ঠা বিলোপ কৰক',
@@ -3869,6 +3865,10 @@ $5
 'logentry-newusers-create2' => "$1ৰ দ্বাৰা এটা ব্যৱহাৰকাৰী একাউণ্ট $3 সৃষ্টি কৰা হ'ল",
 'logentry-newusers-autocreate' => '$1’ৰ একাউণ্ট স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা হৈছিল',
 'newuserlog-byemail' => 'গুপ্তশব্দ ই-মেইল কৰি পঠোৱা হৈছে',
+'logentry-rights-rights' => "$1ৰ গোট সদস্যপদ $3ৰ পৰা $4লৈ $5 লৈ সলনি কৰা হ'ল",
+'logentry-rights-rights-legacy' => "$1-ৰ গোট সদস্যপদ $3-লৈ সলনি কৰা হ'ল",
+'logentry-rights-autopromote' => '$1ক  $4ৰ পৰা $5লৈ স্বয়ংক্ৰিয়ভাৱে পদোন্নীত কৰা হ’ল',
+'rightsnone' => '(নাই)',
 
 # Feedback
 'feedback-bugornote' => 'যদি আপুনি এটা কাৰিকৰী সমস্যাৰ বিৱৰণ দিবলৈ প্ৰস্তুত, অনুগ্ৰহ কৰি [$1 এটা বাগ ৰিপ\'ৰ্ট কৰক]।
index e9d2320..c6b25e0 100644 (file)
@@ -192,6 +192,7 @@ $messages = array(
 'newwindow' => "(s'abre nuna ventana nueva)",
 'cancel' => 'Encaboxar',
 'moredotdotdot' => 'Más...',
+'morenotlisted' => 'Más na llista...',
 'mypage' => 'Páxina',
 'mytalk' => 'Alderique',
 'anontalk' => 'Alderique pa esta IP',
@@ -1382,15 +1383,13 @@ Esta información sedrá pública.",
 'right-sendemail' => 'Unviar corréu a otros usuarios',
 'right-passwordreset' => 'Ver los correos de reestablecimientu de conseña',
 
+# Special:Log/newusers
+'newuserlogpage' => "Rexistru de creación d'usuarios",
+'newuserlogpagetext' => "Esti ye un rexistru de creación d'usuarios.",
+
 # User rights log
 'rightslog' => "Rexistru de perfil d'usuariu",
 'rightslogtext' => "Esti ye un rexistru de los cambeos de los perfiles d'usuariu.",
-'rightslogentry' => 'camudó la pertenencia de grupu del usuariu $1 dende $2 a $3',
-'rightslogentry-autopromote' => 'promocionó automáticamente de $2 a $3',
-'logentry-rights-rights' => '$1 camudó la pertenencia a grupos de $3 dende $4 a $5',
-'logentry-rights-rights-legacy' => '$1 camudó la pertenencia a grupos de $3',
-'logentry-rights-autopromote' => '$1 promocionó automáticamente de $4 a $5',
-'rightsnone' => '(nengún)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lleer esta páxina',
@@ -2026,7 +2025,7 @@ Ver tamién les [[Special:WantedCategories|categoríes más buscaes]].",
 'linksearch-ok' => 'Guetar',
 'linksearch-text' => 'Se puen usar comodinos como "*.wikipedia.org".
 Necesita polo menos un dominiu de primer nivel, como "*.org".<br />
-Protocolos almitíos: <code>$1</code> (el predetermináu ye http:// si nun se conseña dengún protocolu).',
+{{PLURAL:$2|Protocolu almitíu|Protocolos almitíos}}: <code>$1</code> (el predetermináu ye http:// si nun se conseña dengún protocolu).',
 'linksearch-line' => '$1 enllaciáu dende $2',
 'linksearch-error' => 'Los comodinos namái puen apaecer al entamu del nome del güéspede.',
 
@@ -2045,10 +2044,6 @@ Protocolos almitíos: <code>$1</code> (el predetermináu ye http:// si nun se co
 'activeusers-hidesysops' => 'Anubrir alministradores',
 'activeusers-noresult' => "Nun s'alcontraron usuarios.",
 
-# Special:Log/newusers
-'newuserlogpage' => "Rexistru de creación d'usuarios",
-'newuserlogpagetext' => "Esti ye un rexistru de creación d'usuarios.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Drechos de los grupos d'usuariu",
 'listgrouprights-summary' => "La siguiente ye una llista de grupos d'usuariu definíos nesta wiki, colos sos drechos d'accesu asociaos.
@@ -2185,6 +2180,8 @@ $UNWATCHURL
 
 Más ayuda y sofitu:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'camudada',
 
 # Delete
 'deletepage' => 'Esborrar páxina',
@@ -2256,6 +2253,8 @@ Consulta la [[Special:ProtectedPages|llista de páxines protexíes]] pa ver les
 'prot_1movedto2' => '[[$1]] treslladáu a [[$2]]',
 'protect-badnamespace-title' => 'Espaciu de nomes non protexible',
 'protect-badnamespace-text' => "Les páxines d'esti espaciu de nomes nun se puen protexer.",
+'protect-norestrictiontypes-text' => 'Esta páxina nun se pue protexer porque nun ta disponible dengún tipu de torga.',
+'protect-norestrictiontypes-title' => 'Páxina non protexible',
 'protect-legend' => 'Confirmar proteición',
 'protectcomment' => 'Motivu:',
 'protectexpiry' => 'Caduca:',
@@ -2938,6 +2937,7 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Pallabra máxica|Pallabres máxiques}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoría anubrida|Categoríes anubríes}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Plantía incluída|Plantíes incluíes}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Páxina|Páxines}} trescluyíes en ($1)',
 'pageinfo-toolboxlink' => 'Información de la páxina',
 'pageinfo-redirectsto' => 'Redirixe a',
 'pageinfo-redirectsto-info' => 'información',
@@ -2946,6 +2946,10 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'pageinfo-protect-cascading' => "Les proteiciones s'activen en serie dende equí",
 'pageinfo-protect-cascading-yes' => 'Sí',
 'pageinfo-protect-cascading-from' => "Les proteiciones s'activen en serie dende",
+'pageinfo-category-info' => 'Información de la categoría',
+'pageinfo-category-pages' => 'Númberu de páxines',
+'pageinfo-category-subcats' => 'Númberu de subcategoríes',
+'pageinfo-category-files' => 'Númberu de ficheros',
 
 # Skin names
 'skinname-standard' => 'Clásicu',
@@ -3029,6 +3033,8 @@ Al executalu pues comprometer el to sistema.",
 'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutos}}',
 'hours' => '{{PLURAL:$1|$1 hora|$1 hores}}',
 'days' => '{{PLURAL:$1|$1 día|$1 díes}}',
+'months' => '{{PLURAL:$1|$1 mes|$1 meses}}',
+'years' => '{{PLURAL:$1|$1 añu|$1 años}}',
 'ago' => 'hai $1',
 'just-now' => 'agora mesmo',
 
@@ -3793,6 +3799,10 @@ Les imáxenes amuésense a resolución completa; les demás tribes d'archivu exe
 'logentry-newusers-create2' => "$1 creó la cuenta d'usuariu $3",
 'logentry-newusers-autocreate' => 'La cuenta $1 se creó automáticamente',
 'newuserlog-byemail' => 'conseña unviada per corréu electrónicu',
+'logentry-rights-rights' => '$1 camudó la pertenencia a grupos de $3 dende $4 a $5',
+'logentry-rights-rights-legacy' => '$1 camudó la pertenencia a grupos de $3',
+'logentry-rights-autopromote' => '$1 promocionó automáticamente de $4 a $5',
+'rightsnone' => '(nengún)',
 
 # Feedback
 'feedback-bugornote' => 'Si tas preparáu pa describir un problema técnicu en detalle, [$1 informa del fallu].
index 3c7b6a9..0dfc520 100644 (file)
@@ -1035,10 +1035,12 @@ Rinafe e-mail mane me zo razdar viele ar webesik uzerar.',
 'right-userrights-interwiki' => "Betara va favesikrokeem koe aro 'wiki' xo",
 'right-siteadmin' => 'Origakelekara is dimelekara',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Buredura "log"',
+
 # User rights log
 'rightslog' => '"Log" bu va favesikrokeem',
 'rightslogtext' => 'Tir "log" va betara va favesikroka.',
-'rightsnone' => '(mek)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'Redura va batu bu',
@@ -1414,9 +1416,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Nedira',
 'listusers-noresult' => 'Mek trasiyin favesik.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Buredura "log"',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rokeem ke favesiklospa',
 'listgrouprights-group' => 'Lospa',
@@ -1517,6 +1516,8 @@ To change your watchlist settings, visit
 
 Feedback and further assistance:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'reduyun',
+'changed' => 'betayan',
 
 # Delete
 'deletepage' => 'Busulara',
@@ -2385,5 +2386,6 @@ This confirmation code will expire at $4.',
 'revdelete-restricted' => 'irutara rewana pu ristusik',
 'revdelete-unrestricted' => 'irutara tiolteyena pu ristusik',
 'newuserlog-byemail' => 'remravlem staksayan kan e-mail',
+'rightsnone' => '(mek)',
 
 );
index 9c57628..25a7c42 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author AZISS
  * @author Cekli829
  * @author Don Alessandro
  * @author E THP
@@ -240,7 +241,7 @@ $messages = array(
 'vector-simplesearch-preference' => 'İnkişaf etmiş axtarma təkliflərini gətir (yalnız Vector görünüşü üçün)',
 'vector-view-create' => 'Yarat',
 'vector-view-edit' => 'Redaktə',
-'vector-view-history' => 'Tarixçə',
+'vector-view-history' => 'Tarixçəyə bax',
 'vector-view-view' => 'Oxu',
 'vector-view-viewsource' => 'Mənbəyə bax',
 'actions' => 'Hərəkətlər',
@@ -328,7 +329,7 @@ $1',
 'policy-url' => 'Project:Qaydalar',
 'portal' => 'Kənd meydanı',
 'portal-url' => 'Project:Kənd meydanı',
-'privacy' => 'Gizlilik prinsipi',
+'privacy' => 'Məxfilik siyasəti',
 'privacypage' => 'Project:Gizlilik prinsipi',
 
 'badaccess' => 'İcazə xətası',
@@ -623,7 +624,7 @@ Müvəqqəti parol: $2',
 'minoredit' => 'Kiçik redaktə',
 'watchthis' => 'Bu səhifəni izlə',
 'savearticle' => 'Səhifəni qeyd et',
-'preview' => 'Sınaq göstərişi',
+'preview' => 'Sınaq görüntüsü',
 'showpreview' => 'Sınaq göstərişi',
 'showlivepreview' => 'Canlı sınaq göstərişi',
 'showdiff' => 'Dəyişiklikləri göstər',
@@ -960,7 +961,7 @@ $1",
 'prefsnologintext' => 'Nizamlamaları dəyişmək üçün <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} daxil olmaq]</span> zəruridir.',
 'changepassword' => 'Parolu dəyiş',
 'prefs-skin' => 'Cild',
-'skin-preview' => 'Sınaq göstərişi',
+'skin-preview' => 'Sınaq görüntüsü',
 'datedefault' => 'Seçim yoxdur',
 'prefs-beta' => 'Beta xüsusiyyətlər',
 'prefs-datetime' => 'Tarix və vaxt',
@@ -1168,11 +1169,13 @@ Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadə
 'right-siteadmin' => 'Məlumatlar bazasının bloklanması və blokun götürülməsi',
 'right-sendemail' => 'Digər istifadəçilərə elektron poçt göndər',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Yeni istifadəçilərin qeydiyyatı',
+'newuserlogpagetext' => 'Yeni qeydiyyatdan keçmiş istifadəçilərin siyahısı.',
+
 # User rights log
 'rightslog' => 'İstifadəçi hüquqları qeydləri',
 'rightslogtext' => 'İstifadəçi hüquqları dəyişikliyi qeydləri.',
-'rightslogentry' => '$1 adlı istifadəçinin istifadəçi qruplarındakı üzvlüyü dəyişdirildi: $2 ► $3',
-'rightsnone' => '(heç biri)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'bu səhifənin oxunması',
@@ -1648,10 +1651,6 @@ Həmçinin, [[Special:WantedCategories|tələb olunan kateqoriyalara]] baxın.',
 'activeusers-hidesysops' => 'İdarəçiləri gizlə',
 'activeusers-noresult' => 'İstifadəçi tapılmadı.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Yeni istifadəçilərin qeydiyyatı',
-'newuserlogpagetext' => 'Yeni qeydiyyatdan keçmiş istifadəçilərin siyahısı.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'İstifadəçi qruplarının hüquqları',
 'listgrouprights-summary' => 'Bu vikidə olan istifadəçi siyahıları və onların hüquqları aşağıda göstərilmişdir.
@@ -1764,6 +1763,8 @@ Siz haqqında söhbət gedən səhifəyə baxanadək səhifədəki digər dəyi
 
 Yardım və təklifləriniz üçün:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'yaradıldı',
+'changed' => 'dəyişdi',
 
 # Delete
 'deletepage' => 'Səhifəni sil',
@@ -2985,6 +2986,7 @@ Bu saytda texniki problemlər var.',
 'logentry-newusers-create2' => '$1 $3 üçün istifadəçi hesabı yaratdı',
 'logentry-newusers-autocreate' => '$1 hesabı avtomatik yaradıldı',
 'newuserlog-byemail' => 'parol e-maillə göndərildi',
+'rightsnone' => '(heç biri)',
 
 # Feedback
 'feedback-subject' => 'Mövzu:',
index 5f92473..f60d29f 100644 (file)
@@ -153,6 +153,7 @@ $messages = array(
 'newwindow' => '(یئنی پنجره‌ده آچیلیر)',
 'cancel' => 'لغو ائت',
 'moredotdotdot' => 'داها...',
+'morenotlisted' => 'داها آرتیق لیست اولونماییب‌دیر...',
 'mypage' => 'مقاله',
 'mytalk' => 'دانیشیق',
 'anontalk' => 'بو آی‌پی آدرسینه دانیشیق',
@@ -531,6 +532,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => 'پی‌اچ‌پی‌نین mail() فونکسیاسیندا تانینمامیش خطا.',
 'user-mail-no-addy' => 'ایمیل آدرسی اولماماق‌لا، ایمیل گؤندرمگه چالیشدی',
+'user-mail-no-body' => 'بیر بوش یا چوخ قیسا یازیسی اولان ایمیل گؤندرمگه چالیشیلدی.',
 
 # Change password dialog
 'resetpass' => 'رمزی دَییشدیر',
@@ -617,7 +619,7 @@ $2
 'watchthis' => 'بو صفحه‌نی ایزله',
 'savearticle' => 'صحیفه‌نی قئید ائت',
 'preview' => 'اؤن‌گؤستریش',
-'showpreview' => 'سینیق گؤستریش',
+'showpreview' => 'سیناق گؤستریش',
 'showlivepreview' => 'دیری اؤن‌گؤستریش',
 'showdiff' => 'دَییشیکلیکلری گؤستر',
 'anoneditwarning' => "'''دیقت:''' سیز سیستئمه گیرمه‌میسینیز. سیزین آی‌پی آدرسینیز بو صفحه‌نین دییشیک تاریخچه‌سین‌ده یازیلاجاق‌دیر.",
@@ -1312,15 +1314,13 @@ $1",
 'right-sendemail' => 'باشقا ایستیفاده‌چیلره ایمیل گؤندر',
 'right-passwordreset' => 'رمز یئنی‌له‌مه ایمیل‌لرینه باخ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ایستیفاده‌چی یارادیلما قئیدی',
+'newuserlogpagetext' => 'بو ایستیفاده‌چی یارادماق سیاهیسیدیر.',
+
 # User rights log
 'rightslog' => 'ایستیفاده‌چی حاقلاری سیاهی‌سی',
 'rightslogtext' => 'بو، ایستیفاده‌چی حاقلارینا اولان دَییشیکلیکلر سیاهی‌سی‌دیر.',
-'rightslogentry' => '$1-ین قروپ عوضولوغو، $2-دن $3-ه دَییشدیریلدی',
-'rightslogentry-autopromote' => 'اوتوماتیک اولاراق $2-دن $3-ه مقامی آرتیریلدی',
-'logentry-rights-rights' => '$1 $3-ین قروپ عوضولوگونو $4-دن $5-ه دَییشدیردی',
-'logentry-rights-rights-legacy' => '$1، $3-ین قروپ عوضولوگونو دَییشدیردی',
-'logentry-rights-autopromote' => '$1-ین مقامی اوتوماتیک $4-دن $5-ه آرتیریلدی',
-'rightsnone' => '(هئچ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'بو صحیفه‌نی اوخو',
@@ -1949,7 +1949,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'linksearch-ok' => 'آختار',
 'linksearch-text' => '«*.wikipedia.org» کیمی نیشانلاری ایشلده بیلرسینیز.
 آزی بیر دنه «*.org» کیمی یوخاری دامنه لازیم‌دیر.<br />
-دستلکلنمیش پروتوکول‌لار: <code>$1</code> (بوش بیراخیلسا، http:// نظرده آلیناجاقدیر).',
+دستلکلنمیش {{PLURAL:$2|پروتوکول|پروتوکول‌لار}}: <code>$1</code> (بوش بیراخیلسا، http:// نظرده آلیناجاقدیر).',
 'linksearch-line' => '$1، $2-دن باغلانیب‌دیر',
 'linksearch-error' => 'نیشانلار یالنیز آدی اولینده گله بیلرلر.',
 
@@ -1968,10 +1968,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'activeusers-hidesysops' => 'ایداره‌چیلری گیزلت',
 'activeusers-noresult' => 'هئچ ایستیفاده‌چی تاپیلمادی.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ایستیفاده‌چی یارادیلما قئیدی',
-'newuserlogpagetext' => 'بو ایستیفاده‌چی یارادماق سیاهیسیدیر.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ایستیفاده‌چی قروپ حاقلاری',
 'listgrouprights-summary' => 'آشاغیدا، بو ویکی‌ده تانیلان ایستیفاده‌چی گروپلاری و اونلارین حاقلاری گؤستریلیر.
@@ -2101,6 +2097,8 @@ $نئwپاگئ
 
 ياردیم و تکلیفلرینیز اوچون: 
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'یارادیلیب',
+'changed' => 'ديَیشدی',
 
 # Delete
 'deletepage' => 'صحیفه‌‌نی سیل',
@@ -2171,6 +2169,8 @@ $نئwپاگئ
 'prot_1movedto2' => '[[$1]] آدی دییشیلدی. یئنی آدی: [[$2]]',
 'protect-badnamespace-title' => 'آد سیز حفظ اولموش فضا',
 'protect-badnamespace-text' => 'بو آد ساحه‌سین‌دکی صحیفه‌لر قورونا.',
+'protect-norestrictiontypes-text' => 'بو صحیفه‌نی قوروماق اولماز، چون هئچ بیر محدودلاشدیرما نؤوعو ال‌ده یوخدور.',
+'protect-norestrictiontypes-title' => 'قورونا-بیلمه‌ین صحیفه',
 'protect-legend' => 'قورومایی تصدیق ائت',
 'protectcomment' => 'ندن:',
 'protectexpiry' => 'زامان بیتدی',
@@ -2818,6 +2818,7 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 'pageinfo-magic-words' => 'سیحیرلی {{PLURAL:$1|بیر|$1}} سؤزجوک ($1)',
 'pageinfo-hidden-categories' => 'گیزلی {{PLURAL:$1|بؤلمه|بؤلمه‌لر}} ($1)',
 'pageinfo-templates' => 'ایشله‌دیلمیش {{PLURAL:$1|بیر|$1}} شابلون ($1)',
+'pageinfo-transclusions' => 'ایچینده گلن {{PLURAL:$1|صحیفه|صحیفه‌لر}} ($1)',
 'pageinfo-toolboxlink' => 'صحیفه بیلگی‌سی',
 'pageinfo-redirectsto' => 'ایستیقامتلن‌دیریلن',
 'pageinfo-redirectsto-info' => 'بیلگی',
@@ -2826,6 +2827,13 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 'pageinfo-protect-cascading' => 'مدافعه‌‌لر بورادان شراره کیمی تؤکولور',
 'pageinfo-protect-cascading-yes' => 'بلی',
 'pageinfo-protect-cascading-from' => 'شراره مدافعه‌‌لر بورادان',
+'pageinfo-category-info' => 'بؤلمه بیلگیلری',
+'pageinfo-category-pages' => 'صحیفه‌لرین سایی',
+'pageinfo-category-subcats' => 'آلت‌بؤلمه‌لرین سایی',
+'pageinfo-category-files' => 'فایل‌لارین سایی',
+
+# Skin names
+'skinname-myskin' => 'منیم قابیغیم',
 
 # Patrolling
 'markaspatrolleddiff' => 'ایداره ائدیلمیش اولا‌راق ایشاره‌له',
@@ -2902,6 +2910,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 دقیقه}}',
 'hours' => '{{PLURAL:$1|$1 ساعت |$1 ساعت}}',
 'days' => '{{PLURAL:$1|$1 گون |$1 گون}}',
+'months' => '{{PLURAL:$1|$1}} آی',
+'years' => '{{PLURAL:$1|$1}} ایل',
 'ago' => '$1 اؤنجه',
 'just-now' => 'ایندی',
 
@@ -3654,6 +3664,10 @@ $5
 'logentry-newusers-create2' => 'بیر ایستیفاده‌چی $1 حسابی $3 یاراتدی',
 'logentry-newusers-autocreate' => '$1 حسابی اوتوماتیک یارادیلدی',
 'newuserlog-byemail' => 'رمز ایمیل ایله گؤندریلدی',
+'logentry-rights-rights' => '$1 $3-ین قروپ عوضولوگونو $4-دن $5-ه دَییشدیردی',
+'logentry-rights-rights-legacy' => '$1، $3-ین قروپ عوضولوگونو دَییشدیردی',
+'logentry-rights-autopromote' => '$1-ین مقامی اوتوماتیک $4-دن $5-ه آرتیریلدی',
+'rightsnone' => '(هئچ)',
 
 # Feedback
 'feedback-bugornote' => 'بیر تکنیکی خطانی شرح وئرمگه آماده اولساز، لوطفاً [$1 بیر باگ بیلدیرین].
index a144841..c978f66 100644 (file)
@@ -1433,15 +1433,13 @@ $1",
 'right-sendemail' => 'Башҡа ҡатнашыусыларға электрон почта аша хат ебәреү',
 'right-passwordreset' => 'Паролде яңыртыу хәбәрҙәрен ҡарау',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Яңы ҡулланыусы яҙмалары',
+'newuserlogpagetext' => 'Яңы теркәлгән ҡатнашыусылар яҙмалары журналы.',
+
 # User rights log
 'rightslog' => 'Ҡулланыусының хоҡуҡтары көндәлеге',
 'rightslogtext' => 'Был — ҡулланыусы хоҡуҡтары үҙгәрештәре яҙмалары журналы',
-'rightslogentry' => '$1 хоҡуҡтары $2 икән, $3 итеп үҙгертелде',
-'rightslogentry-autopromote' => '$2 автоматик рәүештә $3 ителде.',
-'logentry-rights-rights' => '$1 $3 ҡулланыусыһының төркөмдәрҙәге ағзалығын $4 икән, $5 тип үҙгәртте',
-'logentry-rights-rights-legacy' => '$1 $3 ҡулланыусыһының төркөм ағзалығын үҙгәртте',
-'logentry-rights-autopromote' => '$1 автоматик рәүештә $2 икән, $3 ителде.',
-'rightsnone' => '(юҡ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'Был битте уҡыу',
@@ -2084,10 +2082,6 @@ $1',
 'activeusers-hidesysops' => 'Хәкимдәрҙе йәшерергә',
 'activeusers-noresult' => 'Ҡатнашыусылар табылманы',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Яңы ҡулланыусы яҙмалары',
-'newuserlogpagetext' => 'Яңы теркәлгән ҡатнашыусылар яҙмалары журналы.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Ҡатнашыусылар төркөмө хоҡуҡтары',
 'listgrouprights-summary' => 'Түбәндә был вики-проектта билдәләнгән ҡатнашыусы төркөмдәре килтерелгән һәм уларҙың хоҡуҡтары күрһәтелгән.
@@ -2223,6 +2217,8 @@ $UNWATCHURL
 
 Кире бәйләнеш һәм ярҙам:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'булдырылды',
+'changed' => 'үҙгәртелгән',
 
 # Delete
 'deletepage' => 'Битте юйырға',
@@ -3801,6 +3797,10 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'logentry-newusers-create2' => '$3 ҡатнашыусыһының иҫәп яҙмаһы $1 тарафынан булдырылды',
 'logentry-newusers-autocreate' => 'Автоматик рәүештә $1 иҫәп яҙыуы яһалды',
 'newuserlog-byemail' => 'пароль электрон почта адресы аша ебәрелде',
+'logentry-rights-rights' => '$1 $3 ҡулланыусыһының төркөмдәрҙәге ағзалығын $4 икән, $5 тип үҙгәртте',
+'logentry-rights-rights-legacy' => '$1 $3 ҡулланыусыһының төркөм ағзалығын үҙгәртте',
+'logentry-rights-autopromote' => '$1 автоматик рәүештә $2 икән, $3 ителде.',
+'rightsnone' => '(юҡ)',
 
 # Feedback
 'feedback-bugornote' => 'Әгәр Һеҙ техник проблеманы ентекле рәүештә аңлатырға теләһәгеҙ, зинһар, [$1 хата тураһында белдерегеҙ].
index 8af71c7..db8921a 100644 (file)
@@ -756,6 +756,9 @@ Dei Mail-Adress wead dabei ned ozoagt.',
 'right-edit' => 'Seiten beorweiten',
 'right-block' => 'Benutzer sperrn (Schreiwrecht)',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Neiomejdungs-Logbuach',
+
 # User rights log
 'rightslog' => 'Rechte-Logbiache',
 
@@ -1045,9 +1048,6 @@ Links as Naumensraim wern do néd afglistt.",
 'listusers-submit' => 'Zoag',
 'listusers-noresult' => 'Koane Benutzer gfunden.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Neiomejdungs-Logbuach',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Benutzergruppmrechtt',
 'listgrouprights-summary' => 'Dés do is a Listen voh dé in dém Wiki definierden Benutzergruppm und da dodamid vabundernen Rechtt.
@@ -1155,6 +1155,8 @@ Um d\' Eihstöungen voh deine Beówochtungslisten åzpassen, bsuachst {{canonica
 Um d\' Seiten voh deiner Beówochtungslisten ower z\' doah, bsuachst $UNWATCHURL
 
 Ryckmödungen und a weidre Hüf: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'erstöd',
+'changed' => 'gänderd',
 
 # Delete
 'deletepage' => 'Seiten léschen',
diff --git a/languages/messages/MessagesBat_smg.php b/languages/messages/MessagesBat_smg.php
deleted file mode 100644 (file)
index 44041f0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/** Samogitian
- *
- * ISO 639-3 code 'sgs' should be used. This is code is maintained for backward
- * compatilibity.
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- */
-
-$fallback = 'sgs, lt';
index 885b76f..e99e889 100644 (file)
@@ -1211,11 +1211,13 @@ $1",
 'right-siteadmin' => 'کبل و پچ دیتابیس',
 'right-override-export-depth' => 'درگیزگ صفحات گون صفحاتی لینک بوتگین ته سطح ۵',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ورود شرکتن کاربر',
+'newuserlogpagetext' => '.شی یک ورودی چه شرکتن کاربر',
+
 # User rights log
 'rightslog' => 'ورودان حقوق کاربر',
 'rightslogtext' => 'شی یک آماری چه تغییرات په حقوق کاربری انت.',
-'rightslogentry' => 'عوض بوت عضویت گروهی په $1  چه $2 په $3',
-'rightsnone' => '(هچ یک)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'وانگ این صفحه',
@@ -1703,10 +1705,6 @@ PICT # misc.
 'activeusers-from' => 'پیشدار کاربرانی که شروع بنت گون :‌',
 'activeusers-noresult' => 'هچ کاربری درگیزگ نه بیت',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ورود شرکتن کاربر',
-'newuserlogpagetext' => '.شی یک ورودی چه شرکتن کاربر',
-
 # Special:ListGroupRights
 'listgrouprights' => 'حقوق گروه کاربر',
 'listgrouprights-summary' => 'جهلیگین یک لیستی چه گروهان کاربری تعریف بوتگین ته ای ویکی انت گون آیانی حق دسترسی آن همراهنت.
@@ -1812,6 +1810,8 @@ $NEWPAGE
 
 نظرات و گیشترین کمک:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'شربوتت',
+'changed' => 'عوض بوت.',
 
 # Delete
 'deletepage' => 'حذف صفحه',
@@ -3123,5 +3123,6 @@ $5
 'revdelete-restricted' => 'محدودیت آن په مدیران سیستم بوت',
 'revdelete-unrestricted' => 'به زور چه مدیران سیستم محدودیتان',
 'newuserlog-byemail' => 'کلمه رمز گون ایمیل دیم دهگ بوت',
+'rightsnone' => '(هچ یک)',
 
 );
index 210f8aa..59c2a1d 100644 (file)
@@ -1401,15 +1401,13 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'right-sendemail' => 'Magpadara nin e-koreo sa ibang mga paragamit',
 'right-passwordreset' => 'Tanawon an e-koreo kan pagbabago nin sekretong panlaog',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Paragamit na talaan nin pagmukna',
+'newuserlogpagetext' => 'Ini an talaan kan mga pagmukna nin paragamit.',
+
 # 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 $3',
-'logentry-rights-rights' => '$1 nagliwat kan pangrupong pagkamiyembro para sa $3 gikan sa $4 pasiring sa $5',
-'logentry-rights-rights-legacy' => '$1 nagliwat kan pangrupong pagkamiyembro para sa $3',
-'logentry-rights-autopromote' => '$1 awtomatikong pinagpalangkaw gikan sa $4 pasiring sa $5',
-'rightsnone' => '(mayô)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaha ining pahina',
@@ -2045,10 +2043,6 @@ Suportadong mga panundan: <code>$1</code> (defaults to http:// kun mayo nin panu
 'activeusers-hidesysops' => 'Itago an mga administrador',
 'activeusers-noresult' => 'Mayong mga paragamit na nanagboan.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Paragamit na talaan nin pagmukna',
-'newuserlogpagetext' => 'Ini an talaan kan mga pagmukna nin paragamit.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Mga karapatan kan grupo nin paragamit',
 'listgrouprights-summary' => 'An minasunod iyo an listahan kan mga grupo nin paragamit na pinaghunsay kaining wiki, kaiba an saindang asosyadong mga karapatan nin paggamit.
@@ -2189,6 +2183,8 @@ $UNWATCHURL
 
 Balik-simbag asin kadagdagang asistensiya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'piggibo',
+'changed' => 'pigbâgo',
 
 # Delete
 'deletepage' => 'Paraon an pahina',
@@ -3758,6 +3754,10 @@ Ining sityo igwang naeksperiyensiyahan na mga kakundian sa teknikal.',
 'logentry-newusers-create2' => 'An paragamit na panindog $3 pinagmukna na ni $1',
 'logentry-newusers-autocreate' => 'An paragamit na panindog $1 awtomatikong pinagmukna na',
 'newuserlog-byemail' => 'an pasa-taramon ipinadara na sa paagi kan e-surat',
+'logentry-rights-rights' => '$1 nagliwat kan pangrupong pagkamiyembro para sa $3 gikan sa $4 pasiring sa $5',
+'logentry-rights-rights-legacy' => '$1 nagliwat kan pangrupong pagkamiyembro para sa $3',
+'logentry-rights-autopromote' => '$1 awtomatikong pinagpalangkaw gikan sa $4 pasiring sa $5',
+'rightsnone' => '(mayô)',
 
 # Feedback
 'feedback-bugornote' => 'Kun ika andam na iladawan an sarong teknikal na problema na igwang detalye tabi [$1 ipaaram an kuto].
index 040b886..cf6dbb4 100644 (file)
@@ -1307,12 +1307,13 @@ $1",
 'right-sendemail' => 'Адправіць па электроннай пошце іншым карыстальнікам',
 'right-passwordreset' => 'прагляд электронных лістоў са змяненнем пароля',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Журнал рэгістрацыі ўдзельнікаў',
+'newuserlogpagetext' => 'Гэта журнал рэгістрацыі новых удзельнікаў.',
+
 # User rights log
 'rightslog' => 'Журнал правоў удзельнікаў',
 'rightslogtext' => 'Журнал змяненняў у дазволах, прыпісаных удзельнікам.',
-'rightslogentry' => 'зменена групавая прыналежнасць $1 з $2 на $3',
-'rightslogentry-autopromote' => 'быў аўтаматычна перакладзены з $2 да $3',
-'rightsnone' => '(няма)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'чытаць гэтую старонку',
@@ -1907,10 +1908,6 @@ $1',
 'activeusers-hidesysops' => 'Без адміністратараў',
 'activeusers-noresult' => 'Няма такіх удзельнікаў.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Журнал рэгістрацыі ўдзельнікаў',
-'newuserlogpagetext' => 'Гэта журнал рэгістрацыі новых удзельнікаў.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Дазволы для груп удзельнікаў',
 'listgrouprights-summary' => 'Гэты пералік вызначаных у гэтай вікі груп удзельнікаў, разам з прыпісанымі ім дазволамі.
@@ -2038,6 +2035,8 @@ $UNWATCHURL
 
 Зваротная сувязь і дапамога
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'створана',
+'changed' => 'зменена',
 
 # Delete
 'deletepage' => 'Сцерці старонку',
@@ -3527,6 +3526,7 @@ MediaWiki распаўсюджваецца, спадзеючыся на прыд
 'logentry-newusers-create2' => '$1 стварыў уліковы запіс удзельніка $3',
 'logentry-newusers-autocreate' => 'Аўтаматычна створаны ўліковы запіс $1',
 'newuserlog-byemail' => 'пароль адасланы эл.поштай',
+'rightsnone' => '(няма)',
 
 # Feedback
 'feedback-bugornote' => 'Калі вы гатовыя падрабязна апісаць тэхнічную праблему, калі ласка, [$1 паведаміце пра памылку].
index 875f614..377f342 100644 (file)
@@ -393,6 +393,7 @@ $messages = array(
 'newwindow' => '(адкрываецца ў новым акне)',
 'cancel' => 'Скасаваць',
 'moredotdotdot' => 'Далей…',
+'morenotlisted' => 'Болей не паказанага...',
 'mypage' => 'Старонка',
 'mytalk' => 'Гутаркі',
 'anontalk' => 'Гутаркі для гэтага IP-адрасу',
@@ -766,6 +767,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => 'Узьнікла невядомая памылка ў функцыі PHP mail()',
 'user-mail-no-addy' => 'Спроба даслаць электронны ліст без адрасу дастаўкі',
+'user-mail-no-body' => 'Спроба даслаць ліст з пустым або надзвычай кароткім зьместам.',
 
 # Change password dialog
 'resetpass' => 'Зьмяніць пароль',
@@ -1553,15 +1555,13 @@ $1",
 'right-sendemail' => 'адпраўка электронных лістоў іншым удзельнікам',
 'right-passwordreset' => 'прагляд электронных лістоў з ачысткай паролю',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Журнал стварэньня рахункаў',
+'newuserlogpagetext' => 'Гэта журнал стварэньня рахункаў удзельнікаў і ўдзельніц.',
+
 # User rights log
 'rightslog' => 'Журнал правоў удзельнікаў',
 'rightslogtext' => 'Гэта журнал зьменаў правоў удзельнікаў.',
-'rightslogentry' => 'зьменена прыналежнасьць $1 з групы $2 да $3',
-'rightslogentry-autopromote' => 'быў аўтаматычна падвышаны з $2 да $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групы з $4 на $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групаў',
-'logentry-rights-autopromote' => '$1 {{GENDER:$1|быў аўтаматычна пераведзены|была аўтаматычна пераведзеная}} з групы $4 ў $5',
-'rightsnone' => '(няма)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'чытаньне гэтай старонкі',
@@ -2200,10 +2200,6 @@ $1',
 'activeusers-hidesysops' => 'Схаваць адміністратараў',
 'activeusers-noresult' => 'Удзельнікі ня знойдзеныя.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Журнал стварэньня рахункаў',
-'newuserlogpagetext' => 'Гэта журнал стварэньня рахункаў удзельнікаў і ўдзельніц.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Правы групаў удзельнікаў',
 'listgrouprights-summary' => 'Ніжэй пададзены сьпіс групаў удзельнікаў {{GRAMMAR:родны|{{SITENAME}}}}, разам зь іх правамі.
@@ -2338,6 +2334,8 @@ $UNWATCHURL
 
 Зваротная сувязь і дапамога:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'створаная',
+'changed' => 'зьмененая',
 
 # Delete
 'deletepage' => 'Выдаліць старонку',
@@ -2408,6 +2406,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] перанесеная ў [[$2]]',
 'protect-badnamespace-title' => 'Прастора назваў, у якой немагчыма абараняць старонкі',
 'protect-badnamespace-text' => 'Старонкі ў гэтай прасторы назваў ня могуць быць абароненыя.',
+'protect-norestrictiontypes-text' => 'Немагчыма абараніць гэтую старонку, паколькі не існуе тыпаў абароны.',
+'protect-norestrictiontypes-title' => 'Неабараняльная старонка',
 'protect-legend' => 'Пацьверджаньне абароны',
 'protectcomment' => 'Прычына:',
 'protectexpiry' => 'Тэрмін:',
@@ -3061,6 +3061,7 @@ $1',
 'pageinfo-magic-words' => '{{PLURAL:$1|Магічнае слова|Магічныя словы}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Шаблён|Шаблёны}} ($1)',
+'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|іншай старонцы|іншых старонках}} ($1)',
 'pageinfo-toolboxlink' => 'Зьвесткі пра старонку',
 'pageinfo-redirectsto' => 'Перанакіроўвае на',
 'pageinfo-redirectsto-info' => 'інфармацыя',
@@ -3069,6 +3070,10 @@ $1',
 'pageinfo-protect-cascading' => 'Адсюль пачынаецца каскадная абарона',
 'pageinfo-protect-cascading-yes' => 'Так',
 'pageinfo-protect-cascading-from' => 'Каскадная абароная пачынаецца з',
+'pageinfo-category-info' => 'Інфармацыя пра катэгорыю',
+'pageinfo-category-pages' => 'Колькасьць старонак',
+'pageinfo-category-subcats' => 'Колькасьць падкатэгорыяў',
+'pageinfo-category-files' => 'Колькасьць файлаў',
 
 # Skin names
 'skinname-standard' => 'Клясычнае',
@@ -3159,6 +3164,8 @@ $1',
 'minutes' => '$1 {{PLURAL:$1|хвіліна|хвіліны|хвілінаў}}',
 'hours' => '$1 {{PLURAL:$1|гадзіна|гадзіны|гадзінаў}}',
 'days' => '$1 {{PLURAL:$1|дзень|дні|дзён}}',
+'months' => '{{PLURAL:$1|$1 месяц|$1 месяцы|$1 месяцаў}}',
+'years' => '{{PLURAL:$1|$1 год|$1 гады|$1 гадоў}}',
 'ago' => '$1 таму',
 'just-now' => 'толькі што',
 
@@ -3926,6 +3933,10 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'logentry-newusers-create2' => '$1 стварыў рахунак $3',
 'logentry-newusers-autocreate' => 'Рахунак $1 быў створаны аўтаматычна',
 'newuserlog-byemail' => 'Пароль адасланы па электроннай пошце',
+'logentry-rights-rights' => '$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групы з $4 на $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групаў',
+'logentry-rights-autopromote' => '$1 {{GENDER:$1|быў аўтаматычна пераведзены|была аўтаматычна пераведзеная}} з групы $4 ў $5',
+'rightsnone' => '(няма)',
 
 # Feedback
 'feedback-bugornote' => 'Калі Вы гатовы падрабязна апісаць тэхнічную праблему, калі ласка [$1 паведаміце пра памылку]. 
diff --git a/languages/messages/MessagesBe_x_old.php b/languages/messages/MessagesBe_x_old.php
deleted file mode 100644 (file)
index 26895de..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/** Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- * @comment dummy language file. Falls back to 'be-tarask'. Backward compat.
- */
-
-$fallback = 'be-tarask';
index 0218578..25ca103 100644 (file)
@@ -1502,14 +1502,13 @@ $1",
 'right-sendemail' => 'Изпращане на е-писма до другите потребители',
 'right-passwordreset' => 'Преглеждане на е-писма за възстановяване на парола',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Дневник на регистрациите',
+'newuserlogpagetext' => 'В този дневник се записват регистрациите на потребители.',
+
 # User rights log
 'rightslog' => 'Дневник на потребителските права',
 'rightslogtext' => 'Това е дневник на промените на потребителски права.',
-'rightslogentry' => 'промени потребителската група на $1 от $2 в $3',
-'rightslogentry-autopromote' => 'автоматично е повишен от $2 до$3',
-'logentry-rights-autopromote' => '
-$1 е автоматично повишен от $4 до $5',
-'rightsnone' => '(никакви)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'четене на страницата',
@@ -2083,10 +2082,6 @@ $1',
 'activeusers-hidesysops' => 'Скриване на администраторите',
 'activeusers-noresult' => 'Няма намерени потребители.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Дневник на регистрациите',
-'newuserlogpagetext' => 'В този дневник се записват регистрациите на потребители.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права по потребителски групи',
 'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
@@ -2211,6 +2206,8 @@ $UNWATCHURL
 
 За обратна връзка и помощ:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'създадена',
+'changed' => 'променена',
 
 # Delete
 'deletepage' => 'Изтриване',
@@ -3649,6 +3646,9 @@ MediaWiki се разпространява с надеждата, че ще б
 'logentry-newusers-create2' => '$1 създаде потребителска сметка $3',
 'logentry-newusers-autocreate' => 'Сметката $1 беше създадена автоматично',
 'newuserlog-byemail' => 'паролата е изпратена по е-поща',
+'logentry-rights-autopromote' => '
+$1 е автоматично повишен от $4 до $5',
+'rightsnone' => '(никакви)',
 
 # Feedback
 'feedback-subject' => 'Тема:',
index 8c13b4e..eb7ceb1 100644 (file)
@@ -1401,12 +1401,13 @@ Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan ga
 'right-sendemail' => 'Mangirim suril ka papamuruk lain',
 'right-passwordreset' => 'Tiringi setelan-pulang katasunduk suril',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log pamakai hanyar',
+'newuserlogpagetext' => 'Ngini adalah sabuah log paulahan pamuruk.',
+
 # User rights log
 'rightslog' => 'Log parubahan hak masuk',
 'rightslogtext' => 'Nangini adalah sabuah log paparubahan ka hahak pamuruk.',
-'rightslogentry' => 'Ubah galambang angguta gasan $1 matan $2 ka $3',
-'rightslogentry-autopromote' => 'sudah utumatis diangkat matan $2 ka $3',
-'rightsnone' => '(kadada)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'baca tungkaran ini',
@@ -2031,10 +2032,6 @@ Protokol nang didukung: <code>$1</code> (jangan tambahakan dalam panggagaian Pia
 'activeusers-hidesysops' => 'Sungkupakan pambakal',
 'activeusers-noresult' => 'Kadada papamuruk tatamu.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log pamakai hanyar',
-'newuserlogpagetext' => 'Ngini adalah sabuah log paulahan pamuruk.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Galambang hak pamuruk',
 'listgrouprights-summary' => 'Barikut adalah sabuah daptar matan galambang pamuruk nang ada di wiki ngini, lawan hak ungkai masing-masing.
@@ -2158,6 +2155,8 @@ $UNWATCHURL
 
 kitihan-bulik wan pangganian labih jauh:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => "ta'ulah",
+'changed' => "ta'ubah",
 
 # Delete
 'deletepage' => 'Hapus tungkaran',
@@ -3661,6 +3660,7 @@ Situs ngini mangalami kangalihan teknik.',
 'logentry-newusers-create2' => '$1 ma-ulah sabuting akun pamakai $3',
 'logentry-newusers-autocreate' => 'Akun $1 utumatis diulah',
 'newuserlog-byemail' => 'Katasunduk dikirimakan lung suril.',
+'rightsnone' => '(kadada)',
 
 # Feedback
 'feedback-bugornote' => 'Pabila Pian siap manjalasakan sabuah masalah taknik rinci muhun [lapurakan sabuah bug $1].
index 85083ad..6d36624 100644 (file)
@@ -201,6 +201,7 @@ $messages = array(
 'newwindow' => '(নতুন উইন্ডোতে খুলবে)',
 'cancel' => 'বাতিল',
 'moredotdotdot' => 'আরও...',
+'morenotlisted' => 'আরও তালিকাভুক্ত হয়নি...',
 'mypage' => 'আমার পাতা',
 'mytalk' => 'আলোচনা',
 'anontalk' => 'এই বেনামী ব্যবহারকারীর আলাপের পাতা',
@@ -234,6 +235,7 @@ $messages = array(
 'namespaces' => 'নামস্থান',
 'variants' => 'বিকল্পসমূহ',
 
+'navigation-heading' => 'পরিভ্রমণ মেনু',
 'errorpagetitle' => 'ত্রুটি',
 'returnto' => '$1 শিরোনামের পাতায় ফেরত যান।',
 'tagline' => '{{SITENAME}} থেকে',
@@ -477,6 +479,8 @@ $2',
 এ পরিস্থিতিতে আপনি বেনামে {{SITENAME}} ব্যবহার করতে পারেন, কিংবা একই বা পৃথক নামে <span class='plainlinks'>[$1 আবার প্রবেশ করতে]</span> পারেন।
 লক্ষ্য করুন যে, এর কোন কোন পাতা এখনও এমনভাবে দেখাতে পারে যাতে মনে হবে আপনি আগের অবস্থাতেই আছেন। এক্ষেত্রে আপনাকে আপনার ব্রাওজারের ক্যাশ পরিষ্কার (clear browser cache) করে নিতে হবে।",
 'welcomeuser' => 'স্বাগতম, $1!',
+'welcomecreation-msg' => 'আপনার অ্যাকাউন্ট তৈরী হয়েছে।
+আপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]  পরিবর্তন করে নিতে ভুলবেন না।',
 'yourname' => 'ব্যবহারকারী নাম:',
 'yourpassword' => 'শব্দচাবি:',
 'yourpasswordagain' => 'শব্দচাবিটি (password) আবার লিখুন',
@@ -1344,12 +1348,13 @@ $1",
 'right-sendemail' => 'অন্য ব্যবহারকারীকে ইমেইল পাঠান',
 'right-passwordreset' => 'পাসওয়ার্ড রিসেট ইমেইল দেখুন',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ব্যবহারকারী সৃষ্টির লগ',
+'newuserlogpagetext' => 'এটি নতুন ব্যবহারকারী সৃষ্টির লগ',
+
 # User rights log
 'rightslog' => 'ব্যবহারকারীর অধিকার লগ',
 'rightslogtext' => 'এটি ব্যবহারকারী অধিকারে আনা পরিবর্তনগুলির একটি লগ।',
-'rightslogentry' => '$1-কে $2 দল থেকে পরিবর্তন করে $3 দলের সদস্য করা হয়েছে',
-'rightslogentry-autopromote' => 'সয়ংক্রিয়ভাবে $2 থেকে $3 উন্নীত হয়েছে',
-'rightsnone' => '(কিছু নাই)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'এই পাতাটি পড়ুন',
@@ -1577,6 +1582,7 @@ $1',
 'backend-fail-notsame' => '"$1"-এ আগে থেকেই অপর একটি ফাইল রয়েছে।',
 'backend-fail-invalidpath' => '"$1" একটি ভুল স্টোরেজ পাথ।',
 'backend-fail-delete' => '$1 ফাইলটি অপসারণ সম্ভব নয়।',
+'backend-fail-describe' => '"$1" ফাইলের মেটাডাটা পরিবর্তন সম্ভব নয়।',
 'backend-fail-alreadyexists' => '"$1" নামের একটি ফাইল আগে থেকেই রয়েছে।',
 'backend-fail-store' => '"$2"-এ "$1" ফাইলটি সংরক্ষন করা সম্ভব নয়।',
 'backend-fail-copy' => '"$1" ফাইলটি "$2"-তে কপি করা সম্ভব নয়।',
@@ -1962,7 +1968,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'linksearch-ok' => 'অনুসন্ধান',
 'linksearch-text' => '"*.wikipedia.org" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।
 নূন্যতম একটি টপ লেভেল ডোমেইন প্রয়োজন, যেমন "*.org".<br />
-যে সকল প্রোটোকল সমর্থন করে: <code>$1</code> (প্রোটকল উল্লেখ করা না হলে http:// ডিফল্ট হিসাবে ব্যবহৃত হবে)।',
+যে সকল {{PLURAL:$2|প্রোটোকল|প্রোটোকলসমূহ}} সমর্থন করে: <code>$1</code> (প্রোটকল উল্লেখ করা না হলে http:// ডিফল্ট হিসাবে ব্যবহৃত হবে)।',
 'linksearch-line' => '$2 থেকে $1 এ লিংক করা হয়েছে',
 'linksearch-error' => 'হোস্ট নামের শুরুতে কেবলমাত্র ওয়াইল্ডকার্ড ব্যবহার করা যায়।',
 
@@ -1981,10 +1987,6 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'activeusers-hidesysops' => 'প্রশাসক লুকাও',
 'activeusers-noresult' => 'কোনো ব্যবহারকারী পাওয়া যায়নি।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ব্যবহারকারী সৃষ্টির লগ',
-'newuserlogpagetext' => 'এটি নতুন ব্যবহারকারী সৃষ্টির লগ',
-
 # Special:ListGroupRights
 'listgrouprights' => 'দলগত ব্যবহারকারী অধিকার',
 'listgrouprights-summary' => 'এই উইকির ব্যবহারকারীদের একটি গ্রুপগুলোর তালিকা দেখানো হচ্ছে, সাথে গ্রুপের কার্যপরিধিও উল্লেখ করা হয়েছে।
@@ -2050,12 +2052,9 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'watchnologin' => 'আপনি এখনও লগ-ইন করেননি।',
 'watchnologintext' => 'আপনার নজর তালিকা পরিবর্তনের জন্য আপনাকে অবশ্যই অ্যাকাউন্টে [[Special:UserLogin|প্রবেশ করতে হবে]]।',
 'addwatch' => 'নজরতালিকায় যোগ করো',
-'addedwatchtext' => "\"<nowiki>\$1</nowiki>\" পাতাটি আপনার [[Special:Watchlist|নজরতালিকা]]-তে যোগ করা হয়েছে৷
-
-ভবিষ্যতে এই পাতা ও এই পাতার সাথে সম্পর্কিত আলোচনা পাতায় সংঘটিত যাবতীয় পরিবর্তন এখানে তালিকাভুক্ত হবে৷
-এছাড়া [[Special:RecentChanges|সাম্প্রতিক পরিবর্তনসমূহ]]তালিকায় এই পাতাটিকে '''গাঢ়''' অক্ষরে দেখানো হবে যাতে আপনি সহজেই পাতাটি শনাক্ত করতে পারেন৷
+'addedwatchtext' => '"[[:$1]]" পাতাটি আপনার [[Special:Watchlist|নজরতালিকা]]-তে যোগ করা হয়েছে৷
 
-পরবরà§\8dতà§\80তà§\87 à¦\86পনি à¦¯à¦¦à¦¿ à¦ªà¦¾à¦¤à¦¾à¦\9fিà¦\95à§\87 à¦\86পনার à¦¨à¦\9cরতালিà¦\95া à¦¥à§\87à¦\95à§\87 à¦¸à¦°à¦¿à¦¯à¦¼à§\87 à¦«à§\87লতà§\87 à¦\9aান, à¦¤à¦¬à§\87 \"নà¦\9cর à¦¸à¦°à¦¿à¦¯à¦¼à§\87 à¦¨à¦¿à¦¨\" à¦\9fà§\8dযাবà¦\9fিতà§\87 à¦\95à§\8dলিà¦\95 à¦\95রবà§\87ন৷",
+ভবিষà§\8dযতà§\87 à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾ à¦\93 à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦° à¦¸à¦¾à¦¥à§\87 à¦¸à¦®à§\8dপরà§\8dà¦\95িত à¦\86লà§\8bà¦\9aনা à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦¸à¦\82à¦\98à¦\9fিত à¦¯à¦¾à¦¬à¦¤à§\80য় à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\8fà¦\96ানà§\87 à¦¤à¦¾à¦²à¦¿à¦\95াভà§\81à¦\95à§\8dত à¦¹à¦¬à§\87৷',
 'removewatch' => 'নজরতালিকা থেকে অপসারণ',
 'removedwatchtext' => '"[[:$1]]" পাতাটি [[Special:Watchlist|নজর তালিকা]] থেকে অপসারিত হয়েছে।',
 'watch' => 'নজর রাখুন',
@@ -2084,40 +2083,47 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'enotif_mailer' => '{{SITENAME}} বিজ্ঞপ্তি ই-মেইল প্রেরক',
 'enotif_reset' => 'সমস্ত পাতা দেখা হয়েছে হিসেবে চিহ্নিত করুন',
 'enotif_impersonal_salutation' => '{{SITENAME}} ব্যবহারকারী',
+'enotif_subject_deleted' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} অপসারণ করেছেন',
+'enotif_subject_created' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} তৈরী করেছেন',
+'enotif_subject_moved' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} স্থানান্তর করেছেন',
+'enotif_subject_restored' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} পুনরায় ফিরিয়ে এনেছেন',
+'enotif_subject_changed' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} পরিবর্তন করেছেন',
+'enotif_body_intro_deleted' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে অপসারণ করেছেন, বিস্তারিত $3।',
+'enotif_body_intro_created' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে তৈরী করেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।',
+'enotif_body_intro_moved' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে স্থানান্তর করেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।',
+'enotif_body_intro_restored' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE আগের অবস্থায় ফিরিয়ে এনেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।',
+'enotif_body_intro_changed' => '{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে পরিবর্তন করেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।',
 'enotif_lastvisited' => 'আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য $1 দেখুন।',
 'enotif_lastdiff' => 'এই পরিবর্তনটি দেখার জন্য $1 দেখুন।',
 'enotif_anon_editor' => 'বেনামী ব্যবহারকারী $1',
-'enotif_body' => '!প্রিয় $WATCHINGUSERNAME,
+'enotif_body' => 'প্রিয় $WATCHINGUSERNAME,
 
-{{SITENAME}}-এর $PAGETITLE শিরোনামের পাতাটি $PAGEEDITDATE তারিখে $PAGEEDITOR $CHANGEDORCREATED করেছেন। পাতাটির বর্তমান সংস্করণের জন্য $PAGETITLE_URL দেখুন।
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 সম্পাদকের সারাংশ: $PAGESUMMARY $PAGEMINOREDIT
 
 সম্পাদকের সাথে যোগাযোগের উপায়:
-
-ই-মেইল: $PAGEEDITOR_EMAIL
+ইমেইল: $PAGEEDITOR_EMAIL
 উইকি: $PAGEEDITOR_WIKI
 
-পাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি এই পাতায় ব্রাউজ করবেন।
-এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।
+পাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি এই পাতায় ব্রাউজ করবেন। এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।
 
-
-                        {{SITENAME}} বিজ্ঞপ্তি ব্যবস্থা
+{{SITENAME}} নোটিফিকেশন
 
 --
+ইমেইল নোটিফিকেশন সেটিং পরিবর্তনের জন্য দেখুন
+{{canonicalurl:{{#special:Preferences}}}}
 
-à¦\86পনার à¦¨à¦\9cরতালিà¦\95া à¦¸à§\87à¦\9fিà¦\82স à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রতà§\87 à¦\9aাà¦\87লà§\87 à¦\8fà¦\96ানà§\87 à¦¯à¦¾à¦¨:
+à¦\86পনার à¦¨à¦\9cরতালিà¦\95া à¦¸à§\87à¦\9fিà¦\82স à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রতà§\87 à¦\9aাà¦\87লà§\87 à¦¦à§\87à¦\96à§\81ন, 
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-
 নজরতালিকা থেকে কোন পাতা অপসারণ করতে চাইলে এখানে যান:
 $UNWATCHURL
 
-
 প্রতিক্রিয়া জানাতে ও আরও সহযোগিতার জন্য:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'তৈরী হয়েছিল',
+'changed' => 'পরিবর্তিত',
 
 # Delete
 'deletepage' => 'পাতাটি মুছে ফেলা হোক',
@@ -2188,6 +2194,7 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]]-কে [[$2]]-এ সরিয়ে নেওয়া হয়েছে',
 'protect-badnamespace-title' => 'নামস্থানটি সুরক্ষিত করা সম্ভব নয়',
 'protect-badnamespace-text' => 'এই নামস্থানের পাতাগুলো সুরক্ষিত করা সম্ভব নয়।',
+'protect-norestrictiontypes-title' => 'সুরক্ষা প্রযোজ্য নয় এমন পাতা',
 'protect-legend' => 'সুরক্ষা নিশ্চিত করুন',
 'protectcomment' => 'কারণ:',
 'protectexpiry' => 'মেয়াদোত্তীর্ণ হবে:',
@@ -2814,6 +2821,10 @@ $1',
 'pageinfo-contentpage' => 'তথ্য পাতা হিসাবে বিবেচিত হয়েছে',
 'pageinfo-contentpage-yes' => 'হ্যাঁ',
 'pageinfo-protect-cascading-yes' => 'হ্যাঁ',
+'pageinfo-category-info' => 'বিষয়শ্রেণী তথ্য',
+'pageinfo-category-pages' => 'পাতার সংখ্যা',
+'pageinfo-category-subcats' => 'উপবিষয়শ্রেণীর সংখ্যা',
+'pageinfo-category-files' => 'ফাইলের সংখ্যা',
 
 # Patrolling
 'markaspatrolleddiff' => 'পরীক্ষিত বলে চিহ্নিত করুন',
@@ -2857,6 +2868,7 @@ $1',
 'file-nohires' => 'এর চেয়ে বেশি রেজোলিউশন লভ্য নয়।',
 'svg-long-desc' => 'SVG ফাইল, সাধারণত $1 × $2 pixels, ফাইলের আকার: $3',
 'svg-long-desc-animated' => 'এনিমেটেড SVG ফাইল, সাধারণত $1 × $2 pixels, ফাইলের আকার: $3',
+'svg-long-error' => 'অবৈধ SVG ফাইল: $1',
 'show-big-image' => 'পূর্ণ রেজোলিউশন',
 'show-big-image-preview' => 'এই প্রিভিউ-এর আকার: $1।',
 'show-big-image-other' => 'অন্যান্য {{PLURAL:$2|আকার|আকারসমূহ}}: $1।',
@@ -2886,7 +2898,10 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 মিনিট|$1 মিনিট}}',
 'hours' => '{{PLURAL:$1|$1 ঘণ্টা|$1 ঘণ্টা}}',
 'days' => '{{PLURAL:$1|$1 দিন|$1 দিন}}',
+'months' => '{{PLURAL:$1|$1 মাস}}',
+'years' => '{{PLURAL:$1|$1 বছর}}',
 'ago' => '$1 আগে',
+'just-now' => 'এখনই',
 
 # Bad image list
 'bad_image_list' => 'ফরম্যাটটি এরকম:
@@ -3590,11 +3605,14 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'logentry-move-move_redir-noredirect' => '$1 ব্যবহারকারী $3 পাতাটিকে $4 শিরোনামে পুনর্নির্দেশনার ওপর দিয়ে কোনো পুনর্নির্দেশনা ছাড়াই স্থানান্তর করেছেন',
 'logentry-patrol-patrol' => '$1 ব্যবহারকারী $3 পাতার $4 নম্বর সংস্করণ পরীক্ষিত বলে চিহ্নিত করেছেন',
 'logentry-patrol-patrol-auto' => '$1 ব্যবহারকারী স্বয়ংক্রিয়ভাবে $3 পাতার $4 নম্বর সংস্করণ পরীক্ষিত বলে চিহ্নিত করেছেন',
-'logentry-newusers-newusers' => '$1 à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦¤à§\88রি à¦\95রà§\87à¦\9bà§\87ন',
-'logentry-newusers-create' => '$1 à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦¤à§\88রি à¦\95রà§\87à¦\9bà§\87ন',
-'logentry-newusers-create2' => '$1 ব্যবহারকারী $3 নামে একটি অ্যাকাউন্ট তৈরি করেছেন',
+'logentry-newusers-newusers' => '$1 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি à¦¤à§\88রি à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87',
+'logentry-newusers-create' => '$1 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি à¦¤à§\88রà§\80 à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87',
+'logentry-newusers-create2' => '$1 ব্যবহারকারী $3 নামের অ্যাকাউন্টটি তৈরী করেছেন',
 'logentry-newusers-autocreate' => '$1 অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে তৈরি হয়েছে',
 'newuserlog-byemail' => 'শব্দচাবি ইমেইলের মাধ্যমে পাঠানো হয়েছে',
+'logentry-rights-rights' => '$1 ব্যবহারকারী, $3 এর দলগত সদস্যপদ $4 থেকে $5 এ পরিবর্তন করেছেন',
+'logentry-rights-autopromote' => '$1 সয়ংক্রিয়ভাবে $4 থেকে $5 এ উন্নীত হয়েছে',
+'rightsnone' => '(কিছু নাই)',
 
 # Feedback
 'feedback-subject' => 'বিষয়:',
index 20f8f7b..d2e61c2 100644 (file)
@@ -963,9 +963,11 @@ $2',
 
 'grouppage-sysop' => '{{ns:project}}:প্রশাসকগি',
 
+# Special:Log/newusers
+'newuserlogpage' => 'আতাকুরা হঙসে লগহানি',
+
 # User rights log
 'rightslog' => 'আতাকুরার অধিকারর লগ',
-'rightsnone' => '(নেই)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'পাতা এহান পাকর',
@@ -1231,9 +1233,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ActiveUsers
 'activeusers-noresult' => 'আতাকুরা নাপেইলাং।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'আতাকুরা হঙসে লগহানি',
-
 # Special:ListGroupRights
 'listgrouprights-key' => '* <span class="listgrouprights-granted">য়্যাথাং পাসে অধিকার</span>
 * <span class="listgrouprights-revoked">থেপকরানি অসে অধিকার</span>',
@@ -1276,6 +1275,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'watching' => 'চা...',
 'unwatching' => 'নাউচা...',
 
+'changed' => 'পতেসে',
+
 # Delete
 'deletepage' => 'পাতাহান পুস',
 'confirm' => 'লেপকরানি',
@@ -1728,6 +1729,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'revdelete-restricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি ফলা',
 'revdelete-unrestricted' => 'ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি নেইকর',
 'newuserlog-byemail' => 'ই-মেইলর মা পেঠাদিয়াসি পাসৱার্ডগ',
+'rightsnone' => '(নেই)',
 
 # Search suggestions
 'searchsuggest-search' => 'বিসারা',
index cc9b054..44f89a5 100644 (file)
@@ -1457,12 +1457,13 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'right-sendemail' => "Kas ur postel d'an implijerien all",
 'right-passwordreset' => 'Gwelet ar posteloù assevel gerioù-tremen',
 
+# Special:Log/newusers
+'newuserlogpage' => "Marilh ar c'hontoù krouet",
+'newuserlogpagetext' => "Marilh krouiñ ar c'hontoù implijer.",
+
 # User rights log
 'rightslog' => 'Marilh statud an implijerien',
 'rightslogtext' => "Setu marilh ar c'hemmoù statud bet c'hoarvezet d'an implijerien.",
-'rightslogentry' => '{{Gender:.|en|he}} deus cheñchet gwirioù an {{Gender:.|implijer|implijerez}}  $1 a oa $2 hag a zo bet lakaet da $3',
-'rightslogentry-autopromote' => 'zo bet anvet ent emgefre a $2 da $3',
-'rightsnone' => '(netra)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lenn ar bajenn-mañ',
@@ -2107,10 +2108,6 @@ Protokoloù skoret : <code>$1</code> (defaults to http:// na lakait hini ebet eu
 'activeusers-hidesysops' => 'Kuzhat ar verourien',
 'activeusers-noresult' => "N'eus bet kavet implijer ebet.",
 
-# Special:Log/newusers
-'newuserlogpage' => "Marilh ar c'hontoù krouet",
-'newuserlogpagetext' => "Marilh krouiñ ar c'hontoù implijer.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gwirioù ar strolladoù implijer',
 'listgrouprights-summary' => 'Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.
@@ -2243,6 +2240,8 @@ $UNWATCHURL
 
 Evezhiadennoù ha skoazell pelloc\'h :
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'Krouet',
+'changed' => 'kemmet',
 
 # Delete
 'deletepage' => 'Diverkañ ur bajenn',
@@ -3835,6 +3834,7 @@ Diskouezet eo ar skeudennoù gant ur pizhder uhel, erounit a ra ar restroù all
 'logentry-newusers-create2' => 'Gant $1 eo bet krouet ar gont implijer $3',
 'logentry-newusers-autocreate' => 'Krouet eo bet kont $1 ent emgefre',
 'newuserlog-byemail' => 'ger-tremen kaset dre bostel',
+'rightsnone' => '(netra)',
 
 # Feedback
 'feedback-bugornote' => "Ma'z oc'h prest da zeskrivañ ur gudenn deknikel dre ar munud e c'hallit [\$1 kemenn un draen].
index 6638da4..a8ac5a2 100644 (file)
@@ -1570,13 +1570,13 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'right-sendemail' => 'Slanje e-maila drugim korisnicima',
 'right-passwordreset' => 'Pogledaj e-mailove za obnavljanje šifre',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Zapis novih korisnika',
+'newuserlogpagetext' => 'Ovo je zapis o registraciji novih korisnika.',
+
 # User rights log
 'rightslog' => 'Zapisnik korisničkih prava',
 'rightslogtext' => 'Ovo je zapis promjena korisničkih prava.',
-'rightslogentry' => 'promjena članstva u grupi za $1 sa $2 na $3',
-'rightslogentry-autopromote' => 'je automatski unaprijeđen iz $2 u $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|je promijenio|je promijenila|je promijenio}} članstvo grupe za $3 iz $4 u $5',
-'rightsnone' => '(nema)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'čitate ovu stranicu',
@@ -2189,10 +2189,6 @@ Podržani protokoli: <code>$1</code> (ne dodavajte bilo koji od ovih u vašu pre
 'activeusers-hidesysops' => 'Sakrij administratore',
 'activeusers-noresult' => 'Nije pronađen korisnik.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Zapis novih korisnika',
-'newuserlogpagetext' => 'Ovo je zapis o registraciji novih korisnika.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prava korisničkih grupa',
 'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
@@ -2324,6 +2320,8 @@ $UNWATCHURL
 
 Povratne informacije i daljnja pomoć:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'napravljena',
+'changed' => 'promijenjena',
 
 # Delete
 'deletepage' => 'Obrišite stranicu',
@@ -3936,6 +3934,8 @@ Slike su prikazane u punoj veličini, ostale vrste datoteka su prikazane direktn
 'logentry-newusers-create2' => '$1 je napravio korisnički račun $3',
 'logentry-newusers-autocreate' => 'Korisnički račun $1 je automatski napravljen',
 'newuserlog-byemail' => 'šifra je poslana putem e-maila',
+'logentry-rights-rights' => '$1 {{GENDER:$1|je promijenio|je promijenila|je promijenio}} članstvo grupe za $3 iz $4 u $5',
+'rightsnone' => '(nema)',
 
 # Feedback
 'feedback-bugornote' => 'Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite "bug" (grešku)].
index aa82689..17fc230 100644 (file)
@@ -1476,15 +1476,13 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'right-sendemail' => 'Enviar missatges de correu electrònic a altres usuaris',
 'right-passwordreset' => 'Veure les soŀlicituds de restabliment de contrasenya per correu electrònic',
 
+# Special:Log/newusers
+'newuserlogpage' => "Registre de creació de l'usuari",
+'newuserlogpagetext' => 'Aquest és un registre de creació de nous usuaris.',
+
 # User rights log
 'rightslog' => "Registre dels permisos d'usuari",
 'rightslogtext' => "Aquest és un registre de canvis dels permisos d'usuari.",
-'rightslogentry' => 'ha modificat els drets de $1 del grup $2 a $3',
-'rightslogentry-autopromote' => 'ha estat promogut automàticament de $2 a $3',
-'logentry-rights-rights' => '$1 ha canviat la pertinença de grups per $3 de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 ha canviat la pertinença de grups per $3',
-'logentry-rights-autopromote' => '$1 ha estat promogut automàticament de $4 a $5',
-'rightsnone' => '(cap)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'llegir aquesta pàgina',
@@ -2088,8 +2086,8 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
 'linksearch-ns' => 'Espai de noms:',
 'linksearch-ok' => 'Cerca',
 'linksearch-text' => 'Es poden utilitzar caràcters comodí com "*.wikipedia.org".
-Necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
-Protocols admesos: <code>$1</code> (http:// per defecte si no se n\'especifica cap).',
+Es necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
+{{PLURAL:$2|Protocol admès|Protocols admesos}}: <code>$1</code> (http:// per defecte si no se n\'especifica cap).',
 'linksearch-line' => '$1 enllaçat a $2',
 'linksearch-error' => "Els caràcters comodí només poden aparèixer a l'inici de l'url.",
 
@@ -2108,10 +2106,6 @@ Protocols admesos: <code>$1</code> (http:// per defecte si no se n\'especifica c
 'activeusers-hidesysops' => 'Amaga administradors',
 'activeusers-noresult' => "No s'han trobat usuaris.",
 
-# Special:Log/newusers
-'newuserlogpage' => "Registre de creació de l'usuari",
-'newuserlogpagetext' => 'Aquest és un registre de creació de nous usuaris.',
-
 # Special:ListGroupRights
 'listgrouprights' => "Drets dels grups d'usuaris",
 'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
@@ -2250,6 +2244,8 @@ $UNWATCHURL
 
 Suggeriments i ajuda:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'modificada',
 
 # Delete
 'deletepage' => 'Elimina la pàgina',
@@ -3824,6 +3820,10 @@ Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien dir
 'logentry-newusers-create2' => "$1 ha creat el compte d'usuari $3",
 'logentry-newusers-autocreate' => "El compte d'usuari $1 ha estat creat de manera automàtica",
 'newuserlog-byemail' => 'contrasenya enviada per correu electrònic',
+'logentry-rights-rights' => '$1 ha canviat la pertinença de grups per $3 de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 ha canviat la pertinença de grups per $3',
+'logentry-rights-autopromote' => '$1 ha estat promogut automàticament de $4 a $5',
+'rightsnone' => '(cap)',
 
 # Feedback
 'feedback-bugornote' => "Si podeu descriure un problema tècnic en detall, [$1 informeu-ne].
index 4b2eebe..452ada1 100644 (file)
@@ -826,6 +826,9 @@ $1',
 'grouppage-bureaucrat' => '{{ns:project}}:Даржахой',
 'grouppage-suppress' => '{{ns:project}}:Левисорхой',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Декъашхой дlабазбина тептар',
+
 # User rights log
 'rightslog' => 'Декъашхон бакъона тéптар',
 
@@ -1059,9 +1062,6 @@ PICT # тайп тайпан
 # Special:ActiveUsers
 'activeusers' => 'Жигар декъашхой могlам',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Декъашхой дlабазбина тептар',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Декъашхойн тобанаши бакъонаш',
 'listgrouprights-group' => 'Тоба',
index b894232..96ead71 100644 (file)
@@ -844,9 +844,12 @@ Kon gipili nimo nga ihatag kini, gamiton kini aron pasidunggan ka sa imong mga t
 
 'grouppage-sysop' => '{{ns:project}}:Mga tigdumala',
 
+# Special:Log/newusers
+'newuserlogpage' => "Log sa paghimo'g gumagamit",
+'newuserlogpagetext' => "Kini mao ang ''log'' sa bag-ong namugnang mga gumagamit.",
+
 # User rights log
 'rightslog' => 'Log sa mga katungod sa gumagamit',
-'rightsnone' => '(wala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaha kining panid',
@@ -972,10 +975,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch' => 'Mga sumpay sa gawas',
 
-# Special:Log/newusers
-'newuserlogpage' => "Log sa paghimo'g gumagamit",
-'newuserlogpagetext' => "Kini mao ang ''log'' sa bag-ong namugnang mga gumagamit.",
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(talaan sa mga miyembro)',
 
@@ -1250,5 +1249,6 @@ Ang uban default nga nakatago.
 'revdelete-restricted' => 'mga na-aplay nga restriksyon sa mga tagdumala',
 'revdelete-unrestricted' => 'gitangtang ang mga restriksyon alang sa mga tagdumala',
 'newuserlog-byemail' => "ang pasword gipadala na pinaagi sa ''e-mail''",
+'rightsnone' => '(wala)',
 
 );
index b2a0041..74dfb8b 100644 (file)
@@ -278,7 +278,7 @@ $messages = array(
 
 'about' => 'سەبارەت',
 'article' => 'بابەت',
-'newwindow' => '(لە پەڕەیەکی نوێ دەکرێتەوە)',
+'newwindow' => '(لە پەڕەیەکی نوێدا دەکرێتەوە)',
 'cancel' => 'ھەڵیوەشێنەوە',
 'moredotdotdot' => 'زیاتر',
 'mypage' => 'پەڕه‌',
@@ -399,7 +399,7 @@ $1',
 
 'badaccess' => 'ھەڵە لە بە دەست ھێنان',
 'badaccess-group0' => 'ڕێگەت پێ نەدراوە بۆ بەجێهێنای ئەو ئەنجامە وا داخوازیت کردووه.',
-'badaccess-groups' => 'ئەو ئەنجامەی وا داخوازیت کردووه مەحدود کراوە بۆ بەکارهێنەرانی {{PLURAL:$2|دەستەی|یەکێک لە دەستەکانی}}: $1',
+'badaccess-groups' => 'ئەو کردەوەیەی داوات کردووه تایبەتە بۆ بەکارھێنەرانی {{PLURAL:$2|گرووپی|گرووپەکانی}}: $1.',
 
 'versionrequired' => 'وەشانی $1ی‌ میدیاویکی پێویستە',
 'versionrequiredtext' => 'پێویستیت بە وەشانی $1ی ویکیمیدیا ھەیە بۆ بەکاربردنی ئەم پەڕەیە.
@@ -429,7 +429,7 @@ $1',
 'hidetoc' => 'بیشارەوە',
 'collapsible-collapse' => 'کۆیبکەوە',
 'collapsible-expand' => 'بڵاویبکەوە',
-'thisisdeleted' => 'نیشاندان یا گەڕاندنەوەی $1؟',
+'thisisdeleted' => '$1 نیشان بدە یا بھێنەوە؟',
 'viewdeleted' => '$1 نیشان بده‌؟',
 'restorelink' => '{{PLURAL:$1|یەک گۆڕانکاریی سڕاو|$1 گۆڕانکاریی سڕاو}}',
 'feedlinks' => 'خۆراک:',
@@ -744,7 +744,7 @@ $2
 'missingcommentheader' => "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.
 ئەگەر دیسان «{{int:savearticle}}» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.",
 'summary-preview' => 'پێشبینینی کورتە:',
-'subject-preview' => 'پێشبینینی بابەت\\سەردێڕ :',
+'subject-preview' => 'پێشبینینی بابەت/سەردێڕ:',
 'blockedtitle' => 'به‌کار هینه‌ر له‌کار خراوه',
 'blockedtext' => "'''ناوی بەکارهێنەری یان ئای‌پی ئەدرەسی تۆ بەربەست‌ کراوە.'''
 
@@ -966,7 +966,7 @@ $3 هۆکاری "$2" خستوەتەڕوو',
 'historyempty' => '(پووچ)',
 
 # Revision feed
-'history-feed-title' => 'Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8cاÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95',
+'history-feed-title' => 'Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95کاÙ\86',
 'history-feed-description' => 'مێژووی پیاچوونەوە بۆ ئەم پەڕە لە ویکییەکە',
 'history-feed-item-nocomment' => '$1 لە $2',
 'history-feed-empty' => 'لاپەڕەی داخوازی‌کراو بوونی نیە.<br />
@@ -1106,7 +1106,7 @@ $1",
 'mergelogpagetext' => 'لە خوارەوە دوایین مێژووی‌لاپەڕە خستنە سەر لاپەڕەیەکی‌تر، دەبینی.',
 
 # Diffs
-'history-title' => 'Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8cاچوونەوەکانی «$1»',
+'history-title' => 'Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8eداچوونەوەکانی «$1»',
 'difference-title' => 'جیاوازیی نێوان پێداچوونەوەکانی «$1»',
 'difference-title-multipage' => 'جیاوازیی نێوان پەڕەی «$1» و «$2»',
 'difference-multipage' => '(جیاوازی نێوان پەڕەکان)',
@@ -1328,8 +1328,8 @@ $1",
 'userrights-nodatabase' => 'بنکەدراوی $1 بوونی نیە یا لەم شوێنە نیە.',
 'userrights-nologin' => 'بۆ دانانی مافەکانی بەکارهێنەر دەبێ بە هەژماری بەڕێوبەری [[Special:UserLogin|بچیتە ژووروە]].',
 'userrights-notallowed' => 'ھەژمارەکەی تۆ دەسەڵاتی دانان یان لابردنی مافەکانی بەکارھێنەری نییە.',
-'userrights-changeable-col' => 'ئەو گرووپانە بۆت ئەگۆڕدرێن',
-'userrights-unchangeable-col' => 'ئەو گرووپانە بۆت ناگۆڕدرێن',
+'userrights-changeable-col' => 'ئەو گرووپانەی دەتوانی بیگۆڕی',
+'userrights-unchangeable-col' => 'ئەو گرووپانەی ناتوانی بیگۆڕی',
 
 # Groups
 'group' => 'گرووپ:',
@@ -1339,7 +1339,7 @@ $1",
 'group-sysop' => 'بەڕێوبەران',
 'group-bureaucrat' => 'بیوروکراتەکان',
 'group-suppress' => 'چاودێرەکان',
-'group-all' => '(هەموو)',
+'group-all' => '(ھەموو)',
 
 'group-user-member' => '{{GENDER:$1|بەکارھێنەر}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|بەکارھێنەرانی پەسندکراوی خۆگەڕ}}',
@@ -1413,11 +1413,13 @@ $1",
 'right-override-export-depth' => 'هەناردنی لاپەڕەکان کە لاپەڕەکانی بەستەر پێ‌دراو تا قووڵایی 5 لەخۆ بگرێت',
 'right-sendemail' => 'ئەمەیل بنێرە بۆ بەکارھێنەرانی تر',
 
+# Special:Log/newusers
+'newuserlogpage' => 'لۆگی دروستکردنی بەکارھێنەر',
+'newuserlogpagetext' => 'ئەمە لۆگێکی دروستکردنی بەکارھێنەرە.',
+
 # User rights log
 'rightslog' => 'لۆگی مافەکانی بەکارھێنەر',
 'rightslogtext' => 'ئەمە لۆگی دەستکاری مافەکانی بەکار‌هێنەرە.',
-'rightslogentry' => 'بۆ $1 ئەندامەتی گرووپی $2 گۆڕدرا بۆ $3',
-'rightsnone' => '(ھیچ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'خوێندنەوەی ئەم پەڕە',
@@ -1914,7 +1916,7 @@ $1',
 'prevpage' => 'پەڕەی پێشەوە ($1)',
 'allpagesfrom' => 'نیشاندانی پەڕەکان بە دەستپێکردن لە:',
 'allpagesto' => 'نیشاندانی پەڕەکان بە دوایی ھاتن بە:',
-'allarticles' => 'ھەمووی وتارەکان',
+'allarticles' => 'ھەموو پەڕەکان',
 'allinnamespace' => 'ھەموو پەڕەکان (بۆشایی-ناوی $1)',
 'allnotinnamespace' => 'ھەموو پەڕەکان (ئەوانەی لە بۆشایی-ناوی $1دا نین)',
 'allpagesprev' => 'پێش',
@@ -1940,7 +1942,7 @@ $1',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'بەشدارییە سڕاوەکان',
-'deletedcontributions-title' => 'هاوبەشییەکانی سڕاوەی بەکارهێنەر',
+'deletedcontributions-title' => 'بەشدارییە سڕاوەکانی بەکارھێنەر',
 'sp-deletedcontributions-contribs' => 'بەشدارییەکان',
 
 # Special:LinkSearch
@@ -1968,10 +1970,6 @@ $1',
 'activeusers-hidesysops' => 'بەڕێوبەران بشارەوە',
 'activeusers-noresult' => 'هیچ بەکارهێنەرێک نەدۆزرایەوە',
 
-# Special:Log/newusers
-'newuserlogpage' => 'لۆگی دروستکردنی بەکارھێنەر',
-'newuserlogpagetext' => 'ئەمە لۆگێکی دروستکردنی بەکارھێنەرە.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'مافەکانی گرووپی بەکارھێنەر',
 'listgrouprights-summary' => 'ئەمە لیستێکە لە گرووپەکانی بەکارهێنەر لەسەر ئەم ویکی‌یە، دەگەڵ مافەکانی دەست‌پێ‌گەیشتنی هاوپەیوەندیان.
@@ -2061,7 +2059,7 @@ $1',
 'unwatching' => 'لابردنی چاودێری...',
 
 'enotif_mailer' => 'نامەی ڕاگەیاندنی {{SITENAME}}',
-'enotif_reset' => 'گشت پەڕەکان وەک بینراو دیاری بکە',
+'enotif_reset' => 'Ú¾Û\95Ù\85Ù\88Ù\88 پەڕەکان وەک بینراو دیاری بکە',
 'enotif_impersonal_salutation' => 'بەکارهێنەری      {{SITENAME}}',
 'enotif_subject_deleted' => 'پەڕەی {{SITENAME}} $1 بە دەستی {{gender:$2|$2}} سڕایەوە.',
 'enotif_subject_created' => 'پەڕەی {{SITENAME}} $1 بە دەستی {{gender:$2|$2}} دروست کرا.',
@@ -2102,6 +2100,8 @@ $UNWATCHURL
 
 کاردانەوە و یارمەتیی زۆرتر:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'دروستکرا',
+'changed' => 'گۆڕدرا',
 
 # Delete
 'deletepage' => 'پەڕە بسڕەوە',
@@ -2381,6 +2381,7 @@ $1',
 'blocklist-userblocks' => 'ھەژمارە بەربەستکراوەکان بشارەوە',
 'blocklist-target' => 'مەبەست',
 'blocklist-expiry' => 'ھەتا:',
+'blocklist-by' => 'بەڕێوەبەری بەربەستکەر',
 'blocklist-params' => 'پارامەترەکانی بەربەستن',
 'blocklist-reason' => 'ھۆکار',
 'ipblocklist-submit' => 'گەڕان',
@@ -2388,11 +2389,11 @@ $1',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|بەربەستنەکانی}} تر',
 'infiniteblock' => 'بێکۆتایی',
 'expiringblock' => 'لە $2، $1 ماوەی بەسەر دەچێ',
-'anononlyblock' => 'تەنها بۆ چەن سات',
+'anononlyblock' => 'تەنیا بەکارھێنەرە بێناوەکان',
 'noautoblockblock' => 'بەربەستنی خۆگەڕ ناچالاکە',
-'createaccountblock' => 'درووست‌کردنی هەژمارە بەربەست کرا',
-'emailblock' => 'ئی‌مەیل بەربەست‌کرا',
-'blocklist-nousertalk' => 'دەستکاری لاپەڕەی وتووێژی خۆ ناکرێت',
+'createaccountblock' => 'دروستکردنی ھەژمار ناچالاکە',
+'emailblock' => 'ئیمەیل ناچالاکە',
+'blocklist-nousertalk' => 'دەستکاریکردنی پەڕەی وتووێژی خۆی ناچالاکە',
 'ipblocklist-empty' => 'لیستی بەربەستەکان بەتاڵە',
 'ipblocklist-no-results' => 'ئای‌پی ئەدرەس یان ناوی‌ بەکارهێنەری داواکراو بەربەست نەکراوە.',
 'blocklink' => 'بەربەستن',
@@ -2405,13 +2406,13 @@ $1',
 'blocklogpage' => 'لۆگی بەربەستن',
 'blocklog-showlog' => 'ئەم بەکارھێنەرە پێشتر بربەست کراوە.
 لۆگی بەربەستن لە ژێرەوە ھاتووە:',
-'blocklogentry' => '[[$1]]ی بۆ ماوەی $2 بەربەست کرد',
+'blocklogentry' => '[[$1]]ی بۆ ماوەی $2 بەربەست کرد $3',
 'reblock-logentry' => 'دۆخی ئاستەنگ کردنی [[$1]]  بۆ گۆڕدرا بۆ ماوەی $2 $3',
 'blocklogtext' => 'ئەمە لۆگێکی کردەوەکانی بەربەستن یان لابردنی بەربەستنی بەکارھێنەرە.
 ئەو ئایپی ئەدرەسانە خۆکارانە بەربستکراون بە ڕیز نەکراون.
 سەیری [[Special:BlockList|لیستی بەربەستن]] بکە بۆ بینینی ئەو بەرگری و بەربەستنانە ئێستا لە بەرکاردان.',
 'unblocklogentry' => '$1ی کردەوە',
-'block-log-flags-anononly' => 'تەنیا بەکارھێنەرە نەناسراوەکان',
+'block-log-flags-anononly' => 'تەنیا بەکارھێنەرە بێناوەکان',
 'block-log-flags-nocreate' => 'دروستکردنی ھەژمار ناچالاک کرا',
 'block-log-flags-noautoblock' => 'بەربەستنی خۆگەڕ ناچالاک کرا',
 'block-log-flags-noemail' => 'ئیمەیل ناچالاک کرا',
@@ -2561,7 +2562,7 @@ $1',
 بۆ هەناردنی لاپەڕەکان، سەردێڕەکان لە چوارچێوەی دەقی خوارەوە بنووسە، هەر هێڵێک یەک سەردێڕ. هەروا هەڵبژێرە ئایا پێداچوونەوەی ئێستا و هەموو پێداچوونەوە کۆنەکانت دەوێ یان هەر پێداچوونەوەی ئێستا و زانیاریی سەبارەت بە دوایین دەستکاری.
 
 لە بابەتی دواتر هەروەها دەتوانی لە بەستەرێک کەڵک وەرگریت، بۆ نموونە [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] بۆ لەپەڕەی "[[{{MediaWiki:Mainpage}}]]".',
-'exportall' => 'گشت پەڕەکان ھەناردە بکە',
+'exportall' => 'Ú¾Û\95Ù\85Ù\88Ù\88 پەڕەکان ھەناردە بکە',
 'exportcuronly' => 'تەنها پێداچوونەوەی ئێستا لەخۆ بگرێت نەک هەموو مێژوو',
 'exportnohistory' => "----
 '''ئاگاداربە: '''ھەناردنی ھەموو مێژووی پەڕەکان لەم فۆرمەوە لەبەر ھۆکاری ڕێخستن، داخراوە.",
@@ -2647,7 +2648,7 @@ $1',
 # Import log
 'importlogpage' => 'هێنانەناوەی لۆگ',
 'importlogpagetext' => 'ھاوردنی پەڕەکان لەگەڵ مێژووی دەستکاری لە ویکییەکانی ترەوە.',
-'import-logentry-upload' => 'هێنراوەناوەی [[$1]] بە بارکردنی پەڕگە',
+'import-logentry-upload' => 'ھاوردنی [[$1]] بە بارکردنی پەڕگە',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
 'import-logentry-interwiki' => 'ترانس‌ویکی‌کراو $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}} لە $2',
@@ -3439,9 +3440,9 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 پەڕەی $3ی سڕییەوە',
 'logentry-delete-restore' => '$1 پەڕەی $3ی ھێنایەوە',
-'logentry-delete-revision' => '$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3 گۆڕیی: $4',
+'logentry-delete-revision' => '$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی گۆڕیی: $4',
 'logentry-suppress-delete' => '$1 پەڕەی $3 بەرگری کرد.',
-'revdelete-content-hid' => 'شاردنەوەی ناوەرۆک',
+'revdelete-content-hid' => 'ناوەرۆک شاردراوە',
 'revdelete-summary-hid' => 'کورتەی دەستکاری شاردراوە',
 'revdelete-uname-hid' => 'ناوی بەکارهێنەری شاراوە',
 'revdelete-content-unhid' => 'ناوەرۆک نیشان درا',
@@ -3458,6 +3459,7 @@ $5
 'logentry-newusers-create2' => 'ھەژماری بەکارھێنەریی $3 لە لایەن $1 دروست کرا',
 'logentry-newusers-autocreate' => 'ھەژماری $1 بە شێوەی خۆگەڕ دروستکرا',
 'newuserlog-byemail' => 'تێپەڕوشە بە ئیمەیل نێردرا.',
+'rightsnone' => '(ھیچ)',
 
 # Feedback
 'feedback-subject' => 'بابەت:',
index dde0ed4..1184b13 100644 (file)
@@ -607,6 +607,9 @@ Tistingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang
 
 'grouppage-sysop' => '{{ns:project}}:Mga manugdumala',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Listahan sang pag-ubra sang manug-usar',
+
 # User rights log
 'rightslog' => 'Lista sang mga karapatan sang manug-usar',
 
@@ -714,9 +717,6 @@ Ang paglarawan nga yara sa ibabaw sang [$2 pahina sang paglarawan sang akta] sin
 # Special:LinkSearch
 'linksearch' => 'Panggwa nga mga link',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Listahan sang pag-ubra sang manug-usar',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lista sang mga myembro)',
 
index d3e87b5..d8f0afd 100644 (file)
@@ -1022,6 +1022,10 @@ $3 мына бу себепни бильдирди: ''$2''",
 'grouppage-bureaucrat' => '{{ns:project}}:Бюрократлар',
 'grouppage-suppress' => '{{ns:project}}:Тефтишчилер',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Янъы къулланыджы журналы',
+'newuserlogpagetext' => 'Энъ сонъки къайд олгъан къулланыджы журналы.',
+
 # User rights log
 'rightslog' => 'Къулланыджынынъ акълары журналы',
 
@@ -1374,10 +1378,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'listusers-submit' => 'Косьтер',
 'listusers-noresult' => 'Ич бир къулланыджы тапылмады.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Янъы къулланыджы журналы',
-'newuserlogpagetext' => 'Энъ сонъки къайд олгъан къулланыджы журналы.',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(азалар джедвели)',
 
@@ -1469,6 +1469,8 @@ $UNWATCHURL
 
 Ярдым ве теклифлер ичюн:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'яратылды',
+'changed' => 'денъиштирильди',
 
 # Delete
 'deletepage' => 'Саифени ёкъ эт',
index 93f8a21..26c99c1 100644 (file)
@@ -1018,6 +1018,10 @@ Eger bildirseñiz, saifelerdeki deñişmelerni kimniñ yapqanını köstermek i
 'grouppage-bureaucrat' => '{{ns:project}}:Bürokratlar',
 'grouppage-suppress' => '{{ns:project}}:Teftişçiler',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Yañı qullanıcı jurnalı',
+'newuserlogpagetext' => 'Eñ sоñki qayd оlğan qullanıcı jurnalı.',
+
 # User rights log
 'rightslog' => 'Qullanıcınıñ aqları jurnalı',
 
@@ -1369,10 +1373,6 @@ Ayrıca [[Special:WantedCategories|talap etilgen kategoriyalarnıñ cedveline]]
 'listusers-submit' => 'Köster',
 'listusers-noresult' => 'İç bir qullanıcı tapılmadı.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Yañı qullanıcı jurnalı',
-'newuserlogpagetext' => 'Eñ sоñki qayd оlğan qullanıcı jurnalı.',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(azalar cedveli)',
 
@@ -1462,6 +1462,8 @@ $UNWATCHURL
 
 Yardım ve teklifler içün:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'yaratıldı',
+'changed' => 'deñiştirildi',
 
 # Delete
 'deletepage' => 'Saifeni yoq et',
index b0d79cf..54e051a 100644 (file)
@@ -493,6 +493,7 @@ $messages = array(
 'newwindow' => '(otevře se v novém okně)',
 'cancel' => 'Storno',
 'moredotdotdot' => 'Další…',
+'morenotlisted' => 'Další neuvedené…',
 'mypage' => 'Stránka',
 'mytalk' => 'Diskuse',
 'anontalk' => 'Diskuse k této IP adrese',
@@ -862,6 +863,7 @@ Počkejte chvíli, než to zkusíte znovu.',
 # E-mail sending
 'php-mail-error-unknown' => 'Neznámá chyba v PHP funkci mail()',
 'user-mail-no-addy' => 'Pokus o odeslání e-mailu bez e-mailové adresy',
+'user-mail-no-body' => 'Pokus o odeslání prázdného nebo nesmyslně krátkého e-mailu.',
 
 # Change password dialog
 'resetpass' => 'Změna hesla',
@@ -1642,15 +1644,13 @@ Tuto operaci nelze vrátit zpět.',
 'right-sendemail' => 'Odesílání e-mailů ostatním uživatelům',
 'right-passwordreset' => 'Prohlížení e-mailů pro znovunastavení hesla',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Kniha nových uživatelů',
+'newuserlogpagetext' => 'Toto je záznam nově zaregistrovaných uživatelů.',
+
 # User rights log
 'rightslog' => 'Kniha práv uživatelů',
 'rightslogtext' => 'Toto je záznam změn uživatelských práv.',
-'rightslogentry' => 'změnil pro $1 zařazení ve skupinách z $2 na $3',
-'rightslogentry-autopromote' => 'byl automaticky povýšen z $2 na $3',
-'logentry-rights-rights' => '$1 změnil členství $3 ve skupinách z $4 na $5',
-'logentry-rights-rights-legacy' => '$1 změnil členství $3 ve skupinách',
-'logentry-rights-autopromote' => '$1 byl automaticky povýšen z $4 na $5',
-'rightsnone' => '(žádné)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'přečíst tuto stránku',
@@ -2290,10 +2290,6 @@ Povinná je přinejmenším doména nejvyššího řádu, např. „*.org“.<br
 'activeusers-hidesysops' => 'Skrýt správce',
 'activeusers-noresult' => 'Nenalezen žádný uživatel.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Kniha nových uživatelů',
-'newuserlogpagetext' => 'Toto je záznam nově zaregistrovaných uživatelů.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Práva skupin uživatelů',
 'listgrouprights-summary' => 'Toto je seznam uživatelských skupin definovaných na této wiki a&nbsp;jejich přístupových práv.
@@ -2429,6 +2425,8 @@ $UNWATCHURL
 
 Rady a kontakt:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'vytvořil',
+'changed' => 'upravil',
 
 # Delete
 'deletepage' => 'Smazat stránku',
@@ -2494,6 +2492,8 @@ Můžete si prohlédnout též [[Special:ProtectedPages|seznam aktuálně platn
 'prot_1movedto2' => 'Stránka [[$1]] přemístěna na stránku [[$2]]',
 'protect-badnamespace-title' => 'Nezamykatelný jmenný prostor',
 'protect-badnamespace-text' => 'Stránky v tomto jmenném prostoru nelze zamykat.',
+'protect-norestrictiontypes-text' => 'Tuto stránku nelze zamknout, protože nejsou k dispozici žádné typy zámků.',
+'protect-norestrictiontypes-title' => 'Nezamykatelná stránka',
 'protect-legend' => 'Potvrdit zamčení',
 'protectcomment' => 'Důvod:',
 'protectexpiry' => 'Čas vypršení:',
@@ -3159,6 +3159,7 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Kouzelné slovo|Kouzelná slova}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Skrytá|Skryté}} kategorie ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Použitá šablona|Použité šablony}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Stránka, do které|Stránky, do kterých}} je tato stránka vložena ($1)',
 'pageinfo-toolboxlink' => 'Informace o stránce',
 'pageinfo-redirectsto' => 'Přesměrovává na',
 'pageinfo-redirectsto-info' => 'info',
@@ -3167,6 +3168,10 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'pageinfo-protect-cascading' => 'Kaskádový zámek',
 'pageinfo-protect-cascading-yes' => 'Ano',
 'pageinfo-protect-cascading-from' => 'Zámky pocházejí z kaskádových zámků na',
+'pageinfo-category-info' => 'Informace o kategorii',
+'pageinfo-category-pages' => 'Počet stránek',
+'pageinfo-category-subcats' => 'Počet podkategorií',
+'pageinfo-category-files' => 'Počet souborů',
 
 # Skin names
 'skinname-standard' => 'Klasický',
@@ -3254,6 +3259,8 @@ Otevřením souboru můžete ohrozit svůj počítač.",
 'minutes' => '{{PLURAL:$1|$1 minuta|$1 minuty|$1 minut}}',
 'hours' => '{{PLURAL:$1|$1 hodina|$1 hodiny|$1 hodin}}',
 'days' => '{{PLURAL:$1|$1 den|$1 dny|$1 dní}}',
+'months' => '{{PLURAL:$1|$1 měsícem|$1 měsíci}}',
+'years' => '{{PLURAL:$1|$1 rokem|$1 roky}}',
 'ago' => 'před 
 $1',
 'just-now' => 'Právě teď',
@@ -4066,6 +4073,10 @@ Obrázky se zobrazí v plném rozlišení, jiné typy souborů se otevřenou v p
 'logentry-newusers-create2' => '$1 založil uživatelský účet $3',
 'logentry-newusers-autocreate' => 'Automaticky byl založen účet $1',
 'newuserlog-byemail' => 'heslo zasláno e-mailem',
+'logentry-rights-rights' => '$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách z $4 na $5',
+'logentry-rights-rights-legacy' => '$1 změnil členství $3 ve skupinách',
+'logentry-rights-autopromote' => '$1 byl automaticky povýšen z $4 na $5',
+'rightsnone' => '(žádné)',
 
 # Feedback
 'feedback-bugornote' => 'Pokud dokážete podrobně popsat technický problém, můžete [$1 nahlásit chybu].
index 7f37b57..ae8744a 100644 (file)
@@ -710,6 +710,9 @@ Mòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją sta
 'right-autoconfirmed' => 'Edicëjô dzélowò zazychrowónych starnów',
 'right-bot' => 'Nacéchòwanié edicëjó jakno aùtomatnych',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nowi brëkòwnicë',
+
 # User rights log
 'rightslog' => 'Prawa brëkòwnika',
 
@@ -884,9 +887,6 @@ Mòżesz zawãżëc wëszłosc przez wëbranié ôrtu registru, miona brëkòwni
 # Special:LinkSearch
 'linksearch' => 'Bùtnowé lënczi',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nowi brëkòwnicë',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lësta nôlëżników karna)',
 
@@ -929,6 +929,8 @@ Czej chcesz remôc starnã z lëste ùzéronëch artiklów, klikni ''Òprzestôj
 'unwatching' => 'Ju ni ùzéróm...',
 
 'enotif_reset' => 'Òznaczë wszëtczé artiklë jakno òbëzdrzóné',
+'created' => 'zrobionô',
+'changed' => 'zmienioné',
 
 # Delete
 'deletepage' => 'Rëmôj starnã',
index 8e02957..377a32c 100644 (file)
@@ -660,7 +660,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 
 # User rights log
 'rightslogtext' => 'Ку пользовательсен прависене улăштарниссен журналě',
-'rightsnone' => '(çук)',
 
 # Recent changes
 'recentchanges' => 'Улшăнусем',
@@ -923,6 +922,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_reset' => 'Пур страницăсене те пăхнă пек палăрт',
 'enotif_anon_editor' => '$1 анонимлă хутшăнакан',
+'created' => 'хатĕрленĕ',
+'changed' => 'улăштарнă',
 
 # Delete
 'deletepage' => 'Кăларса парахнă статьясем',
@@ -1212,4 +1213,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'specialpages-group-users' => 'Хутшăнакансем тата правасем',
 'specialpages-group-highuse' => 'Нумай усă куракан страницăсем',
 
+# New logging system
+'rightsnone' => '(çук)',
+
 );
index ccd1dd7..eba65c0 100644 (file)
@@ -249,6 +249,7 @@ $messages = array(
 'newwindow' => '(yn agor mewn ffenest newydd)',
 'cancel' => 'Diddymu',
 'moredotdotdot' => 'Rhagor...',
+'morenotlisted' => 'Ni restrir y lleill...',
 'mypage' => 'Tudalen defnyddiwr',
 'mytalk' => 'Sgwrs',
 'anontalk' => 'Sgwrs ar gyfer y cyfeiriad IP hwn',
@@ -393,8 +394,8 @@ $1',
 'toc' => 'Cynnwys',
 'showtoc' => 'dangos',
 'hidetoc' => 'cuddio',
-'collapsible-collapse' => 'Crebachu',
-'collapsible-expand' => 'Ehangu',
+'collapsible-collapse' => 'Crebacher',
+'collapsible-expand' => 'Ehanger',
 'thisisdeleted' => 'Ydych chi am ddangos, neu ddad-ddileu $1?',
 'viewdeleted' => 'Gweld $1?',
 'restorelink' => "$1 {{PLURAL:$1|golygiad sydd wedi'i ddileu|golygiad sydd wedi'i ddileu|olygiad sydd wedi'u dileu|golygiad sydd wedi'u dileu|golygiad sydd wedi'u dileu|golygiad sydd wedi'u dileu}}",
@@ -491,7 +492,7 @@ Gofyniad: $2',
 'actionthrottled' => 'Tagwyd y weithred',
 'actionthrottledtext' => "Mae camau gwrth-sbam y wici yn cyfyngu ar ba mor aml y gall defnyddwyr ailwneud y weithred hon mewn byr amser, ac rydych chi wedi croesi'r terfyn.
 Ceisiwch eto ymhen rhai munudau.",
-'protectedpagetext' => "Mae'r dudalen hon wedi'i diogelu rhag cael ei golygu.",
+'protectedpagetext' => "Mae'r dudalen hon wedi'i diogelu rhag cael ei thrin a'i thrafod.",
 'viewsourcetext' => 'Cewch weld a chopïo côd y dudalen:',
 'viewyourtext' => "Cewch weld a copïo ffynhonnell ''eich golygiadau'' i'r dudalen hon:",
 'protectedinterface' => "Testun ar gyfer rhyngwyneb y wici yw cynnwys y dudalen hon. Clowyd y dudalen er mwyn ei diogeli. Os am gyfieithu'r neges neu ei newid ym mhob wici yn hytrach nag yn hwn yn unig, defnyddiwch [//translatewiki.net/ translatewiki.net], y prosiect MediaWiki sy'n hyrwyddo'r gwaith cyfieithu.",
@@ -611,6 +612,7 @@ Oedwch ychydig cyn mentro eto.',
 # E-mail sending
 'php-mail-error-unknown' => 'Gwall anhysbys yng ngweithrediad post() PHP',
 'user-mail-no-addy' => 'Wedi ceisio anfon e-bost heb gyfeiriad e-bost',
+'user-mail-no-body' => 'Ceisiwyd anfon e-bost gwag neu e-bost oedd a thestun rhy bwt iddo.',
 
 # Change password dialog
 'resetpass' => 'Newid cyfrinair y cyfrif',
@@ -668,6 +670,7 @@ Y cyfrinair dros dro: $2",
 'changeemail-oldemail' => 'Y cyfeiriad e-bost presennol:',
 'changeemail-newemail' => 'Cyfeiriad e-bost newydd:',
 'changeemail-none' => '(dim)',
+'changeemail-password' => 'Eich cyfrinair ar {{SITENAME}}:',
 'changeemail-submit' => 'Newidier y cyfeiriad e-bost',
 'changeemail-cancel' => 'Dileer',
 
@@ -868,6 +871,7 @@ Mae ar gael yn barod.',
 
 # Content models
 'content-model-wikitext' => 'cystrawen wici',
+'content-model-text' => 'testun plaen',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
 
@@ -1079,6 +1083,10 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
 'editundo' => 'dadwneud',
 'diff-multi' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan {{PLURAL:$2||un defnyddiwr|$2 ddefnyddiwr|$2 defnyddiwr|$2 o ddefnyddwyr|$2 o ddefnyddwyr}}.)',
 'diff-multi-manyusers' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan mwy na $2 {{PLURAL:$2|o ddefnyddwyr}}.)',
+'difference-missing-revision' => "Ni chafwyd hyd i $1 {{PLURAL:$2|diwygiad|diwygiad|ddiwygiad|diwygiad}} o'r gwahaniaeth ($1) {{PLURAL:$2|hwn}}.
+
+Fel arfer, fe ddigwydd hyn pan mae dyn wedi dilyn hen gyswllt gwahaniaeth i dudalen sydd erbyn hyn wedi cael ei dileu.
+Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} lòg y dileuon].",
 
 # Search results
 'searchresults' => "Canlyniadau'r chwiliad",
@@ -1181,7 +1189,7 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'prefs-setemail' => 'Gosod cyfeiriad e-bost',
 'prefs-email' => 'E-bostio',
 'prefs-rendering' => 'Ymddangosiad',
-'saveprefs' => "Cadw'r dewisiadau",
+'saveprefs' => 'Cadwer y dewisiadau',
 'resetprefs' => "Clirio'r darpar newidiadau",
 'restoreprefs' => 'Adfer yr holl osodiadau diofyn',
 'prefs-editing' => 'Golygu',
@@ -1231,9 +1239,9 @@ Ni allwch ddadwneud y weithred hon.",
 'prefs-emailconfirm-label' => "Cadarnhau'r e-bost:",
 'prefs-textboxsize' => 'Maint y ffenestr olygu',
 'youremail' => 'Eich cyfeiriad e-bost',
-'username' => 'Enw defnyddiwr:',
-'uid' => 'ID Defnyddiwr:',
-'prefs-memberingroups' => "Yn aelod o'r {{PLURAL:$1|grŵp|grŵp|grwpiau|grwpiau|grwpiau|grwpiau}} canlynol:",
+'username' => '{{GENDER:$1|Enw defnyddiwr}}:',
+'uid' => '{{GENDER:$1|ID y defnyddiwr}}:',
+'prefs-memberingroups' => "Yn {{GENDER:$2|aelod}} o'r {{PLURAL:$1|grŵp|grŵp|grwpiau}} canlynol:",
 'prefs-registration' => "Amser dechrau'r cyfrif:",
 'yourrealname' => 'Eich enw cywir*',
 'yourlanguage' => 'Iaith y rhyngwyneb',
@@ -1382,12 +1390,13 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'right-sendemail' => 'Anfon e-bost at ddefnyddwyr eraill',
 'right-passwordreset' => "Gweld e-byst sy'n ailosod cyfrinair",
 
+# Special:Log/newusers
+'newuserlogpage' => 'Lòg creu cyfrifon defnyddwyr newydd',
+'newuserlogpagetext' => "Dyma restr o'r defnyddwyr newydd sydd wedi ymuno â'r wici.",
+
 # User rights log
 'rightslog' => 'Lòg galluoedd defnyddiwr',
 'rightslogtext' => 'Lòg y newidiadau i alluoedd defnyddwyr yw hwn.',
-'rightslogentry' => "wedi gosod $1 yn aelod o'r grŵp $3 (grŵp cynt $2)",
-'rightslogentry-autopromote' => "wedi ei ddyrchafu'n awtomatig o $2 i $3",
-'rightsnone' => '(dim)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'darllen y dudalen',
@@ -2003,7 +2012,7 @@ Gweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
 'linksearch-ok' => 'Chwilio',
 'linksearch-text' => 'Gellir defnyddio cardiau gwyllt megis "*.wikipedia.org".
 Mae angen parth lefel-uchaf o leiaf, er enghraifft "*.org".<br />
-Protocoliau sy\'n cael eu cynnal: <code>$1</code> (yn neidio i http:// os na roddir protocol o gwbl).',
+{{PLURAL:$2|Protocol|Protocol|Protocoliau}} sy\'n cael eu cynnal: <code>$1</code> (yn neidio i http:// os na roddir protocol o gwbl).',
 'linksearch-line' => 'Mae cysylltiad i gael i $1 oddi wrth $2',
 'linksearch-error' => "Dim ond ar ddechrau enw'r gwesteiwr y gallwch osod cardiau gwyllt.",
 
@@ -2022,10 +2031,6 @@ Protocoliau sy\'n cael eu cynnal: <code>$1</code> (yn neidio i http:// os na rod
 'activeusers-hidesysops' => 'Cuddio gweinyddwyr',
 'activeusers-noresult' => "Dim defnyddwyr i'w cael.",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Lòg creu cyfrifon defnyddwyr newydd',
-'newuserlogpagetext' => "Dyma restr o'r defnyddwyr newydd sydd wedi ymuno â'r wici.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
 'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
@@ -2092,10 +2097,8 @@ Bydd y cyfeiriad e-bost a osodoch yn eich [[Special:Preferences|dewisiadau]] yn
 'watchnologin' => 'Nid ydych wedi mewngofnodi',
 'watchnologintext' => "Mae'n rhaid i chi [[Special:UserLogin|fewngofnodi]] er mwyn newid eich rhestr wylio.",
 'addwatch' => 'Ychwanegu at y rhestr wylio',
-'addedwatchtext' => "Mae'r dudalen \"[[:\$1|\$1]]\" wedi cael ei hychwanegu at eich [[Special:Watchlist|rhestr wylio]].
-Pan fydd y dudalen hon, neu ei thudalen sgwrs, yn newid, fe fyddant yn ymddangos ar eich rhestr wylio ac hefyd '''yn gryf''' ar restr y [[Special:RecentChanges|newidiadau diweddar]], fel ei bod yn haws eu gweld.
-
-Os ydych am ddiddymu'r dudalen o'r rhestr wylio, cliciwch ar \"Stopio gwylio\" yn y bar ar frig y dudalen.",
+'addedwatchtext' => 'Mae\'r dudalen "[[:$1|$1]]" wedi cael ei hychwanegu at eich [[Special:Watchlist|rhestr wylio]].
+Pan fydd y dudalen hon, neu ei thudalen sgwrs, yn newid, fe fyddant yn ymddangos ar y rhestr honno.',
 'removewatch' => 'Tynnu oddi ar eich rhestr wylio',
 'removedwatchtext' => 'Mae\'r dudalen "[[:$1]]" wedi\'i thynnu oddi ar [[Special:Watchlist|eich rhestr wylio]].',
 'watch' => 'Gwylio',
@@ -2124,14 +2127,18 @@ Os ydych am ddiddymu'r dudalen o'r rhestr wylio, cliciwch ar \"Stopio gwylio\" y
 'enotif_mailer' => 'Sustem hysbysu {{SITENAME}}',
 'enotif_reset' => 'Ystyried bod pob tudalen wedi cael ymweliad',
 'enotif_impersonal_salutation' => 'at ddefnyddiwr {{SITENAME}}',
+'enotif_subject_deleted' => 'Dilewyd y dudalen $1 ar {{SITENAME}} gan {{gender:$2|$2}}',
+'enotif_subject_created' => 'Dechrewyd y dudalen $1 ar {{SITENAME}} gan {{gender:$2|$2}}',
+'enotif_subject_moved' => 'Symudwyd y dudalen $1 ar {{SITENAME}} gan {{gender:$2|$2}}',
+'enotif_subject_restored' => 'Adferwyd y dudalen $1 ar {{SITENAME}} gan {{gender:$2|$2}}',
+'enotif_subject_changed' => 'Newidiwyd y dudalen $1 ar {{SITENAME}} gan {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Dilewyd y dudalen $1 ar {{SITENAME}} ar $PAGEEDITDATE gan {{gender:$2|$2}}, gweler $3.',
 'enotif_lastvisited' => 'Gwelwch $1 am bob newid ers eich ymweliad blaenorol.',
 'enotif_lastdiff' => 'Gallwch weld y newid ar $1.',
 'enotif_anon_editor' => 'defnyddiwr anhysbys $1',
 'enotif_body' => 'Annwyl $WATCHINGUSERNAME,
 
-$CHANGEDORCREATED y dudalen \'$PAGETITLE\' ar {{SITENAME}} ar $PAGEEDITDATE gan $PAGEEDITOR; gwelir y diwygiad presennol ar $PAGETITLE_URL.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Crynodeb y golygydd: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2139,7 +2146,7 @@ Cysylltu â\'r golygydd:
 e-bost: $PAGEEDITOR_EMAIL
 wici: $PAGEEDITOR_WIKI
 
-Os digwydd mwy o olygiadau i\'r dudalen cyn i chi ymweld â hi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.
+Os bydd mwy o drin a thrafod ar y dudalen cyn i chi ymweld â hi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.
 
              Sustem hysbysu {{SITENAME}}
 
@@ -2155,6 +2162,8 @@ $UNWATCHURL
 
 Am fwy o gymorth ac adborth:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'crëwyd',
+'changed' => 'Newidiwyd',
 
 # Delete
 'deletepage' => 'Dileer y dudalen',
@@ -2193,8 +2202,8 @@ Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weit
 'rollback' => 'Gwrthdroi golygiadau',
 'rollback_short' => 'Gwrthdroi',
 'rollbacklink' => 'gwrthdröer',
-'rollbacklinkcount' => 'gwrthdröer $1 {{PLURAL:$1||golygiad|olygiad|golygiad|golygiad|golygiad}}',
-'rollbacklinkcount-morethan' => 'gwrthdröer mwy na $1 {{PLURAL:$1||golygiad|olygiad|golygiad|golygiad|golygiad}}',
+'rollbacklinkcount' => 'gwrthdröer $1 {{PLURAL:$1||golygiad|olygiad|golygiad}}',
+'rollbacklinkcount-morethan' => 'gwrthdröer mwy na $1 {{PLURAL:$1||golygiad|olygiad|golygiad}}',
 'rollbackfailed' => 'Methodd y gwrthdroi',
 'cantrollback' => "Wedi methu gwrthdroi'r golygiad; y cyfrannwr diwethaf oedd unig awdur y dudalen hon.",
 'alreadyrolled' => "Nid yw'n bosib dadwneud y golygiad diwethaf i'r dudalen [[:$1|$1]] gan [[User:$2|$2]] ([[User talk:$2|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
@@ -2690,6 +2699,7 @@ Mae cofnod o bob weithred o fewnforio i'w gweld ar y [[Special:Log/import|lòg m
 'import-interwiki-templates' => 'Cynhwyser pob nodyn',
 'import-interwiki-submit' => 'Mewnforio',
 'import-interwiki-namespace' => 'Parth y cyrchir ato:',
+'import-interwiki-rootpage' => 'Tudalen wraidd y cyrchfan (dewisol):',
 'import-upload-filename' => "Enw'r ffeil:",
 'import-comment' => 'Sylw:',
 'importtext' => "Allforiwch y ffeil o'r wici gwreiddiol trwy ddefnyddio'r [[Special:Export|nodwedd allforio]]. Rhowch hi ar gadw ar eich cyfrifiadur, ac wedyn ei huwchlwytho fan hyn.",
@@ -2725,6 +2735,7 @@ Mae ffolder dros dro yn eisiau.',
 'import-error-special' => 'Ni fewnforiwyd y dudalen "$1" oherwydd ei bod yn perthyn i barth arbennig lle nad oes tudalennau i\'w cael.',
 'import-error-invalid' => 'Ni fewnforwyd y dudalen "$1" oherwydd bod yr enw arni yn annilys.',
 'import-options-wrong' => '{{PLURAL:$2|Dewis|Dewis|Dewisiadau}} annilys: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'Mae teitl y dudalen wraidd a roddir yn annilys.',
 'import-rootpage-nosubpage' => 'Nid yw\'r parth "$1", sef parth y brif dudalen y mewnforir iddi, yn caniatau is-dudalennau.',
 
 # Import log
@@ -2842,6 +2853,7 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr wahardd
 
 # Info page
 'pageinfo-title' => 'Manylion "$1"',
+'pageinfo-not-current' => "Nid oes modd dangos y wybodaeth hon am hen olygiadau, gwaetha'r modd.",
 'pageinfo-header-basic' => 'Gwybodaeth sylfaenol',
 'pageinfo-header-edits' => 'Hanes golygu',
 'pageinfo-header-restrictions' => 'Diogelwch y dudalen',
@@ -2852,10 +2864,13 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr wahardd
 'pageinfo-article-id' => 'ID y dudalen',
 'pageinfo-language' => 'Iaith cynnwys y dudalen',
 'pageinfo-robot-policy' => 'Statws i beiriannau chwilio',
+'pageinfo-robot-index' => 'Gellir ei rhestri gan beiriannau chwilio',
+'pageinfo-robot-noindex' => 'Ni ellir ei rhestri gan beiriannau chwilio',
 'pageinfo-views' => 'Nifer yr ymweliadau',
 'pageinfo-watchers' => 'Nifer gwylwyr y dudalen',
 'pageinfo-redirects-name' => "Nifer yr ailgyfeiriadau i'r dudalen hon",
 'pageinfo-subpages-name' => "Nifer yr is-dudalennau i'r dudalen hon",
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ailgyfeiriad}}; $3 {{PLURAL:$3|is-dudalen arall}})',
 'pageinfo-firstuser' => 'Y defnyddiwr a ddechreuodd y dudalen',
 'pageinfo-firsttime' => "Dyddiad dechrau'r dudalen",
 'pageinfo-lastuser' => 'Y golygydd diweddaraf',
@@ -2863,9 +2878,16 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr wahardd
 'pageinfo-edits' => 'Cyfanswm y golygiadau',
 'pageinfo-authors' => 'Cyfanswm yr awduron gwahanol',
 'pageinfo-recent-edits' => 'Nifer y golygiadau diweddar (o fewn y $1 diwethaf).',
+'pageinfo-recent-authors' => 'Nifer yr awduron gwahanol diweddar',
 'pageinfo-magic-words' => '{{PLURAL:$1|Gair|Gair|Geiriau}} hud ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categori|Categori|Categorïau}} cudd ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Nodyn|Nodyn|Nodiadau}} a drawsgynhwyswyd ($1)',
 'pageinfo-toolboxlink' => 'Gwybodaeth am y dudalen',
+'pageinfo-redirectsto' => 'Yn ailgyfeirio i',
+'pageinfo-category-info' => 'Gwybodaeth am y categori',
+'pageinfo-category-pages' => 'Nifer y tudalennau',
+'pageinfo-category-subcats' => 'Nifer yr is-gategorïau',
+'pageinfo-category-files' => 'Nifer y ffeiliau',
 
 # Skin names
 'skinname-standard' => 'Safonol',
@@ -2914,6 +2936,7 @@ Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil
 'file-info-size-pages' => '$1 × $2 picsel, maint ffeil: $3, math MIME: $4, $5 {{PLURAL:$5|tudalen|tudalen}}',
 'file-nohires' => 'Wedi ei chwyddo hyd yr eithaf.',
 'svg-long-desc' => 'Ffeil SVG, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
+'svg-long-desc-animated' => 'Ffeil SVG animeiddiedig, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
 'show-big-image' => 'Maint llawn',
 'show-big-image-preview' => 'Maint y rhagolwg: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Datrysiad arall|Datrysiad arall|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill}}: $1.',
@@ -2923,6 +2946,8 @@ Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil
 'file-info-png-looped' => 'dolennog',
 'file-info-png-repeat' => "wedi'i chwarae {{PLURAL:$1||unwaith|ddwywaith|deirgwaith|$1 gwaith|$1 gwaith}}",
 'file-info-png-frames' => '$1 {{PLURAL:$1|ffrâm}}',
+'file-no-thumb-animation' => "'''Sylwer: Oherwydd cyfyngiadau technegol, ni chaiff mân-luniau o'r ffeil hon eu hanimeiddio.'''",
+'file-no-thumb-animation-gif' => "'''Sylwer: Oherwydd cyfyngiadau technegol, ni chaiff mân-luniau o luniau GIF o gydraniad uchel, fel hon, eu hanimeiddio.'''",
 
 # Special:NewFiles
 'newimages' => 'Oriel y ffeiliau newydd',
@@ -2944,7 +2969,10 @@ Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil
 'minutes' => '{{PLURAL:$1||$1 munud|$1 funud|$1 munud|$1 munud|$1 munud}}',
 'hours' => '{{PLURAL:$1|$1 awr}}',
 'days' => '{{PLURAL:$1||$1 diwrnod|$1 ddiwrnod|$1 diwrnod|$1 diwrnod|$1 diwrnod}}',
+'months' => '{{PLURAL:$1|$1 mis|mis|deufis|$1 mis}}',
+'years' => '{{PLURAL:$1|$1 blwyddyn|blwyddyn|$1 flynedd|$1 blynedd|$1 blynedd|$1 mlynedd}}',
 'ago' => '$1 yn ôl',
+'just-now' => 'gynnau',
 
 # Bad image list
 'bad_image_list' => "Dyma'r fformat:
@@ -3683,6 +3711,7 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'logentry-newusers-create2' => 'Dechreuwyd y cyfrif defnyddiwr $3 gan $1',
 'logentry-newusers-autocreate' => 'Crëwyd y cyfrif $1 yn awtomatig',
 'newuserlog-byemail' => 'anfonwyd y cyfrinair trwy e-bost',
+'rightsnone' => '(dim)',
 
 # Feedback
 'feedback-bugornote' => 'Os ydych yn barod i ddisgrifio problem technegol yn fanwl gallwch [$1 gyflwyno adroddiad am y bỳg]. Fel arall, gallwch ddefnyddio\'r ffurflen syml isod. Fe roddir eich sylwadau ar y dudalen "[$3 $2]", ynghyd â\'ch enw defnyddiwr ac enw\'r gweinydd sydd ar waith gennych.',
index 14a2e47..745a4d9 100644 (file)
@@ -1471,15 +1471,13 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'right-sendemail' => 'Sende e-mail til andre brugere',
 'right-passwordreset' => 'Se emails til nulstilling af adgangskoder',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brugeroprettelseslog',
+'newuserlogpagetext' => 'Dette er en log over de senest oprettede brugere.',
+
 # User rights log
 'rightslog' => 'Rettighedslog',
 'rightslogtext' => 'Dette er en log over ændringer i brugeres rettigheder.',
-'rightslogentry' => 'ændrede grupperettigheder for „$1“ fra „$2“ til „$3“.',
-'rightslogentry-autopromote' => 'blev automatisk forfremmet fra $2 til $3',
-'logentry-rights-rights' => '$1 ændrede gruppemedlemskabet for $3 fra $4 til $5',
-'logentry-rights-rights-legacy' => '$1 ændrede gruppemedlemskabet for $3',
-'logentry-rights-autopromote' => '$1 blev automatisk forfremmet fra $4 til $5',
-'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'se denne side',
@@ -2122,10 +2120,6 @@ Der skal som minimum angives et topniveau-domæne som f. eks. "*.org".<br />
 'activeusers-hidesysops' => 'Skjul administratorer',
 'activeusers-noresult' => 'Ingen brugere fundet.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brugeroprettelseslog',
-'newuserlogpagetext' => 'Dette er en log over de senest oprettede brugere.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Brugergrupperettigheder',
 'listgrouprights-summary' => 'Denne side viser de brugergrupper der er defineret på denne wiki og de enkelte gruppers rettigheder.
@@ -2261,6 +2255,8 @@ $UNWATCHURL
 
 Tilbagemelding og yderligere hjælp:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'oprettet',
+'changed' => 'ændret',
 
 # Delete
 'deletepage' => 'Slet side',
@@ -2328,6 +2324,8 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
 'prot_1movedto2' => '$1 flyttet til $2',
 'protect-badnamespace-title' => 'Navnerum, der ikke kan beskyttes',
 'protect-badnamespace-text' => 'Sider i dette navnerum kan ikke beskyttes.',
+'protect-norestrictiontypes-text' => 'Denne side kan ikke beskyttes, da der er ikke er nogen tilgængelige begrænsningstyper.',
+'protect-norestrictiontypes-title' => 'Ikke muligt at beskytte side',
 'protect-legend' => 'Bekræft beskyttelse',
 'protectcomment' => 'Begrundelse:',
 'protectexpiry' => 'Udløb',
@@ -2974,6 +2972,10 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
 'pageinfo-protect-cascading' => 'Kaskadebeskyttelser begynder her',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Kaskadebeskyttelser begynder fra',
+'pageinfo-category-info' => 'Kategorioplysninger',
+'pageinfo-category-pages' => 'Antal sider',
+'pageinfo-category-subcats' => 'Antal underkategorier',
+'pageinfo-category-files' => 'Antal filer',
 
 # Skin names
 'skinname-standard' => 'Klassik',
@@ -3061,6 +3063,8 @@ Du kan beskadige dit system hvis du udfører den.",
 'minutes' => '{{PLURAL: $1|$1 minut|$1 minutter}}',
 'hours' => '{{PLURAL: $1|$1 time|$1 timer}}',
 'days' => '{{PLURAL: $1|$1 dag|$1 dage}}',
+'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
+'years' => '{{PLURAL:$1|$1 år}}',
 'ago' => '$1 siden',
 'just-now' => 'lige nu',
 
@@ -3806,6 +3810,10 @@ Billeder vises i fuld opløsning, og andre mediatyper vil blive aktiveret med de
 'logentry-newusers-create2' => 'Brugerkontoen $3 blev oprettet af $1',
 'logentry-newusers-autocreate' => 'Kontoen $1 blev automatisk oprettet',
 'newuserlog-byemail' => 'kodeord tilsendt pr. e-mail',
+'logentry-rights-rights' => '$1 ændrede gruppemedlemskabet for $3 fra $4 til $5',
+'logentry-rights-rights-legacy' => '$1 ændrede gruppemedlemskabet for $3',
+'logentry-rights-autopromote' => '$1 blev automatisk forfremmet fra $4 til $5',
+'rightsnone' => '(-)',
 
 # Feedback
 'feedback-bugornote' => 'Hvis du er klar til at beskrive et teknisk problem i detaljer, bedes du [$1 rapportere en fejl].
index 10212bd..037fbfd 100644 (file)
@@ -61,6 +61,7 @@
  * @author Tischbeinahe
  * @author UV
  * @author Umherirrender
+ * @author Vogone
  * @author W (aka Wuzur)
  * @author Wikifan
  * @author Wikinaut
@@ -540,6 +541,7 @@ $messages = array(
 'newwindow' => '(wird in einem neuen Fenster geöffnet)',
 'cancel' => 'Abbrechen',
 'moredotdotdot' => 'Mehr …',
+'morenotlisted' => 'Weitere, nicht aufgeführte …',
 'mypage' => 'Eigene Seite',
 'mytalk' => 'Diskussion',
 'anontalk' => 'Diskussionsseite dieser IP',
@@ -912,6 +914,7 @@ Bitte warte, bevor du es erneut probierst.',
 # E-mail sending
 'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
 'user-mail-no-addy' => 'Versuchte, eine E-Mail ohne Angabe einer E-Mail-Adresse zu versenden.',
+'user-mail-no-body' => 'Es wurde versucht, eine E-Mail mit einem leeren oder zu kurzen Textkörper zu versenden.',
 
 # Change password dialog
 'resetpass' => 'Passwort ändern',
@@ -1689,15 +1692,13 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 'right-sendemail' => 'E-Mails an andere Benutzer senden',
 'right-passwordreset' => 'Passwort eines Benutzers zurücksetzen und die dazu verschickte E-Mail einsehen',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Neuanmeldungs-Logbuch',
+'newuserlogpagetext' => 'Dies ist ein Logbuch der neu erstellten Benutzerkonten.',
+
 # User rights log
 'rightslog' => 'Rechte-Logbuch',
 'rightslogtext' => 'Dies ist das Logbuch der Änderungen der Benutzerrechte.',
-'rightslogentry' => 'änderte die Benutzerrechte für „$1“ von „$2“ zu „$3“',
-'rightslogentry-autopromote' => 'wurde automatisch von „$2“ zu „$3“ zugeordnet',
-'logentry-rights-rights' => '$1 änderte die Gruppenzugehörigkeit für $3 von $4 zu $5',
-'logentry-rights-rights-legacy' => '$1 änderte die Gruppenzugehörigkeit für $3',
-'logentry-rights-autopromote' => '$1 wurde automatisch von $4 zu $5 zugeordnet',
-'rightsnone' => '(–)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'die Seite zu lesen',
@@ -1983,7 +1984,7 @@ Sie kann daher keiner ordnungsgemäßen Sicherheitsüberprüfung unterzogen werd
 
 # Special:UploadStash
 'uploadstash' => 'Vorabspeicherung beim Hochladen',
-'uploadstash-summary' => 'Diese Seite ermöglicht den Zugriff auf Dateien, die hochgeladen wurden, bzw. gerade hochgeladen werden, aber noch nicht auf dem Wiki publiziert wurden. Diese Dateien sind, der hochladende Benutzer ausgenommen, noch nicht öffentlich einsehbar.',
+'uploadstash-summary' => 'Diese Seite ermöglicht den Zugriff auf Dateien, die hochgeladen wurden, bzw. gerade hochgeladen werden, aber noch nicht auf dem Wiki publiziert wurden. Die Dateien sind ausschließlich für den hochladenden Benutzer einsehbar.',
 'uploadstash-clear' => 'Die vorab gespeicherten Dateien entfernen',
 'uploadstash-nofiles' => 'Es sind keine vorab gespeicherten Dateien vorhanden.',
 'uploadstash-badtoken' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos, vielleicht weil deine Sitzungsdaten abgelaufen sind. Bitte versuche es erneut.',
@@ -2340,10 +2341,6 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
 'activeusers-hidesysops' => 'Administratoren ausblenden',
 'activeusers-noresult' => 'Keine Benutzer gefunden.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Neuanmeldungs-Logbuch',
-'newuserlogpagetext' => 'Dies ist ein Logbuch der neu erstellten Benutzerkonten.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Benutzergruppenrechte',
 'listgrouprights-summary' => 'Dies ist eine Liste der in diesem Wiki definierten Benutzergruppen und der damit verbundenen Rechte.
@@ -2475,6 +2472,8 @@ Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl
 Um die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL
 
 Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'erstellt',
+'changed' => 'geändert',
 
 # Delete
 'deletepage' => 'Seite löschen',
@@ -2540,6 +2539,8 @@ Siehe die [[Special:ProtectedPages|Liste der geschützten Seiten]] für alle akt
 'prot_1movedto2' => 'hat „[[$1]]“ nach „[[$2]]“ verschoben',
 'protect-badnamespace-title' => 'Nicht-schützbarer Namensraum',
 'protect-badnamespace-text' => 'Seiten dieses Namensraums können nicht geschützt werden.',
+'protect-norestrictiontypes-text' => 'Diese Seite kann nicht geschützt werden, da keine Beschränkungstypen verfügbar sind.',
+'protect-norestrictiontypes-title' => 'Nicht schützbare Seite',
 'protect-legend' => 'Seitenschutzstatus ändern',
 'protectcomment' => 'Grund:',
 'protectexpiry' => 'Sperrdauer:',
@@ -3024,7 +3025,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
 '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-upload' => 'XML-Dateien importieren',
 'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
 'import-invalid-interwiki' => 'Aus dem angegebenen Wiki ist kein Import möglich.',
 'import-error-edit' => 'Die Seite „$1“ wurde nicht importiert, da du nicht berechtigt bist, sie zu bearbeiten.',
@@ -3216,6 +3217,7 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magisches Wort|Magische Wörter}} ($1)',
 'pageinfo-hidden-categories' => 'Versteckte {{PLURAL:$1|Kategorie|Kategorien}} ($1)',
 'pageinfo-templates' => 'Eingebundene {{PLURAL:$1|Vorlage|Vorlagen}} ($1)',
+'pageinfo-transclusions' => 'Eingebunden in {{PLURAL:$1|1 Seite|$1 Seiten}}',
 'pageinfo-toolboxlink' => 'Seiteninformationen',
 'pageinfo-redirectsto' => 'Weiterleitungen nach',
 'pageinfo-redirectsto-info' => 'Information',
@@ -3224,6 +3226,10 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'pageinfo-protect-cascading' => 'Seiten mit Kaskadenschutz von hier',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Seiten mit Kaskadenschutz von',
+'pageinfo-category-info' => 'Kategorieinformationen',
+'pageinfo-category-pages' => 'Anzahl der Seiten',
+'pageinfo-category-subcats' => 'Anzahl der Unterkategorien',
+'pageinfo-category-files' => 'Anzahl der Dateien',
 
 # Skin names
 'skinname-standard' => 'Klassik',
@@ -3311,6 +3317,8 @@ Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt wer
 'minutes' => '{{PLURAL:$1|$1 Minute|$1 Minuten}}',
 'hours' => '{{PLURAL:$1|einer Stunde|$1 Stunden}}',
 'days' => '{{PLURAL:$1|$1 Tag|$1 Tage}}',
+'months' => '{{PLURAL:$1|Ein Monat|$1 Monate}}',
+'years' => '{{PLURAL:$1|Ein Jahr|$1 Jahre}}',
 'ago' => 'vor $1',
 'just-now' => 'Gerade eben',
 
@@ -4085,6 +4093,10 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'logentry-newusers-create2' => 'Benutzerkonto $3 wurde von $1 erstellt',
 'logentry-newusers-autocreate' => 'Benutzerkonto $1 wurde automatisch erstellt',
 'newuserlog-byemail' => 'das Passwort wurde per E-Mail versandt',
+'logentry-rights-rights' => '$1 änderte die Gruppenzugehörigkeit für $3 von $4 zu $5',
+'logentry-rights-rights-legacy' => '$1 änderte die Gruppenzugehörigkeit für $3',
+'logentry-rights-autopromote' => '$1 wurde automatisch von $4 zu $5 zugeordnet',
+'rightsnone' => '(–)',
 
 # Feedback
 'feedback-bugornote' => 'Sofern du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].
index c3c3eec..c63fc68 100644 (file)
@@ -1600,15 +1600,13 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-sendemail' => 'Karberanê binî ra e-mail bişirav',
 'right-passwordreset' => 'E-postayanê parola reset kerdışa vineno',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Cıkewtışê hesabvıraştışi',
+'newuserlogpagetext' => 'Ena log de viraştişê karberî esta.',
+
 # User rights log
 'rightslog' => 'Qeydê heqanê karberi',
 'rightslogtext' => 'Ena listeyê loganê ke heqqa karbaranî mucneno.',
-'rightslogentry' => 'eza biyayişê grupî $1 ra $2 rê $3î bivurne',
-'rightslogentry-autopromote' => '$2 otomatikmen gırdkerdışi ra kerd $3.',
-'logentry-rights-rights' => '$1 qandê $3 rê ezayina grube $4 ra $5 vuriye',
-'logentry-rights-rights-legacy' => '$1 qandê $3 rê ezayina grube vuriye',
-'logentry-rights-autopromote' => '$1 otomatikmen $4 ra terfi bi ra $5',
-'rightsnone' => '(çino)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ena pela wanayış',
@@ -2250,10 +2248,6 @@ Qeydeyê destegbiyayey: <code>$1</code> (qet yew qeydeyo hesabiyaye http:// ke n
 'activeusers-hidesysops' => 'İdarekerdoğan bınımne',
 'activeusers-noresult' => 'Karberi nêdiyayê.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Cıkewtışê hesabvıraştışi',
-'newuserlogpagetext' => 'Ena log de viraştişê karberî esta.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'heqê grubê karberi',
 'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
@@ -2393,6 +2387,8 @@ $UNWATCHURL
 
 Qey hemkari u pêşniyazi:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'viraziya',
+'changed' => 'vurneya',
 
 # Delete
 'deletepage' => 'Pele bıestere',
@@ -2580,7 +2576,7 @@ $1',
 'blanknamespace' => '(Ser)',
 
 # Contributions
-'contributions' => 'İştiraqê {{GENDER:$1|Karber}}i',
+'contributions' => 'İştıraqê {{GENDER:$1|karber}}i',
 'contributions-title' => 'Dekerdenê karber de $1',
 'mycontris' => 'İştıraqi',
 'contribsub2' => 'Qandê $1 ($2)',
@@ -4682,6 +4678,10 @@ Ena sita dı newke xırabiya teknik esta.',
 'logentry-newusers-create2' => 'Hesabê karberi $1 terefê $3 ra vıraziya',
 'logentry-newusers-autocreate' => 'Hesabê $1 Otomatikmen vıraziya',
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
+'logentry-rights-rights' => '$1 qandê $3 rê ezayina grube $4 ra $5 vuriye',
+'logentry-rights-rights-legacy' => '$1 qandê $3 rê ezayina grube vuriye',
+'logentry-rights-autopromote' => '$1 otomatikmen $4 ra terfi bi ra $5',
+'rightsnone' => '(çino)',
 
 # 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.',
index 41445ca..1669062 100644 (file)
@@ -291,6 +291,7 @@ $messages = array(
 'newwindow' => '(se wótcynijo w nowem woknje)',
 'cancel' => 'Pśetergnuś',
 'moredotdotdot' => 'Wěcej…',
+'morenotlisted' => 'Dalšne njepódane...',
 'mypage' => 'Bok',
 'mytalk' => 'Diskusija',
 'anontalk' => 'Diskusija z toś teju IP',
@@ -651,6 +652,7 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 # E-mail sending
 'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
 'user-mail-no-addy' => 'Jo se wopytało, e-mail bźez e-mailoweje adrese pósłaś',
+'user-mail-no-body' => 'Jo se wopytało, e-mail bźez teksta abo z pśekrotkim tekstom pósłaś',
 
 # Change password dialog
 'resetpass' => 'Gronidło změniś',
@@ -1415,15 +1417,13 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'right-sendemail' => 'Drugim wužywarjam e-mail pósłaś',
 'right-passwordreset' => 'E-maile za slědkstajanje gronidłow se woglědaś',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Protokol nowych wužywarjow',
+'newuserlogpagetext' => 'To jo protokol wó nowych wužywarskich kontow.',
+
 # User rights log
 'rightslog' => 'Protokol wužywarskich pšawow',
 'rightslogtext' => 'To jo protokol wužywarskich pšawow.',
-'rightslogentry' => 'Pśisłušnosć ku kupce jo se za „$1“ změniła wót „$2“ na „$3“.',
-'rightslogentry-autopromote' => 'jo se awtomatiski wót $2 do $3 změnił',
-'logentry-rights-rights' => '$1 jo kupkowe cłonkojstwo za $3 z $4 do $5 změnił',
-'logentry-rights-rights-legacy' => '$1 jo kupkowe cłonkojstwo za $3 změnił',
-'logentry-rights-autopromote' => '$1 jo se awtomatiski wót $4 do $5 pówušył',
-'rightsnone' => '(nic)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'toś ten bok cytaś',
@@ -2059,10 +2059,6 @@ Jo nanejmjenjej głowna domena trěbna, na pśikład "*.org"<br />
 'activeusers-hidesysops' => 'Administratorow schowaś',
 'activeusers-noresult' => 'Žedne wužywarje namakane.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Protokol nowych wužywarjow',
-'newuserlogpagetext' => 'To jo protokol wó nowych wužywarskich kontow.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Pšawa wužywarskeje kupki',
 'listgrouprights-summary' => 'To jo lisćina wužywarskich kupkow definěrowanych w toś tom wikiju z jich zwězanymi pśistupnymi pšawami. Móžo [[{{MediaWiki:Listgrouprights-helppage}}|pśidatne informacije]] wó jadnotliwych pšawach daś.',
@@ -2195,6 +2191,8 @@ $UNWATCHURL
 
 Pšašanja a dalšna pomoc:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'napórał',
+'changed' => 'změnił',
 
 # Delete
 'deletepage' => 'Bok wulašowaś',
@@ -2260,6 +2258,8 @@ Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.'
 'prot_1movedto2' => '„[[$1]]“ pśesunjone na „[[$2]]“',
 'protect-badnamespace-title' => 'Nješćitajobny mjenjowy rum',
 'protect-badnamespace-text' => 'Boki w toś tom mjenjowem rumje njedaju se šćitaś.',
+'protect-norestrictiontypes-text' => 'Toś ten bok njedajo se šćitaś, dokulaž njestoje žedne wobgranicowanja k dispoziciji.',
+'protect-norestrictiontypes-title' => 'Nješćitajobne boki',
 'protect-legend' => 'Šćitanje wobkšuśiś',
 'protectcomment' => 'Pśicyna:',
 'protectexpiry' => 'cas wótběžy:',
@@ -2897,6 +2897,7 @@ W zespominanju dajo se pśicyna pódaś.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magiske słowo|Magiskej słowje|Magiske słowa|Magiske słowa}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Schowana kategorija|Schowanej kategoriji|Schowane kategorije|Schowane kategorije}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Zapśěgnjona pśedłoga|Zapśěgnjonej pśedłoze|Zapśěgnjone pśedłogi|Zapśěgnjone pśedłogi}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Bok zapśěgnjony|Boka zapśěgnjonej|Boki zapśěgnjone}}  do ($1)',
 'pageinfo-toolboxlink' => 'Informacije wó boku',
 'pageinfo-redirectsto' => 'Pósrědnja dalej k',
 'pageinfo-redirectsto-info' => 'Info',
@@ -2905,6 +2906,10 @@ W zespominanju dajo se pśicyna pódaś.',
 'pageinfo-protect-cascading' => 'Kaskadowy šćit wót how',
 'pageinfo-protect-cascading-yes' => 'Jo',
 'pageinfo-protect-cascading-from' => 'Kaskadowy šćit wót',
+'pageinfo-category-info' => 'Kategorijowe informacije',
+'pageinfo-category-pages' => 'Licba bokow',
+'pageinfo-category-subcats' => 'Licba pódkategorijow',
+'pageinfo-category-files' => 'Licba datajow',
 
 # Skin names
 'skinname-standard' => 'Klasiski',
@@ -2990,6 +2995,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutoma|$1 minutami|$1 minutami}}',
 'hours' => '{{PLURAL:$1|$1 góźinu|$1 góźinoma|$1 góźinami|$1 góźinami}}',
 'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjoma|$1 dnjami|$1 dnjami}}',
+'months' => '{{PLURAL:$1|$1 mjasecom|$1 mjasecoma|$1 mjasecami}}',
+'years' => '{{PLURAL:$1|$1 lětom|$1 lětoma|$1 lětami}}',
 'ago' => 'pśed $1',
 'just-now' => 'rowno',
 
@@ -3743,6 +3750,10 @@ Wobraze se w połnym wótgranicowanju pokazuju, druge datajowe typy se ze zwěza
 'logentry-newusers-create2' => '$1 jo załožył wužywarske konto $3',
 'logentry-newusers-autocreate' => 'Konto $1 jo se awtomatiski załožyło',
 'newuserlog-byemail' => 'Pótajne słowo bu pśez e-mail pósłane.',
+'logentry-rights-rights' => '$1 jo kupkowe cłonkojstwo za $3 z $4 do $5 změnił',
+'logentry-rights-rights-legacy' => '$1 jo kupkowe cłonkojstwo za $3 změnił',
+'logentry-rights-autopromote' => '$1 jo se awtomatiski wót $4 do $5 pówušył',
+'rightsnone' => '(nic)',
 
 # Feedback
 'feedback-bugornote' => 'Jolic sy zwólny, techniski problem nadrobnje wopisaś, [$1 daj pšosym zmólku k wěsći].
index 8f89642..a0153f0 100644 (file)
@@ -1042,6 +1042,9 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 
 'grouppage-sysop' => '{{ns:project}}:Mandur',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log pinamansaian momomoguno',
+
 # User rights log
 'rightslog' => 'Log kasagaan momomoguno',
 
@@ -1201,9 +1204,6 @@ Kointalangan dilo [$2 kointalangan pail] okito id siriba.',
 'linksearch-ok' => 'Ihumo',
 'linksearch-line' => '$1 toput mantad $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log pinamansaian momomoguno',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lis do kinoruhangan)',
 
index e77efde..71ee574 100644 (file)
@@ -131,6 +131,7 @@ $messages = array(
 'category-empty' => "''މި ޤިސްމުގައި އެއްވެސް ސަފްހާ އެއް އަދި އެއްވެސް ފައިލެއް ނުހިމެނެއެވެ.''",
 'hidden-categories' => '{{PLURAL:$1|ފޮރުވިފައިވާ ޤިސްމު|ފޮރުވިފައިވާ ޤިސްމުތައް}}',
 'hidden-category-category' => 'ފޮރުވިފައިވާ ޤިސްމުތައް',
+'category-subcat-count-limited' => 'މި ޤިސްމުގައި ހިމެނެނީ {{PLURAL:$1|ކުދިޤިސްމެވެ|$1 ކުދިޤިސްމުތަކެވެ}}.',
 
 'about' => 'ތަޢާރަފު',
 'article' => 'ފިހުރިސްތު ޞަފްޙާ',
@@ -186,6 +187,7 @@ $messages = array(
 'create-this-page' => 'މި ޞަފްޙާ ފަށްޓަވާ',
 'delete' => 'ފޮހެލައްވާ',
 'deletethispage' => 'މި ޞަފްޙާ ފޮހެލައްވާ',
+'viewdeleted_short' => '{{PLURAL:$1|ފޮހެލެވިފައިވާ އެއް އުނިއިތުރު|ފޮހެލެވިފައިވާ $1 އުނިއިތުރު}} ބައްލަވާ',
 'protect' => 'ދިފާއުކުރައްވާ',
 'protect_change' => 'ބަދަލު ގެންނަވާ',
 'protectthispage' => 'މި ޞަފްޙާ ދިފާއުކުރައްވާ',
@@ -216,6 +218,7 @@ $messages = array(
 'viewcount' => 'މި ޞަފްޙާ ވަނީ {{PLURAL:$1|އެއްފަހަރު|$1 ފަހަރު}} ބައްލަވާފައެވެ.',
 'protectedpage' => 'ދިފާއުކުރެވިފައިވާ ޞަފްޙާ',
 'jumpto' => 'ފުންމަވާ:',
+'jumptonavigation' => 'ސަމުގާ',
 'jumptosearch' => 'ހޯއްދަވާ',
 'view-pool-error' => 'މަޢާފުކުރައްވާ، މި ވަގުތު ސާރވާރތައް ވަނީ އޯވާލޯޑް ވެފައެވެ.
 މި ޞަފްޙާއަށް ވަޑައިގަތުމުގެ ކުރިން މަޑުކޮށްލައްވާ!
@@ -224,7 +227,7 @@ $1',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '{{SITENAME}}ގެ ތަޢާރަފު',
-'aboutpage' => 'Project:ތާރަފު',
+'aboutpage' => 'Project:Þ\8cÞ¦Þ¢Þ§Þ\83Þ¦Þ\8aÞª',
 'copyright' => 'ހުރިހާ މާއްދާއެއް $1 ގެ ދަށުން ލިބެން އެބަހުއްޓެވެ.',
 'copyrightpage' => '{{ns:project}}:ނަކަލުކުރުމުގެހައްގު',
 'currentevents' => 'ހިނގަމުންދާ ހާދިސާތައް',
@@ -310,6 +313,7 @@ $1',
 'createaccount' => 'މެންބަރަކަށް ވެ ވަޑައިގަންނަވާ',
 'gotaccount' => 'މެމްބަރުކަން ހާސިލް ކުރައްވާފައި ނުވޭތޯ؟ $1',
 'gotaccountlink' => 'ވަދެވަޑައިގަންނަވާ',
+'userlogin-resetlink' => 'ވަދެވަޑައިގަތުމުގެ ސިއްރު ބަހާއި މެމްބަރު ނަން ހަނދާންނެތުނީތޯ؟',
 'createaccountreason' => 'ސަބަބު:',
 'badretype' => 'ތިޔަ ލިޔުއްވި ދެ ސިއްރުބަސް އެއް ސިއްރު ބަހާއި އަނެއް ސިއްރު ބަހާއި ދިމަލެއް ނުވޭ. އަދި ސިއްރުބަސް ރަނގަޅަށް ޖައްސަވާށެވެ!',
 'userexists' => 'ތިޔަ ލިޔުއްވި ނަން މިހާރުވެސް ދަނީ ބޭނުން ކުރެވެމުންނެވެ.
@@ -359,6 +363,7 @@ $1',
 'italic_sample' => 'ކަތި އިބާރާތް',
 'italic_tip' => 'ކަތި އިބާރާތް',
 'headline_sample' => 'ސުރުހީގެ އިބާރާތް',
+'media_tip' => 'ފައިލު ފާލަން',
 'sig_tip' => 'ތިޔަބޭފުޅާގެ ސޮއި، ތާރީޚް ތަތްގަނޑާއެކު',
 
 # Edit pages
@@ -392,7 +397,9 @@ $1',
 'accmailtext' => '"$1" އަށްޓަކައިވާ ސިއްރު ބަސް $2 އަށް ވަނީ ފޮނުވިފައި',
 'newarticle' => '(އައު)',
 'noarticletext' => 'މި ޞަފްޙާގައި އެއްވެސް ލިޔުމެއް ނުވެއެވެ. ތިޔަބޭފުޅާއަށް މި ނަން [[Special:Search/{{PAGENAME}}|އެހެން ޞަފްޙާތަކުން ހޯއްދެވިދާނެއެވެ]]. ނުވަތަ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} މިއާ ގުޅޭ ލޮގްތައް ހޯއްދެވިދާނެއެވެ].
- [{{fullurl:{{FULLPAGENAME}}|action=edit}} ނުވަތަ މި ޞަފްޙާއަށް އުނިއިތުރު ގެނެވިދާނެއެވެ].</span>.',
+[{{fullurl:{{FULLPAGENAME}}|action=edit}} ނުވަތަ މި ޞަފްޙާއަށް އުނިއިތުރު ގެނެވިދާނެއެވެ].</span>.',
+'previewnote' => "'''މިއީ ހަމައެކަނި ނަމޫނާ އެކެވެ.'''
+އަދި ތިބޭފުޅާގެ ބަދަލުތައް ރައްކާނުކުރެވެއެވެ!",
 'editing' => '$1 އަށް އުނިއިތުރު ގެންނަނީ',
 'creating' => '$1 ފަށްޓަވަނީ',
 'editingsection' => '$1ގެ ބަޔަކަށް އުނިއިތުރު ގެންނަނީ',
@@ -405,15 +412,26 @@ $1',
 'templatesused' => 'މި ޞަފްޙާ ގައި ބޭނުން ކުރެވިފައިވާ {{PLURAL:$1|ފަންވަތް|ފަންވަތްތައް}}:',
 'template-protected' => '(ދިފާޢުކުރެވިފައި)',
 'template-semiprotected' => '(ބައެއް ދިފާޢުކުރެވިފައި)',
+'recreate-moveddeleted-warn' => "'''ސަމާލުކަމަށް: ތިޔަ ފަށްޓަވަން އުޅުއްވަނީ ކުރީގައި ފޮހެލެވިފައިވާ ޞަފްޙާއެކެވެ.'''
+
+މި ޞަފްޙާ ކުރިއަށް ގެންދެވުމަށް ރަނގަޅުތޯ އަދި އެއްފަހަރު ވިސްނަވާލައްވާށެވެ.
+ފޮހެލެވުނު އަދި ބަދަލުކުރެވުނު ލޮގް ތިރީގައި ވަނީއެވެ :",
+'moveddeleted-notice' => 'މި ޞަފްޙާ ވަނީ ފޮހެލެވިފައެވެ.
+ފޮހެލުމުގެ އަދި ނަން ބަދަލުކުރުމުގެ ލޮގް ތިރީގައިވަނީއެވެ.',
 
 # History pages
 'currentrev' => 'އެންމެފަހުން ގެނެވުނު ބަދަލު',
 'currentrev-asof' => 'އެންމެ ފަހުން ގެނެވުނު ބަދަލު $1',
 'revisionasof' => '$1ގެ ނުސްހާ',
+'previousrevision' => '→ ކުރީގެ ނުސްހާ',
+'nextrevision' => 'ފަހުގެ ނުސްހާ ←',
 'next' => 'ކުރިޔަށް',
+'histfirst' => 'އެންމެ ކުރީގެ',
+'histlast' => 'އެންމެ ފަހުގެ',
 
 # Revision deletion
 'revdel-restore-deleted' => 'ފޮހެލެވިފައިވާ ނުސްހާތައް',
+'revdel-restore-visible' => 'ފާޅު ނުސްހާތައް',
 
 # Diffs
 'lineno' => 'ފޮޅުވަތް $1:',
@@ -425,8 +443,10 @@ $1',
 '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-new' => "''' މި ވިކީގައި \"[[:\$1]]\" ފަށްޓަވައިދެއްވާ! '''",
 'searchhelp-url' => 'Help:ފިހުރިސްތު',
 'searchprofile-articles' => 'މަޒުމޫނު ޞަފްޙާތައް',
 'searchprofile-project' => 'އެހީ ޞަފްޙާތަކާއި މަޝްރޫޢު ޞަފްޙާތައް',
@@ -485,10 +505,17 @@ $1',
 'group-bureaucrat' => 'ބިއުރޯކްރެޓުން',
 'group-all' => '(ހުރިހާ)',
 
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'މި ޞަފްޙާއަށް އުނިއިތުރު ގެންނަވާ',
+
 # Recent changes
 'recentchanges' => 'އެންމެ ފަހުގެ ބަދަލުތައް',
 'recentchanges-summary' => 'މި ވިކިޕީޑިއާ އަށް ގެނެވިފައިވާ އެންމެ ފަހުގެ ބަދަލުތައް މި ޞަފްހާ އިން ބައްލަވާ!',
+'recentchanges-label-newpage' => 'މި އުނިއިތުރުން އާ ޞަފްޙާއެއް ފަށައިގަނެވުނެވެ.',
+'recentchanges-label-minor' => 'މިއީ ކުޑަކުޑަ އުނިއިތުރެކެވެ.',
+'recentchanges-label-bot' => 'މި އުނިއިތުރު ގެނައީ ބޮޓެކެވެ.',
 'diff' => 'ފަރަގު',
+'hist' => 'ތާރީޚް',
 'hide' => 'ފޮރުވާ',
 'show' => 'ދައްކަވާ',
 
@@ -519,6 +546,8 @@ $1',
 'filehist-user' => 'މެމްބަރު',
 'filehist-comment' => 'ޚިޔާލު',
 'imagelinks' => 'ފާލަންތައް',
+'sharedupload-desc-here' => 'މި ފައިލަކީ $1ގެ ފައިލެކެވެ. އަދި އެހެން މަޝްރޫޢުތަކުގައި ބޭނުން ކުރެވިފައި ހުރެދާނެއެވެ.
+މި ފައިލުގެ ތަފްސީލް [$2 ފައިލު ތަފްސީލް ޞަފްޙާއިން] ތިރީގައިވަނީއެވެ.',
 
 # Random page
 'randompage' => 'ކޮންމެވެސް ޞަފްޙާއެއް',
@@ -587,6 +616,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'activeusers-hidebots' => 'ބޮޓް ފޮރުއްވާ',
 'activeusers-hidesysops' => 'އެޑްމިނިސްޓްރޭޓަރުން ފޮރުއްވާ',
 
+# Special:ListGroupRights
+'listgrouprights-members' => '(މެމްބަރުންގެ ލިސްޓު)',
+
 # E-mail user
 'emailuser' => 'މި މެންބަރަށް އީމޭލު ފޮނުއްވާ',
 
@@ -600,6 +632,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'watchlistcontains' => 'ތިޔަބޭފުޅާގެ ހާއްސަ ނަޒަރު ފިހުރިސްތުގައި ވަނީ $1 ޞަފްޙާއެވެ.',
 'wlnote' => 'ތިރީގައި މިވަނީ އެއީ ފާއިތުވި <b>$2</b> ގަޑި އިރުގެ ތެރޭގައިގެނެވިފައިވާ ފަހު $1 ބަދަލެވެ.',
 
+'changed' => 'ބަދަލުކުރެވިއްޖެ',
+
 # Delete
 'deletepage' => 'ޞަފްޙާ ފޮހެލައްވާ',
 'confirm' => 'ޔަގީން',
@@ -608,6 +642,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'deletecomment' => 'ސަބަބު',
 
 # Rollback
+'rollbacklink' => 'ކުރީގެ ނުސްހާ އަކަށް ބަދަލުކުރައްވާ',
 'cantrollback' => 'އުނިއިތުރު އިއާދައެއް ނުކުރެވޭނެ؛ އެހެނީ އެންމެ ފަހު އުނިއިތުރުގައި ހިއްސާވި ފަރާތަކީ މިޞަފްޙާގެ ހަމައެކަނި މުއައްލިފެވެ.',
 
 # Protect
@@ -631,7 +666,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'contributions' => 'މެންބަރު ގެ ހިއްސާ',
 'mycontris' => 'މަގޭ ހިއްސާ',
 
+'sp-contributions-talk' => 'ވާހަކަ',
 'sp-contributions-userrights' => 'މެންބަރުގެ ހައްގުތަކުގެ އިންތިޒާމް',
+'sp-contributions-search' => 'ހިއްސާތަށް ހޯއްދަވާ',
 
 # What links here
 'whatlinkshere' => 'މިއާ ގުޅެނީ ކޮންއެއްޗެއް',
@@ -642,8 +679,10 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipbsubmit' => 'މި މެމްބަރާއި މެދު ފިޔަވަޅު އަޅުއްވާ!',
 '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',
 'badipaddress' => 'ނުރަނގަޅު އައި.ޕީ އެޑްރެހެއް',
+'ipblocklist' => 'ފިޔަވަޅު އެޅިފައިވާ މެމްބަރުން',
 'expiringblock' => 'މުއްދަތު ހަމަވާނީ $1 $2',
 'blocklink' => 'ފިޔަވަޅުއަޅުއްވާ',
+'unblocklink' => 'ފިޔަވަޅުއެޅުން ބަދަލުކުރައްވާ',
 'contribslink' => 'ޙިއްޞާ',
 'proxyblocksuccess' => 'ފުރިހަމަވެއްޖެ.',
 
@@ -688,7 +727,11 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'tooltip-ca-viewsource' => 'މި ޞަފްޙާވަނީ ދިފާޢުކުރެވިފައެވެ.
 މި ޞަފްޙާގެ މަސްދަރު ތިބޭފުޅާއަށް ބައްލަވާލެއްވޭނެއެވެ.',
 'tooltip-ca-history' => 'މި ޞަފްޙާގެ ކުރީގެ ނުސްހާތައް',
+'tooltip-ca-protect' => 'މި ޞަފްޙާ ދިފާޢުކުރައްވާ',
 'tooltip-ca-delete' => 'މި ޞަފްޙާ ފޮހެލައްވާ',
+'tooltip-ca-move' => 'މި ޞަފްހާގެ ނަން/ތަން ބަދަލުކުރައްވާ',
+'tooltip-ca-watch' => 'މި ޞަފްޙާއަށް ނަޒަރު ބަހައްޓަވާ',
+'tooltip-ca-unwatch' => 'މަގޭ ނަޒަރުން މި ޞަފްޙާ ދުރުކޮށްލައްވާ',
 'tooltip-search' => '{{SITENAME}}އިން ހޯއްދަވާ',
 'tooltip-search-fulltext' => 'މި ބަސް ޞަފްޙާތަކުން ހޯއްދަވާ',
 'tooltip-p-logo' => 'މައި ޞަފްޙާއަށް ވަޑައިގަންނަވާ',
@@ -708,14 +751,24 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'tooltip-t-print' => 'ޕްރިންޓަށްފަހި ޞަފްޙާ',
 'tooltip-t-permalink' => 'ނުސްހާއަށް ދާއިމީ ފާލަން',
 'tooltip-ca-nstab-main' => 'މަޢުލޫމާތު ޞަފްޙާ ބައްލަވާ',
+'tooltip-ca-nstab-user' => 'މެމްބަރު ޞަފްޙާ ބައްލަވާ',
+'tooltip-ca-nstab-special' => 'މިއީ ޚާއްސަ ޞަފްޙާއެކެވެ. މި ޞަފްޙާއަށް އުނިއިތުރު ނުގެނެވޭނެއެވެ.',
+'tooltip-ca-nstab-project' => 'މަޝްރޫޢު ޞަފްޙާ ބައްލަވާ',
 'tooltip-ca-nstab-image' => 'ފައިލު ޞަފްޙާ ބައްލަވާ',
 'tooltip-ca-nstab-template' => 'ފަންވަތް ބައްލަވާ',
 'tooltip-ca-nstab-category' => 'ޤިސްމު ޞަފްޙާ ބައްލަވާ',
 'tooltip-save' => 'ބަދަލުތައް ރައްކާކުރައްވާ',
+'tooltip-preview' => 'ބަދަލުތައް ދައްކަވާ، ރައްކާކުރެއްވުމުގެ ކުރިން މި ބޭނުންކުރައްވާ!',
+'tooltip-rollback' => '"ކުރީގެ ނުސްހާ އަކަށް ބަދަލުކުރައްވާ" އިން މި ޞަފްޙާއަށް އެންމެ ފަހުން އުނިއިތުރު ގެންނެވި މެމްބަރުގެ އުނިއިތުރު(އުނިއިތުރުތައް) ފޮހެލެވޭނެއެވެ.',
+'tooltip-summary' => 'ކުރު ޚުލާސާއެއް ލިޔުއްވާ',
 
 # Info page
 'pageinfo-toolboxlink' => 'ސަފްޙާ އާއި ބެހޭ މައުލޫމާތު',
 
+# Browsing diffs
+'previousdiff' => '→ ކުރީގެ ނުސްހާ',
+'nextdiff' => 'ފަހުގެ ނުސްހާ ←',
+
 # Special:NewFiles
 'showhidebots' => '($1 ބޮޓްސް)',
 'ilsubmit' => 'ހޯއްދަވާ',
index 03b00a9..ac9c0c7 100644 (file)
@@ -1414,7 +1414,7 @@ $1",
 'prefs-watchlist-token' => 'Σημείο λίστας παρακολούθησης:',
 'prefs-misc' => 'Διάφορες ρυθμίσεις',
 'prefs-resetpass' => 'Αλλαγή κωδικού',
-'prefs-changeemail' => 'Î\91λλαγή Î·Î»ÎµÎºÏ\84Ï\81ονικοÏ\8d Î¼Î·Î½Ï\8dμαÏ\84οÏ\82',
+'prefs-changeemail' => 'Î\91λλαγή Î´Î¹ÎµÏ\8dθÏ\85νÏ\83ηÏ\82 Î·Î»ÎµÎºÏ\84Ï\81ονικοÏ\8d Ï\84αÏ\87Ï\85δÏ\81ομείοÏ\85',
 'prefs-setemail' => 'Ορίστε μια διεύθυνση ηλεκτρονικού ταχυδρομείου',
 'prefs-email' => 'Επιλογές e-mail',
 'prefs-rendering' => 'Εμφάνιση',
@@ -1617,14 +1617,13 @@ $1",
 'right-sendemail' => 'Αποστολή ηλεκτρονικού μηνύματος σε άλλους χρήστες',
 'right-passwordreset' => 'Εμφάνιση email επαναφοράς κωδικού πρόσβασης',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Αρχείο δημιουργίας χρηστών',
+'newuserlogpagetext' => 'Αυτή είναι μια καταγραφή δημιουργίας χρηστών.',
+
 # User rights log
 'rightslog' => 'Αρχείο καταγραφών δικαιωμάτων χρηστών',
 'rightslogtext' => 'Καταγραφές των αλλαγών στα δικαιώματα χρηστών.',
-'rightslogentry' => 'η ιδιότητα μέλους ομάδας για τον/την $1 από $2 σε $3 άλλαξε',
-'rightslogentry-autopromote' => 'προωθήθηκε αυτόματα από $2 σε $3',
-'logentry-rights-rights-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ιδιότητα μέλους ομάδας {{GENDER:$1|του|της}} $3',
-'logentry-rights-autopromote' => '$1 προωθήθηκε αυτόματα από το $4 στο $5',
-'rightsnone' => '(κανένα)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'να διαβάσετε αυτή τη σελίδα',
@@ -1883,6 +1882,8 @@ $1',
 # Lock manager
 'lockmanager-notlocked' => 'Δεν μπορέσατε να  ξεκλειδώσετε το " $1 ". Δεν είναι κλειδωμένο.',
 'lockmanager-fail-closelock' => 'Δεν μπόρεσε να κλείσει το κλειδωμένο αρχείο για "$1".',
+'lockmanager-fail-deletelock' => 'Δεν μπόρεσε να διαγράψει το αρχείο κλειδώματος για το "$1".',
+'lockmanager-fail-openlock' => 'Δεν μπόρεσε να ανοίξει το αρχείο κλειδώματος για το "$1".',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Παρουσιάστηκε σφάλμα κατά το άνοιγμα του αρχείου για ZIP ελέγχους.',
@@ -2229,9 +2230,9 @@ $1',
 'linksearch-pat' => 'Μοτίβο αναζήτησης:',
 'linksearch-ns' => 'Περιοχή:',
 'linksearch-ok' => 'Αναζήτηση',
-'linksearch-text' => 'ΧαÏ\81ακÏ\84ήÏ\81εÏ\82 Ï\8cÏ\80Ï\89Ï\82 "*.wikipedia.org" Î¼Ï\80οÏ\81οÏ\8dν Î½Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιηθοÏ\8dν
-ΧÏ\81ειάζεÏ\84αι Ï\84οÏ\85λάÏ\87ιÏ\83Ï\84ον Î­Î½Î± domain Î±Î½Ï\8eÏ\84ατου επιπέδου, για παράδειγμα "*.org".<br />
-Î¥Ï\80οÏ\83Ï\84ηÏ\81ιζÏ\8cμενα Ï\80Ï\81Ï\89Ï\84Ï\8cκολλα: <code>$1</code> (μην Ï\80Ï\81οÏ\83θέÏ\84εÏ\84ε Î¿Ï\80οιαδήÏ\80οÏ\84ε Î±Ï\80Ï\8c Î±Ï\85Ï\84έÏ\82 Ï\83Ï\84ην Î±Î½Î±Î¶Î®Ï\84ηÏ\83ή Ï\83αÏ\82).',
+'linksearch-text' => 'Î\9cÏ\80οÏ\81οÏ\8dν Î½Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιηθοÏ\8dν Ï\87αÏ\81ακÏ\84ήÏ\81εÏ\82 Î¼Ï\80αλανÏ\84έÏ\81 Ï\8cÏ\80Ï\89Ï\82 "*.wikipedia.org"
+ΧÏ\81ειάζεÏ\84αι Ï\84οÏ\85λάÏ\87ιÏ\83Ï\84ον Î¼Î¹Î± ÎºÎ±Ï\84άληξη Î±Î½Ï\89Ï\84άτου επιπέδου, για παράδειγμα "*.org".<br />
+Î¥Ï\80οÏ\83Ï\84ηÏ\81ιζÏ\8cμενα Ï\80Ï\81Ï\89Ï\84Ï\8cκολλα: <code>$1</code> (αν Î´ÎµÎ½ Î¿Ï\81ιÏ\83Ï\84εί Ï\80Ï\81Ï\89Ï\84Ï\8cκολλο Î· Ï\80Ï\81οεÏ\80ιλογή ÎµÎ¯Î½Î±Î¹ http://).',
 'linksearch-line' => 'Η $1 συνδεδεμένη από την $2',
 'linksearch-error' => 'Λέξεις-μπαλαντέρ μπορεί να εμφανιστούν μόνο στην αρχή τού ονόματος ιστοτόπου (hostname).',
 
@@ -2250,10 +2251,6 @@ $1',
 'activeusers-hidesysops' => 'Απόκρυψη διαχειριστών',
 'activeusers-noresult' => 'Δεν βρέθηκε χρήστης.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Αρχείο δημιουργίας χρηστών',
-'newuserlogpagetext' => 'Αυτή είναι μια καταγραφή δημιουργίας χρηστών.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Δικαιώματα ομάδων χρηστών',
 'listgrouprights-summary' => 'Ακόλουθεί μία λίστα με τις ομάδες χρηστών σε αυτό το wiki καθώς και με τα δικαιώματα πρόσβασης αυτών.
@@ -2392,6 +2389,8 @@ $UNWATCHURL
 
 Παρατηρήσεις και περισσότερη βοήθεια:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'δημιουργήθηκε',
+'changed' => 'έχει αλλάξει',
 
 # Delete
 'deletepage' => 'Διαγραφή σελίδας',
@@ -3130,6 +3129,9 @@ $1',
 'pageinfo-protect-cascading' => 'Οι προστασίες ξεκινούν τη διαδοχή τους από εδώ',
 'pageinfo-protect-cascading-yes' => 'Ναι',
 'pageinfo-protect-cascading-from' => 'Οι προστασίες ξεκινούν τη διαδοχή τους από',
+'pageinfo-category-pages' => 'Αριθμός σελίδων',
+'pageinfo-category-subcats' => 'Αριθμός υποκατηγοριών',
+'pageinfo-category-files' => 'Αριθμός αρχείων',
 
 # Skin names
 'skinname-standard' => 'Κλασσικό',
@@ -3931,6 +3933,7 @@ $5
 'logentry-delete-restore' => 'Ο/η $1 αποκατέστησε τη σελίδα $3',
 'logentry-delete-event' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ορατότητα σε {{PLURAL:$5|ένα γεγονός καταγραφής|$5 log events}} στο $3: $4',
 'logentry-delete-revision' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|μιας έκδοσης|$5 εκδόσεων}} στη σελίδα $3: $4',
+'logentry-delete-event-legacy' => '{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα της καταγραφής συμβάντων στη σελίδα $3',
 'logentry-delete-revision-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την  ορατότητα των αναθεωρήσεων στη σελίδα $3',
 'logentry-suppress-delete' => '{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3',
 'logentry-suppress-revision-legacy' => '$1 κρυφά άλλαξαν την  ορατότητα των αναθεωρήσεων στη σελίδα $3',
@@ -3953,6 +3956,9 @@ $5
 'logentry-newusers-create2' => 'Ο λογαριασμός χρήστη $3 δημιουργήθηκε από {{GENDER:$1|τον|την}} $1',
 'logentry-newusers-autocreate' => 'Ο λογαριασμός $1 δημιουργήθηκε αυτόματα',
 'newuserlog-byemail' => 'ο κωδικός έχει σταλεί μέσω ηλεκτρονικού μηνύματος',
+'logentry-rights-rights-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ιδιότητα μέλους ομάδας {{GENDER:$1|του|της}} $3',
+'logentry-rights-autopromote' => '$1 προωθήθηκε αυτόματα από το $4 στο $5',
+'rightsnone' => '(κανένα)',
 
 # Feedback
 'feedback-bugornote' => 'Εάν είστε έτοιμοι να περιγράψετε ένα τεχνικό πρόβλημα λεπτομερώς παρακαλώ [ $1  κάντε μια αναφορά σφάλματος].
index e4acd18..9db5b70 100644 (file)
@@ -775,6 +775,7 @@ XHTML id names.
 'moredotdotdot' => 'More...',
 'mypage'        => 'Page',
 'mytalk'        => 'Talk',
+'morenotlisted' => 'More not listed...',
 'anontalk'      => 'Talk for this IP address',
 'navigation'    => 'Navigation',
 'and'           => '&#32;and',
@@ -1178,13 +1179,13 @@ You may ignore this message, if this account was created in error.',
 Please wait before trying again.',
 'login-abort-generic'        => 'Your login was unsuccessful - Aborted',
 'loginlanguagelabel'         => 'Language: $1',
-'loginlanguagelinks'         => '* Deutsch|de
-* English|en
-* Esperanto|eo
-* Français|fr
-* Español|es
-* Italiano|it
-* Nederlands|nl', # do not translate or duplicate this message to other languages
+'loginlanguagelinks'         => '* {{#language:de}}|de
+* {{#language:en}}|en
+* {{#language:eo}}|eo
+* {{#language:fr}}|fr
+* {{#language:es}}|es
+* {{#language:it}}|it
+* {{#language:nl}}|nl', # do not translate or duplicate this message to other languages
 'suspicious-userlogout'      => 'Your request to log out was denied because it looks like it was sent by a broken browser or caching proxy.',
 
 # E-mail sending
@@ -1192,6 +1193,7 @@ Please wait before trying again.',
 'php-mail-error'         => '$1', # do not translate or duplicate this message to other languages
 'php-mail-error-unknown' => "Unknown error in PHP's mail() function.",
 'user-mail-no-addy'      => 'Tried to send e-mail without an e-mail address.',
+'user-mail-no-body'      => 'Tried to send e-mail with an empty or unreasonably short body.',
 
 # Change password dialog
 'resetpass'                 => 'Change password',
@@ -2049,15 +2051,13 @@ Your e-mail address is not revealed when other users contact you.',
 'right-sendemail'             => 'Send e-mail to other users',
 'right-passwordreset'         => 'View password reset e-mails',
 
+# Special:Log/newusers
+'newuserlogpage'     => 'User creation log',
+'newuserlogpagetext' => 'This is a log of user creations.',
+
 # User rights log
-'rightslog'                     => 'User rights log',
-'rightslogtext'                 => 'This is a log of changes to user rights.',
-'rightslogentry'                => 'changed group membership for $1 from $2 to $3',
-'rightslogentry-autopromote'    => 'was automatically promoted from $2 to $3',
-'logentry-rights-rights'        => '$1 changed group membership for $3 from $4 to $5',
-'logentry-rights-rights-legacy' => '$1 changed group membership for $3',
-'logentry-rights-autopromote'   => '$1 was automatically promoted from $4 to $5',
-'rightsnone'                    => '(none)',
+'rightslog'     => 'User rights log',
+'rightslogtext' => 'This is a log of changes to user rights.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read'                 => 'read this page',
@@ -2780,10 +2780,6 @@ Supported {{PLURAL:$2|protocol|protocols}}: <code>$1</code> (defaults to http://
 'activeusers-hidesysops' => 'Hide administrators',
 'activeusers-noresult'   => 'No users found.',
 
-# Special:Log/newusers
-'newuserlogpage'     => 'User creation log',
-'newuserlogpagetext' => 'This is a log of user creations.',
-
 # Special:ListGroupRights
 'listgrouprights'                      => 'User group rights',
 'listgrouprights-summary'              => 'The following is a list of user groups defined on this wiki, with their associated access rights.
@@ -2923,6 +2919,8 @@ $UNWATCHURL
 
 Feedback and further assistance:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created'                      => 'created', # only translate this message to other languages if you have to change it
+'changed'                      => 'changed', # only translate this message to other languages if you have to change it
 
 # Delete
 'deletepage'             => 'Delete page',
@@ -2984,60 +2982,63 @@ this action has been canceled as a precaution against session hijacking.
 Go back to the previous page, reload that page and then try again.',
 
 # Protect
-'protectlogpage'              => 'Protection log',
-'protectlogtext'              => 'Below is a list of changes to page protections.
+'protectlogpage'                   => 'Protection log',
+'protectlogtext'                   => 'Below is a list of changes to page protections.
 See the [[Special:ProtectedPages|protected pages list]] for the list of currently operational page protections.',
-'protectedarticle'            => 'protected "[[$1]]"',
-'modifiedarticleprotection'   => 'changed protection level for "[[$1]]"',
-'unprotectedarticle'          => 'removed protection from "[[$1]]"',
-'movedarticleprotection'      => 'moved protection settings from "[[$2]]" to "[[$1]]"',
-'protect-title'               => 'Change protection level for "$1"',
-'protect-title-notallowed'    => 'View protection level of "$1"',
-'prot_1movedto2'              => '[[$1]] moved to [[$2]]',
-'protect-badnamespace-title'  => 'Non-protectable namespace',
-'protect-badnamespace-text'   => 'Pages in this namespace cannot be protected.',
-'protect-legend'              => 'Confirm protection',
-'protectcomment'              => 'Reason:',
-'protectexpiry'               => 'Expires:',
-'protect_expiry_invalid'      => 'Expiry time is invalid.',
-'protect_expiry_old'          => 'Expiry time is in the past.',
-'protect-unchain-permissions' => 'Unlock further protect options',
-'protect-text'                => "Here you may view and change the protection level for the page '''$1'''.",
-'protect-locked-blocked'      => "You cannot change protection levels while blocked.
+'protectedarticle'                 => 'protected "[[$1]]"',
+'modifiedarticleprotection'        => 'changed protection level for "[[$1]]"',
+'unprotectedarticle'               => 'removed protection from "[[$1]]"',
+'movedarticleprotection'           => 'moved protection settings from "[[$2]]" to "[[$1]]"',
+'protect-title'                    => 'Change protection level for "$1"',
+'protect-title-notallowed'         => 'View protection level of "$1"',
+'prot_1movedto2'                   => '[[$1]] moved to [[$2]]',
+'protect-badnamespace-title'       => 'Non-protectable namespace',
+'protect-badnamespace-text'        => 'Pages in this namespace cannot be protected.',
+'protect-norestrictiontypes-text'  => 'This page cannot be protected as there are no restriction types available.',
+'protect-norestrictiontypes-title' => 'Non-protectable page',
+'protect-legend'                   => 'Confirm protection',
+'protectcomment'                   => 'Reason:',
+'protectexpiry'                    => 'Expires:',
+'protect_expiry_invalid'           => 'Expiry time is invalid.',
+'protect_expiry_old'               => 'Expiry time is in the past.',
+'protect-unchain-permissions'      => 'Unlock further protect options',
+'protect-text'                     => "Here you may view and change the protection level for the page '''$1'''.",
+'protect-locked-blocked'           => "You cannot change protection levels while blocked.
 Here are the current settings for the page '''$1''':",
-'protect-locked-dblock'       => "Protection levels cannot be changed due to an active database lock.
+'protect-locked-dblock'            => "Protection levels cannot be changed due to an active database lock.
 Here are the current settings for the page '''$1''':",
-'protect-locked-access'       => "Your account does not have permission to change page protection levels.
+'protect-locked-access'            => "Your account does not have permission to change page protection levels.
 Here are the current settings for the page '''$1''':",
-'protect-cascadeon'           => "This page is currently protected because it is included in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.
+'protect-cascadeon'                => "This page is currently protected because it is included in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.
 You can change this page's protection level, but it will not affect the cascading protection.",
-'protect-default'             => 'Allow all users',
-'protect-fallback'            => 'Require "$1" permission',
-'protect-level-autoconfirmed' => 'Block new and unregistered users',
-'protect-level-sysop'         => 'Administrators only',
-'protect-summary-cascade'     => 'cascading',
-'protect-expiring'            => 'expires $1 (UTC)',
-'protect-expiring-local'      => 'expires $1',
-'protect-expiry-indefinite'   => 'indefinite',
-'protect-cascade'             => 'Protect pages included in this page (cascading protection)',
-'protect-cantedit'            => 'You cannot change the protection levels of this page because you do not have permission to edit it.',
-'protect-othertime'           => 'Other time:',
-'protect-othertime-op'        => 'other time',
-'protect-existing-expiry'     => 'Existing expiry time: $3, $2',
-'protect-otherreason'         => 'Other/additional reason:',
-'protect-otherreason-op'      => 'Other reason',
-'protect-dropdown'            => '*Common protection reasons
+'protect-default'                  => 'Allow all users',
+'protect-fallback'                 => 'Allow only users with "$1" permission',
+'protect-level-autoconfirmed'      => 'Allow only autoconfirmed users',
+'protect-level-sysop'              => 'Allow only administrators',
+'protect-summary-desc'             => '[$1=$2] ($3)', # only translate this message to other languages if you have to change it
+'protect-summary-cascade'          => 'cascading',
+'protect-expiring'                 => 'expires $1 (UTC)',
+'protect-expiring-local'           => 'expires $1',
+'protect-expiry-indefinite'        => 'indefinite',
+'protect-cascade'                  => 'Protect pages included in this page (cascading protection)',
+'protect-cantedit'                 => 'You cannot change the protection levels of this page because you do not have permission to edit it.',
+'protect-othertime'                => 'Other time:',
+'protect-othertime-op'             => 'other time',
+'protect-existing-expiry'          => 'Existing expiry time: $3, $2',
+'protect-otherreason'              => 'Other/additional reason:',
+'protect-otherreason-op'           => 'Other reason',
+'protect-dropdown'                 => '*Common protection reasons
 ** Excessive vandalism
 ** Excessive spamming
 ** Counter-productive edit warring
 ** High traffic page',
-'protect-edit-reasonlist'     => 'Edit protection reasons',
-'protect-expiry-options'      => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
-'restriction-type'            => 'Permission:',
-'restriction-level'           => 'Restriction level:',
-'minimum-size'                => 'Min size',
-'maximum-size'                => 'Max size:',
-'pagesize'                    => '(bytes)',
+'protect-edit-reasonlist'          => 'Edit protection reasons',
+'protect-expiry-options'           => '1 hour:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
+'restriction-type'                 => 'Permission:',
+'restriction-level'                => 'Restriction level:',
+'minimum-size'                     => 'Min size',
+'maximum-size'                     => 'Max size:',
+'pagesize'                         => '(bytes)',
 
 # Restrictions (nouns)
 'restriction-edit'   => 'Edit',
@@ -3783,6 +3784,7 @@ This is probably caused by a link to a blacklisted external site.',
 'pageinfo-hidden-categories'      => 'Hidden {{PLURAL:$1|category|categories}} ($1)',
 'pageinfo-templates'              => 'Transcluded {{PLURAL:$1|template|templates}} ($1)',
 'pageinfo-footer'                 => '-', # do not translate or duplicate this message to other languages
+'pageinfo-transclusions'          => '{{PLURAL:$1|Page|Pages}} transcluded on ($1)',
 'pageinfo-toolboxlink'            => 'Page information',
 'pageinfo-redirectsto'            => 'Redirects to',
 'pageinfo-redirectsto-info'       => 'info',
@@ -3791,6 +3793,10 @@ This is probably caused by a link to a blacklisted external site.',
 'pageinfo-protect-cascading'      => 'Protections are cascading from here',
 'pageinfo-protect-cascading-yes'  => 'Yes',
 'pageinfo-protect-cascading-from' => 'Protections are cascading from',
+'pageinfo-category-info'          => 'Category information',
+'pageinfo-category-pages'         => 'Number of pages',
+'pageinfo-category-subcats'       => 'Number of subcategories',
+'pageinfo-category-files'         => 'Number of files',
 
 # Skin names
 'skinname-standard'    => 'Classic', # only translate this message to other languages if you have to change it
@@ -3885,6 +3891,8 @@ By executing it, your system may be compromised.",
 'minutes'        => '{{PLURAL:$1|$1 minute|$1 minutes}}',
 'hours'          => '{{PLURAL:$1|$1 hour|$1 hours}}',
 'days'           => '{{PLURAL:$1|$1 day|$1 days}}',
+'months'         => '{{PLURAL:$1|$1 month|$1 months}}',
+'years'          => '{{PLURAL:$1|$1 year|$1 years}}',
 'ago'            => '$1 ago',
 'just-now'       => 'just now',
 
@@ -4880,6 +4888,10 @@ This site is experiencing technical difficulties.',
 'logentry-newusers-create2'           => 'User account $3 was created by $1',
 'logentry-newusers-autocreate'        => 'User account $1 was created automatically',
 'newuserlog-byemail'                  => 'password sent by e-mail',
+'logentry-rights-rights'              => '$1 changed group membership for $3 from $4 to $5',
+'logentry-rights-rights-legacy'       => '$1 changed group membership for $3',
+'logentry-rights-autopromote'         => '$1 was automatically promoted from $4 to $5',
+'rightsnone'                          => '(none)',
 
 # For IRC, see bug 34508. Do not change
 'revdelete-logentry'          => 'changed revision visibility of "[[$1]]"', # do not translate or duplicate this message to other languages
@@ -4903,6 +4915,8 @@ This site is experiencing technical difficulties.',
 'newuserlog-create-entry'     => 'New user account', # do not translate or duplicate this message to other languages
 'newuserlog-create2-entry'    => 'created new account $1', # do not translate or duplicate this message to other languages
 'newuserlog-autocreate-entry' => 'Account created automatically', # do not translate or duplicate this message to other languages
+'rightslogentry'              => 'changed group membership for $1 from $2 to $3', # do not translate or duplicate this message to other languages
+'rightslogentry-autopromote'  => 'was automatically promoted from $2 to $3', # do not translate or duplicate this message to other languages
 
 # Feedback
 'feedback-bugornote' => 'If you are ready to describe a technical problem in detail please [$1 report a bug].
index bec7807..f19e10e 100644 (file)
@@ -31,6 +31,7 @@
  * @author Omnipaedista
  * @author Pedroca cerebral
  * @author Petrus Adamus
+ * @author Renardo
  * @author Smeira
  * @author ThomasPusch
  * @author Tlustulimu
@@ -1615,15 +1616,13 @@ Jen hazarde generita valoro por via uzo: $1',
 'right-sendemail' => 'Sendi retpoŝton al aliaj uzantoj',
 'right-passwordreset' => 'Vidi retpoŝtojn de pasvorta restarado.',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Protokolo de uzanto-kreado',
+'newuserlogpagetext' => 'Jen protokolo de lastaj kreadoj de uzantoj.',
+
 # User rights log
 'rightslog' => 'Protokolo de uzanto-rajtoj',
 'rightslogtext' => 'Ĉi tio estas protokolo pri la ŝanĝoj de uzantorajtoj.',
-'rightslogentry' => 'ŝanĝis grupan membrecon por $1 de $2 al $3',
-'rightslogentry-autopromote' => 'estis aŭtomate altrangigita de $2 al $3',
-'logentry-rights-rights' => '$1 ŝanĝis grupan membrecon por $3 de $4 al $5',
-'logentry-rights-rights-legacy' => '$1 ŝanĝis grupan membrecon por $3',
-'logentry-rights-autopromote' => '$1 estis aŭtomate altrangigita de $4 al $5',
-'rightsnone' => '(nenia)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'legi ĉi tiun paĝon',
@@ -2257,10 +2256,6 @@ Subtenataj {{PLURAL:$2|protokolo|protokoloj}}:: <code>$1</code> (ne aldonu ĉi t
 'activeusers-hidesysops' => 'Kaŝi administrantojn',
 'activeusers-noresult' => 'Neniuj uzantoj trovitaj.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Protokolo de uzanto-kreado',
-'newuserlogpagetext' => 'Jen protokolo de lastaj kreadoj de uzantoj.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gruprajtoj de uzantoj',
 'listgrouprights-summary' => 'Jen listo de uzanto-grupoj difinitaj en ĉi tiu vikio, kun ties asociaj atingrajtoj.
@@ -2397,6 +2392,8 @@ $UNWATCHURL
 
 Komentoj kaj plia helpo:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'kreita',
+'changed' => 'ŝanĝita',
 
 # Delete
 'deletepage' => 'Forigi paĝon',
@@ -3241,6 +3238,7 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuto|$1 minutoj}}',
 'hours' => '{{PLURAL:$1|$1 horo|$1 horoj}}',
 'days' => '{{PLURAL:$1|$1 tago|$1 tagoj}}',
+'months' => '{{PLURAL:$1|$1 monato|$1 monatoj}}',
 'ago' => 'antaŭ $1',
 'just-now' => 'ĵus nune',
 
@@ -4051,6 +4049,10 @@ Bildoj montriĝas en plena distingivo, aliaj dosiertipoj estas malfermataj rekte
 'logentry-newusers-create2' => '$1 kreis uzanton $3',
 'logentry-newusers-autocreate' => 'Konto $1 estis kreita aŭtomate',
 'newuserlog-byemail' => 'pasvorto sendita retpoŝte',
+'logentry-rights-rights' => '$1 ŝanĝis grupan membrecon por $3 de $4 al $5',
+'logentry-rights-rights-legacy' => '$1 ŝanĝis grupan membrecon por $3',
+'logentry-rights-autopromote' => '$1 estis aŭtomate altrangigita de $4 al $5',
+'rightsnone' => '(nenia)',
 
 # Feedback
 'feedback-bugornote' => 'Se vi pretas priskribi teknikan problemon detale, bonvolu [$1 raporti cimon].
index 41f2f80..72db374 100644 (file)
@@ -1661,15 +1661,13 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'right-sendemail' => 'Enviar un correo electrónico a otros usuarios',
 'right-passwordreset' => 'Ver os correos electrónicos de restablecimiento de contraseñas',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registro de creación de usuarios',
+'newuserlogpagetext' => 'Este es un registro de creación de usuarios.',
+
 # User rights log
 'rightslog' => 'Cambios de perfil de usuario',
 'rightslogtext' => 'Este es un registro de cambios en los permisos de usuarios.',
-'rightslogentry' => 'modificó los grupos a los que pertenece $1: de $2 a $3',
-'rightslogentry-autopromote' => 'fue promovido automáticamente desde $2 a $3',
-'logentry-rights-rights' => '$1 modificó los grupos a los que pertenece $3: de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 ha cambiado la pertenencia a grupos de $3',
-'logentry-rights-autopromote' => '$1 fue promocionado automáticamente de $4 a $5',
-'rightsnone' => '(ninguno)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leer esta página',
@@ -2315,10 +2313,6 @@ Es necesario, por lo menos, un dominio de alto nivel, por ejemplo "*.org".<br />
 'activeusers-hidesysops' => 'Ocultar administradores',
 'activeusers-noresult' => 'No se encontraron usuarios.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registro de creación de usuarios',
-'newuserlogpagetext' => 'Este es un registro de creación de usuarios.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Permisos del grupo de usuarios',
 'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
@@ -2449,6 +2443,8 @@ $UNWATCHURL
 
 Comentarios y asistencia adicional:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'modificada',
 
 # Delete
 'deletepage' => 'Borrar esta página',
@@ -3207,6 +3203,10 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'pageinfo-protect-cascading' => 'Protecciones en serie activadas',
 'pageinfo-protect-cascading-yes' => 'Sí',
 'pageinfo-protect-cascading-from' => 'Protecciones en serie activadas',
+'pageinfo-category-info' => 'Información de la categoría',
+'pageinfo-category-pages' => 'Número de páginas',
+'pageinfo-category-subcats' => 'Número de subcategorías',
+'pageinfo-category-files' => 'Número de archivos',
 
 # Skin names
 'skinname-standard' => 'Estándar',
@@ -4053,6 +4053,10 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-newusers-create2' => '$1 ha creado la cuenta de usuario $3',
 'logentry-newusers-autocreate' => 'La cuenta $1 fue creada automáticamente',
 'newuserlog-byemail' => 'contraseña enviada por correo electrónico',
+'logentry-rights-rights' => '$1 modificó los grupos a los que pertenece $3: de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 ha cambiado la pertenencia a grupos de $3',
+'logentry-rights-autopromote' => '$1 fue promocionado automáticamente de $4 a $5',
+'rightsnone' => '(ninguno)',
 
 # Feedback
 'feedback-bugornote' => 'Si estás preparado para describir en detalle un problema técnico, [$1 informa de un bug] por favor.
index be42f44..847affb 100644 (file)
@@ -1570,12 +1570,13 @@ See ei tohi olla pikem kui {{PLURAL:$1|üks märk|$1 märki}}.',
 'right-sendemail' => 'Saata teistele kasutajatele e-kirju',
 'right-passwordreset' => 'Vaadata parooli lähtestamise e-kirju',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Kasutaja loomise logi',
+'newuserlogpagetext' => 'See logi sisaldab infot äsja loodud uute kasutajate kohta.',
+
 # User rights log
 'rightslog' => 'Kasutaja õiguste logi',
 'rightslogtext' => 'See on logi kasutajate õiguste muutuste kohta.',
-'rightslogentry' => 'andis kasutajale $1 järgmised õigused: $3; seni oli ta $2',
-'rightslogentry-autopromote' => 'sai automaatselt järgmised õigused: $3; seni oli ta $2',
-'rightsnone' => '(puudub)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'seda lehekülge lugeda',
@@ -2198,10 +2199,6 @@ Toetatud protokollid: <code>$1</code> (määramata protokolli korral vaikimisi h
 'activeusers-hidesysops' => 'Peida administraatorid',
 'activeusers-noresult' => 'Kasutajaid ei leidunud.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Kasutaja loomise logi',
-'newuserlogpagetext' => 'See logi sisaldab infot äsja loodud uute kasutajate kohta.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Kasutajarühma õigused',
 'listgrouprights-summary' => 'Siin on loetletud selle viki kasutajarühmad ja rühmaga seotud õigused.
@@ -2335,6 +2332,8 @@ Lehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.
 
 Tagasiside ja abi:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'loonud lehekülje',
+'changed' => 'muutnud lehekülge',
 
 # Delete
 'deletepage' => 'Kustuta lehekülg',
@@ -3878,6 +3877,7 @@ Pilt kuvatakse algupärases suuruses, muu fail avatakse koheselt seostuva progra
 'logentry-newusers-create2' => '$1 lõi kasutajakonto $3',
 'logentry-newusers-autocreate' => 'Konto $1 loodi automaatselt',
 'newuserlog-byemail' => 'parool saadetud e-postiga',
+'rightsnone' => '(puudub)',
 
 # Feedback
 'feedback-bugornote' => 'Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].
index fde558f..56cb1f4 100644 (file)
@@ -1336,11 +1336,13 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
 'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
 'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Erabiltzaile erregistroa',
+'newuserlogpagetext' => 'Hau azken erabiltzaileen sorreren erregistroa da.',
+
 # User rights log
 'rightslog' => 'Erabiltzaile eskubideen erregistroa',
 'rightslogtext' => 'Erabiltzaile eskubideetan izandako aldaketen erregistroa da hau.',
-'rightslogentry' => '$1(r)en partaidetza aldatu da $2(e)tik $3(e)ra',
-'rightsnone' => '(bat ere ez)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'orrialde hau irakurri',
@@ -1867,10 +1869,6 @@ Baimendutako protokoloak: <code>$1</code> (protokoloa zehazten ez bada http:// h
 'activeusers-hidesysops' => 'Ezkutatu administratzaileak',
 'activeusers-noresult' => 'Ez da lankiderik aurkitu.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Erabiltzaile erregistroa',
-'newuserlogpagetext' => 'Hau azken erabiltzaileen sorreren erregistroa da.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Erabiltzaile talde eskumenak',
 'listgrouprights-summary' => 'Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.
@@ -1990,6 +1988,8 @@ $UNWATCHURL
 
 Laguntza:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'sortu',
+'changed' => 'aldatu',
 
 # Delete
 'deletepage' => 'Orrialdea ezabatu',
@@ -3334,6 +3334,7 @@ Irudiak bereizmen handienean daude, bestelako fitxategi motak beraiei esleitutak
 'logentry-newusers-create' => '$1 wikilariak erabiltzaile kontu bat sortu du',
 'logentry-newusers-create2' => '$1 wikilariak $3 erabiltzaile kontu bat sortu du',
 'newuserlog-byemail' => 'pasahitza e-postaz bidali da',
+'rightsnone' => '(bat ere ez)',
 
 # Feedback
 'feedback-subject' => 'Gaia:',
index 04e411c..2d52418 100644 (file)
@@ -948,11 +948,12 @@ Amás premiti qu'otrus ussuárius contatin contigu pol mé la tu página d'ussu
 'right-userrights' => 'Eital los derechus de tolos usuárius',
 'right-siteadmin' => 'Atarugal i desatarugal la basi e datus',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Rustrihu de nuevus usuárius',
+
 # User rights log
 'rightslog' => 'Rustrihu e derechus de los usuárius',
 'rightslogtext' => 'Esti es un rustrihu e chambus enus derechus los usuárius.',
-'rightslogentry' => 'chambó el grupu al que preteneci $1: de $2 a $3',
-'rightsnone' => '(dengunu)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leyel esta página',
@@ -1339,9 +1340,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Muestral',
 'listusers-noresult' => 'Nu s´alcuentró dengún usuáriu.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Rustrihu de nuevus usuárius',
-
 # Special:ListGroupRights
 'listgrouprights' => "Derechus del grupu d'usuárius",
 'listgrouprights-group' => 'Grupu',
@@ -1443,6 +1441,8 @@ Pa hazel chambus ena tu lista e seguimientu, vesita
 
 Ayua la Güiquipeya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'criá',
+'changed' => 'chambau',
 
 # Delete
 'deletepage' => 'Esborral páhina',
@@ -2405,5 +2405,6 @@ Las imahin se muestran a resolución compreta; las demas crasis d'archivu s'ehec
 'revdelete-restricted' => 'las restricionis a los çahorilis án siu apricás',
 'revdelete-unrestricted' => 'las restricionis a los çahorilis án siu esborrás',
 'newuserlog-byemail' => 'consínia enviá pol e-mail',
+'rightsnone' => '(dengunu)',
 
 );
index 41a8e49..3338ab1 100644 (file)
@@ -1753,15 +1753,13 @@ $1",
 'right-sendemail' => 'ارسال رایانامه به دیگر کاربران',
 'right-passwordreset' => 'مشاهدهٔ نامه‌های تنظیم مجدد گذرواژه',
 
+# Special:Log/newusers
+'newuserlogpage' => 'سیاههٔ ایجاد کاربر',
+'newuserlogpagetext' => 'این سیاهه‌ای از نام‌های کاربری تازه‌ساخته‌شده است.',
+
 # User rights log
 'rightslog' => 'سیاههٔ اختیارات کاربر',
 'rightslogtext' => 'این سیاههٔ تغییرات اختیارات کاربر است.',
-'rightslogentry' => 'عضویت $1 را از گروه $2 به $3 تغییر داد',
-'rightslogentry-autopromote' => 'به طور خودکار از $2 به $3 ارتقا یافت',
-'logentry-rights-rights' => '$1 عضویت $3 را از گروه $4 به $5 تغییر داد',
-'logentry-rights-rights-legacy' => '$1 گروه عضویت $3 را تغییر داد',
-'logentry-rights-autopromote' => '$1 به طور خودکار از $4 به $5 ارتقا یافت',
-'rightsnone' => '(هیچ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'خواندن این صفحه',
@@ -2391,7 +2389,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'linksearch-ok' => 'جستجو',
 'linksearch-text' => 'نشانه‌هایی مانند «‎*.wikipedia.org» را می‌توان استفاده کرد.
 حداقل یک دامنه سطح بالا ، به عنوان مثال "*.org" نیاز دارد.<br />
-پروتکل‌های پشتیبانی‌شده: <code>$1</code> (پیش‌فرض برای http:// در صورت مشخص نشدن پروتکل تنظیم شده‌است)',
+{{PLURAL:$2|پروتکل|پروتکل‌های}} پشتیبانی‌شده: <code>$1</code> (پیش‌فرض برای http:// در صورت مشخص نشدن پروتکل تنظیم شده‌است).',
 'linksearch-line' => '$1 از $2 پیوند دارد',
 'linksearch-error' => 'نشانه‌ها فقط در ابتدای نام میزبان اینترنتی می‌توانند استفاده شوند.',
 
@@ -2410,10 +2408,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'activeusers-hidesysops' => 'نهفتن مدیران',
 'activeusers-noresult' => 'کاربری پیدا نشد.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'سیاههٔ ایجاد کاربر',
-'newuserlogpagetext' => 'این سیاهه‌ای از نام‌های کاربری تازه‌ساخته‌شده است.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'اختیارات گروه‌های کاربری',
 'listgrouprights-summary' => 'فهرست زیر شامل گروه‌های کاربری تعریف شده در این ویکی و اختیارات داده شده به آن‌ها است.
@@ -2479,8 +2473,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'watchnologin' => 'به سامانه وارد نشده‌اید',
 'watchnologintext' => 'برای تغییر فهرست پی‌گیری‌هایتان باید [[Special:UserLogin|به سامانه وارد شوید]].',
 'addwatch' => 'افزودن به فهرست پی‌گیری',
-'addedwatchtext' => "صفحهٔ «[[:$1]]» به [[Special:Watchlist|فهرست پی‌گیری‌های]] شما اضافه شد.
-تغییرات این صفحه و صفحهٔ بحث متناظرش در آینده در اینجا فهرست خواهد شد؛ به‌علاوه، این صفحه، برای واضح‌تر دیده شدن در [[Special:RecentChanges|فهرست تغییرات اخیر]] به شکل '''پررنگ''' نمایش خواهد یافت.",
+'addedwatchtext' => 'صفحهٔ «[[:$1]]» به [[Special:Watchlist|فهرست پی‌گیری‌های]] شما اضافه شد.
+تغییرات این صفحه و صفحهٔ بحث متناظرش در آینده در اینجا فهرست خواهد شد.',
 'removewatch' => 'حذف از فهرست پی‌گیری',
 'removedwatchtext' => 'صفحهٔ «[[:$1]]» از [[Special:Watchlist|فهرست پی‌گیری‌های شما]] برداشته شد.',
 'watch' => 'پی‌گیری',
@@ -2514,7 +2508,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'enotif_subject_moved' => '{{SITENAME}} صفحهٔ $1 توسط {{gender:$2|$2}} انتقال یافت.',
 'enotif_subject_restored' => '{{SITENAME}} صفحهٔ $1 توسط {{gender:$2|$2}} احیا شد.',
 'enotif_subject_changed' => '{{SITENAME}} صفحهٔ $1 توسط {{gender:$2|$2}} تغییر کرد.',
-'enotif_body_intro_deleted' => '{{SITENAME}} صفحهٔ $1 در تاریخ $PAGEEDITDATE توسط {{gender:$2|$2}} حذف شد. $3 را برای نسخهٔ کنونی شاهده کنید.',
+'enotif_body_intro_deleted' => 'صفحهٔ $1 {{SITENAME}} در تاریخ $PAGEEDITDATE توسط {{gender:$2|$2}} حذف شد، $3 را ببینید.',
 'enotif_body_intro_created' => '{{SITENAME}} صفحهٔ $1 در تاریخ $PAGEEDITDATE توسط {{gender:$2|$2}} ایجاد شد. $3 را برای نسخهٔ کنونی شاهده کنید.',
 'enotif_body_intro_moved' => '{{SITENAME}} صفحهٔ $1 در تاریخ $PAGEEDITDATE توسط {{gender:$2|$2}} انتقال یافت، $3 را برای نسخهٔ کنونی شاهده کنید.',
 'enotif_body_intro_restored' => '{{SITENAME}} صفحهٔ $1 در تاریخ $PAGEEDITDATE توسط {{gender:$2|$2}} احیا شد، $3 را برای نسخهٔ کنونی شاهده کنید.',
@@ -2547,6 +2541,8 @@ $PAGEINTRO $NEWPAGE
 
 بازخورد و کمک بیشتر:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ایجاد شده',
+'changed' => 'تغییر یافته',
 
 # Delete
 'deletepage' => 'حذف صفحه',
@@ -3293,6 +3289,10 @@ $1',
 'pageinfo-protect-cascading' => 'محافظت آبشاری از اینجا',
 'pageinfo-protect-cascading-yes' => 'بله',
 'pageinfo-protect-cascading-from' => 'محافظت آبشاری از',
+'pageinfo-category-info' => 'اطلاعات رده',
+'pageinfo-category-pages' => 'تعداد صفحه‌ها',
+'pageinfo-category-subcats' => 'تعداد زیررده‌ها',
+'pageinfo-category-files' => 'تعداد پرونده‌ها',
 
 # Skin names
 'skinname-standard' => 'کلاسیک',
@@ -3381,6 +3381,8 @@ $1',
 'minutes' => '{{PLURAL: $1|دقیقه|دقیقه}}',
 'hours' => '{{PLURAL: $1|ساعت|ساعت}}',
 'days' => '{{PLURAL: $1|روز|روز}}',
+'months' => '{{PLURAL:$1|$1 ماه|}}',
+'years' => '{{PLURAL:$1|$1 سال|}}',
 'ago' => '$1 پیش',
 'just-now' => 'هم‌اکنون',
 
@@ -4200,6 +4202,10 @@ $5
 'logentry-newusers-create2' => 'حساب کاربری $3 توسط $1 ایجاد شد',
 'logentry-newusers-autocreate' => 'حساب $1  به شکل خودکار ساخته شد',
 'newuserlog-byemail' => 'گذرواژه بوسیله رایانامه ارسال شد',
+'logentry-rights-rights' => '$1 عضویت $3 را از گروه $4 به $5 تغییر داد',
+'logentry-rights-rights-legacy' => '$1 گروه عضویت $3 را تغییر داد',
+'logentry-rights-autopromote' => '$1 به طور خودکار از $4 به $5 ارتقا یافت',
+'rightsnone' => '(هیچ)',
 
 # Feedback
 'feedback-bugornote' => 'اگر آماده‌اید تا مشکلی فنی را با جزئیاتش شرح دهید لطفاً [$1 یک ایراد گزارش دهید]. در غیر این صورت می‌توانید از فرم سادهٔ زیر استفاده کنید. نظر شما به همراه نام کاربری و مرورگرتان به صفحهٔ «[$2 $3]» افزوده خواهد شد.',
index 62fb2b7..1791338 100644 (file)
@@ -1565,14 +1565,13 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
 'right-sendemail' => 'Lähettää sähköpostia muille käyttäjille',
 'right-passwordreset' => 'Tarkastella salasanan alustusviestejä',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Uudet käyttäjät',
+'newuserlogpagetext' => 'Tämä on loki luoduista käyttäjätunnuksista.',
+
 # User rights log
 'rightslog' => 'Käyttöoikeusloki',
 'rightslogtext' => 'Tämä on loki käyttäjien käyttöoikeuksien muutoksista.',
-'rightslogentry' => 'muutti käyttäjän $1 oikeudet ryhmistä $2 ryhmiin $3',
-'rightslogentry-autopromote' => 'muutettiin automaattisesti ryhmistä $2 ryhmiin $3',
-'logentry-rights-rights' => '$1 muutti käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5',
-'logentry-rights-autopromote' => '$1 ylennettiin automaattisesti ryhmistä $4 ryhmiin $5',
-'rightsnone' => '(ei oikeuksia)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lukea tätä sivua',
@@ -2183,9 +2182,9 @@ Katso myös [[Special:WantedCategories|halutut luokat]].',
 'linksearch-pat' => 'Osoite',
 'linksearch-ns' => 'Nimiavaruus',
 'linksearch-ok' => 'Etsi',
-'linksearch-text' => 'Tähteä (*) voi käyttää jokerimerkkinä, esimerkiksi ”*.wikipedia.org”.
-Vähintään ylätason verkkotunnus, esimerkiksi "*.org", tarvitaan.<br />
-Tuetut protokollat: <code>$1</code> (oletuksena on <code>http://</code>, jos protokollaa ei määritetä).',
+'linksearch-text' => 'Jokerimerkkejä, kuten "*.wikipedia.org", voidaan käyttää.
+Vaaditaan vähintään ylätason verkkotunnus, esimerkiksi "*.org".<br />
+{{PLURAL:$2|Tuettu protokolla|Tuetut protokollat}}: <code>$1</code> (oletuksena on <code>http://</code>, jos protokollaa ei määritetä).',
 'linksearch-line' => '$1 on linkitetty sivulta $2',
 'linksearch-error' => 'Jokerimerkkiä voi käyttää ainoastaan osoitteen alussa.',
 
@@ -2204,10 +2203,6 @@ Tuetut protokollat: <code>$1</code> (oletuksena on <code>http://</code>, jos pro
 'activeusers-hidesysops' => 'Piilota ylläpitäjät',
 'activeusers-noresult' => 'Käyttäjiä ei löytynyt.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Uudet käyttäjät',
-'newuserlogpagetext' => 'Tämä on loki luoduista käyttäjätunnuksista.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Käyttäjäryhmien oikeudet',
 'listgrouprights-summary' => 'Tämä lista sisältää tämän wikin käyttäjäryhmät sekä ryhmiin liitetyt käyttöoikeudet.
@@ -2341,6 +2336,8 @@ $UNWATCHURL
 
 Palaute ja lisäapu osoitteessa:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'luonut sivun',
+'changed' => 'muuttanut sivua',
 
 # Delete
 'deletepage' => 'Poista sivu',
@@ -3904,6 +3901,9 @@ Kuvat näytetään täysikokoisina. Muut tiedostot avataan niille määritetyss
 'logentry-newusers-create2' => '$1 loi käyttäjätunnuksen $3',
 'logentry-newusers-autocreate' => 'Käyttäjätunnus $1 luotiin automaattisesti',
 'newuserlog-byemail' => 'salasana lähetetty sähköpostitse',
+'logentry-rights-rights' => '$1 muutti käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5',
+'logentry-rights-autopromote' => '$1 ylennettiin automaattisesti ryhmistä $4 ryhmiin $5',
+'rightsnone' => '(ei oikeuksia)',
 
 # Feedback
 'feedback-bugornote' => 'Jos voit kuvailla teknisen ongelman tarkasti – [$1 ilmoita ohjelmointivirheestä].
diff --git a/languages/messages/MessagesFiu_vro.php b/languages/messages/MessagesFiu_vro.php
deleted file mode 100644 (file)
index 9407647..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/** Võro
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- * @comment Deprecated language code. Falls back to 'vro'.
- */
-
-$fallback = 'vro, et';
index 0af0e8d..c449f1e 100644 (file)
@@ -1285,12 +1285,13 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-sendemail' => 'Send t-post til aðrir brúkarar',
 'right-passwordreset' => 'Sí teldupostar til nullstilling av loyniorði',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brúkara logg',
+'newuserlogpagetext' => 'Hetta er ein listi yvir seinast stovnaðu brúkarar.',
+
 # User rights log
 'rightslog' => 'Rættindaloggur',
 'rightslogtext' => 'Hetta er ein loggur sum vísir broytingar í brúkararættindum.',
-'rightslogentry' => 'broyttar bólka limaskap fyri $1 frá $2 til $3',
-'rightslogentry-autopromote' => 'varð sjálvvirkandi fluttur upp frá $2 til $3',
-'rightsnone' => '(ongin)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'les hesa síðu',
@@ -1685,10 +1686,6 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'activeusers-hidesysops' => 'Fjal umboðsstjórar (administratorar)',
 'activeusers-noresult' => 'Ongir brúkarar funnir.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brúkara logg',
-'newuserlogpagetext' => 'Hetta er ein listi yvir seinast stovnaðu brúkarar.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Brúkara bólka rættindi',
 'listgrouprights-summary' => 'Henda síða vísir ein lista av brúkarabólkum, sum eru útgreinaðir á hesi wiki og rættindini hjá teimum einstøku bólkunum.
@@ -1762,6 +1759,7 @@ Vilt tú flyta síðuna undan tínum eftirliti, kanst tú trýsta á \"Strika ef
 'unwatching' => 'Strikar eftirlit...',
 
 'enotif_impersonal_salutation' => '{{SITENAME}}brúkari',
+'created' => 'stovnað',
 
 # Delete
 'deletepage' => 'Strika síðu',
@@ -2252,6 +2250,9 @@ Hendan váttanarkoda fer úr gildi tann $4.',
 'compare-page1' => 'Síða 1',
 'compare-page2' => 'Síða 2',
 
+# New logging system
+'rightsnone' => '(ongin)',
+
 # Search suggestions
 'searchsuggest-search' => 'Leita',
 
index c797979..4c471f6 100644 (file)
@@ -41,6 +41,7 @@
  * @author Houcinee1
  * @author Hégésippe Cormier
  * @author IAlex
+ * @author Isildur
  * @author Jagwar
  * @author Jean-Frédéric
  * @author JeanVoisin
@@ -511,6 +512,7 @@ $messages = array(
 'newwindow' => '(ouvre une nouvelle fenêtre)',
 'cancel' => 'Annuler',
 'moredotdotdot' => 'Plus...',
+'morenotlisted' => 'Davantage non listé…',
 'mypage' => 'Page',
 'mytalk' => 'Discussion',
 'anontalk' => 'Discussion avec cette adresse IP',
@@ -696,12 +698,12 @@ Une liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{in
 # General errors
 'error' => 'Erreur',
 'databaseerror' => 'Erreur de la base de données',
-'dberrortext' => 'Une erreur de syntaxe de la requête dans la base de données est survenue.
+'dberrortext' => "Une erreur de syntaxe de la requête dans la base de données est survenue.
 Ceci peut indiquer un bogue dans le logiciel.
 La dernière requête traitée par la base de données était :
 <blockquote><code>$1</code></blockquote>
 depuis la fonction « <code>$2</code> ».
-La base de données a renvoyé l’erreur « <samp>$3 : $4</samp> ».',
+La base de données a renvoyé l'erreur « <samp>$3 : $4</samp> ».",
 'dberrortextcl' => "Une requête dans la base de données comporte une erreur de syntaxe.
 La dernière requête émise était :
 « $1 »
@@ -883,6 +885,7 @@ Veuillez attendre avant d'essayer à nouveau.",
 # E-mail sending
 'php-mail-error-unknown' => 'Erreur inconnue dans la fonction mail() de PHP.',
 'user-mail-no-addy' => "Tenté d'envoyer un courriel sans adresse de courriel",
+'user-mail-no-body' => "Essai d'envoi d'un courriel avec un corps vide ou déraisonnablement court.",
 
 # Change password dialog
 'resetpass' => 'Changer de mot de passe',
@@ -1041,8 +1044,8 @@ Cela survient en général en suivant un lien historique obsolète vers une page
 Vous pouvez trouver plus de détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
 'userpage-userdoesnotexist' => "Le compte utilisateur « <nowiki>$1</nowiki> » n'est pas enregistré. Veuillez vérifier que vous voulez créer cette page.",
 'userpage-userdoesnotexist-view' => "Le compte utilisateur « $1 » n'est pas enregistré.",
-'blocked-notice-logextract' => 'Cet utilisateur est actuellement bloqué.
-La dernière entrée du journal des blocages est indiquée ci-dessous à titre d’information :',
+'blocked-notice-logextract' => "Cet utilisateur est actuellement bloqué.
+La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
 'clearyourcache' => "'''Note :''' après avoir enregistré vos préférences, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
 * '''Firefox / Safari :''' Maintenez la touche ''Maj'' (''Shift'') en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' sur un Mac) ;
 * '''Google Chrome :''' Appuyez sur ''Ctrl-Maj-R'' (''⌘-Shift-R'' sur un Mac) ;
@@ -1657,15 +1660,13 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'right-sendemail' => 'Envoyer un courriel aux autres utilisateurs',
 'right-passwordreset' => 'Voir les courriels de réinitialisation des mots de passe',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Journal des créations de comptes utilisateur',
+'newuserlogpagetext' => "Cette page affiche l'historique des créations de comptes utilisateur.",
+
 # User rights log
 'rightslog' => "Journal des modifications de droits d'utilisateurs",
 'rightslogtext' => "Voici l'historique des modifications des droits des utilisateurs.",
-'rightslogentry' => "a modifié les droits de l'utilisateur « $1 » de $2 à $3",
-'rightslogentry-autopromote' => 'a été automatiquement promu de $2 à $3',
-'logentry-rights-rights' => "$1 a modifié l'appartenance au groupe pour $3 de $4 à $5",
-'logentry-rights-rights-legacy' => "$1 a modifié l'appartenance au groupe pour $3",
-'logentry-rights-autopromote' => '$1 a été promu automatiquement de $4 à $5',
-'rightsnone' => '(aucun)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lire cette page',
@@ -1681,7 +1682,7 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'action-upload' => 'importer ce fichier',
 'action-reupload' => 'écraser ce fichier existant',
 'action-reupload-shared' => 'outrepasser localement ce fichier présent sur un dépôt partagé',
-'action-upload_by_url' => 'importer ce fichier à partir d’une adresse URL',
+'action-upload_by_url' => "importer ce fichier à partir d'une adresse URL",
 'action-writeapi' => "utiliser l‘API d'écriture",
 'action-delete' => 'supprimer cette page',
 'action-deleterevision' => 'supprimer cette version',
@@ -2316,10 +2317,6 @@ Ils nécessitent au moins un domaine de niveau supérieur, par exemple « *.org
 'activeusers-hidesysops' => 'Masquer les administrateurs',
 'activeusers-noresult' => 'Aucun utilisateur trouvé.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Journal des créations de comptes utilisateur',
-'newuserlogpagetext' => "Cette page affiche l'historique des créations de comptes utilisateur.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Droits des groupes d'utilisateurs",
 'listgrouprights-summary' => "Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d'accès qui leur sont associés.
@@ -2454,6 +2451,8 @@ $UNWATCHURL
 
 Retour et assistance :
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'créée',
+'changed' => 'modifiée',
 
 # Delete
 'deletepage' => 'Supprimer la page',
@@ -2526,6 +2525,8 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
 'prot_1movedto2' => '[[$1]] renommé en [[$2]]',
 'protect-badnamespace-title' => 'Espace de noms non protégeable',
 'protect-badnamespace-text' => 'Les pages dans cet espace de noms ne peuvent pas être protégées.',
+'protect-norestrictiontypes-text' => "Cette page ne peut pas être protégée car il n'y a pas de type de restriction disponible.",
+'protect-norestrictiontypes-title' => 'Page non protégeable',
 'protect-legend' => 'Confirmer la protection',
 'protectcomment' => 'Motif :',
 'protectexpiry' => "Date d'expiration :",
@@ -2643,7 +2644,7 @@ $1',
 'blanknamespace' => '(Principal)',
 
 # Contributions
-'contributions' => 'Contributions de l’{{GENDER:$1|utilisateur|utilisatrice}}',
+'contributions' => "Contributions de l'{{GENDER:$1|utilisateur|utilisatrice}}",
 'contributions-title' => "Liste des contributions de l'utilisateur $1",
 'mycontris' => 'Contributions',
 'contribsub2' => 'Pour $1 ($2)',
@@ -2654,18 +2655,18 @@ $1',
 
 'sp-contributions-newbies' => 'Ne montrer que les contributions des nouveaux utilisateurs',
 'sp-contributions-newbies-sub' => 'Parmi les nouveaux comptes',
-'sp-contributions-newbies-title' => 'Contributions d’utilisateurs parmi les nouveaux comptes',
+'sp-contributions-newbies-title' => "Contributions d'utilisateurs parmi les nouveaux comptes",
 'sp-contributions-blocklog' => 'journal des blocages',
 'sp-contributions-deleted' => 'contributions supprimées',
 'sp-contributions-uploads' => 'imports',
 'sp-contributions-logs' => 'journaux',
 'sp-contributions-talk' => 'discuter',
 'sp-contributions-userrights' => 'gérer les droits',
-'sp-contributions-blocked-notice' => 'Cet utilisateur est actuellement bloqué. La dernière entrée du journal des blocages est indiquée ci-dessous à titre d’information :',
-'sp-contributions-blocked-notice-anon' => 'Cette adresse IP est actuellement bloquée.
-La dernière entrée du journal des blocages est indiquée ci-dessous à titre d’information :',
+'sp-contributions-blocked-notice' => "Cet utilisateur est actuellement bloqué. La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
+'sp-contributions-blocked-notice-anon' => "Cette adresse IP est actuellement bloquée.
+La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
 'sp-contributions-search' => 'Rechercher les contributions',
-'sp-contributions-username' => 'Adresse IP ou nom d’utilisateur :',
+'sp-contributions-username' => "Adresse IP ou nom d'utilisateur :",
 'sp-contributions-toponly' => 'Ne montrer que les contributions qui sont les dernières des articles',
 'sp-contributions-submit' => 'Rechercher',
 
@@ -2675,7 +2676,7 @@ La dernière entrée du journal des blocages est indiquée ci-dessous à titre d
 'whatlinkshere-page' => 'Page :',
 'linkshere' => "Les pages ci-dessous contiennent un lien vers '''[[:$1]]''' :",
 'nolinkshere' => "Aucune page ne contient de lien vers '''[[:$1]]'''.",
-'nolinkshere-ns' => "Aucune page ne contient de lien vers '''[[:$1]]''' dans lespace de noms choisi.",
+'nolinkshere-ns' => "Aucune page ne contient de lien vers '''[[:$1]]''' dans l'espace de noms choisi.",
 'isredirect' => 'page de redirection',
 'istemplate' => 'inclusion',
 'isimage' => 'lien vers le fichier',
@@ -2690,36 +2691,36 @@ La dernière entrée du journal des blocages est indiquée ci-dessous à titre d
 
 # Block/unblock
 'autoblockid' => 'Blocage automatique #$1',
-'block' => 'Bloquer l’utilisateur',
+'block' => "Bloquer l'utilisateur",
 'unblock' => "Débloquer l'utilisateur",
-'blockip' => 'Bloquer l’utilisateur',
-'blockip-title' => 'Bloquer l’utilisateur',
-'blockip-legend' => 'Bloquer l’utilisateur',
-'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer l’accès aux modifications faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
+'blockip' => "Bloquer l'utilisateur",
+'blockip-title' => "Bloquer l'utilisateur",
+'blockip-legend' => "Bloquer l'utilisateur",
+'blockiptext' => "Utilisez le formulaire ci-dessous pour bloquer l'accès aux modifications faites à partir d'une adresse IP spécifique ou d'un nom d'utilisateur.
 Une telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].
-Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont été vandalisées).',
+Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont été vandalisées).",
 'ipadressorusername' => "Adresse IP ou nom d'utilisateur :",
 'ipbexpiry' => 'Durée avant expiration :',
 'ipbreason' => 'Motif :',
 'ipbreasonotherlist' => 'Autre motif',
-'ipbreason-dropdown' => '* Motifs de blocage les plus fréquents
+'ipbreason-dropdown' => "* Motifs de blocage les plus fréquents
 ** Insertion de fausses informations
 ** Suppression injustifiée de contenu des pages
 ** Insertion répétée de liens externes publicitaires (pollupostage)
 ** Insertion de contenu sans aucun sens et de déchets dans les pages
-** Tentative dintimidation ou harcèlement
-** Abus dutilisation de comptes multiples
-** Nom d’utilisateur inacceptable, injurieux ou diffamant',
+** Tentative d'intimidation ou harcèlement
+** Abus d'utilisation de comptes multiples
+** Nom d'utilisateur inacceptable, injurieux ou diffamant",
 'ipb-hardblock' => 'Empêcher les utilisateurs connectés de modifier en utilisant cette adresse IP',
 'ipbcreateaccount' => 'Empêcher la création de compte',
-'ipbemailban' => 'Empêcher l’utilisateur d’envoyer des courriels',
-'ipbenableautoblock' => 'Bloquer automatiquement la dernière adresse IP utilisée par l’utilisateur et toutes ses IPs ultérieures qu’il pourrait essayer',
+'ipbemailban' => "Empêcher l'utilisateur d'envoyer des courriels",
+'ipbenableautoblock' => "Bloquer automatiquement la dernière adresse IP utilisée par l'utilisateur et toutes ses IPs ultérieures qu'il pourrait essayer",
 'ipbsubmit' => 'Bloquer cet utilisateur',
 'ipbother' => 'Autre durée :',
 'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite',
 'ipbotheroption' => 'autre',
 'ipbotherreason' => 'Motif différent ou supplémentaire :',
-'ipbhidename' => 'Masquer le nom d’utilisateur des modifications et des listes',
+'ipbhidename' => "Masquer le nom d'utilisateur des modifications et des listes",
 'ipbwatchuser' => 'Suivre les pages utilisateur et de discussion de cet utilisateur',
 'ipb-disableusertalk' => 'Empêcher cet utilisateur de modifier sa propre page de discussion pendant la durée de son blocage',
 'ipb-change-block' => 'Bloquer à nouveau cet utilisateur avec ces paramètres',
@@ -2729,7 +2730,7 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont ét
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] a été bloqué{{GENDER:$1||e|}}.<br />
 Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.',
 'ipb-blockingself' => 'Vous êtes sur le point de bloquer votre propre compte ! Êtes-vous certain de vouloir faire cela ?',
-'ipb-confirmhideuser' => 'Vous êtes sur le point de bloquer un utilisateur avec « cacher l’utilisateur » activé. Cela supprime le nom de l’utilisateur dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?',
+'ipb-confirmhideuser' => "Vous êtes sur le point de bloquer un utilisateur avec « cacher l'utilisateur » activé. Cela supprime le nom de l'utilisateur dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?",
 'ipb-edit-dropdown' => 'Modifier les motifs de blocage par défaut',
 'ipb-unblock-addr' => 'Débloquer $1',
 'ipb-unblock' => 'Débloquer un compte utilisateur ou une adresse IP',
@@ -2778,9 +2779,9 @@ Le motif fourni pour le blocage de $1 est : « $2 ».',
 'blocklog-showsuppresslog' => 'Cet utilisateur a été bloqué et caché précédemment. Le journal des suppressions est disponible ci-dessous :',
 'blocklogentry' => 'a bloqué [[$1]] ; expiration : $2 $3',
 'reblock-logentry' => 'a modifié les paramètres du blocage de [[$1]] avec une expiration au $2 $3',
-'blocklogtext' => 'Ceci est le journal des actions de blocages et déblocages d’utilisateurs.
+'blocklogtext' => "Ceci est le journal des actions de blocages et déblocages d'utilisateurs.
 Les adresses IP automatiquement bloquées ne sont pas listées.
-Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissements et blocages effectivement en cours.',
+Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissements et blocages effectivement en cours.",
 'unblocklogentry' => 'a débloqué $1',
 'block-log-flags-anononly' => 'utilisateurs anonymes seulement',
 'block-log-flags-nocreate' => 'création de compte interdite',
@@ -3209,6 +3210,7 @@ Permet de rétablir la version précédente et d'ajouter un motif dans la boîte
 'pageinfo-magic-words' => '{{PLURAL:$1|Mot magique|Mots magiques}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Catégorie cachée|Catégories cachées}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Modèle inclu|Modèles inclus}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Page traduite|Pages traduites}} sur ($1)',
 'pageinfo-toolboxlink' => 'Information sur la page',
 'pageinfo-redirectsto' => 'Rediriger vers',
 'pageinfo-redirectsto-info' => 'info',
@@ -3217,6 +3219,10 @@ Permet de rétablir la version précédente et d'ajouter un motif dans la boîte
 'pageinfo-protect-cascading' => "Les protections sont déduites d'ici",
 'pageinfo-protect-cascading-yes' => 'Oui',
 'pageinfo-protect-cascading-from' => 'Les protections sont déduites depuis',
+'pageinfo-category-info' => 'Informations sur la catégorie',
+'pageinfo-category-pages' => 'Nombre de pages',
+'pageinfo-category-subcats' => 'Nombre de sous-catégories',
+'pageinfo-category-files' => 'Nombre de fichiers',
 
 # Skin names
 'skinname-standard' => 'Standard',
@@ -3305,6 +3311,8 @@ Si vous l'exécutez, votre système peut être compromis.",
 'minutes' => '{{PLURAL:$1|$1 minute|$1 minutes}}',
 'hours' => '{{PLURAL:$1|$1 heure|$1 heures}}',
 'days' => '{{PLURAL:$1|$1 jour|$1 jours}}',
+'months' => '{{PLURAL:$1|$1 mois}}',
+'years' => '{{PLURAL:$1|$1 an|$1 ans}}',
 'ago' => 'Il y a $1',
 'just-now' => "à l'instant",
 
@@ -3333,6 +3341,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 * gpslatitude
 * gpslongitude
 * gpsaltitude",
+'metadata-langitem' => "'''$2&nbsp;:''' $1",
 
 # EXIF tags
 'exif-imagewidth' => 'Largeur',
@@ -3805,27 +3814,27 @@ Ce code de confirmation expirera le $4.
 Si le compte ne vous appartient PAS, suivez plutôt ce lien pour annuler la confirmation de l'adresse de courriel :
 
 $5",
-'confirmemail_invalidated' => 'Confirmation de l’adresse courriel annulée',
-'invalidateemail' => 'Annuler la confirmation de l’adresse de courriel',
+'confirmemail_invalidated' => "Confirmation de l'adresse courriel annulée",
+'invalidateemail' => "Annuler la confirmation de l'adresse de courriel",
 
 # Scary transclusion
 'scarytranscludedisabled' => '[La transclusion interwiki est désactivée]',
 'scarytranscludefailed' => '[La récupération de modèle a échoué pour $1]',
 'scarytranscludefailed-httpstatus' => '[Échec de la récupération du modèle pour  $1 : HTTP  $2 ]',
-'scarytranscludetoolong' => '[L’URL est trop longue]',
+'scarytranscludetoolong' => "[L'URL est trop longue]",
 
 # Delete conflict
 'deletedwhileediting' => "'''Attention''' : cette page a été supprimée après que vous avez commencé à la modifier !",
-'confirmrecreate' => "L’utilisateur [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à l’éditer, pour le motif suivant :
+'confirmrecreate' => "L'utilisateur [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à l'éditer, pour le motif suivant :
 : ''$2''
 Veuillez confirmer que vous désirez réellement recréer cette page.",
-'confirmrecreate-noreason' => 'L’utilisateur [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à l’éditer. Veuillez confirmer que vous désirez réellement recréer cette page.',
+'confirmrecreate-noreason' => "L'utilisateur [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à l'éditer. Veuillez confirmer que vous désirez réellement recréer cette page.",
 'recreate' => 'Recréer',
 
 # action=purge
 'confirm_purge_button' => 'Confirmer',
 'confirm-purge-top' => 'Voulez-vous rafraîchir cette page (purger le cache) ?',
-'confirm-purge-bottom' => 'Purger une page l’efface du cache de rendu et force sa dernière version à être régénérée et affichée.',
+'confirm-purge-bottom' => "Purger une page l'efface du cache de rendu et force sa dernière version à être régénérée et affichée.",
 
 # action=watch/unwatch
 'confirm-watch-button' => 'Valider',
@@ -3868,18 +3877,23 @@ Veuillez confirmer que vous désirez réellement recréer cette page.",
 'size-kilobytes' => '$1 Kio',
 'size-megabytes' => '$1 Mio',
 'size-gigabytes' => '$1 Gio',
+'size-terabytes' => '$1 Tio',
+'size-petabytes' => '$1 Pio',
+'size-exabytes' => '$1 Eio',
+'size-zetabytes' => '$1 Zio',
+'size-yottabytes' => '$1 Yio',
 
 # Live preview
 'livepreview-loading' => 'Chargement...',
 'livepreview-ready' => 'Chargement … terminé !',
-'livepreview-failed' => 'L’aperçu rapide a échoué !
-Essayez la prévisualisation normale.',
+'livepreview-failed' => "L'aperçu rapide a échoué !
+Essayez la prévisualisation normale.",
 'livepreview-error' => 'Impossible de se connecter : $1 « $2 ».
 Essayez la prévisualisation normale.',
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Les modifications datant de moins de $1 seconde{{PLURAL:$1||s}} peuvent ne pas apparaître dans cette liste.',
-'lag-warn-high' => 'En raison d’un retard important du serveur de base de données, les modifications datant de moins de $1 seconde{{PLURAL:$1||s}} peuvent ne pas apparaître dans cette liste.',
+'lag-warn-high' => "En raison d'un retard important du serveur de base de données, les modifications datant de moins de $1 seconde{{PLURAL:$1||s}} peuvent ne pas apparaître dans cette liste.",
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Votre liste de suivi contient {{PLURAL:$1|un titre|$1 titres}}, sans compter les pages de discussion.',
@@ -3893,9 +3907,9 @@ Vous pouvez aussi [[Special:EditWatchlist/raw|modifier la liste en mode brut]].'
 'watchlistedit-normal-done' => '{{PLURAL:$1|Un titre a été enlevé|$1 titres ont été enlevés}} de votre liste de suivi :',
 'watchlistedit-raw-title' => 'Modifier la liste de suivi en mode brut',
 'watchlistedit-raw-legend' => 'Modification de la liste de suivi en mode brut',
-'watchlistedit-raw-explain' => 'Les titres de votre liste de suivi sont affichés ci-dessous et peuvent être modifiés en les ajoutant ou les retirant de la liste (un titre par ligne).
+'watchlistedit-raw-explain' => "Les titres de votre liste de suivi sont affichés ci-dessous et peuvent être modifiés en les ajoutant ou les retirant de la liste (un titre par ligne).
 Lorsque vous avez fini, cliquez sur le bouton « {{int:Watchlistedit-raw-submit}} » en bas.
-Vous pouvez aussi [[Special:EditWatchlist|utiliser l’éditeur normal]].',
+Vous pouvez aussi [[Special:EditWatchlist|utiliser l'éditeur normal]].",
 'watchlistedit-raw-titles' => 'Titres :',
 'watchlistedit-raw-submit' => 'Mettre à jour la liste de suivi',
 'watchlistedit-raw-done' => 'Votre liste de suivi a été mise à jour.',
@@ -3965,23 +3979,23 @@ Vous pouvez aussi [[Special:EditWatchlist|utiliser l’éditeur normal]].',
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussion]])',
 
 # Core parser functions
-'unknown_extension_tag' => 'Balise d’extension « $1 » inconnue',
+'unknown_extension_tag' => "Balise d'extension « $1 » inconnue",
 'duplicate-defaultsort' => 'Attention : la clé de tri par défaut « $2 » écrase la précédente « $1 ».',
 
 # Special:Version
 'version' => 'Version',
 'version-extensions' => 'Extensions installées',
 'version-specialpages' => 'Pages spéciales',
-'version-parserhooks' => 'Greffons de l’analyseur syntaxique',
+'version-parserhooks' => "Greffons de l'analyseur syntaxique",
 'version-variables' => 'Variables',
 'version-antispam' => 'Prévention du spam',
 'version-skins' => 'Habillages',
 'version-other' => 'Divers',
 'version-mediahandlers' => 'Manipulateurs de médias',
 'version-hooks' => 'Greffons',
-'version-extension-functions' => 'Fonctions d’extension internes',
-'version-parser-extensiontags' => 'Balises étendues de l’analyseur syntaxique',
-'version-parser-function-hooks' => 'Fonctions étendues de l’analyseur syntaxique',
+'version-extension-functions' => "Fonctions d'extension internes",
+'version-parser-extensiontags' => "Balises étendues de l'analyseur syntaxique",
+'version-parser-function-hooks' => "Fonctions étendues de l'analyseur syntaxique",
 'version-hook-name' => 'Nom du greffon',
 'version-hook-subscribedby' => 'Abonnés :',
 'version-version' => '(version $1)',
@@ -3989,37 +4003,37 @@ Vous pouvez aussi [[Special:EditWatchlist|utiliser l’éditeur normal]].',
 'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'autres',
 'version-credits-summary' => 'Nous tenons à remercier les personnes suivantes pour leur contribution à  [[Special:Version|MediaWiki]].',
-'version-license-info' => 'MediaWiki est un logiciel libre, vous pouvez le redistribuer ou le modifier selon les termes de la Licence Publique Générale GNU telle que publiée par la Free Software Foundation ; soit la version 2 de la Licence, ou (à votre choix) toute version ultérieure.
+'version-license-info' => "MediaWiki est un logiciel libre, vous pouvez le redistribuer ou le modifier selon les termes de la Licence Publique Générale GNU telle que publiée par la Free Software Foundation ; soit la version 2 de la Licence, ou (à votre choix) toute version ultérieure.
 
-MediaWiki est distribué dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D’ADAPTATION À UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détails.
+MediaWiki est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détails.
 
-Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licence Publique Générale GNU] avec ce programme, sinon, écrivez à la Free Software Foundation, Inc., 51, rue Franklin, cinquième étage, Boston, MA 02110-1301, États-Unis ou [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lisez-la en ligne].',
+Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licence Publique Générale GNU] avec ce programme, sinon, écrivez à la Free Software Foundation, Inc., 51, rue Franklin, cinquième étage, Boston, MA 02110-1301, États-Unis ou [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lisez-la en ligne].",
 'version-software' => 'Logiciels installés',
 'version-software-product' => 'Produit',
 'version-software-version' => 'Version',
-'version-entrypoints' => 'URL des points d’entrée',
-'version-entrypoints-header-entrypoint' => 'Point d’entrée',
+'version-entrypoints' => "URL des points d'entrée",
+'version-entrypoints-header-entrypoint' => "Point d'entrée",
 'version-entrypoints-header-url' => 'URL',
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Chemin d’article]',
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Chemin de script]',
 
 # Special:FilePath
-'filepath' => 'Chemin d’accès du fichier',
+'filepath' => "Chemin d'accès du fichier",
 'filepath-page' => 'Fichier :',
 'filepath-submit' => 'Aller',
-'filepath-summary' => 'Cette page spéciale retourne le chemin d’accès complet d’un fichier.
-Les images sont montrées dans leur pleine résolution, les autres fichiers sont chargés et démarrés directement avec leur programme associé.',
+'filepath-summary' => "Cette page spéciale retourne le chemin d'accès complet d'un fichier.
+Les images sont montrées dans leur pleine résolution, les autres fichiers sont chargés et démarrés directement avec leur programme associé.",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Recherche de doublons',
-'fileduplicatesearch-summary' => 'Recherche des copies de fichiers identiques d’après leur empreinte de hachage.',
+'fileduplicatesearch-summary' => "Recherche des copies de fichiers identiques d'après leur empreinte de hachage.",
 'fileduplicatesearch-legend' => 'Rechercher un doublon',
 'fileduplicatesearch-filename' => 'Nom du fichier :',
 'fileduplicatesearch-submit' => 'Rechercher',
 'fileduplicatesearch-info' => '$1 × $2 pixels<br />Taille du fichier : $3<br />Type MIME : $4',
-'fileduplicatesearch-result-1' => 'Le fichier « $1 » n’a aucun doublon.',
+'fileduplicatesearch-result-1' => "Le fichier « $1 » n'a aucun doublon.",
 'fileduplicatesearch-result-n' => 'Le fichier « $1 » a {{PLURAL:$2|1 doublon|$2 doublons}}.',
-'fileduplicatesearch-noresults' => 'Aucun fichier nommé « $1 » n’a été trouvé.',
+'fileduplicatesearch-noresults' => "Aucun fichier nommé « $1 » n'a été trouvé.",
 
 # Special:SpecialPages
 'specialpages' => 'Pages spéciales',
@@ -4033,7 +4047,7 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 'specialpages-group-changes' => 'Modifications récentes et journaux',
 'specialpages-group-media' => 'Rapports et import de fichiers médias',
 'specialpages-group-users' => 'Utilisateurs et droits rattachés',
-'specialpages-group-highuse' => 'Pages d’utilisation intensive',
+'specialpages-group-highuse' => "Pages d'utilisation intensive",
 'specialpages-group-pages' => 'Listes de pages',
 'specialpages-group-pagetools' => 'Outils pour les pages',
 'specialpages-group-wiki' => 'Données du wiki et outils',
@@ -4045,14 +4059,14 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 'intentionallyblankpage' => 'Cette page est laissée intentionellement vide.',
 
 # External image whitelist
-'external_image_whitelist' => ' #Laisser cette ligne exactement telle quelle.<pre>
-#Indiquer les fragments dexpressions rationnelles (juste la partie indiquée entre les //) ci-dessous.
+'external_image_whitelist' => " #Laisser cette ligne exactement telle quelle.<pre>
+#Indiquer les fragments d'expressions rationnelles (juste la partie indiquée entre les //) ci-dessous.
 #Ils correspondront avec les URL des images externes.
-#Celles qui correspondent s’afficheront comme des images, sinon seul un lien vers l’image sera affiché.
+#Celles qui correspondent s'afficheront comme des images, sinon seul un lien vers l'image sera affiché.
 #Les lignes commençant par un # seront considérées comme des commentaires.
-#Cette liste nest pas sensible à la casse.
+#Cette liste n'est pas sensible à la casse.
 
-#Mettez tous les fragments d’expressions rationnelles au-dessus de cette ligne. Laissez cette dernière ligne telle quelle.</pre>',
+#Mettez tous les fragments d'expressions rationnelles au-dessus de cette ligne. Laissez cette dernière ligne telle quelle.</pre>",
 
 # Special:Tags
 'tags' => 'Balises des modifications valides',
@@ -4082,7 +4096,7 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 # Database error messages
 'dberr-header' => 'Ce wiki a un problème',
 'dberr-problems' => 'Désolé ! Ce site rencontre des difficultés techniques.',
-'dberr-again' => 'Essayez d’attendre quelques minutes et rechargez.',
+'dberr-again' => "Essayez d'attendre quelques minutes et rechargez.",
 'dberr-info' => '(Connexion au serveur de base de données impossible : $1)',
 'dberr-usegoogle' => 'Vous pouvez essayer de chercher avec Google pendant ce temps.',
 'dberr-outofdate' => 'Notez que leurs index de notre contenu peuvent être dépassés.',
@@ -4090,9 +4104,9 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 
 # HTML forms
 'htmlform-invalid-input' => 'Des problèmes sont survenus avec certaines valeurs',
-'htmlform-select-badoption' => 'La valeur que vous avez spécifiée n’est pas une option valide.',
-'htmlform-int-invalid' => 'La valeur que vous avec spécifiée n’est pas un entier.',
-'htmlform-float-invalid' => 'La valeur que vous avez spécifiée n’est pas un nombre.',
+'htmlform-select-badoption' => "La valeur que vous avez spécifiée n'est pas une option valide.",
+'htmlform-int-invalid' => "La valeur que vous avec spécifiée n'est pas un entier.",
+'htmlform-float-invalid' => "La valeur que vous avez spécifiée n'est pas un nombre.",
 'htmlform-int-toolow' => 'La valeur que vous avez spécifiée est plus petite que le minimum de $1',
 'htmlform-int-toohigh' => 'La valeur que vous avez spécifiée est plus grande que le maximum de $1',
 'htmlform-required' => 'Cette valeur est requise',
@@ -4135,10 +4149,14 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 'logentry-newusers-create2' => 'Le compte utilisateur $3 a été créé par $1',
 'logentry-newusers-autocreate' => 'Le compte $1 a été créé automatiquement',
 'newuserlog-byemail' => 'mot de passe envoyé par courriel',
+'logentry-rights-rights' => "$1 a modifié l'appartenance au groupe pour $3 de $4 à $5",
+'logentry-rights-rights-legacy' => "$1 a modifié l'appartenance au groupe pour $3",
+'logentry-rights-autopromote' => '$1 a été promu automatiquement de $4 à $5',
+'rightsnone' => '(aucun)',
 
 # Feedback
-'feedback-bugornote' => 'Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].
-Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d’utilisateur et le navigateur que vous utilisez.',
+'feedback-bugornote' => "Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].
+Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d'utilisateur et le navigateur que vous utilisez.",
 'feedback-subject' => 'Objet :',
 'feedback-message' => 'Message :',
 'feedback-cancel' => 'Annuler',
@@ -4149,7 +4167,7 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'feedback-error3' => "Erreur : aucune réponse de l'API",
 'feedback-thanks' => 'Merci ! Votre commentaire a été publié sur la page "[$2 $1]".',
 'feedback-close' => 'Fait',
-'feedback-bugcheck' => 'Formidable ! Vérifiez simplement que ce n’est pas un des [$1 bogues déjà connus].',
+'feedback-bugcheck' => "Formidable ! Vérifiez simplement que ce n'est pas un des [$1 bogues déjà connus].",
 'feedback-bugnew' => "J'ai vérifié. Signaler un nouveau bogue",
 
 # Search suggestions
@@ -4157,39 +4175,39 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'searchsuggest-containing' => 'contenant...',
 
 # API errors
-'api-error-badaccess-groups' => 'Vous n’êtes pas autorisé à verser des fichiers sur ce wiki.',
+'api-error-badaccess-groups' => "Vous n'êtes pas autorisé à verser des fichiers sur ce wiki.",
 'api-error-badtoken' => 'Erreur interne : mauvais « jeton ».',
 'api-error-copyuploaddisabled' => 'Les versements via URL sont désactivés sur ce serveur.',
-'api-error-duplicate' => 'Il y a déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d’autres fichiers présents]}} sur le site avec le même contenu.',
-'api-error-duplicate-archive' => 'Il y avait déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d’autres fichiers présents]}} sur le site avec le même contenu, mais {{PLURAL:$1|il a été supprimé|ils ont été supprimés}}.',
+'api-error-duplicate' => "Il y a déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d'autres fichiers présents]}} sur le site avec le même contenu.",
+'api-error-duplicate-archive' => "Il y avait déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d'autres fichiers présents]}} sur le site avec le même contenu, mais {{PLURAL:$1|il a été supprimé|ils ont été supprimés}}.",
 'api-error-duplicate-archive-popup-title' => 'Dupliquer {{PLURAL:$1|le fichier|les fichiers}} qui {{PLURAL:$1|a déjà été supprimé|ont déjà été supprimés}}',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|fichier|fichiers}} en double',
 '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-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.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|n’est pas un type de fichier autorisé|ne sont pas des types de fichiers autorisés}}. {{PLURAL:$3|Le type de fichier autorisé est |Les types de fichiers autorisés sont}} $2.',
-'api-error-filetype-missing' => 'L’extension du fichier est manquante.',
+'api-error-filetype-banned-type' => "$1 {{PLURAL:$4|n'est pas un type de fichier autorisé|ne sont pas des types de fichiers autorisés}}. {{PLURAL:$3|Le type de fichier autorisé est |Les types de fichiers autorisés sont}} $2.",
+'api-error-filetype-missing' => "L'extension du fichier est manquante.",
 'api-error-hookaborted' => 'La modification que vous avez essayé de faire a été annulée par une extension.',
 'api-error-http' => 'Erreur interne : ne peut se connecter au serveur.',
-'api-error-illegal-filename' => 'Le nom du fichier n’est pas autorisé.',
-'api-error-internal-error' => 'Erreur interne : Quelque chose s’est mal passé lors du traitement de votre import sur le wiki.',
+'api-error-illegal-filename' => "Le nom du fichier n'est pas autorisé.",
+'api-error-internal-error' => "Erreur interne : Quelque chose s'est mal passé lors du traitement de votre import sur le wiki.",
 'api-error-invalid-file-key' => 'Erreur interne : aucun fichier trouvé dans le stockage temporaire.',
 'api-error-missingparam' => 'Erreur interne : Il manque des paramètres dans la requête.',
-'api-error-missingresult' => 'Erreur interne : Nous n’avons pas pu déterminer si la copie avait réussi.',
+'api-error-missingresult' => "Erreur interne : Nous n'avons pas pu déterminer si la copie avait réussi.",
 'api-error-mustbeloggedin' => 'Vous devez être connecté pour télécharger des fichiers.',
 'api-error-mustbeposted' => 'Erreur interne : cette requête nécessite la méthode HTTP POST.',
-'api-error-noimageinfo' => 'Le téléversement a réussi, mais le serveur n’a pas donné d’informations sur le fichier.',
+'api-error-noimageinfo' => "Le téléversement a réussi, mais le serveur n'a pas donné d'informations sur le fichier.",
 'api-error-nomodule' => 'Erreur interne : aucun module de versement défini.',
-'api-error-ok-but-empty' => 'Erreur interne : Le serveur n’a pas répondu.',
-'api-error-overwrite' => 'Écraser un fichier existant n’est pas autorisé.',
-'api-error-stashfailed' => 'Erreur interne : le serveur n’a pas pu enregistrer le fichier temporaire.',
-'api-error-timeout' => 'Le serveur n’a pas répondu dans le délai imparti.',
-'api-error-unclassified' => 'Une erreur inconnue s’est produite',
+'api-error-ok-but-empty' => "Erreur interne : Le serveur n'a pas répondu.",
+'api-error-overwrite' => "Écraser un fichier existant n'est pas autorisé.",
+'api-error-stashfailed' => "Erreur interne : le serveur n'a pas pu enregistrer le fichier temporaire.",
+'api-error-timeout' => "Le serveur n'a pas répondu dans le délai imparti.",
+'api-error-unclassified' => "Une erreur inconnue s'est produite",
 'api-error-unknown-code' => 'Erreur inconnue : « $1 »',
 'api-error-unknown-error' => 'Erreur interne : Quelque chose a mal tourné lors du versement de votre fichier.',
 'api-error-unknown-warning' => 'Avertissement inconnu : $1',
index 1237741..787105d 100644 (file)
@@ -328,8 +328,8 @@ $messages = array(
 'tog-watchmoves' => 'Apondre les pâges et los fichiérs que renomo a ma lista de siuvu',
 'tog-watchdeletion' => 'Apondre les pâges et los fichiérs que suprimo a ma lista de siuvu',
 'tog-minordefault' => 'Marcar per dèfôt tôs los changements coment petiôts',
-'tog-previewontop' => 'Montrar la prèvisualisacion d’amont la zona de changement',
-'tog-previewonfirst' => 'Montrar la prèvisualisacion pendent lo premiér changement',
+'tog-previewontop' => 'Montrar l’apèrçu d’amont la zona de changement',
+'tog-previewonfirst' => 'Montrar l’apèrçu pendent lo premiér changement',
 'tog-nocache' => 'Dèsactivar lo cacho de les pâges per lo navigator',
 'tog-enotifwatchlistpages' => 'Mè mandar un mèssâjo quand na pâge ou ben un fichiér de ma lista de siuvu est changiê(e)',
 'tog-enotifusertalkpages' => 'Mè mandar un mèssâjo quand ma pâge de discussion est changiêe',
@@ -350,10 +350,10 @@ $messages = array(
 'tog-watchlisthideanons' => 'Cachiér los changements fêts per des utilisators anonimos dedens la lista de siuvu',
 'tog-watchlisthidepatrolled' => 'Cachiér los changements gouardâs dedens la lista de siuvu',
 'tog-ccmeonemails' => 'Mè mandar na copia des mèssâjos que mando ux ôtros utilisators',
-'tog-diffonly' => 'Pas montrar lo contegnu de les pâges desot los difs',
+'tog-diffonly' => 'Pas montrar lo contegnu de les pâges desot les difs',
 'tog-showhiddencats' => 'Montrar les catègories cachiêes',
 'tog-noconvertlink' => 'Dèsactivar la convèrsion des titros des lims',
-'tog-norollbackdiff' => 'Pas fâre vêre lo dif pendent na rèvocacion',
+'tog-norollbackdiff' => 'Pas fâre vêre la dif pendent na rèvocacion',
 
 'underline-always' => 'Tojorn',
 'underline-never' => 'Jamés',
@@ -442,6 +442,7 @@ $messages = array(
 'newwindow' => '(ôvre na fenétra novèla)',
 'cancel' => 'Anular',
 'moredotdotdot' => 'Més...',
+'morenotlisted' => 'Més pas listâ...',
 'mypage' => 'Pâge',
 'mytalk' => 'Discussion',
 'anontalk' => 'Discussion avouéc cet’adrèce IP',
@@ -512,7 +513,7 @@ $messages = array(
 'postcomment' => 'Novèla sèccion',
 'articlepage' => 'Vêde la pâge de contegnu',
 'talk' => 'Discussion',
-'views' => 'Visualisacions',
+'views' => 'Vues',
 'toolbox' => 'Bouèta d’outils',
 'userpage' => 'Vêde la pâge utilisator',
 'projectpage' => 'Vêde la pâge projèt',
@@ -561,8 +562,8 @@ $1',
 'privacypage' => 'Project:Politica de confidencialitât',
 
 'badaccess' => 'Fôta de pèrmission',
-'badaccess-group0' => 'Vos avéd pas los drêts sufisents por rèalisar l’accion demandâye.',
-'badaccess-groups' => 'L’accion que vos tâchiéd de rèalisar est accèssibla ren qu’ux utilisators de {{PLURAL:$2|la tropa|les tropes}} : $1.',
+'badaccess-group0' => 'Vos éte pas ôtorisâ a fâre l’accion demandâye.',
+'badaccess-groups' => 'L’accion demandâye est limitâye ux utilisators de {{PLURAL:$2|la tropa|yona de les tropes}} : $1.',
 
 'versionrequired' => 'Vèrsion $1 de MediaWiki nècèssèra',
 'versionrequiredtext' => 'La vèrsion $1 de MediaWiki est nècèssèra por empleyér ceta pâge.
@@ -593,7 +594,7 @@ Vêde la [[Special:Version|pâge de les vèrsions]].',
 'viewdeleted' => 'Vêre $1 ?',
 'restorelink' => '{{PLURAL:$1|yon changement suprimâ|$1 changements suprimâs}}',
 'feedlinks' => 'Flux :',
-'feed-invalid' => 'Tipo d’abonement du flux envalido.',
+'feed-invalid' => 'Tipo d’abonement du flux pas justo.',
 'feed-unavailable' => 'Los flux de sindicacion sont pas disponiblos',
 'site-rss-feed' => 'Flux RSS de $1',
 'site-atom-feed' => 'Flux Atom de $1',
@@ -617,13 +618,13 @@ Vêde la [[Special:Version|pâge de les vèrsions]].',
 
 # Main script and global functions
 'nosuchaction' => 'Accion encognua',
-'nosuchactiontext' => 'L’accion spècifiâye dens l’URL est envalida.
+'nosuchactiontext' => 'L’accion spècifiâye dens l’URL est pas justa.
 Pôt-étre vos éd mâl-buchiê l’URL ou ben siuvu un lim fôx.
 Pôt asse-ben étre quèstion d’una cofierie dedens la programeria empleyêe per {{SITENAME}}.',
 'nosuchspecialpage' => 'Pâge spèciâla pas ègzistenta',
 'nospecialpagetext' => '<strong>Vos éd demandâ na pâge spèciâla qu’ègziste pas.</strong>
 
-Na lista de les pâges spèciâles valides sè trove dessus [[Special:SpecialPages|{{int:specialpages}}]].',
+Na lista de les pâges spèciâles justes sè trôve dessus [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Fôta',
@@ -647,7 +648,7 @@ La bâsa de donâs at retornâ la fôta « $3 : $4 ».',
 L’administrator que l’at vèrrolyê at balyê cet’èxplicacion : $1',
 'missing-article' => 'La bâsa de donâs at pas trovâ lo tèxto d’una pâge qu’el arêt diu trovar, apelâye « $1 » $2.
 
-En g·ènèral cen arreve en siuvent un lim d’un dif ou ben d’un historico dèpassâ de vers na pâge qu’est étâye suprimâye.
+En g·ènèral cen arreve en siuvent un lim d’una dif ou ben d’un historico dèpassâ(ye) de vers na pâge qu’est étâye suprimâye.
 
 S’o est pas lo câs, pôt étre quèstion d’una cofierie dedens la programeria.
 La volyéd signalar a un [[Special:ListUsers/sysop|administrator]] sen oubliar de lui endicar l’URL du lim.',
@@ -670,10 +671,10 @@ La volyéd signalar a un [[Special:ListUsers/sysop|administrator]] sen oubliar d
 'cannotdelete' => 'Empossiblo de suprimar la pâge ou ben lo fichiér « $1 ».
 Pôt-étre la suprèssion est ja étâye fêta per quârqu’un d’ôtro.',
 'cannotdelete-title' => 'Empossiblo de suprimar la pâge « $1 »',
-'delete-hook-aborted' => 'Suprèssion anulâye per n’èxtension.
-Nionèxplicacion est étâye balyêe.',
+'delete-hook-aborted' => 'Suprèssion anulâye per un grèfon.
+Nionèxplicacion est étâye balyêe.',
 'badtitle' => 'Crouyo titro',
-'badtitletext' => 'Lo titro de la pâge demandâye est envalido, vouedo ou ben o est un titro entèrlengoua ou entèrvouiqui mâl-liyê.
+'badtitletext' => 'Lo titro de la pâge demandâye est pas justo, vouedo ou ben o est un titro entèrlengoua ou entèrvouiqui mâl-liyê.
 Contint sûrament yon ou ben un mouél de caractèros que pôvont pas étre empleyês dedens los titros.',
 'perfcached' => 'Cetes donâs sont en cacho et pôvont pas étre a jorn. Por lo més {{PLURAL:$1|yon rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
 'perfcachedts' => 'Cetes donâs sont en cacho et sont étâyes betâyes a jorn por lo dèrriér côp a $1. Por lo més {{PLURAL:$1|yon rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
@@ -707,8 +708,8 @@ La rêson balyêe est « ''$2'' ».",
 'filereadonlyerror' => 'Empossiblo de changiér lo fichiér « $1 » perce que lo dèpôt de fichiérs « $2 » est en lèctura solèta.
 
 L’administrator que l’at vèrrolyê at balyê cet’èxplicacion : « $3 ».',
-'invalidtitle-knownnamespace' => 'Titro envalido avouéc l’èspâço de noms « $2 » et lo tèxto « $3 »',
-'invalidtitle-unknownnamespace' => 'Titro envalido avouéc lo numerô d’èspâço de noms encognu $1 et lo tèxto « $2 »',
+'invalidtitle-knownnamespace' => 'Titro pas justo avouéc l’èspâço de noms « $2 » et lo tèxto « $3 »',
+'invalidtitle-unknownnamespace' => 'Titro pas justo avouéc lo numerô d’èspâço de noms encognu $1 et lo tèxto « $2 »',
 'exception-nologin' => 'Pas branchiê',
 'exception-nologin-text' => 'Cela pâge ou ben cel’accion at fôta d’étre branchiê sur ceti vouiqui.',
 
@@ -761,7 +762,7 @@ Los volyéd activar et pués vos tornar branchiér avouéc lo mémo nom et lo m
 Los volyéd activar et pués tornar èprovar.",
 'nocookiesfornew' => "Lo compto utilisator est pas étâ fêt, perce que nos ens pas possu confirmar la sina sôrsa.
 Controlâd que vos éd activâ los tèmouens (''cookies''), rechargiéd la pâge et pués tornâd èprovar.",
-'noname' => 'Vos éd pas spècifiâ un nom d’utilisator valido.',
+'noname' => 'Vos éd pas spècifiâ un nom d’utilisator justo.',
 'loginsuccesstitle' => 'Branchement reussi',
 'loginsuccess' => "'''Ora vos éte branchiê{{GENDER:||e|(e)}} a {{SITENAME}} por « $1 ».'''",
 'nosuchuser' => 'L’utilisator « $1 » ègziste pas.
@@ -771,7 +772,7 @@ Controlâd l’ortografia ou ben [[Special:UserLogin/signup|féte un compto nov
 Volyéd controlar l’ortografia.',
 'nouserspecified' => 'Vos dête spècifiar un nom d’utilisator.',
 'login-userblocked' => 'Cet’utilisator est blocâ. Branchement pas ôtorisâ.',
-'wrongpassword' => 'Lo contresegno est fôx.
+'wrongpassword' => 'Lo contresegno buchiê est fôx.
 Volyéd tornar èprovar.',
 'wrongpasswordempty' => 'Vos éd pas buchiê de contresegno.
 Volyéd tornar èprovar.',
@@ -789,15 +790,15 @@ Voutron contresegno temporèro èxpirerat dens {{PLURAL:$5|yon jorn|$5 jorns}}.
 Se cela demanda vint pas de vos ou ben que vos vos éte rapelâ
 de voutron contresegno et que vos souhètâd pas més lo changiér, vos
 pouede ignorar ceti mèssâjo et continuar a empleyér voutron viely contresegno.',
-'noemail' => 'Nionadrèce èlèctronica est étâye encartâye por l’utilisator « $1 ».',
-'noemailcreate' => 'Vos dête balyér n’adrèce èlèctronica valida',
+'noemail' => 'Nionadrèce èlèctronica est étâye encartâye por l’utilisator « $1 ».',
+'noemailcreate' => 'Vos dête balyér n’adrèce èlèctronica justa',
 'passwordsent' => 'Un contresegno novél est étâ mandâ a l’adrèce èlèctronica de l’utilisator « $1 ».
 Vos volyéd tornar branchiér aprés l’avêr reçu.',
 'blocked-mailpassword' => 'Voutron adrèce IP est blocâye en ècritura, la fonccion de sovegnence du contresegno est vêr dèsactivâye por èvitar los abus.',
 'eauthentsent' => 'Un mèssâjo de confirmacion est étâ mandâ a l’adrèce èlèctronica endicâye.
 Devant qu’un ôtro mèssâjo seye mandâ a ceti compto, vos devréd siuvre les enstruccions du mèssâjo et pués confirmar que lo compto est franc lo voutro.',
 'throttled-mailpassword' => 'Un mèssâjo de sovegnence de voutron contresegno est ja étâ mandâ pendent {{PLURAL:$1|l’hora passâye|les $1 hores passâyes}}.
-Por èvitar los abus, solament yon mèssâjo de sovegnence serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.',
+Por èvitar los abus, ren que yon mèssâjo de sovegnence serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.',
 'mailerror' => 'Fôta pendent l’èxpèdicion du mèssâjo : $1',
 'acct_creation_throttle_hit' => 'Quârqu’un qu’emplèye voutron adrèce IP at fêt {{PLURAL:$1|yon compto|$1 comptos}} pendent les 24 hores passâyes, cen qu’est la limita ôtorisâye dens ceti temps.
 Du côp la crèacion de compto est étâye dèsactivâye temporèrament por cel’adrèce IP.',
@@ -806,7 +807,7 @@ Du côp la crèacion de compto est étâye dèsactivâye temporèrament por cel
 Nion mèssâjo serat mandâ por châcuna de cetes fonccionalitâts.',
 'noemailprefs' => 'Spècifiâd n’adrèce èlèctronica dens voutres prèferences por empleyér cetes fonccionalitâts.',
 'emailconfirmlink' => 'Confirmâd voutron adrèce èlèctronica',
-'invalidemailaddress' => 'Cet’adrèce èlèctronica pôt pas étre accèptâye perce que semble avêr un format envalido.
+'invalidemailaddress' => 'Cet’adrèce èlèctronica pôt pas étre accèptâye perce que semble avêr un format pas justo.
 Volyéd buchiér n’adrèce bien formatâye ou ben lèssiér cél champ vouedo.',
 'cannotchangeemail' => 'Les adrèces èlèctroniques des comptos pôvont pas étre changiêes sur ceti vouiqui.',
 'emaildisabled' => 'Ceti seto pôt pas mandar des mèssâjos.',
@@ -818,7 +819,7 @@ Vos vos devriâd branchiér et pués changiér dês ora voutron contresegno.
 
 Ignorâd ceti mèssâjo se cél compto est étâ fêt per fôta.',
 'usernamehasherror' => 'Lo nom d’utilisator pôt pas contegnir des caractèros de chaplâjo',
-'login-throttled' => 'Dês pou vos éd èprovâ un trop grant nombro de branchements.
+'login-throttled' => 'Dês pou vos éd èprovâ un mouél de branchements.
 Volyéd atendre devant que tornar èprovar.',
 'login-abort-generic' => 'Voutra tentativa de branchement at pas reussi - Anulâye',
 'loginlanguagelabel' => 'Lengoua : $1',
@@ -827,6 +828,7 @@ Volyéd atendre devant que tornar èprovar.',
 # E-mail sending
 'php-mail-error-unknown' => 'Fôta encognua dens la fonccion mail() de PHP.',
 'user-mail-no-addy' => 'At tâchiê de mandar un mèssâjo sen adrèce èlèctronica.',
+'user-mail-no-body' => 'At tâchiê de mandar un mèssâjo avouéc un côrp vouedo ou ben dèrêsonâblament côrt.',
 
 # Change password dialog
 'resetpass' => 'Changiér lo contresegno',
@@ -844,14 +846,14 @@ Branchement en cors...',
 'resetpass-no-info' => 'Vos dête étre branchiê por arrevar tot drêt a cela pâge.',
 'resetpass-submit-loggedin' => 'Changiér lo contresegno',
 'resetpass-submit-cancel' => 'Anular',
-'resetpass-wrong-oldpass' => 'Contresegno temporèro ou ben d’ora envalido.
+'resetpass-wrong-oldpass' => 'Contresegno temporèro ou ben d’ora pas justo.
 Pôt-étre vos éd ja changiê voutron contresegno avouéc reusséta ou ben demandâ un contresegno temporèro novél.',
 'resetpass-temp-password' => 'Contresegno temporèro :',
 
 # Special:PasswordReset
 'passwordreset' => 'Remisa a zérô du contresegno',
 'passwordreset-text' => 'Rempléd ceti formulèro por recêvre un mèssâjo de sovegnence des dètalys de voutron compto.',
-'passwordreset-legend' => 'Tornar inicialisar lo contresegno',
+'passwordreset-legend' => 'Remetre a zérô lo contresegno',
 'passwordreset-disabled' => 'La remisa a zérô des contresegnos est étâye dèsactivâye sur ceti vouiqui.',
 'passwordreset-pretext' => '{{PLURAL:$1||Buchiéd yona de les piéces de donâs ce-desot}}',
 'passwordreset-username' => 'Nom d’utilisator :',
@@ -892,7 +894,7 @@ Contresegno temporèro : $2',
 'changeemail-text' => 'Rempléd ceti formulèro por changiér voutron adrèce èlèctronica. Vos devréd buchiér voutron contresegno por confirmar cél changement.',
 'changeemail-no-info' => 'Vos dête étre branchiê por arrevar tot drêt a cela pâge.',
 'changeemail-oldemail' => 'Adrèce èlèctronica d’ora :',
-'changeemail-newemail' => 'Novèladrèce èlèctronica :',
+'changeemail-newemail' => 'Novèladrèce èlèctronica :',
 'changeemail-none' => '(niona)',
 'changeemail-password' => 'Voutron contresegno dessus {{SITENAME}} :',
 'changeemail-submit' => 'Changiér l’adrèce èlèctronica',
@@ -924,9 +926,9 @@ Contresegno temporèro : $2',
 'minoredit' => 'O est un petiôt changement',
 'watchthis' => 'Siuvre ceta pâge',
 'savearticle' => 'Encartar la pâge',
-'preview' => 'Prèvisualisacion',
-'showpreview' => 'Montrar na prèvisualisacion',
-'showlivepreview' => 'Apèrçu rapido',
+'preview' => 'Apèrçu',
+'showpreview' => 'Montrar un apèrçu',
+'showlivepreview' => 'Apèrçu drêt',
 'showdiff' => 'Montrar los changements',
 'anoneditwarning' => "'''Atencion :''' vos éte pas branchiê(e).
 Voutron adrèce IP serat encartâye dedens l’historico des changements de ceta pâge.",
@@ -949,9 +951,9 @@ La rêson balyêe est ''$2''.
 * Compto blocâ : $7
 
 Vos vos pouede veriér vers $1 ou ben un ôtr’[[{{MediaWiki:Grouppage-sysop}}|administrator]] por nen discutar.
-Vos pouede pas empleyér la fonccionalitât « Lui mandar un mèssâjo » a muens qu’un’adrèce èlèctronica valida est spècifiâye dens voutres [[Special:Preferences|prèferences]] et que vos éte pas étâ blocâ de l’empleyér.
+Vos pouede pas empleyér la fonccionalitât « Lui mandar un mèssâjo » a muens qu’un’adrèce èlèctronica justa est spècifiâye dens voutres [[Special:Preferences|prèferences]] et que vos éte pas étâ blocâ de l’empleyér.
 Voutron adrèce IP d’ora est $3, et l’identifient de blocâjo est $5.
-Volyéd entrebetar tôs los dètalys ce-dessus dedens sé-quinta demanda que vos faréd.",
+Volyéd entrebetar tôs los dètalys ce-dessus dedens na sé-quinta demanda que vos faréd.",
 'autoblockedtext' => "Voutron adrèce IP est étâye blocâye ôtomaticament perce qu’el est étâye empleyêe per un ôtr’utilisator, lui-mémo blocâ per $1.
 La rêson balyêe est :
 
@@ -963,10 +965,10 @@ La rêson balyêe est :
 
 Vos vos pouede veriér vers $1 ou ben yon des ôtros [[{{MediaWiki:Grouppage-sysop}}|administrators]] por nen discutar.
 
-Notâd que vos porréd pas empleyér la fonccionalitât « Lui mandar un mèssâjo » a muens que vos avéd n’adrèce èlèctronica valida encartâye dens voutres [[Special:Preferences|prèferences]] et que vos éte pas étâ blocâ de l’empleyér.
+Notâd que vos porréd pas empleyér la fonccionalitât « Lui mandar un mèssâjo » a muens que vos avéd n’adrèce èlèctronica justa encartâye dens voutres [[Special:Preferences|prèferences]] et que vos éte pas étâ blocâ de l’empleyér.
 
 Voutron adrèce IP d’ora est $3, et l’identifient de blocâjo est $5.
-Volyéd entrebetar tôs los dètalys ce-dessus dedens sé-quinta demanda que vos faréd.",
+Volyéd entrebetar tôs los dètalys ce-dessus dedens na sé-quinta demanda que vos faréd.",
 'blockednoreason' => 'niona rêson balyêe',
 'whitelistedittext' => 'Vos vos dête $1 por povêr changiér les pâges.',
 'confirmedittext' => 'Vos dête confirmar voutron adrèce èlèctronica devant que changiér les pâges.
@@ -1011,28 +1013,28 @@ La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
 * '''Opera :''' èfaciéd lo cacho dedens ''Outils → Prèferences''",
 'usercssyoucanpreview' => "'''Combina :''' empleyéd lo boton « {{int:showpreview}} » por èprovar voutra fôlye CSS novèla devant que l’encartar.",
 'userjsyoucanpreview' => "'''Combina :''' empleyéd lo boton « {{int:showpreview}} » por èprovar voutra fôlye JS novèla devant que l’encartar.",
-'usercsspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvisualisar voutra prôpra fôlye CSS.'''
+'usercsspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvêre voutra prôpra fôlye CSS.'''
 '''El est p’oncor étâye encartâye !'''",
-'userjspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés èprovar / prèvisualisar voutron code JavaScript.'''
+'userjspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés èprovar / prèvêre voutron code JavaScript.'''
 '''Il est p’oncor étâ encartâ !'''",
-'sitecsspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvisualisar cela fôlye CSS.'''
+'sitecsspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvêre cela fôlye CSS.'''
 '''El est p’oncor étâye encartâye !'''",
-'sitejspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvisualisar cél code JavaScript.'''
+'sitejspreview' => "'''Rapelâd-vos que vos éte ren qu’aprés prèvêre cél code JavaScript.'''
 '''Il est p’oncor étâ encartâ !'''",
 'userinvalidcssjstitle' => "'''Atencion :''' ègziste gins d’habelyâjo « $1 ».
 Rapelâd-vos que les pâges a sè avouéc èxtensions .css et .js emplèyont 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 qu’o est ren qu’una prèvisualisacion.'''
+'previewnote' => "'''Rapelâd-vos qu’o est ren qu’un apèrçu.'''
 Voutros changements sont p’oncor étâs encartâs !",
 'continue-editing' => 'Alar a la zona de changement',
-'previewconflict' => 'Ceta prèvisualisacion fât vêre lo tèxto de la zona de changement de d’amont coment aparêtrat se vos chouèsésséd de l’encartar.',
+'previewconflict' => 'Cet’apèrçu fât vêre lo tèxto de la zona de changement de d’amont coment aparêtrat se vos chouèsésséd de l’encartar.',
 'session_fail_preview' => "'''Dèconsolâ ! Nos povens pas encartar voutron changement a côsa d’una pèrta d’enformacions sur voutra sèance.'''
 Volyéd tornar èprovar.
 Se cen tôrne pas reussir, vos volyéd [[Special:UserLogout|dèbranchiér]] et pués vos tornar branchiér.",
 'session_fail_preview_html' => "'''Dèconsolâ ! Nos povens pas encartar voutron changement a côsa d’una pèrta d’enformacions sur voutra sèance.'''
 
-''Perce que {{SITENAME}} at activâ l’HTML bruto, la prèvisualisacion est étâye cachiêe por prèvegnir les ataques per JavaScript.''
+''Perce que {{SITENAME}} at activâ l’HTML bruto, l’apèrçu est étâ cachiê por prèvegnir les ataques per JavaScript.''
 
 '''Se la tentativa de changement ére lèg·itima, volyéd tornar èprovar.'''
 Se cen tôrne pas reussir, vos volyéd [[Special:UserLogout|dèbranchiér]] et pués vos tornar branchiér.",
@@ -1079,38 +1081,38 @@ La dèrriére entrâ du jornal est montrâye ce-desot por refèrence :",
 'titleprotectedwarning' => "'''Atencion : ceta pâge est étâye protègiêe de façon que des [[Special:ListGroupRights|drêts spècificos]] sont nècèssèros por la povêr fâre.'''
 La dèrriére entrâ du jornal est montrâye ce-desot por refèrence :",
 'templatesused' => '{{PLURAL:$1|Modèlo empleyê|Modèlos empleyês}} per ceta pâge :',
-'templatesusedpreview' => '{{PLURAL:$1|Modèlo empleyê|Modèlos empleyês}} dedens ceta prèvisualisacion :',
+'templatesusedpreview' => '{{PLURAL:$1|Modèlo empleyê|Modèlos empleyês}} dedens cet’apèrçu :',
 'templatesusedsection' => '{{PLURAL:$1|Modèlo empleyê|Modèlos empleyês}} dedens ceta sèccion :',
 'template-protected' => '(protègiê)',
 'template-semiprotected' => '(mié-protègiê)',
 'hiddencategories' => '{{PLURAL:$1|Catègorie cachiêe|Catègories cachiêes}} que ceta pâge est avouéc :',
 'edittools' => '<!-- Tot tèxto buchiê ique serat montrâ desot les bouètes d’èdicion ou ben los formulèros de tèlèchargement de fichiér. -->',
 'nocreatetext' => '{{SITENAME}} at rètrent la possibilitât de fâre de pâges novèles.
-Vos pouede tornar arriér et pués changiér una pâge ègzistenta, ou ben vos [[Special:UserLogin|branchiér ou fâre un compto]].',
+Vos pouede tornar arriér et pués changiér na pâge ègzistenta ou ben [[Special:UserLogin|vos branchiér ou fâre un compto]].',
 'nocreate-loggedin' => 'Vos avéd pas la pèrmission de fâre de pâges novèles.',
 'sectioneditnotsupported-title' => 'Changement de sèccion pas recognu',
 'sectioneditnotsupported-text' => 'Lo changement d’una sèccion est pas recognu dens cela pâge.',
-'permissionserrors' => 'Èrror de pèrmissions',
-'permissionserrorstext' => 'Vos avéd pas la pèrmission de fâre l’opèracion demandâ por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
-'permissionserrorstext-withaction' => 'Vos éte pas ôtorisâ a $2, por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
-'recreate-moveddeleted-warn' => "'''Atencion : vos éte aprés refâre una pâge qu’at étâ suprimâ dês devant.'''
+'permissionserrors' => 'Fôta de pèrmissions',
+'permissionserrorstext' => 'Vos avéd pas la pèrmission de fâre l’accion demandâye por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
+'permissionserrorstext-withaction' => 'Vos avéd pas la pèrmission de $2 por {{PLURAL:$1|ceta rêson|cetes rêsons}} :',
+'recreate-moveddeleted-warn' => "'''Atencion : vos éte aprés refâre na pâge qu’est étâye suprimâye dês devant.'''
 
 Demandâd-vos se fôt franc continuar son changement.
-Los jornals de les suprèssions et des changements de nom de cela pâge sont montrâs ce-desot :",
-'moveddeleted-notice' => 'Ceta pâge at étâ suprimâ.
-Los jornals de les suprèssions et des changements de nom sont montrâs ce-desot coment refèrence.',
+Por comoditât, lo jornal de les suprèssions et des changements de nom de cela pâge est montrâ ce-desot :",
+'moveddeleted-notice' => 'Ceta pâge est étâye suprimâye.
+Por refèrence, lo jornal de les suprèssions et des changements de nom est montrâ ce-desot.',
 'log-fulllog' => 'Vêre lo jornal complèt',
-'edit-hook-aborted' => 'Changement anulâ per n’èxtension.
-Niona èxplicacion est étâye balyêye.',
-'edit-gone-missing' => 'La pâge at pas possu étre betâ a jorn.
-Semble qu’el èye étâ suprimâ.',
+'edit-hook-aborted' => 'Changement anulâ per un grèfon.
+Nion’èxplicacion est étâye balyêe.',
+'edit-gone-missing' => 'Empossiblo de betar a jorn la pâge.
+Semble que seye étâye suprimâye.',
 'edit-conflict' => 'Conflit de changement.',
-'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.
+'edit-no-change' => 'Voutron changement est étâ ignorâ perce que nion changement est étâ fêt u tèxto.',
+'edit-already-exists' => 'Empossiblo de fâre na pâge novèla.
 Ègziste ja.',
 'defaultmessagetext' => 'Mèssâjo per dèfôt',
 'content-failed-to-parse' => 'Falyita de l’analisa du contegnu de $2 por lo modèlo $1 : $3',
-'invalid-content-data' => 'Donâs du contegnu envalides',
+'invalid-content-data' => 'Donâs du contegnu pas justes',
 'content-not-allowed-here' => 'Lo contegnu « $1 » est pas ôtorisâ sur la pâge [[$2]]',
 
 # Content models
@@ -1120,159 +1122,160 @@ Semble qu’el èye étâ suprimâ.',
 'content-model-css' => 'CSS',
 
 # Parser/template warnings
-'expensive-parserfunction-warning' => 'Atencion : ceta pâge contint trop d’apèls que revegnont chiers de fonccions du parsor.
-
-Y devrêt avêr muens de $2 apèl{{PLURAL:$2||s}}, pendent qu’y en at ora $1.',
-'expensive-parserfunction-category' => 'Pâges avouéc trop d’apèls que revegnont chiers de fonccions du parsor',
-'post-expand-template-inclusion-warning' => 'Atencion : ceta pâge contint trop d’encllusions de modèlos.
-Quârques encllusions seront pas fêtes.',
-'post-expand-template-inclusion-category' => 'Pâges que contegnont trop d’encllusions de modèlos',
-'post-expand-template-argument-warning' => 'Atencion : ceta pâge contint u muens yon paramètre de modèlo que l’encllusion est rendua empossibla.
-Aprés èxtension, ceti arêt balyê un rèsultat trop long, il at vêr pas étâ encllu.',
-'post-expand-template-argument-category' => 'Pâges que contegnont u muens yon paramètre de modèlo pas encllu',
+'expensive-parserfunction-warning' => "'''Atencion :''' cela pâge contint trop d’apèls a des fonccions du parsor que revegnont chieres.
+
+Y devrêt avêr muens de $2 apèl{{PLURAL:$2||s}}, pendent qu’y en at ora $1.",
+'expensive-parserfunction-category' => 'Pâges avouéc trop d’apèls a des fonccions du parsor que revegnont chieres',
+'post-expand-template-inclusion-warning' => "'''Atencion :''' la talye des modèlos entrebetâs est trop grôssa.
+Quârques modèlos seront pas entrebetâs.",
+'post-expand-template-inclusion-category' => 'Pâges yô que la talye des modèlos entrebetâs est dèpassâye',
+'post-expand-template-argument-warning' => "'''Atencion :''' cela pâge contint u muens yon argument de modèlo qu’at na talye d’èxpension trop grôssa.
+Celos arguments sont pas étâs betâs.",
+'post-expand-template-argument-category' => 'Pâges que contegnont des arguments de modèlo pas betâs',
 'parser-template-loop-warning' => 'Modèlo en boclla dècelâ : [[$1]]',
-'parser-template-recursion-depth-warning' => 'Limita de provondior des apèls de modèlos dèpassâ ($1)',
-'language-converter-depth-warning' => 'Limita de provondior du convèrtissor de lengoua dèpassâ ($1)',
+'parser-template-recursion-depth-warning' => 'Limita de provondior des apèls de modèlos dèpassâye ($1)',
+'language-converter-depth-warning' => 'Limita de provondior du convèrtissor de lengoua dèpassâye ($1)',
 'node-count-exceeded-category' => 'Pâges yô que lo nombro de nuods est dèpassâ',
-'node-count-exceeded-warning' => 'Pâge dèpassent lo nombro de nuods',
+'node-count-exceeded-warning' => 'Pâge que dèpâsse lo nombro de nuods',
 'expansion-depth-exceeded-category' => 'Pâges yô que la provondior d’èxpension est dèpassâye',
-'expansion-depth-exceeded-warning' => 'Pâge dèpassent la provondior d’èxpension',
+'expansion-depth-exceeded-warning' => 'Pâge que dèpâsse la provondior d’èxpension',
 'parser-unstrip-loop-warning' => 'Boclla pas dèmontâbla dècelâye',
 'parser-unstrip-recursion-limit' => 'Limita de rècursion pas dèmontâbla dèpassâye ($1)',
-'converter-manual-rule-error' => 'Fôta dècelâye dens la règlla de convèrsion manuèla de lengoua',
+'converter-manual-rule-error' => 'Fôta dècelâye dens la règlla de convèrsion de lengoua manuèla',
 
 # "Undo" feature
-'undo-success' => 'Ceti changement vôt étre dèfêt.
-Volyéd controlar los changements ce-desot, et pués sôvar s’o est franc cen que vos voléd fâre.',
-'undo-failure' => 'Cél changement pôt pas étre dèfêt : cen rentrerêt en conflit avouéc los changements entèrmèdièros.',
-'undo-norev' => 'Lo changement at pas possu étre dèfêt perce qu’il est pas ègzistent ou ben qu’il at étâ suprimâ.',
-'undo-summary' => 'Anulacion du changement $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discutar]])',
+'undo-success' => 'Lo changement pôt étre dèfêt.
+Volyéd controlar la comparèson ce-desot por vos assurar qu’o est franc cen que vos voléd fâre et pués encartar los changements ce-desot por chavonar la sina dèfêta.',
+'undo-failure' => 'Lo changement at pas possu étre dèfêt a côsa d’un conflit avouéc des changements entèrmèdièros.',
+'undo-norev' => 'Lo changement at pas possu étre dèfêt perce qu’il est pas ègzistent ou ben qu’il est étâ suprimâ.',
+'undo-summary' => 'Dèfêta du changement $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discutar]])',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Vos pouede pas fâre un compto.',
-'cantcreateaccount-text' => "La crèacion de compto dês ceta adrèce IP ('''$1''') at étâ dèfendua per [[User:$3|$3]].
+'cantcreateaccounttitle' => 'Empossiblo de fâre lo compto',
+'cantcreateaccount-text' => "La crèacion de compto dês cet’adrèce IP ('''$1''') est étâye blocâye per [[User:$3|$3]].
 
-La rêson balyê per $3 ére ''$2''.",
+La rêson balyêe per $3 ére ''$2''.",
 
 # History pages
 'viewpagelogs' => 'Vêde los jornals de ceta pâge',
 'nohistory' => 'Ègziste gins d’historico por ceta pâge.',
 'currentrev' => 'Vèrsion d’ora',
-'currentrev-asof' => 'Vèrsion d’ora en dâta du $1',
-'revisionasof' => 'Vèrsion du $1',
-'revision-info' => 'Vèrsion du $1 per $2',
-'previousrevision' => '← Vèrsion devant',
-'nextrevision' => 'Vèrsion aprés →',
-'currentrevisionlink' => 'vêde la vèrsion d’ora',
-'cur' => 'ora',
+'currentrev-asof' => 'Vèrsion d’ora du $2 a $3',
+'revisionasof' => 'Vèrsion du $2 a $3',
+'revision-info' => 'Vèrsion du $4 a $5 per $2',
+'previousrevision' => '← Vèrsion ples vielye',
+'nextrevision' => 'Vèrsion ples novèla →',
+'currentrevisionlink' => 'Vèrsion d’ora',
+'cur' => 'd’ora',
 'next' => 'aprés',
-'last' => 'dif',
-'page_first' => 'premiére',
+'last' => 'devant',
+'page_first' => 'Premiére',
 'page_last' => 'dèrriére',
-'histlegend' => "Lègenda : '''({{int:cur}})''' = difèrence avouéc la vèrsion d’ora,
-'''({{int:last}})''' = difèrence avouéc la vèrsion devant, '''{{int:minoreditletter}}''' = petiôt changement.",
-'history-fieldset-title' => 'Navegar dens l’historico',
-'history-show-deleted' => 'Solament los suprimâs',
-'histfirst' => 'Tota premiére',
-'histlast' => 'Tota dèrriére',
+'histlegend' => "Chouèx de difs : pouentâd les câses de les vèrsions a comparar et pués apoyéd dessus « Entrâ » ou ben lo boton d’avâl.<br />
+Lègenda : '''({{int:cur}})''' = difèrence avouéc la vèrsion d’ora, '''({{int:last}})''' = difèrence avouéc la vèrsion devant, '''{{int:minoreditletter}}''' = petiôt changement.",
+'history-fieldset-title' => 'Fâre dèfelar l’historico',
+'history-show-deleted' => 'Ren que les suprimâyes',
+'histfirst' => 'premiére',
+'histlast' => 'Dèrriére',
 'historysize' => '($1 octèt{{PLURAL:$1||s}})',
-'historyempty' => '(vouedo)',
+'historyempty' => '(voueda)',
 
 # Revision feed
 'history-feed-title' => 'Historico de les vèrsions',
 'history-feed-description' => 'Historico por ceta pâge sur lo vouiqui',
-'history-feed-item-nocomment' => '$1 lo $2',
-'history-feed-empty' => 'La pâge demandâ ègziste pas.
-El at pôt-étre étâ suprimâ ou ben renomâ.
+'history-feed-item-nocomment' => '$1 lo $3 a $4',
+'history-feed-empty' => 'La pâge demandâye ègziste pas.
+Pôt-étre el est étâye suprimâye du vouiqui ou ben renomâye.
 Tâchiéd de [[Special:Search|rechèrchiér sur lo vouiqui]] por trovar des pâges novèles que vont avouéc.',
 
 # Revision deletion
 'rev-deleted-comment' => '(rèsumâ de changement enlevâ)',
-'rev-deleted-user' => '(nom d’usanciér suprimâ)',
-'rev-deleted-event' => '(entrâ suprimâ)',
-'rev-deleted-user-contribs' => '[nom d’usanciér ou ben adrèce IP suprimâ - changement cachiê sur les contribucions]',
+'rev-deleted-user' => '(nom d’utilisator enlevâ)',
+'rev-deleted-event' => '(accion du jornal enlevâye)',
+'rev-deleted-user-contribs' => '[nom d’utilisator ou ben adrèce IP enlevâ(ye) - changement cachiê sur les contribucions]',
 'rev-deleted-text-permission' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
 Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-deleted-text-unhide' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
-Vos pouede adés [$1 vêre cela vèrsion] se vos lo voléd.",
-'rev-suppressed-text-unhide' => "Ceta vèrsion de la pâge at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
-Vos pouede adés [$1 vêre cela vèrsion] se vos lo voléd.",
+'rev-deleted-text-unhide' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
+Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Vos pouede adés [$1 vêre cela vèrsion] se vos o voléd.",
+'rev-suppressed-text-unhide' => "Ceta vèrsion de la pâge est étâye '''rèprimâye'''.
+Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
+Vos pouede adés [$1 vêre cela vèrsion] se vos o voléd.",
 'rev-deleted-text-view' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
 Vos la pouede vêre ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-suppressed-text-view' => "Ceta vèrsion de la pâge est étâye '''suprimâye'''.
-Vos la pouede vêre ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-deleted-no-diff' => "Vos pouede pas vêre ceti dif perce que yona de les vèrsions est étâye '''suprimâye'''.
+'rev-suppressed-text-view' => "Ceta vèrsion de la pâge est étâye '''primâye'''.
+Vos la pouede vêre ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les prèssions].",
+'rev-deleted-no-diff' => "Vos pouede pas vêre ceta dif perce que yona de les vèrsions est étâye '''suprimâye'''.
 Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-suppressed-no-diff' => "Vos pouede pas vêre ceta difèrence perce que yona de les vèrsions at étâ '''suprimâ'''.",
-'rev-deleted-unhide-diff' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
-Vos pouede adés [$1 vêre cél dif] se vos lo voléd.",
-'rev-suppressed-unhide-diff' => "Yona de les vèrsions de ceti dif at étâ '''suprimâ'''.
-Y pôt avêr més de dètalys dens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
-Vos pouede adés [$1 vêre cél dif] se vos lo voléd.",
-'rev-deleted-diff-view' => "Yona de les vèrsions de ceti dif est étâye '''suprimâye'''.
-Vos pouede vêre ceti dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
-'rev-suppressed-diff-view' => "Yona de les vèrsions de ceti dif est étâye '''suprimâye'''.
-Vos pouede vêre ceti dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-suppressed-no-diff' => "Vos pouede pas vêre ceta dif perce que yona de les vèrsions est étâye '''suprimâye'''.",
+'rev-deleted-unhide-diff' => "Yona de les vèrsions de ceta dif est étâye '''suprimâye'''.
+Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].
+Vos pouede adés [$1 vêre cela dif] se vos o voléd.",
+'rev-suppressed-unhide-diff' => "Yona de les vèrsions de ceta dif est étâye '''rèprimâye'''.
+Y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].
+Vos pouede adés [$1 vêre cela dif] se vos o voléd.",
+'rev-deleted-diff-view' => "Yona de les vèrsions de ceta dif est étâye '''suprimâye'''.
+Vos pouede vêre ceta dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
+'rev-suppressed-diff-view' => "Yona de les vèrsions de ceta dif est étâye '''rèprimâye'''.
+Vos pouede vêre ceta dif ; y pôt avêr més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de les rèprèssions].",
 'rev-delundel' => 'montrar / cachiér',
 'rev-showdeleted' => 'montrar',
 'revisiondelete' => 'Suprimar / refâre des vèrsions',
-'revdelete-nooldid-title' => 'Vèrsion ciba envalida',
-'revdelete-nooldid-text' => 'Vos éd pas spècefiâ la vèrsion ciba ou ben les vèrsions cibes de cela fonccion,
-la vèrsion ciba ègziste pas, ou ben o est la vèrsion d’ora.',
-'revdelete-nologtype-title' => 'Gins de tipo de jornal spècefiâ',
-'revdelete-nologtype-text' => 'Vos éd pas spècefiâ un tipo de jornal sur loquint cela accion dêt étre rèalisâ.',
-'revdelete-nologid-title' => 'Entrâ du jornal envalida',
-'revdelete-nologid-text' => 'Ou ben vos éd pas spècefiâ una entrâ du jornal sur laquinta cela accion dêt étre rèalisâ, ou ben l’entrâ ègziste pas.',
-'revdelete-no-file' => 'Lo fichiér spècefiâ ègziste pas.',
-'revdelete-show-file-confirm' => 'Éte-vos de sûr de volêr vêre una vèrsion suprimâ du fichiér « <nowiki>$1</nowiki> » que dâte du $2 a $3 ?',
+'revdelete-nooldid-title' => 'Vèrsion ciba pas justa',
+'revdelete-nooldid-text' => 'Vos éd pas spècifiâ na vèrsion ciba (ou ben des vèrsions cibes) por fâre cela
+fonccion, la vèrsion spècifiâye ègziste pas ou ben vos tâchiéd de cachiér la vèrsion d’ora.',
+'revdelete-nologtype-title' => 'Nion tipo de jornal balyê',
+'revdelete-nologtype-text' => 'Vos éd pas spècifiâ un tipo de jornal por fâre cel’accion.',
+'revdelete-nologid-title' => 'Entrâ du jornal pas justa',
+'revdelete-nologid-text' => 'Ou ben vos éd pas spècifiâ un èvènement du jornal ciba por fâre cela fonccion ou ben l’entrâ spècifiâye ègziste pas.',
+'revdelete-no-file' => 'Lo fichiér spècifiâ ègziste pas.',
+'revdelete-show-file-confirm' => 'Éte-vos de sûr de volêr vêre na vèrsion suprimâye du fichiér « <nowiki>$1</nowiki> » du $2 a $3 ?',
 'revdelete-show-file-submit' => 'Ouè',
 'revdelete-selected' => "'''{{PLURAL:$2|Vèrsion chouèsia|Vèrsions chouèsies}} de [[:$1]] :'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Entrâ du jornal chouèsia|Entrâs du jornal chouèsies}} :'''",
-'revdelete-text' => "'''Les vèrsions et les entrâs suprimâs aparètront adés dens l’historico de la pâge et dens los jornals, mas lor contegnu tèxtuèl serat pas accèssiblo u publico.'''
-Los ôtros administrators de {{SITENAME}} porront tojorn arrevar u contegnu cachiê et lo refâre per cela méma entèrface, a muens que des rèstriccions de ples seyont betâs en place.",
-'revdelete-confirm' => 'Volyéd confirmar qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos féte cen en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].',
-'revdelete-suppress-text' => "La suprèssion dêt étre utilisâ '''ren que''' dens cetos câs :
-* Enformacions a sè que vont pas avouéc :
-*: ''adrèce et numerô de tèlèfono, numerô de sècuritât sociâla, ...''",
-'revdelete-legend' => 'Betar en place des rèstriccions de visibilitât :',
+'logdelete-selected' => "'''{{PLURAL:$1|Èvènement du jornal chouèsi|Èvènements du jornal chouèsis}} :'''",
+'revdelete-text' => "'''Les vèrsions et los èvènements suprimâ(ye)s aparètront adés dedens l’historico de la pâge et pués dedens los jornals, mas quârques parties de lor contegnu seront inaccèssibles u publico.'''
+Los ôtros administrators de {{SITENAME}} porront tojorn arrevar u contegnu cachiê et lo refâre per cela mém’entèrface, a muens que des rèstriccions de ples seyont pas dèfenies.",
+'revdelete-confirm' => 'Volyéd confirmar qu’o est franc cen que vos voléd fâre, que vos en compregnéd les consèquences et pués que vos o féte en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].',
+'revdelete-suppress-text' => "La rèprèssion dêt étre empleyêe '''ren que''' dens cetos câs :
+* Enformacions que pôvont étre difamatouères
+* Enformacions a sè que vont pas avouéc
+*: ''adrèces et numerôs de tèlèfono, numerôs de sècuritât sociâla, ...''",
+'revdelete-legend' => 'Dèfenir des rèstriccions de visibilitât',
 'revdelete-hide-text' => 'Cachiér lo tèxto de la vèrsion',
 'revdelete-hide-image' => 'Cachiér lo contegnu du fichiér',
 'revdelete-hide-name' => 'Cachiér l’accion et la ciba',
 'revdelete-hide-comment' => 'Cachiér lo rèsumâ de changement',
-'revdelete-hide-user' => 'Cachiér lo nom ou l’adrèce IP u contributor.',
-'revdelete-hide-restricted' => 'Cachiér les balyês ux administrators et pués ux ôtros',
+'revdelete-hide-user' => 'Cachiér lo nom d’utilisator / l’adrèce IP du contributor',
+'revdelete-hide-restricted' => 'Rèprimar celes donâs ux administrators et pués ux ôtros',
 'revdelete-radio-same' => '(pas changiér)',
 'revdelete-radio-set' => 'Ouè',
 'revdelete-radio-unset' => 'Nan',
-'revdelete-suppress' => 'Suprimar les balyês ux administrators et pués ux ôtros',
+'revdelete-suppress' => 'Rèprimar celes donâs ux administrators et pués ux ôtros',
 'revdelete-unsuppress' => 'Enlevar les rèstriccions sur les vèrsions refêtes',
 'revdelete-log' => 'Rêson :',
 'revdelete-submit' => 'Aplicar a {{PLURAL:$1|la vèrsion chouèsia|les vèrsions chouèsies}}',
-'revdelete-success' => "'''Visibilitât de la vèrsion betâ a jorn avouéc reusséta.'''",
-'revdelete-failure' => "'''La visibilitât de la vèrsion at pas possu étre betâ a jorn :'''
+'revdelete-success' => "'''Visibilitât de la vèrsion betâye a jorn avouéc reusséta.'''",
+'revdelete-failure' => "'''La visibilitât de la vèrsion at pas possu étre betâye a jorn :'''
 $1",
 'logdelete-success' => "'''Visibilitât du jornal dèfenia avouéc reusséta.'''",
 'logdelete-failure' => "'''La visibilitât du jornal at pas possu étre dèfenia :'''
 $1",
-'revdel-restore' => 'Changiér la visibilitât',
-'revdel-restore-deleted' => 'vèrsions suprimâs',
+'revdel-restore' => 'changiér la visibilitât',
+'revdel-restore-deleted' => 'vèrsions suprimâyes',
 'revdel-restore-visible' => 'vèrsions visibles',
 'pagehist' => 'Historico de la pâge',
 'deletedhist' => 'Historico suprimâ',
-'revdelete-hide-current' => 'Èrror pendent la suprèssion de l’èlèment datâ du $1 a $2 : o est la vèrsion d’ora.
-Pôt pas étre suprimâ.',
-'revdelete-show-no-access' => 'Fôta pendent la visualisacion de la piéce datâye du $1 a $2 : el est marcâye coment « rètrenta ».
+'revdelete-hide-current' => 'Fôta en cachient la piéce datâye du $1 a $2 : o est la vèrsion d’ora.
+Pôt pas étre cachiêe.',
+'revdelete-show-no-access' => 'Fôta en montrent la piéce datâye du $1 a $2 : el est marcâye coment « rètrenta ».
 Vos y avéd pas accès.',
-'revdelete-modify-no-access' => 'Fôta pendent lo changement de la piéce datâye du $1 a $2 : el est marcâye coment « rètrenta ».
+'revdelete-modify-no-access' => 'Fôta en changient la piéce datâye du $1 a $2 : el est marcâye coment « rètrenta ».
 Vos y avéd pas accès.',
-'revdelete-modify-missing' => 'Èrror pendent lo changement de l’èlèment avouéc lo numerô $1 : il est manquent dens la bâsa de balyês !',
-'revdelete-no-change' => "'''Atencion :''' l’èlèment datâ du $1 a $2 at ja los paramètres de visibilitât demandâs.",
-'revdelete-concurrent-change' => 'Èrror pendent lo changement de l’èlèment datâ du $1 a $2 : son statut at étâ changiê per quârqu’un d’ôtro pendent que vos lo changiéd.
+'revdelete-modify-missing' => 'Fôta en changient la piéce avouéc l’identifient $1 : el est manquenta dedens la bâsa de donâs !',
+'revdelete-no-change' => "'''Atencion :''' la piéce datâye du $1 a $2 at ja la configuracion de visibilitât demandâye.",
+'revdelete-concurrent-change' => 'Fôta en changient la piéce datâye du $1 a $2 : lo sin statut semble étre étâ changiê per quârqu’un d’ôtro justo que vos tâchiêvâd d’o changiér.
 Volyéd controlar los jornals.',
-'revdelete-only-restricted' => 'Èrror pendent la suprèssion de l’entrâ datâ du $1 a $2 : vos pouede pas suprimar celos èlèments ux administrators sen chouèsir avouéc des ôtros chouèx de suprèssion.',
+'revdelete-only-restricted' => 'Fôta en cachient la piéce datâye du $1 a $2 : vos pouede pas rèprimar celes piéces de la vua ux administrators sen chouèsir avouéc des ôtros chouèx de visibilitât.',
 'revdelete-reason-dropdown' => '*Rêsons corentes de suprèssion
 ** Violacion du drêt d’ôtor
 ** Comentèros ou ben enformacions a sè que vont pas avouéc
@@ -1290,34 +1293,34 @@ Vêde la [[Special:BlockList|lista des blocâjos]] por la lista des banissements
 
 # History merging
 'mergehistory' => 'Fusionar los historicos de les pâges',
-'mergehistory-header' => 'Ceta pâge vos pèrmèt de fusionar des vèrsions de l’historico d’una pâge d’origina vers una pâge novèla.
-Assurâd-vos que cela opèracion consèrverat la continuitât de l’historico de la pâge.',
+'mergehistory-header' => 'Ceta pâge vos pèrmèt de fusionar des vèrsions de l’historico d’una pâge d’origina vers na pâge novèla.
+Assurâd-vos que cél changement consèrverat la continuitât de l’historico de la pâge.',
 'mergehistory-box' => 'Fusionar les vèrsions de doves pâges :',
 'mergehistory-from' => 'Pâge d’origina :',
 'mergehistory-into' => 'Pâge de dèstinacion :',
 'mergehistory-list' => 'Historico des changements que pôvont étre fusionâs',
-'mergehistory-merge' => 'Cetes vèrsions de [[:$1]] pôvont étre fusionâs dedens [[:$2]].
-Utilisâd la colona de botons de chouèx por fusionar ren que les vèrsions fêtes du comencement tant qu’a la dâta spècefiâ.
-Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colona.',
-'mergehistory-go' => 'Fâre vêre los changements que pôvont étre fusionâs',
+'mergehistory-merge' => 'Cetes vèrsions de [[:$1]] pôvont étre fusionâyes dedens [[:$2]].
+Empleyéd la colona de botons de chouèx por fusionar ren que les vèrsions fêtes du comencement tant qu’a la dâta spècifiâye.
+Notâd que l’usâjo des lims de navigacion remetrat a zérô cela colona.',
+'mergehistory-go' => 'Montrar los changements que pôvont étre fusionâs',
 'mergehistory-submit' => 'Fusionar les vèrsions',
-'mergehistory-empty' => 'Niona vèrsion pôt étre fusionâ.',
-'mergehistory-success' => '$3 vèrsion{{PLURAL:$3||s}} de [[:$1]] fusionâ{{PLURAL:$3||s}} avouéc reusséta dedens [[:$2]].',
-'mergehistory-fail' => 'Empossiblo de fâre la fusion des historicos. Volyéd tornar chouèsir la pâge et pués los paramètres de dâta.',
+'mergehistory-empty' => 'Niona vèrsion pôt étre fusionâye.',
+'mergehistory-success' => '$3 vèrsion{{PLURAL:$3||s}} de [[:$1]] fusionâye{{PLURAL:$3||s}} avouéc reusséta dedens [[:$2]].',
+'mergehistory-fail' => 'Empossiblo de fâre la fusion des historicos, volyéd tornar chouèsir la pâge et pués los paramètros de dâta.',
 'mergehistory-no-source' => 'La pâge d’origina $1 ègziste pas.',
 'mergehistory-no-destination' => 'La pâge de dèstinacion $1 ègziste pas.',
-'mergehistory-invalid-source' => 'La pâge d’origina dêt avêr un titro valido.',
-'mergehistory-invalid-destination' => 'La pâge de dèstinacion dêt avêr un titro valido.',
-'mergehistory-autocomment' => '[[:$1]] fusionâ dedens [[:$2]]',
-'mergehistory-comment' => '[[:$1]] fusionâ dedens [[:$2]] : $3',
+'mergehistory-invalid-source' => 'La pâge d’origina dêt avêr un titro justo.',
+'mergehistory-invalid-destination' => 'La pâge de dèstinacion dêt avêr un titro justo.',
+'mergehistory-autocomment' => '[[:$1]] fusionâye dedens [[:$2]]',
+'mergehistory-comment' => '[[:$1]] fusionâye dedens [[:$2]] : $3',
 'mergehistory-same-destination' => 'Les pâges d’origina et de dèstinacion pôvont pas étre la méma',
 'mergehistory-reason' => 'Rêson :',
 
 # Merge log
 'mergelog' => 'Jornal de les fusions',
-'pagemerge-logentry' => '[[$1]] fusionâ dedens [[$2]] (vèrsions tant qu’u $3)',
+'pagemerge-logentry' => '[[$1]] fusionâye dedens [[$2]] (vèrsions tant qu’u $3)',
 'revertmerge' => 'Sèparar',
-'mergelogpagetext' => 'Vê-que la lista de les fusions les ples novèles de l’historico d’una pâge dedens celi d’una ôtra.',
+'mergelogpagetext' => 'Vê-que na lista de les fusions les ples novèles de l’historico d’una pâge dedens celi d’un’ôtra.',
 
 # Diffs
 'history-title' => 'Historico de les vèrsions de « $1 »',
@@ -1326,85 +1329,85 @@ Notâd bien que l’usâjo des lims de navigacion tornerat inicialisar cela colo
 'difference-multipage' => '(Difèrences entre les pâges)',
 'lineno' => 'Legne $1 :',
 'compareselectedversions' => 'Comparar les vèrsions chouèsies',
-'showhideselectedversions' => 'Fâre vêre / cachiér les vèrsions chouèsies',
+'showhideselectedversions' => 'Montrar / cachiér les vèrsions chouèsies',
 'editundo' => 'dèfâre',
-'diff-multi' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per {{PLURAL:$2|yon usanciér|$2 usanciérs}} {{PLURAL:$1|est pas montrâ|sont pas montrâs}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per més de $2 usanciér{{PLURAL:$2||s}} {{PLURAL:$1|est pas montrâ|sont pas montrâs}})',
-'difference-missing-revision' => '{{PLURAL:$2|Yona vèrsion|$2 vèrsions}} de ceta difèrence ($1) {{PLURAL:$2|est pas étâye trovâye|sont pas étâyes trovâyes}}.
+'diff-multi' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per {{PLURAL:$2|yon utilisator|$2 utilisators}} {{PLURAL:$1|est pas montrâye|sont pas montrâyes}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|Yona vèrsion entèrmèdièra|$1 vèrsions entèrmèdières}} per més de $2 utilisator{{PLURAL:$2||s}} {{PLURAL:$1|est pas montrâye|sont pas montrâyes}})',
+'difference-missing-revision' => '{{PLURAL:$2|Yona vèrsion|$2 vèrsions}} de cela difèrence ($1) {{PLURAL:$2|est pas étâye trovâye|sont pas étâyes trovâyes}}.
 
-En g·ènèral cen arreve en siuvent un lim d’un dif dèpassâ de vers na pâge qu’est étâye suprimâye.
+En g·ènèral cen arreve en siuvent un lim d’una dif dèpassâye de vers na pâge qu’est étâye suprimâye.
 Vos pouede trovar més de dètalys dedens lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].',
 
 # Search results
 'searchresults' => 'Rèsultats de la rechèrche',
 'searchresults-title' => 'Rèsultats de la rechèrche por « $1 »',
-'searchresulttext' => 'Por més d’enformacions sur la rechèrche dens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchresulttext' => 'Por més d’enformacions sur la rechèrche dedens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ont un lim de vers « $1 »]])",
 'searchsubtitleinvalid' => "Vos éd rechèrchiê « '''$1''' »",
-'toomanymatches' => 'Un trop grant nombro d’ocasions at étâ retornâ, volyéd sometre una requéta difèrenta.',
-'titlematches' => 'Corrèspondances dens los titros de pâges',
-'notitlematches' => 'Nion titro de pâge corrèspond a la rechèrche.',
-'textmatches' => 'Corrèspondances dens lo tèxto de les pâges',
-'notextmatches' => 'Nion tèxto de pâge corrèspond a la rechèrche.',
+'toomanymatches' => 'Un mouél de corrèspondances est étâ retornâ, volyéd èprovar na rechèrche difèrenta.',
+'titlematches' => 'Corrèspondances dedens los titros de les pâges',
+'notitlematches' => 'Niona corrèspondance dedens los titros de les pâges',
+'textmatches' => 'Corrèspondances dedens lo tèxto de les pâges',
+'notextmatches' => 'Niona corrèspondance dedens lo tèxto de les pâges',
 'prevn' => '{{PLURAL:$1|$1}} devant',
 'nextn' => '{{PLURAL:$1|$1}} aprés',
 'prevn-title' => '$1 rèsultat{{PLURAL:$1||s}} devant',
 'nextn-title' => '$1 rèsultat{{PLURAL:$1||s}} aprés',
-'shown-title' => 'Fâre vêre $1 rèsultat{{PLURAL:$1||s}} per pâge',
+'shown-title' => 'Montrar $1 rèsultat{{PLURAL:$1||s}} per pâge',
 'viewprevnext' => 'Vêre ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Chouèx de rechèrche',
 'searchmenu-exists' => "'''Y at na pâge apelâye « [[:$1]] » sur ceti vouiqui.'''",
 'searchmenu-new' => "'''Fâre la pâge « [[:$1|$1]] » sur ceti vouiqui !'''",
 'searchhelp-url' => 'Help:Somèro',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechèrchiér les pâges que començont per ceti prèfixo]]',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Fâre dèfelar les pâges que començont per ceti prèfixo]]',
 'searchprofile-articles' => 'Pâges de contegnu',
-'searchprofile-project' => 'Pâges d’éde et du projèt',
+'searchprofile-project' => 'Pâges d’éde et pâges projèt',
 'searchprofile-images' => 'Multimèdia',
 'searchprofile-everything' => 'Tot',
-'searchprofile-advanced' => 'Rechèrche avanciê',
-'searchprofile-articles-tooltip' => 'Rechèrchiér dens $1',
-'searchprofile-project-tooltip' => 'Rechèrchiér dens $1',
-'searchprofile-images-tooltip' => 'Rechèrchiér des fichiérs mèdia',
-'searchprofile-everything-tooltip' => 'Rechèrchiér dens tot lo seto (les pâges de discussion avouéc)',
+'searchprofile-advanced' => 'Rechèrche avanciêe',
+'searchprofile-articles-tooltip' => 'Rechèrchiér dedens $1',
+'searchprofile-project-tooltip' => 'Rechèrchiér dedens $1',
+'searchprofile-images-tooltip' => 'Rechèrchiér des fichiérs',
+'searchprofile-everything-tooltip' => 'Rechèrchiér dedens tot lo contegnu (les pâges de discussion avouéc)',
 'searchprofile-advanced-tooltip' => 'Chouèsir los èspâços de noms por la rechèrche',
 'search-result-size' => '$1 ($2 mot{{PLURAL:$2||s}})',
 'search-result-category-size' => '$1 membro{{PLURAL:$1||s}} ($2 sot-catègorie{{PLURAL:$2||s}}, $3 fichiér{{PLURAL:$3||s}})',
-'search-result-score' => 'Rapôrt : $1 %',
+'search-result-score' => 'Rapôrt : $1%',
 'search-redirect' => '(redirèccion dês $1)',
 'search-section' => '(sèccion $1)',
 'search-suggest' => 'Voléd-vos dére : $1',
 'search-interwiki-caption' => 'Projèts frâres',
 'search-interwiki-default' => 'Rèsultats dessus $1 :',
 'search-interwiki-more' => '(més)',
-'search-relatedarticle' => 'Raportâ',
-'mwsuggest-disable' => 'Dèsactivar los consèlys AJAX',
-'searcheverything-enable' => 'Rechèrchiér dens tôs los èspâços de noms',
-'searchrelated' => 'raportâ',
+'search-relatedarticle' => 'Aparentâ',
+'mwsuggest-disable' => 'Dèsactivar les idês AJAX',
+'searcheverything-enable' => 'Rechèrchiér dedens tôs los èspâços de noms',
+'searchrelated' => 'aparentâ',
 'searchall' => 'tot',
-'showingresults' => "Visualisacion de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
-'showingresultsnum' => "Visualisacion de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
+'showingresults' => "Vua de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
+'showingresultsnum' => "Vua de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rèsultat '''$1'''|Rèsultats '''$1 - $2'''}} de '''$3''' por '''$4'''",
 'nonefound' => "'''Nota :''' solament quârques èspâços de noms sont rechèrchiês per dèfôt.
-Èprovâd en utilisent lo prèfixo ''all:'' por rechèrchiér dens tot lo contegnu (les pâges de discussion, los modèlos, ... avouéc) ou ben utilisâd l’èspâço de noms souhètâ coment prèfixo.",
-'search-nonefound' => 'Y at gins de rèsultat que corrèspond a la requéta.',
-'powersearch' => 'Rechèrche avanciê',
-'powersearch-legend' => 'Rechèrche avanciê',
-'powersearch-ns' => 'Rechèrchiér dens los èspâços de noms :',
-'powersearch-redir' => 'Fâre vêre les redirèccions',
+Èprovâd en empleyent lo prèfixo ''all:'' por rechèrchiér dedens tot lo contegnu (les pâges de discussion, los modèlos, ... avouéc) ou ben empleyéd l’èspâço de noms volu coment prèfixo.",
+'search-nonefound' => 'Y at gins de rèsultat que corrèspond a la rechèrche.',
+'powersearch' => 'Rechèrche avanciêe',
+'powersearch-legend' => 'Rechèrche avanciêe',
+'powersearch-ns' => 'Rechèrchiér dedens los èspâços de noms :',
+'powersearch-redir' => 'Listar les redirèccions',
 'powersearch-field' => 'Rechèrchiér',
-'powersearch-togglelabel' => 'Pouentar :',
+'powersearch-togglelabel' => 'Chouèsir :',
 'powersearch-toggleall' => 'Tot',
-'powersearch-togglenone' => 'Niona',
+'powersearch-togglenone' => 'Nion',
 'search-external' => 'Rechèrche de defôr',
-'searchdisabled' => 'La rechèrche dessus {{SITENAME}} est dèsactivâ.
-En atendent la rèactivacion, vos pouede fâre una rechèrche per Google.
-Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
+'searchdisabled' => 'La rechèrche dessus {{SITENAME}} est dèsactivâye.
+Pendent cél temps, vos pouede fâre na rechèrche avouéc Google.
+Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 
 # Quickbar
-'qbsettings' => 'Bârra d’outils',
+'qbsettings' => 'Bârra rapida',
 'qbsettings-none' => 'Niona',
-'qbsettings-fixedleft' => 'Gôche',
-'qbsettings-fixedright' => 'Drêta',
+'qbsettings-fixedleft' => 'Fixa a gôche',
+'qbsettings-fixedright' => 'Fixa a drêta',
 'qbsettings-floatingleft' => 'Fllotenta a gôche',
 'qbsettings-floatingright' => 'Fllotenta a drêta',
 'qbsettings-directionality' => 'Fixa, d’aprés la dirèccionalitât d’ècritura de voutra lengoua',
@@ -1414,55 +1417,55 @@ Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'mypreferences' => 'Prèferences',
 'prefs-edits' => 'Nombro de changements :',
 'prefsnologin' => 'Pas branchiê',
-'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} branchiê]</span> por changiér voutres prèferences usanciér.',
+'prefsnologintext' => 'Vos dête étre <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} branchiê]</span> por dèfenir les prèferences utilisator.',
 'changepassword' => 'Changiér lo contresegno',
 'prefs-skin' => 'Habelyâjo',
-'skin-preview' => 'Prèvisualisar',
-'datedefault' => 'Gins de prèference',
+'skin-preview' => 'Prèvêre',
+'datedefault' => 'Niona prèference',
 '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',
-'prefs-watchlist-days' => 'Nombro de jorns a montrar dedens la lista de survelyence :',
-'prefs-watchlist-days-max' => '$1 jorn{{PLURAL:$1||s}} u més',
-'prefs-watchlist-edits' => 'Nombro maximon de changements a montrar dedens la lista de survelyence ètendua :',
-'prefs-watchlist-edits-max' => 'Nombro lo ples grant : 1000',
-'prefs-watchlist-token' => 'Jeton por la lista de survelyence :',
-'prefs-misc' => 'Prèferences de totes sôrtes',
+'prefs-watchlist' => 'Lista de siuvu',
+'prefs-watchlist-days' => 'Nombro de jorns a montrar dedens la lista de siuvu :',
+'prefs-watchlist-days-max' => 'Por lo més $1 jorn{{PLURAL:$1||s}}',
+'prefs-watchlist-edits' => 'Nombro maximon de changements a montrar dedens la lista de siuvu ètendua :',
+'prefs-watchlist-edits-max' => 'Nombro maximon : 1000',
+'prefs-watchlist-token' => 'Jeton por la lista de siuvu :',
+'prefs-misc' => 'De totes sôrtes',
 'prefs-resetpass' => 'Changiér lo contresegno',
 'prefs-changeemail' => 'Changiér l’adrèce èlèctronica',
-'prefs-setemail' => 'Configurar l’adrèce èlèctronica',
+'prefs-setemail' => 'Dèfenir n’adrèce èlèctronica',
 'prefs-email' => 'Chouèx de mèssageria èlèctronica',
 'prefs-rendering' => 'Aparence',
-'saveprefs' => 'Encartar les prèferences',
-'resetprefs' => 'Rètablir les prèferences',
-'restoreprefs' => 'Rètablir totes les valors per dèfôt',
-'prefs-editing' => 'Fenétra d’èdicion',
-'prefs-edit-boxsize' => 'Talye de la fenétra d’èdicion.',
-'rows' => 'Rengiês :',
+'saveprefs' => 'Encartar',
+'resetprefs' => 'Èfaciér los changements pas encartâs',
+'restoreprefs' => 'Rètablir tota la configuracion per dèfôt',
+'prefs-editing' => 'Changement',
+'prefs-edit-boxsize' => 'Talye de la fenétra de changement.',
+'rows' => 'Renches :',
 'columns' => 'Colones :',
 'searchresultshead' => 'Rechèrche',
 'resultsperpage' => 'Nombro de rèponses per pâge :',
 'stub-threshold' => 'Limita d’amont por los <a href="#" class="stub">lims de vers los començons</a> (octèts) :',
 'stub-threshold-disabled' => 'Dèsactivâ',
 'recentchangesdays' => 'Nombro de jorns a montrar dedens los dèrriérs changements :',
-'recentchangesdays-max' => '$1 jorn{{PLURAL:$1||s}} u més',
+'recentchangesdays-max' => 'Por lo més $1 jorn{{PLURAL:$1||s}}',
 'recentchangescount' => 'Nombro de changements a montrar per dèfôt :',
-'prefs-help-recentchangescount' => 'Cen encllut los dèrriérs changements, los historicos de les pâges et los jornals.',
-'prefs-help-watchlist-token' => 'En remplent cen avouéc una valor secrèta farat un flux RSS por voutra lista de survelyence.
-Tota pèrsona que cognêt cél jeton porrat liére voutra lista de survelyence, chouèsésséd vêr una valor sècurisâ.
-Vê-que una valor fêta per hasârd que vos pouede utilisar : $1',
-'savedprefs' => 'Les prèferences ont étâ encartâs.',
+'prefs-help-recentchangescount' => 'Los dèrriérs changements, los historicos de pâges et pués los jornals avouéc.',
+'prefs-help-watchlist-token' => 'Rempléd ceti champ avouéc na cllâf secrèta et pués un flux RSS serat fêt por voutra lista de siuvu.
+Tôs celos que cognessont cela cllâf porront liére voutra lista de siuvu, chouèsésséd vêr na valor sècurisâye.
+Vê-que na valor fêta per hasârd que vos pouede empleyér : $1',
+'savedprefs' => 'Voutres prèferences sont étâyes encartâyes.',
 'timezonelegend' => 'Fus horèro :',
 'localtime' => 'Hora locala :',
-'timezoneuseserverdefault' => 'Utilisar la valor per dèfôt du vouiqui ($1)',
-'timezoneuseoffset' => 'Ôtro (spècefiar lo dècalâjo)',
+'timezoneuseserverdefault' => 'Empleyér la valor du vouiqui per dèfôt ($1)',
+'timezoneuseoffset' => 'Ôtro (spècifiar lo dècalâjo)',
 'timezoneoffset' => 'Dècalâjo horèro¹ :',
-'servertime' => 'Hora du sèrvor :',
-'guesstimezone' => 'Utilisar la valor du navigator',
+'servertime' => 'Hora du sèrvior :',
+'guesstimezone' => 'Empleyér la valor du navigator',
 'timezoneregion-africa' => 'Africa',
 'timezoneregion-america' => 'Amèriques',
 'timezoneregion-antarctica' => 'Antartica',
@@ -1472,92 +1475,92 @@ Vê-que una valor fêta per hasârd que vos pouede utilisar : $1',
 'timezoneregion-australia' => 'Ôstralie',
 'timezoneregion-europe' => 'Eropa',
 'timezoneregion-indian' => 'Ocèan endien',
-'timezoneregion-pacific' => 'Ocèan pacefico',
-'allowemail' => 'Ôtorisar l’èxpèdicion de mèssâjos que vegnont d’ôtros usanciérs',
+'timezoneregion-pacific' => 'Ocèan pacifico',
+'allowemail' => 'Activar l’èxpèdicion de mèssâjos que vegnont d’ôtros utilisators',
 'prefs-searchoptions' => 'Rechèrche',
 'prefs-namespaces' => 'Èspâços de noms',
-'defaultns' => 'Ôtrament rechèrchiér dens cetos èspâços de noms :',
-'default' => 'per dèfôt',
+'defaultns' => 'Ôtrament rechèrchiér dedens cetos èspâços de noms :',
+'default' => 'dèfôt',
 'prefs-files' => 'Fichiérs',
 'prefs-custom-css' => 'CSS pèrsonalisâ',
 'prefs-custom-js' => 'JavaScript pèrsonalisâ',
 'prefs-common-css-js' => 'CSS / JS partagiê por tôs los habelyâjos :',
-'prefs-reset-intro' => 'Vos pouede utilisar ceta pâge por rètablir voutres prèferences a les valors du seto per dèfôt.
+'prefs-reset-intro' => 'Vos pouede empleyér ceta pâge por rètablir voutres prèferences a les valors du seto per dèfôt.
 Cen pôt pas étre dèfêt.',
-'prefs-emailconfirm-label' => 'Confirmacion de la mèssageria èlèctronica :',
-'prefs-textboxsize' => 'Talye de la fenétra d’èdicion',
+'prefs-emailconfirm-label' => 'Confirmacion de l’adrèce èlèctronica :',
+'prefs-textboxsize' => 'Talye de la fenétra de changement',
 'youremail' => 'Adrèce èlèctronica :',
 'username' => 'Nom d’utilisat{{GENDER:$1|or|rice}} :',
-'uid' => 'Numerô d’utilisat{{GENDER:$1|or|rice}} :',
+'uid' => 'Identifient d’utilisat{{GENDER:$1|or|rice}} :',
 'prefs-memberingroups' => '{{GENDER:$2|Membro}} de l{{PLURAL:$1|a tropa|es tropes}} :',
 'prefs-registration' => 'Dâta d’encartâjo :',
 'yourrealname' => 'Veré nom :',
-'yourlanguage' => 'Lengoua de l’entèrface :',
+'yourlanguage' => 'Lengoua :',
 'yourvariant' => 'Varianta de la lengoua du contegnu :',
-'prefs-help-variant' => 'Voutra varianta ou ben ortografia prèferâ por nen fâre vêre les pâges de contegnu de ceti vouiqui.',
-'yournick' => 'Signatura por les discussions :',
-'prefs-help-signature' => 'Los comentèros sur les pâges de discussion dêvont étre signês avouéc « <nowiki>~~~~</nowiki> », que serat convèrti per voutra signatura avouéc la dâta.',
-'badsig' => 'Signatura bruta fôssa.
-Controlâd voutres balises HTML.',
+'prefs-help-variant' => 'Voutra varianta ou ben ortografia prèferâye por fâre vêre les pâges de contegnu de ceti vouiqui.',
+'yournick' => 'Signatura novèla :',
+'prefs-help-signature' => 'Los comentèros sur les pâges de discussion dêvont étre signês avouéc « <nowiki>~~~~</nowiki> » que serat convèrti per voutra signatura avouéc la dâta et hora.',
+'badsig' => 'Signatura bruta pas justa.
+Controlâd les balises HTML.',
 'badsiglength' => 'Voutra signatura est trop longe.
 Dêt pas dèpassar $1 caractèro{{PLURAL:$1||s}}.',
 'yourgender' => 'Sèxo :',
 'gender-unknown' => 'Pas rensègnê',
 'gender-male' => 'Masculin',
 'gender-female' => 'Femenin',
-'prefs-help-gender' => 'U chouèx : utilisâ por acordar en genro los mèssâjos de l’entèrface.
-Ceta enformacion serat publica.',
+'prefs-help-gender' => 'U chouèx : empleyê por acordar en sèxo los mèssâjos de la programeria.
+Cel’enformacion serat publica.',
 'email' => 'Mèssageria èlèctronica',
-'prefs-help-realname' => 'U chouèx : se vos lo spècefiâd, serat utilisâ por vos atribuar voutres contribucions.',
-'prefs-help-email' => 'L’adrèce èlèctronica est u chouèx, mas el est nècèssèra por tornar inicialisar voutron contresegno, se vos vegnéd a l’oubliar.',
-'prefs-help-email-others' => 'Vos porriâd asse-ben chouèsir de lèssiér los ôtros sè veriér vers vos sur voutra pâge usanciér ou ben de discussion sen que seye nècèssèro de dèvouèlar voutra identitât.',
-'prefs-help-email-required' => 'Una adrèce èlèctronica est nècèssèra.',
+'prefs-help-realname' => 'U chouèx : se vos lo balyéd, serat empleyê por vos atribuar voutres ôvres.',
+'prefs-help-email' => 'U chouèx : mas el est nècèssèra por remetre a zérô voutron contresegno, se vos vegnévâd a l’oubliar.',
+'prefs-help-email-others' => 'Vos porriâd asse-ben chouèsir de lèssiér los ôtros sè veriér vers vos per mèssageria èlèctronica avouéc un lim sur voutra pâge utilisator ou ben de discussion sen que seye nècèssèro de rèvèlar voutron identitât.',
+'prefs-help-email-required' => 'N’adrèce èlèctronica est nècèssèra.',
 'prefs-info' => 'Enformacions de bâsa',
 'prefs-i18n' => 'Entèrnacionalisacion',
 'prefs-signature' => 'Signatura',
-'prefs-dateformat' => 'Format de les dâtes',
+'prefs-dateformat' => 'Format de la dâta',
 'prefs-timeoffset' => 'Dècalâjo horèro',
 'prefs-advancedediting' => 'Chouèx avanciês',
 'prefs-advancedrc' => 'Chouèx avanciês',
 'prefs-advancedrendering' => 'Chouèx avanciês',
 'prefs-advancedsearchoptions' => 'Chouèx avanciês',
 'prefs-advancedwatchlist' => 'Chouèx avanciês',
-'prefs-displayrc' => 'Chouèx de visualisacion',
-'prefs-displaysearchoptions' => 'Chouèx de visualisacion',
-'prefs-displaywatchlist' => 'Chouèx de visualisacion',
+'prefs-displayrc' => 'Chouèx de vua',
+'prefs-displaysearchoptions' => 'Chouèx de vua',
+'prefs-displaywatchlist' => 'Chouèx de vua',
 'prefs-diffs' => 'Difèrences',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'L’adrèce èlèctronica semble valida',
-'email-address-validity-invalid' => 'Buchiéd una adrèce èlèctronica valida',
+'email-address-validity-valid' => 'L’adrèce èlèctronica semble justa',
+'email-address-validity-invalid' => 'Buchiéd n’adrèce èlèctronica justa',
 
 # User rights
-'userrights' => 'Administracion des drêts d’usanciér',
+'userrights' => 'Administracion des drêts d’utilisator',
 'userrights-lookup-user' => 'Administracion de les tropes d’utilisators',
-'userrights-user-editname' => 'Buchiéd un nom d’usanciér :',
-'editusergroup' => 'Changiér les tropes a l’usanciér',
-'editinguser' => "Changement des drêts d’usanciér a l’usanciér '''[[User:$1|$1]]''' $2",
-'userrights-editusergroup' => 'Changiér les tropes a l’usanciér',
+'userrights-user-editname' => 'Buchiéd un nom d’utilisator :',
+'editusergroup' => 'Changiér les tropes d’utilisators',
+'editinguser' => "Changement des drêts d’utilisator de l’utilisat{{GENDER:$1|or|rice}} '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => 'Changiér les tropes d’utilisators',
 'saveusergroups' => 'Encartar les tropes d’utilisators',
-'userrights-groupsmember' => 'Membro de :',
-'userrights-groupsmember-auto' => 'Membro emplicito de :',
-'userrights-groups-help' => 'Vos pouede changiér les tropes a lesquintes est ceti usanciér.
-* Una câsa pouentâ vôt dére que l’usanciér sè trove dens cela tropa.
-* Una câsa pas pouentâ vôt dére qu’y sè trove pas.
-* Una petiôta ètêla (*) endique que vos porréd pas enlevar cela tropa setout que vos l’aréd apondua et l’un l’ôtro.',
+'userrights-groupsmember' => 'Membr{{GENDER:$2|o|a}} de :',
+'userrights-groupsmember-auto' => '{{GENDER:$2|Membro tacito|Membra tacita}} de :',
+'userrights-groups-help' => 'Vos pouede changiér les tropes a lesquintes est cet’utilisat{{GENDER:$1|or|rice}} :
+* Na câsa pouentâye vôt dére que l’utilisat{{GENDER:$1|or|rice}} sè trôve dedens cela tropa.
+* Na câsa pas pouentâye vôt dére que s’y trôve pas.
+* Na petiôt’ètêla (*) endique que vos pouede pas enlevar cela tropa setout que vos l’éd apondua ou ben l’una l’ôtra.',
 'userrights-reason' => 'Rêson :',
-'userrights-no-interwiki' => 'Vos avéd pas la pèrmission de changiér des drêts d’usanciér dessus d’ôtros vouiquis.',
-'userrights-nodatabase' => 'La bâsa de balyês « $1 » ègziste pas ou ben el est pas locala.',
-'userrights-nologin' => 'Vos vos dête [[Special:UserLogin|branchiér]] avouéc un compto d’administrator por balyér des drêts d’usanciér.',
-'userrights-notallowed' => 'Voutron compto at pas la pèrmission de balyér ou enlevar des drêts d’usanciér.',
+'userrights-no-interwiki' => 'Vos avéd pas la pèrmission de changiér des drêts d’utilisator dessus d’ôtros vouiquis.',
+'userrights-nodatabase' => 'La bâsa de donâs « $1 » ègziste pas ou ben el est pas locala.',
+'userrights-nologin' => 'Vos vos dête [[Special:UserLogin|branchiér]] avouéc un compto d’administrator por balyér des drêts d’utilisator.',
+'userrights-notallowed' => 'Voutron compto at pas la pèrmission de balyér ou ben enlevar des drêts d’utilisator.',
 'userrights-changeable-col' => 'Les tropes que vos pouede changiér',
 'userrights-unchangeable-col' => 'Les tropes que vos pouede pas changiér',
 
 # Groups
 'group' => 'Tropa :',
-'group-user' => 'Usanciérs',
-'group-autoconfirmed' => 'Usanciérs encartâs',
-'group-bot' => 'Bots',
+'group-user' => 'Utilisators',
+'group-autoconfirmed' => 'Utilisators ôtoconfirmâs',
+'group-bot' => 'Robots',
 'group-sysop' => 'Administrators',
 'group-bureaucrat' => 'Grata-papiérs',
 'group-suppress' => 'Supèrvisors',
@@ -1639,15 +1642,13 @@ Ceta enformacion serat publica.',
 'right-sendemail' => 'Mandar un mèssâjo ux ôtros usanciérs',
 'right-passwordreset' => 'Vêre los mèssâjos de remisa a zérô des contresegnos',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Jornal de les crèacions de comptos usanciér',
+'newuserlogpagetext' => 'O est un jornal de les crèacions de comptos usanciér.',
+
 # User rights log
 'rightslog' => 'Jornal des changements de statut d’usanciér',
 'rightslogtext' => 'Vê-que lo jornal des changements de statut d’usanciér.',
-'rightslogentry' => 'at changiê los drêts de l’utilisator « $1 » de $2 a $3',
-'rightslogentry-autopromote' => 'est étâ nomâ ôtomaticament de $2 a $3',
-'logentry-rights-rights' => '$1 at changiê l’apartegnence a la tropa por « $3 » de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 at changiê l’apartegnence a la tropa por « $3 »',
-'logentry-rights-autopromote' => '$1 est étâ nomâ ôtomaticament de $4 a $5',
-'rightsnone' => '(nion)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'liére cela pâge',
@@ -2304,10 +2305,6 @@ Protocolos recognus : <code>$1</code> (apondéd gins de cetos dedens voutra rech
 'activeusers-hidesysops' => 'Cachiér los administrators',
 'activeusers-noresult' => 'Gins d’usanciér trovâ.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Jornal de les crèacions de comptos usanciér',
-'newuserlogpagetext' => 'O est un jornal de les crèacions de comptos usanciér.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Drêts a les tropes d’usanciérs',
 'listgrouprights-summary' => 'Ceta pâge contint una lista a les tropes dèfenies sur ceti vouiqui et pués los drêts d’accès que lor sont associyês.
@@ -2443,6 +2440,8 @@ $UNWATCHURL
 
 Avis et assistance de ples :
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'fêta',
+'changed' => 'changiê',
 
 # Delete
 'deletepage' => 'Suprimar la pâge',
@@ -4130,6 +4129,10 @@ Les émâges sont montrâs dens lor plêna rèsolucion, los ôtros fichiérs son
 'logentry-newusers-create2' => 'Lo compto utilisator $3 est étâ fêt per $1',
 'logentry-newusers-autocreate' => 'Lo compto $1 at étâ fêt ôtomaticament',
 'newuserlog-byemail' => 'contresegno mandâ per mèssageria èlèctronica',
+'logentry-rights-rights' => '$1 at changiê l’apartegnence a la tropa por « $3 » de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 at changiê l’apartegnence a la tropa por « $3 »',
+'logentry-rights-autopromote' => '$1 est étâ nomâ ôtomaticament de $4 a $5',
+'rightsnone' => '(nion)',
 
 # Feedback
 'feedback-bugornote' => 'Se vos éte prèst a dècrire un problèmo tècnico en dètaly, volyéd [$1 signalar una cofierie].
index b188ba5..deadbed 100644 (file)
@@ -1243,9 +1243,11 @@ Do san jo ual iinstelangen wech.',
 'right-browsearchive' => 'Sjük stregen sidjen',
 'right-sendemail' => 'E-mails tu oudere brükere schake',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nai-önjmäldings-logbök',
+
 # 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',
@@ -1412,9 +1414,6 @@ Det beskriiwang faan't [$2 beskriiwangssidj] woort oner uunwiset.",
 'linksearch-ok' => 'Säk',
 'linksearch-line' => '$2 ferwiset üüb $1',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nai-önjmäldings-logbök',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lasmoote-list)',
 
@@ -1852,6 +1851,7 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'logentry-move-move-noredirect' => '$1 hää det sidj $3 efter $4 saner widjerfeerang fersköwen.',
 '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.',
+'rightsnone' => '(-)',
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|sekund|sekunden}}',
index 883816b..994b15b 100644 (file)
@@ -1154,11 +1154,13 @@ Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwi
 'right-siteadmin' => 'De database blokkearje en wer frij jaan',
 'right-override-export-depth' => 'Alle siden oant en mei in keppelingsdjipte fan fiif fuortskriuwe',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Ynskriuwingsloch',
+'newuserlogpagetext' => "Dit is in loch fan meidoggers dy't de lêste tiid ynskreaun binne.",
+
 # User rights log
 'rightslog' => 'Rjochten-loch',
 'rightslogtext' => 'Dit is in loch fan feroarings fan meidoggerrjochten.',
-'rightslogentry' => 'groep foar $1 feroare fan $2 yn $3',
-'rightsnone' => '(gjin)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'dizze side besjen',
@@ -1643,10 +1645,6 @@ Stipe protokollen: <code>$1</code>',
 'activeusers' => 'Aktive meidoggers',
 'activeusers-noresult' => 'Gjin meidoggers fûn.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Ynskriuwingsloch',
-'newuserlogpagetext' => "Dit is in loch fan meidoggers dy't de lêste tiid ynskreaun binne.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rjochten fan brûkersgroepen',
 'listgrouprights-summary' => 'Op dizze side steane de brûkersgroepen yn dizze wiki beskreaun, mei har derby hearrende rjochten.
@@ -1735,6 +1733,8 @@ om jo folchlistynstellings te feroarjen.
 
 Reaksjes en fierdere help:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'oanmakke',
+'changed' => 'feroare',
 
 # Delete
 'deletepage' => 'Wisk side',
@@ -2356,5 +2356,6 @@ Wolle jo de side wier op 'e nij skriuwe?",
 'revdelete-restricted' => 'hat beheinings oplein oan behearders',
 'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
 'newuserlog-byemail' => 'wachtwurd is ferstjoerd oer e-mail',
+'rightsnone' => '(gjin)',
 
 );
index 5a58386..ba39b45 100644 (file)
@@ -946,6 +946,9 @@ do chuid dreachtaí a chur i leith tusa.',
 'right-undelete' => 'Díscrios leathanach',
 'right-userrights' => 'Cur gach cearta usáideoira in eagar',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log cruthú úsáideoira',
+
 # User rights log
 'rightslog' => 'Log cearta úsáideoira',
 
@@ -1239,9 +1242,6 @@ Féach freisin ar [[Special:WantedCategories|catagóirí faoi iarraidh]].',
 # Special:ListUsers
 'listusers-submit' => 'Taispeáin',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log cruthú úsáideoira',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Ghrúpa',
 'listgrouprights-rights' => 'Cearta',
@@ -1336,6 +1336,8 @@ $UNWATCHURL
 
 Aiseolas agus a thuilleadh cabhrach:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'Chruthaigh',
+'changed' => "D'athraigh",
 
 # Delete
 'deletepage' => 'Scrios an leathanach',
index 66bfeb9..2a20940 100644 (file)
@@ -616,6 +616,9 @@ Aaramaanızın önünä ''all:'' prefiksini koyun da deneyin hepsi içlii aarama
 
 'grouppage-sysop' => '{{ns:project}}:Önderciler',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Eni kullanıcı bennemäkleri',
+
 # User rights log
 'rightslog' => 'Kullanıcı hakları jurnalı',
 
@@ -791,9 +794,6 @@ Sizin bakmaa [[Special:Watchlist|listasındaki]] sayfalar verildi '''kalın''' b
 # Special:LinkSearch
 'linksearch' => 'İç baalantlar',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Eni kullanıcı bennemäkleri',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(azaların listası)',
 
index 4c45216..1479ce5 100644 (file)
@@ -867,11 +867,12 @@ $2',
 'grouppage-sysop' => '{{ns:project}}:操作员',
 'grouppage-bureaucrat' => '{{ns:project}}:行政员',
 
+# Special:Log/newusers
+'newuserlogpage' => '新开户𠮶人名单',
+
 # User rights log
 'rightslog' => '用户权限日志',
 'rightslogtext' => '底下记到用户权限𠮶更改记录。',
-'rightslogentry' => '拿 $1 𠮶权限从 $2 改到 $3',
-'rightsnone' => '(冇)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => '编辑个页',
@@ -1229,9 +1230,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => '显示',
 'listusers-noresult' => '寻伓到用户。',
 
-# Special:Log/newusers
-'newuserlogpage' => '新开户𠮶人名单',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(成员名单)',
 
@@ -1306,6 +1304,8 @@ $NEWPAGE
 {{SITENAME}}通知系统 – 会改卟倷𠮶监视列表设置,请去 {{canonicalurl:{{#special:EditWatchlist}}}}
 
 回馈同到别𠮶说明: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '建正嘞',
+'changed' => '改卟嘞',
 
 # Delete
 'deletepage' => '删卟页面',
@@ -2260,6 +2260,9 @@ $3
 # Special:Tags
 'tag-filter' => '[[Special:Tags|标签]]过滤器:',
 
+# New logging system
+'rightsnone' => '(冇)',
+
 # Search suggestions
 'searchsuggest-search' => '寻吖',
 
index 79187c3..7a50d26 100644 (file)
@@ -889,11 +889,12 @@ $2',
 'grouppage-sysop' => '{{ns:project}}:操作員',
 'grouppage-bureaucrat' => '{{ns:project}}:行政員',
 
+# Special:Log/newusers
+'newuserlogpage' => '新開戶嗰人名單',
+
 # User rights log
 'rightslog' => '用戶許可權日誌',
 'rightslogtext' => '底下記到用戶許可權嗰更改記錄。',
-'rightslogentry' => '拿 $1 嗰許可權從 $2 改到 $3',
-'rightsnone' => '(冇)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => '編輯箇頁',
@@ -1251,9 +1252,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => '顯示',
 'listusers-noresult' => '尋伓到用戶。',
 
-# Special:Log/newusers
-'newuserlogpage' => '新開戶嗰人名單',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(成員名單)',
 
@@ -1328,6 +1326,8 @@ $NEWPAGE
 {{SITENAME}}通知系統 – 會改卟倷嗰監視列表設置,請去 {{canonicalurl:{{#special:EditWatchlist}}}}
 
 回饋同到別嗰説明: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '建正嘞',
+'changed' => '改卟嘞',
 
 # Delete
 'deletepage' => '刪卟頁面',
@@ -2282,6 +2282,9 @@ $3
 # Special:Tags
 'tag-filter' => '[[Special:Tags|標籤]]過濾器:',
 
+# New logging system
+'rightsnone' => '(冇)',
+
 # Search suggestions
 'searchsuggest-search' => '尋吖',
 
index d59ce19..7dc9d67 100644 (file)
@@ -1024,9 +1024,11 @@ Chan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.
 'grouppage-user' => '{{ns:project}}:Cleachdaichean',
 'grouppage-sysop' => '{{ns:project}}:Rianadairean',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Loga cruthachaidh de chleachdaichean',
+
 # User rights log
 'rightslog' => "Loga còraichean a' chleachdaiche",
-'rightsnone' => '(chan eil gin)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'deasaich an duilleag seo',
@@ -1179,9 +1181,6 @@ Thoir sùil air na [[Special:WantedCategories|roinntean-seòrsa a thathar 'gan i
 'linksearch' => 'Ceanglaichean dhan taobh a-muigh',
 'linksearch-line' => "Tha $1 a' ceangal an-seo o $2",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Loga cruthachaidh de chleachdaichean',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(liosta de bhuill)',
 
@@ -1555,6 +1554,9 @@ Bidh an fheadhainn eile falaichte a ghnàth.
 # Special:Tags
 'tag-filter' => 'Criathrag [[Special:Tags|Tag]]:',
 
+# New logging system
+'rightsnone' => '(chan eil gin)',
+
 # Search suggestions
 'searchsuggest-containing' => 'anns a bheil...',
 
index 77c51cc..49aa7f1 100644 (file)
@@ -356,6 +356,7 @@ $messages = array(
 'newwindow' => '(abre unha ventá nova)',
 'cancel' => 'Cancelar',
 'moredotdotdot' => 'Máis...',
+'morenotlisted' => 'Máis que non están na lista...',
 'mypage' => 'Páxina',
 'mytalk' => 'Conversa',
 'anontalk' => 'Conversa con este enderezo IP',
@@ -738,8 +739,9 @@ Por favor, agarde antes de probar outra vez.',
 'suspicious-userlogout' => 'Rexeitouse a súa petición de saír do sistema porque semella que a enviou un navegador roto ou a caché dun proxy.',
 
 # E-mail sending
-'php-mail-error-unknown' => 'Erro descoñecido na función mail() do PHP',
+'php-mail-error-unknown' => 'Erro descoñecido na función mail() do PHP.',
 'user-mail-no-addy' => 'Intentou enviar un correo sen enderezo de correo electrónico.',
+'user-mail-no-body' => 'Intentou enviar un correo baleiro ou cun corpo curto de máis.',
 
 # Change password dialog
 'resetpass' => 'Cambiar o contrasinal',
@@ -1538,15 +1540,13 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
 'right-sendemail' => 'Enviar correos electrónicos a outros usuarios',
 'right-passwordreset' => 'Ver os correos electrónicos de restablecemento de contrasinais',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Rexistro de creación de usuarios',
+'newuserlogpagetext' => 'Este é un rexistro de creación de contas de usuario.',
+
 # User rights log
 'rightslog' => 'Rexistro de dereitos de usuario',
 'rightslogtext' => 'Este é un rexistro dos cambios nos permisos de usuario.',
-'rightslogentry' => 'cambiou o grupo ao que pertence $1 de $2 a $3',
-'rightslogentry-autopromote' => 'foi promovido automaticamente de $2 a $3',
-'logentry-rights-rights' => '$1 cambiou o grupo ao que pertence $3 de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 cambiou o grupo ao que pertence $3',
-'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 a $5',
-'rightsnone' => '(ningún)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ler esta páxina',
@@ -2203,10 +2203,6 @@ Cómpre, polo menos, un dominio de nivel superior; por exemplo, "*.org".<br />
 'activeusers-hidesysops' => 'Agochar os administradores',
 'activeusers-noresult' => 'Non se atopou ningún usuario.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Rexistro de creación de usuarios',
-'newuserlogpagetext' => 'Este é un rexistro de creación de contas de usuario.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Dereitos dun usuario segundo o seu grupo',
 'listgrouprights-summary' => 'A seguinte lista mostra os grupos de usuario definidos neste wiki, cos seus dereitos de acceso asociados.
@@ -2342,6 +2338,8 @@ $UNWATCHURL
 
 Axuda:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'modificada',
 
 # Delete
 'deletepage' => 'Borrar a páxina',
@@ -2413,6 +2411,8 @@ Vexa a [[Special:ProtectedPages|lista de páxinas protexidas]] se quere obter a
 'prot_1movedto2' => 'moveu "[[$1]]" a "[[$2]]"',
 'protect-badnamespace-title' => 'Espazo de nomes que non se pode protexer',
 'protect-badnamespace-text' => 'As páxinas presentes neste espazo de nomes non se poden protexer.',
+'protect-norestrictiontypes-text' => 'Esta páxina non se pode protexer porque non hai dispoñible ningún tipo de restrición.',
+'protect-norestrictiontypes-title' => 'Páxina non protexible',
 'protect-legend' => 'Confirmar a protección',
 'protectcomment' => 'Motivo:',
 'protectexpiry' => 'Caducidade:',
@@ -3096,6 +3096,7 @@ Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está n
 'pageinfo-magic-words' => '{{PLURAL:$1|Palabra máxica|Palabras máxicas}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoría agochada|Categorías agochadas}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Modelo incluído|Modelos incluídos}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Páxina incluída|Páxinas incluídas}} ($1)',
 'pageinfo-toolboxlink' => 'Información da páxina',
 'pageinfo-redirectsto' => 'Redirixe cara a',
 'pageinfo-redirectsto-info' => 'información',
@@ -3104,6 +3105,10 @@ Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está n
 'pageinfo-protect-cascading' => 'Protección en serie activada',
 'pageinfo-protect-cascading-yes' => 'Si',
 'pageinfo-protect-cascading-from' => 'Protección en serie activada',
+'pageinfo-category-info' => 'Información da categoría',
+'pageinfo-category-pages' => 'Número de páxinas',
+'pageinfo-category-subcats' => 'Número de subcategorías',
+'pageinfo-category-files' => 'Número de ficheiros',
 
 # Skin names
 'skinname-standard' => 'Clásica',
@@ -3191,6 +3196,8 @@ O seu sistema pode quedar comprometido se o executa.",
 'minutes' => '{{PLURAL:$1|$1 minuto|$1 minutos}}',
 'hours' => '{{PLURAL:$1|$1 hora|$1 horas}}',
 'days' => '{{PLURAL:$1|$1 día|$1 días}}',
+'months' => '{{PLURAL:$1|$1 mes|$1 meses}}',
+'years' => '{{PLURAL:$1|$1 ano|$1 anos}}',
 'ago' => 'hai $1',
 'just-now' => 'agora mesmo',
 
@@ -3955,6 +3962,10 @@ As imaxes móstranse na súa resolución completa; outros tipos de ficheiros in
 'logentry-newusers-create2' => '$1 creou a conta de usuario $3',
 'logentry-newusers-autocreate' => 'A conta de usuario $1 creouse automaticamente',
 'newuserlog-byemail' => 'contrasinal enviado por correo electrónico',
+'logentry-rights-rights' => '$1 cambiou o grupo ao que pertence $3 de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 cambiou o grupo ao que pertence $3',
+'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 a $5',
+'rightsnone' => '(ningún)',
 
 # Feedback
 'feedback-bugornote' => 'Se está listo para describir un problema técnico en detalle, [$1 informe do erro].
@@ -4009,7 +4020,7 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'api-error-overwrite' => 'Non está permitido sobrescribir un ficheiro existente.',
 'api-error-stashfailed' => 'Erro interno: O servidor non puido almacenar os ficheiros temporais.',
 'api-error-timeout' => 'O servidor non respondeu no tempo esperado.',
-'api-error-unclassified' => 'Houbo un erro descoñecido',
+'api-error-unclassified' => 'Houbo un erro descoñecido.',
 'api-error-unknown-code' => 'Erro descoñecido: "$1"',
 'api-error-unknown-error' => 'Erro interno: Houbo un problema ao intentar cargar o ficheiro.',
 'api-error-unknown-warning' => 'Advertencia descoñecida: $1',
index 466e3de..20117a8 100644 (file)
@@ -1045,11 +1045,13 @@ $1",
 'right-siteadmin' => 'Φράττειν καὶ ἀποφράττειν τὴν βάσιν δεδομένων',
 'right-override-export-depth' => 'Ἐξάγειν δέλτους περιλαμβανομένων συνδεδεμένων δέλτων ἕως βάθος τι 5 ἐπιπέδων',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Κατάλογος ποιήσεων λογισμῶν.',
+'newuserlogpagetext' => 'Ὅδε ἐστὶν κατάλογος τις τῶν ποιήσεων λογισμῶν.',
+
 # User rights log
 'rightslog' => 'Κατάλογος δικαιωμάτων χρωμένων',
 'rightslogtext' => 'Κατάλογος ἀλλαγῶν τῶν δικαιωμάτων χρωμένων.',
-'rightslogentry' => 'Μετεβλήθη ἡ μελότης (δικαιώματα μέλους) διὰ τὸν $1 ἐκ τῆς $2 εἰς τὴν $3',
-'rightsnone' => '(Οὐδέν)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ἀναγιγνώσκειν τήνδε τὴν δέλτον',
@@ -1483,10 +1485,6 @@ $1",
 'activeusers-hidesysops' => 'Κρύπτειν ἐπιτρόπους',
 'activeusers-noresult' => 'Οὐδεὶς χρώμενος εὑρέθη.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Κατάλογος ποιήσεων λογισμῶν.',
-'newuserlogpagetext' => 'Ὅδε ἐστὶν κατάλογος τις τῶν ποιήσεων λογισμῶν.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Δικαιώματα ὁμάδος χρωμένου',
 'listgrouprights-group' => 'Ὁμάς',
@@ -1588,6 +1586,8 @@ $NEWPAGE
 
 Ἀνάδρασις καὶ περαιτέρω βοήθεια:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ποιηθέν',
+'changed' => 'ἠλλαγμένη',
 
 # Delete
 'deletepage' => 'Διαγράφειν τὴν δέλτον',
@@ -2702,6 +2702,7 @@ $5
 'revdelete-restricted' => 'ἐφηρμοσμένοι περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
 'revdelete-unrestricted' => 'αἱρεθέντες περιορισμοὶ διὰ τοὺς ἐπιτρόπους',
 'newuserlog-byemail' => 'σύνθημα ἀπεσταλμένον μέσῳ ἠλ-ταχυδρομείου',
+'rightsnone' => '(Οὐδέν)',
 
 # Feedback
 'feedback-cancel' => 'Ἀκυροῦν',
index 3767708..b456087 100644 (file)
@@ -1405,15 +1405,13 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'right-sendemail' => 'E-Mail an anderi Benutzer schicke',
 'right-passwordreset' => 'Passwort vun eme Benutzer zruggsetze',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nejaamäldigs-Logbuech',
+'newuserlogpagetext' => 'Des isch e Logbuech fir nej aagleiti Benutzerchonte.',
+
 # User rights log
 'rightslog' => 'Benutzerrächt-Logbuech',
 'rightslogtext' => 'Des ischs Logbuech vun de Änderunge on Bnutzerrechte.',
-'rightslogentry' => 'het d Benutzerrächt fir „$1“ vu „$2“ uf „$3“ gänderet',
-'rightslogentry-autopromote' => 'd Zueornig zue dr Benutzergruppe isch automatisch vu $2 in $3 gänderet wore',
-'logentry-rights-rights' => '$1 het d Gruppezuegherigkeit fir $3 vu $4 uf $5 gänderet',
-'logentry-rights-rights-legacy' => '$1 het d Gruppezuegherigkeit fir $3 gänderet',
-'logentry-rights-autopromote' => '$1 isch automatisch vu $4 zue $5 zuegordnet wore',
-'rightsnone' => '(keini)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'die Syte z läse',
@@ -2040,10 +2038,6 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
 'activeusers-hidesysops' => 'Ammanne (Administratore) uusblände',
 'activeusers-noresult' => 'Kei Benutzer gfunde.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nejaamäldigs-Logbuech',
-'newuserlogpagetext' => 'Des isch e Logbuech fir nej aagleiti Benutzerchonte.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Benutzergruppe-Rächt',
 'listgrouprights-summary' => 'Des isch e Liste vu dr Benutzergruppe, wu in däm Wiki definiert sin, un dr Rächt, wu dermit verbunde sin.
@@ -2170,6 +2164,8 @@ Go d Yystellige vu Dyyre Beobachtigslischte ändere, gang uf {{canonicalurl:{{#s
 Go d Syte us Dyyre Beobachtigslischte uuseneh, gang uf $UNWATCHURL
 
 Ruckmäldig un wyteri Hilf: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'aagleit',
+'changed' => 'gänderet',
 
 # Delete
 'deletepage' => 'Syte lösche',
@@ -3686,6 +3682,10 @@ Di aagfrogt Datei wird diräkt dargstellt bzw. mit dr verchnipfte Aawändig gsta
 'logentry-newusers-create2' => 'Benutzerkonto $3 isch aalgeit wore vu $1',
 'logentry-newusers-autocreate' => 'S Benutzerchonto $1 isch automatisch erstellt worde',
 'newuserlog-byemail' => 's Passwort isch per E-Mail gschickt wore',
+'logentry-rights-rights' => '$1 het d Gruppezuegherigkeit fir $3 vu $4 uf $5 gänderet',
+'logentry-rights-rights-legacy' => '$1 het d Gruppezuegherigkeit fir $3 gänderet',
+'logentry-rights-autopromote' => '$1 isch automatisch vu $4 zue $5 zuegordnet wore',
+'rightsnone' => '(keini)',
 
 # Feedback
 'feedback-bugornote' => 'Wän Du detailliert e tächnisch Probläm witt bschryybe, no mäld bitte [$1 ne Fähler].
index 638f508..b5e0fb2 100644 (file)
@@ -1452,12 +1452,13 @@ HTML નાકું ચકાસો',
 'right-sendemail' => ' અન્ય સભ્યોને ઈ-મેલ મોકલો',
 'right-passwordreset' => 'પાસવર્ડ રીસેટ ઇ-મેઇલ્સ જુઓ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'નવા બનેલા સભ્યોનો લૉગ',
+'newuserlogpagetext' => 'આ સભ્યોની રચનાનો લોગ છે.',
+
 # User rights log
 'rightslog' => 'સભ્ય હક્ક માહિતિ પત્રક',
 'rightslogtext' => 'સભ્યના બદલાયેલ હક્કોની આ સંપાદન યાદિ છે .',
-'rightslogentry' => '$2 થી $3 સુધી $1 માટે બદલાયેલું સમૂહ સભ્યપદ',
-'rightslogentry-autopromote' => 'આપોઆપ $2 માં થી $3 માં બઢતી થઇ',
-'rightsnone' => '(કંઈ નહી)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'આ પાનું વાંચો.',
@@ -2087,10 +2088,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'activeusers-hidesysops' => 'પ્રબંધકો છુપાવો',
 'activeusers-noresult' => 'કોઇ સક્રીય સભ્ય ન મળ્યો',
 
-# Special:Log/newusers
-'newuserlogpage' => 'નવા બનેલા સભ્યોનો લૉગ',
-'newuserlogpagetext' => 'આ સભ્યોની રચનાનો લોગ છે.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'સભ્ય જૂથ ના હક્કો',
 'listgrouprights-summary' => 'નીચે આ વિકિ પર વ્યાખ્યાયિત સભ્ય જૂથોની યાદી, તેમની સાથે સંકળાયેલા હક્કો સાથે આપી છે.
@@ -2218,6 +2215,8 @@ $UNWATCHURL
 
 મંતવ્યો અને વધુ મદદ માટે 
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'બનાવ્યું',
+'changed' => 'બદલ્યું',
 
 # Delete
 'deletepage' => 'પાનું હટાવો',
@@ -3760,6 +3759,7 @@ $5
 'logentry-newusers-create2' => 'સભ્ય ખાતું $3 $1 વડે બનાવવામાં આવ્યું',
 'logentry-newusers-autocreate' => 'એકાઉન્ટ $1 બનાવનાર આપોઆપ',
 'newuserlog-byemail' => 'ગુપ્ત સંજ્ઞા ઇ-મેલ દ્વારા મોકલાઇ છે.',
+'rightsnone' => '(કંઈ નહી)',
 
 # Feedback
 'feedback-bugornote' => 'જો તમે તકનીકી સમસ્યા વર્ણવવા માંગતા હોય તો  કૃપયા [$1 report a bug] એ બગ અહીં નોંધાવો.
index 02ae94e..0eaceca 100644 (file)
@@ -374,6 +374,9 @@ Ku gwada tare da amfani da \"all:\" don bincikar duka shafunan (har da shafunan
 
 'grouppage-sysop' => '{{ns:project}}:Masu hukunci',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Rajistan sabbin akwantoci',
+
 # User rights log
 'rightslog' => "Rajistan bayar da izini ga ma'aikata",
 
@@ -483,9 +486,6 @@ Ku gwada tare da amfani da \"all:\" don bincikar duka shafunan (har da shafunan
 # Special:ListUsers
 'listusers-submit' => 'Nuna',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Rajistan sabbin akwantoci',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(jerin mambobi)',
 
index 7af6014..d66885c 100644 (file)
@@ -715,11 +715,13 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'grouppage-bot' => '{{ns:project}}:Kî-hi-ngìn',
 'grouppage-sysop' => '{{ns:project}}:Kón-lî-yèn',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Sîn-chin yung-fu miàng-chhak',
+'newuserlogpagetext' => 'Liá-he yit-ke chui-khiun pûn chhóng-kien yung-fu ke ngit-ki.',
+
 # User rights log
 'rightslog' => 'Yung-fu khièn-han ngit-ki',
 'rightslogtext' => 'Yî-ha ki-liu̍k yung-fu khièn-han ke kiên-kói ki-liu̍k.',
-'rightslogentry' => 'Chiong $1 ke khièn-han chhiùng $2 kói-vi $3',
-'rightsnone' => '(mò)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'phiên-siá pún-chông',
@@ -1003,10 +1005,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Hién-sṳ',
 'listusers-noresult' => 'Cháu put-to yung-fu.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Sîn-chin yung-fu miàng-chhak',
-'newuserlogpagetext' => 'Liá-he yit-ke chui-khiun pûn chhóng-kien yung-fu ke ngit-ki.',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(sṳ̀n-yèn chhîn-tân)',
 
@@ -1067,6 +1065,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'enotif_lastdiff' => 'Kiám-chhà kiên-kói chhiáng chhâm-siòng $1.',
 'enotif_anon_editor' => 'ngia̍k-miàng yung-fu $1',
 'enotif_body' => 'Chhîn-oi ke $WATCHINGUSERNAME, $PAGEEDITOR yí-kîn chhai $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}} ke $PAGETITLE vùn-chông, chhiáng-to $PAGETITLE_URL kiám-sṳ siên-chhièn pán-pún.  $NEWPAGE phiên-si̍p chak-yeu: $PAGESUMMARY $PAGEMINOREDIT lièn-kiê chhṳ́ phiên-si̍p-chá: email: $PAGEEDITOR_EMAIL pún-chham: $PAGEEDITOR_WIKI chhai ngì fóng-mun chhṳ́-chông chṳ̂-chhièn, chiông-lòi ke kiên-kói vù-nèn hiong ngì thûng-tî. Ngì khó-yî chhûng-sat ngì só-yû kam-sṳ vùn-chông ke thûng-tî phêu-ki. {{SITENAME}} thûng-tî ne-thúng -- yeu kói-pien ngì-ke kam-sṳ lie̍t-péu sat-thin, chhiáng chhâm-siòng {{canonicalurl:{{#special:EditWatchlist}}}} chin-yit-phu ke pông-chhu: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'Yí-kîn kien-li̍p',
+'changed' => 'siû-kói liáu',
 
 # Delete
 'deletepage' => 'Chhù-thet hong-mien',
@@ -1668,5 +1668,6 @@ Sòn-chhṳ phêu-chún yi-liau.',
 # New logging system
 'revdelete-restricted' => 'yí-kîn yin-yung han-tsṳ tsṳ tshâu-tsok-yèn',
 'revdelete-unrestricted' => 'yí-kîn yì-tshù yû-kûan tshâu-tsok-yè ke han-tsṳ',
+'rightsnone' => '(mò)',
 
 );
index 1008889..b8b2a75 100644 (file)
@@ -374,7 +374,7 @@ $messages = array(
 'tog-previewontop' => 'הצגת תצוגה מקדימה לפני תיבת העריכה (או: אחריה)',
 'tog-previewonfirst' => 'הצגת תצוגה מקדימה בעריכה ראשונה',
 'tog-nocache' => 'מניעת אחסון הדפים בזיכרון המטמון בדפדפן',
-'tog-enotifwatchlistpages' => '×\9cש×\9c×\95×\97 ×\90×\9c×\99×\99 ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\9b×\90שר × ×¢×©×\94 ×©×\99× ×\95×\99 ×\91×\93×£ ×\90×\95 ×\91קובץ ברשימת המעקב שלי',
+'tog-enotifwatchlistpages' => '×\9cש×\9c×\95×\97 ×\90×\9c×\99×\99 ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\9b×\90שר ×\9eשתנ×\94 ×\93×£ ×\90×\95 קובץ ברשימת המעקב שלי',
 'tog-enotifusertalkpages' => 'לשלוח אליי דואר אלקטרוני כאשר נעשה שינוי בדף שיחת המשתמש שלי',
 'tog-enotifminoredits' => 'לשלוח אליי דואר אלקטרוני גם על עריכות משניות של דפים וקבצים',
 'tog-enotifrevealaddr' => 'חשיפת כתובת הדוא"ל שלך בהודעות דוא"ל',
@@ -485,6 +485,7 @@ $messages = array(
 'newwindow' => '(נפתח בחלון חדש)',
 'cancel' => 'ביטול / יציאה',
 'moredotdotdot' => 'עוד…',
+'morenotlisted' => 'עוד פריטים שאינם ברשימה…',
 'mypage' => 'דף משתמש',
 'mytalk' => 'שיחה',
 'anontalk' => 'השיחה עבור IP זה',
@@ -866,7 +867,8 @@ $2',
 
 # E-mail sending
 'php-mail-error-unknown' => 'שגיאה לא ידועה בפונקציה mail()‎ של PHP',
-'user-mail-no-addy' => 'ניסיון לשלוח דוא"ל ללא כתובת דוא"ל',
+'user-mail-no-addy' => 'ניסיון לשלוח דוא"ל ללא כתובת דוא"ל.',
+'user-mail-no-body' => 'ניסיון לשלוח דוא"ל עם תוכן ריק או קצר מאוד.',
 
 # Change password dialog
 'resetpass' => 'שינוי סיסמה',
@@ -1110,7 +1112,7 @@ $2
 'template-protected' => '(מוגנת)',
 'template-semiprotected' => '(מוגנת חלקית)',
 'hiddencategories' => 'דף זה כלול ב{{PLURAL:$1|קטגוריה מוסתרת אחת|־$1 קטגוריות מוסתרות}}:',
-'edittools' => '<!-- הטקסט הנכתב כאן יוצג מתחת לטפסי עריכת דפים והעלאת קבצים, ולפיכך ניתן לכתוב להציג בו תווים קשים לכתיבה, קטעים מוכנים של טקסט ועוד. -->',
+'edittools' => '<!-- ×\94×\98קס×\98 ×\94× ×\9bת×\91 ×\9b×\90×\9f ×\99×\95צ×\92 ×\9eת×\97ת ×\9c×\98×\95פס×\99 ×¢×¨×\99×\9bת ×\93פ×\99×\9d ×\95×\94×¢×\9c×\90ת ×§×\91צ×\99×\9d, ×\95×\9cפ×\99×\9b×\9a × ×\99ת×\9f ×\9c×\9bת×\95×\91 ×\9c×\94צ×\99×\92 ×\91×\95 ×ª×\95×\95×\99×\9d ×§×©×\99×\9d ×\9c×\9bת×\99×\91×\94, ×§×\98×¢×\99×\9d ×\9e×\95×\9b× ×\99×\9d ×©×\9c ×\98קס×\98 ×\95×¢×\95×\93. -->',
 'nocreatetext' => 'אתר זה מגביל את האפשרות ליצור דפים חדשים. באפשרותכם לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון]].',
 'nocreate-loggedin' => 'אינכם מורשים ליצור דפים חדשים.',
 'sectioneditnotsupported-title' => 'עריכת פסקאות אינה נתמכת',
@@ -1661,15 +1663,13 @@ $1",
 'right-sendemail' => 'שליחת דואר אלקטרוני למשתמשים אחרים',
 'right-passwordreset' => 'צפייה בדואר אלקטרוני של איפוס סיסמה',
 
+# Special:Log/newusers
+'newuserlogpage' => 'יומן רישום משתמשים',
+'newuserlogpagetext' => 'זהו יומן המכיל הרשמות של משתמשים.',
+
 # User rights log
 'rightslog' => 'יומן תפקידים',
 'rightslogtext' => 'זהו יומן השינויים בתפקידי המשתמשים.',
-'rightslogentry' => 'שינה את ההרשאות של $1 מ$2 ל$3',
-'rightslogentry-autopromote' => 'קודם אוטומטית מ$2 ל$3',
-'logentry-rights-rights' => '$1 שינה את ההרשאות של $3 מ$4 ל$5',
-'logentry-rights-rights-legacy' => '$1 שינה את ההרשאות של $3',
-'logentry-rights-autopromote' => '$1 קודם אוטומטית מ$4 ל$5',
-'rightsnone' => '(כלום)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'לקרוא דף זה',
@@ -2322,10 +2322,6 @@ $1',
 'activeusers-hidesysops' => 'הסתרת מפעילי מערכת',
 'activeusers-noresult' => 'לא נמצאו משתמשים.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'יומן רישום משתמשים',
-'newuserlogpagetext' => 'זהו יומן המכיל הרשמות של משתמשים.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'רשימת הרשאות לקבוצה',
 'listgrouprights-summary' => 'זוהי רשימה של קבוצות המשתמש המוגדרות באתר זה, עם ההרשאות של כל אחת.
@@ -2460,6 +2456,8 @@ $UNWATCHURL
 
 למשוב ולעזרה נוספת:
 {{canonicalurl::{{MediaWiki:Helppage}}}}',
+'created' => 'נוצר',
+'changed' => 'שונה',
 
 # Delete
 'deletepage' => 'מחיקה',
@@ -2529,6 +2527,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] הועבר לשם [[$2]]',
 'protect-badnamespace-title' => 'מרחב שם שבו לא ניתן להגן על דפים',
 'protect-badnamespace-text' => 'לא ניתן להגן על דפים במרחב שם זה.',
+'protect-norestrictiontypes-text' => 'לא ניתן להגן על דף זה כי אין סוגי הגנה זמינים.',
+'protect-norestrictiontypes-title' => 'דף שלא ניתן להגן עליו',
 'protect-legend' => 'אישור הפעלת ההגנה',
 'protectcomment' => 'סיבה:',
 'protectexpiry' => 'פקיעת ההגנה:',
@@ -3212,6 +3212,7 @@ $1',
 'pageinfo-magic-words' => '{{PLURAL:$1|מילת קסם|מילות קסם}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|קטגוריה מוסתרת|קטגוריות מוסתרות}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|תבנית מוכללת|תבניות מוכללות}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|דף|דפים}} שמוכלל בהם ($1)',
 'pageinfo-toolboxlink' => 'מידע על הדף',
 'pageinfo-redirectsto' => 'מפנה אל',
 'pageinfo-redirectsto-info' => 'מידע',
@@ -3220,6 +3221,10 @@ $1',
 'pageinfo-protect-cascading' => 'מופעלת הגנה מדורגת מכאן',
 'pageinfo-protect-cascading-yes' => 'כן',
 'pageinfo-protect-cascading-from' => 'דף זה מוגן בגלל הגנה מדורגת על',
+'pageinfo-category-info' => 'מידע על הקטגוריה',
+'pageinfo-category-pages' => 'מספר הדפים',
+'pageinfo-category-subcats' => 'מספר קטגוריות המשנה',
+'pageinfo-category-files' => 'מספר הקבצים',
 
 # Skin names
 'skinname-standard' => 'קלאסי',
@@ -3303,10 +3308,16 @@ $1',
 'sp-newimages-showfrom' => 'הצגת קבצים חדשים החל מ־$2, $1',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds-abbrev' => '{{PLURAL:$1|שנייה|$1 שניות}}',
+'minutes-abbrev' => "{{PLURAL:$1|דקה|$1 דק'}}",
+'hours-abbrev' => '{{PLURAL:$1|שעה|שעתיים|$1 שעות}}',
+'days-abbrev' => '{{PLURAL:$1|יום|יומיים|$1 ימים}}',
 'seconds' => '{{PLURAL:$1|שנייה|$1 שניות}}',
 'minutes' => '{{PLURAL:$1|דקה|$1 דקות}}',
 'hours' => '{{PLURAL:$1|שעה|שעתיים|$1 שעות}}',
 'days' => '{{PLURAL:$1|יום|יומיים|$1 ימים}}',
+'months' => '{{PLURAL:$1|חודש|חודשיים|$1 חודשים}}',
+'years' => '{{PLURAL:$1|שנה|שנתיים|$1 שנים}}',
 'ago' => 'לפני $1',
 'just-now' => 'לפני זמן קצר',
 
@@ -4124,6 +4135,10 @@ $5
 'logentry-newusers-create2' => 'חשבון המשתמש $3 נוצר על ידי $1',
 'logentry-newusers-autocreate' => 'חשבון המשתמש $1 נוצר אוטומטית',
 'newuserlog-byemail' => 'הסיסמה נשלחה בדוא"ל',
+'logentry-rights-rights' => '$1 שינה את ההרשאות של $3 מ$4 ל$5',
+'logentry-rights-rights-legacy' => '$1 שינה את ההרשאות של $3',
+'logentry-rights-autopromote' => '$1 קודם אוטומטית מ$4 ל$5',
+'rightsnone' => '(כלום)',
 
 # Feedback
 'feedback-bugornote' => 'אם אתם מוכנים לתאר בעיה טכנית בפרטים, אנא [$1 דווחו על באג].
index 25a34bb..821791e 100644 (file)
@@ -313,7 +313,7 @@ $messages = array(
 'newwindow' => '(नई विंडो में खुलता है)',
 'cancel' => 'रद्द करें',
 'moredotdotdot' => 'और...',
-'mypage' => 'मà¥\87रा à¤ªà¥\83षà¥\8dठ',
+'mypage' => 'पृष्ठ',
 'mytalk' => 'वार्ता',
 'anontalk' => 'इस आइ॰पी के लिये वार्ता',
 'navigation' => 'भ्रमण',
@@ -335,7 +335,7 @@ $messages = array(
 'vector-action-move' => 'स्थानांतरण करें',
 'vector-action-protect' => 'सुरक्षित करें',
 'vector-action-undelete' => 'हटाना वापस लें',
-'vector-action-unprotect' => 'सà¥\81रà¤\95à¥\8dषा à¤¹à¤\9fाà¤\8fà¤\81',
+'vector-action-unprotect' => 'सà¥\81रà¤\95à¥\8dषा à¤¬à¤¦à¤²à¥\87à¤\82',
 'vector-simplesearch-preference' => 'संवर्धित खोज सुझाव सक्षम करें। (केवल वॅक्टर स्किन हेतु)',
 'vector-view-create' => 'बनाएँ',
 'vector-view-edit' => 'सम्पादन',
@@ -556,10 +556,11 @@ $1',
 'actionthrottled' => 'कार्य समाप्त कर दिया गया है',
 'actionthrottledtext' => 'स्पैम की रोकथाम के लिये, यह क्रिया इतने कम समय में एक सीमा से अधिक बार करने से मनाई है, और आप इस सीमा को पार कर चुके हैं।
 कृपया कुछ समय बाद पुन: यत्न करें।',
-'protectedpagetext' => 'यह पृष्ठ संपादनों से सुरक्षित किया हुआ है।',
+'protectedpagetext' => 'यह à¤ªà¥\83षà¥\8dठ à¤¸à¤\82पादनà¥\8bà¤\82 à¤\8fवà¤\82 à¤\85नà¥\8dय à¤\95ारà¥\8dयà¥\8bà¤\82 à¤¸à¥\87 à¤¸à¥\81रà¤\95à¥\8dषित à¤\95िया à¤¹à¥\81à¤\86 à¤¹à¥\88।',
 'viewsourcetext' => 'आप इस पृष्ठ का स्रोत देख सकते हैं और उसकी नकल उतार सकते हैं:',
 'viewyourtext' => "आप इस पृष्ठ में ''अपने सम्पादन'' का स्रोत देख सकते हैं और उसकी नकल उतार सकते हैं:",
-'protectedinterface' => 'यह पृष्ठ सॉफ्टवेयर का इंटरफ़ेस पाठ देता है, और इसे गलत प्रयोग से बचाने के लिये सुरक्षित कर दिया गया है।',
+'protectedinterface' => 'यह पृष्ठ इस विकी के सॉफ़्टवेयर का इंटरफ़ेस पाठ देता है, और इसे गलत प्रयोग से बचाने के लिये सुरक्षित कर दिया गया है।
+सभी विकियों के लिए अनुवाद जोड़ने या बदलने के लिए कृपया मीडियाविकि के क्षेत्रीयकरण प्रकल्प [//translatewiki.net/ translatewiki.net] का प्रयोग करें।',
 'editinginterface' => "'''चेतावनी:''' आप एक ऐसे पृष्ठ को बदल रहे हैं जो सॉफ़्टवेयर का इंटरफ़ेस पाठ प्रदान करता है।
 इस पृष्ठ को बदलने से अन्य सदस्यों को प्रदर्शित इंटरफ़ेस की शक्लोसूरत में बदलाव आएगा। अनुवादों के लिए कृपया [//translatewiki.net/wiki/Main_Page?setlang=hi translatewiki.net] का प्रयोग करें, यह मीडियाविकि की क्षेत्रीयकरण परियोजना है।",
 'sqlhidden' => '(छुपाई हुई SQL पृच्छा)',
@@ -585,6 +586,9 @@ $2',
 
 आप बेनामी हो के {{SITENAME}} का प्रयोग जारी रख सकते हैं, या उसी या किसी और सदस्य के तौर पर <span class='plainlinks'>[$1 फिर से सत्रारंभ]</span> कर सकते हैं।
 ध्यान दें कि जब तक आप अपनी ब्राउज़र कैशे खाली नहीं करते हैं, कुछ पृष्ठ अब भी ऐसे दिख सकते हैं जैसे कि आपका सत्र अभी भी चल रहा हो।",
+'welcomeuser' => 'आपका स्वागत है, $1!',
+'welcomecreation-msg' => 'आपका खाता बना दिया गया है।
+अपनी [[Special:Preferences|{{SITENAME}} वरीयताएँ]] बदलना ना भूलियेगा।',
 'yourname' => 'सदस्यनाम:',
 'yourpassword' => 'कूटशब्द:',
 'yourpasswordagain' => 'कूटशब्द दुबारा लिखें:',
@@ -740,6 +744,7 @@ $2
 'changeemail-oldemail' => 'वर्तमान ई-मेल पता:',
 'changeemail-newemail' => 'नया ई-मेल पता:',
 'changeemail-none' => '(कोई नहीं)',
+'changeemail-password' => 'आपका {{SITENAME}} पासवर्ड:',
 'changeemail-submit' => 'ई-मेल बदलें',
 'changeemail-cancel' => 'रद्द करें',
 
@@ -839,7 +844,7 @@ $2
 या इस पृष्ठ को [{{fullurl:{{FULLPAGENAME}}|action=edit}} सम्पादित] कर सकते हैं</span>।',
 'noarticletext-nopermission' => 'फ़िलहाल इस पृष्ठ पर कोई सामग्री नहीं है।
 आप अन्य पृष्ठों में [[Special:Search/{{PAGENAME}}|इस शीर्षक की खोज]] कर सकते हैं,
-या <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित लॉग खोज सकते हैं]</span>।',
+या <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित लॉग खोज सकते हैं]</span>, परन्तु आपको यह पृष्ठ बनाने की अनुमति नहीं है।',
 'userpage-userdoesnotexist' => 'सदस्य खाता "$1" पंजीकृत नहीं है।
 कृपया जाँच लें कि आप यह पृष्ठ संपादित अथवा निर्मित करना चाहते हैं या नहीं।',
 'userpage-userdoesnotexist-view' => 'सदस्य "$1" पंजीकृत नहीं है।',
@@ -849,7 +854,6 @@ $2
 * '''फ़ायरफ़ॉक्स / सफ़ारी:''' ''Reload'' (रीलोड) दबाते समय ''Shift'' (शिफ़्ट) दबा के रखें, या फिर ''Ctrl-F5'' (कंट्रोल-F5) या ''Ctrl-R'' (कंट्रोल-R) दबाएँ (मैक पर ''⌘-R'')
 * '''गूगल क्रोम:''' ''Ctrl-Shift-R'' (कंट्रोल-शिफ़्ट-R) दबाएँ (मैक पर ''⌘-Shift-R'')
 * '''इन्टर्नेट एक्सप्लोरर:''' ''Ctrl'' (कंट्रोल) दबाकर ''Refresh'' (रिफ़्रेश) करें या ''Ctrl-F5'' (कंट्रोल-F5) दबाएँ
-* '''कांक्वरर:''' ''Reload'' (रीलोड) या \"F5\" दबाएँ
 * '''ऑपेरा:''' ''Tools → Preferences'' (उपकरण → वरीयताएँ) में कैश साफ़ करें",
 'usercssyoucanpreview' => "'''टिप''': संजोने से पहले अपनी नई सी॰एस॰एस को जाँचने के लिये \"{{int:showpreview}}\" बटन का प्रयोग करें।",
 'userjsyoucanpreview' => "'''टिप''': संजोने से पहले अपनी नई जावास्क्रिप्ट को जाँचने के लिये \"{{int:showpreview}}\" बटन का प्रयोग करें।",
@@ -867,7 +871,7 @@ $2
 'note' => "'''सूचना:'''",
 'previewnote' => "'''याद रखें, यह केवल एक झलक है।'''
 आपके बदलाव अभी तक संजोये नहीं गए हैं!",
-'continue-editing' => 'सà¤\82पादन à¤\9cारà¥\80 à¤°à¤\96à¥\87à¤\82',
+'continue-editing' => 'सà¤\82पादन à¤\95à¥\8dषà¥\87तà¥\8dर à¤\95à¥\8b à¤\9cाà¤\8fà¤\81',
 'previewconflict' => 'यह झलक ऊपरी पाठ सम्पादन क्षेत्र में हुए बदलाव दिखाती है, और यदि आप अभी संजोते हैं तो यही पाठ संजोया जाएगा।',
 'session_fail_preview' => "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''
 कृपया पुन: यत्न करें।
@@ -1102,9 +1106,10 @@ $1",
 'revdelete-concurrent-change' => '$2, $1 वाले मद को बदलते समय त्रुटि आई: प्रतीत होता है कि आपके द्वारा बदलने के दौरान किसी और ने इसमें बदलाव कर दिए हैं।
 कृपया लॉग देख लें।',
 'revdelete-only-restricted' => '$2, $1 की तिथि के आइटम को छुपाने में त्रुटि: आप अन्य दृश्यता विकल्पों को चुने बिना प्रबंधकों की दृष्टि से आइटमों को छुपा नहीं सकते।',
-'revdelete-reason-dropdown' => '*मिटाने के आम कारण
+'revdelete-reason-dropdown' => '*हटाने के आम कारण
 ** सर्वाधिकार (कॉपीराइट) उल्लंघन
-** अनुपयुक्त निजी जानकारी
+** अनुपयुक्त टिप्पणी या निजी जानकारी
+** अनुपयुक्त सदस्यनाम
 ** मानहानिकारक जानकारी',
 'revdelete-otherreason' => 'अन्य/अतिरिक्त कारण:',
 'revdelete-reasonotherlist' => 'अन्य कारण',
@@ -1461,12 +1466,13 @@ HTML टैग की जाँच करें।',
 'right-sendemail' => 'अन्य सदस्यों को ई-मेल भेजें',
 'right-passwordreset' => 'कूटशब्द रीसेट ई-मेल देखें',
 
+# Special:Log/newusers
+'newuserlogpage' => 'सदस्य खाता निर्माण लॉग',
+'newuserlogpagetext' => 'यह सदस्य खातों के निर्माण का लॉग है।',
+
 # User rights log
 'rightslog' => 'सदस्य अधिकार सूची',
 'rightslogtext' => 'यह सदस्य अधिकारों में हुए बदलावों की सूची है।',
-'rightslogentry' => '$1 की समूह सदस्यता $2 से $3 को बदली',
-'rightslogentry-autopromote' => 'स्वचालित रूप से $2 से $3 को पदोन्नत हुआ था',
-'rightsnone' => '(कोई नहीं)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'इस पृष्ठ को पढ़ने',
@@ -1525,7 +1531,7 @@ HTML टैग की जाँच करें।',
 'rcshowhidepatr' => 'जाँचे हुए सम्पादन $1',
 'rcshowhidemine' => 'मेरे बदलाव $1',
 'rclinks' => 'पिछले $2 दिनों में हुए $1 बदलाव दिखाएँ<br />$3',
-'diff' => 'फ़रà¥\8dà¤\95',
+'diff' => 'à¤\85à¤\82तर',
 'hist' => 'इतिहास',
 'hide' => 'छिपाएँ',
 'show' => 'दिखाएँ',
@@ -1940,8 +1946,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 
 'disambiguations' => 'बहुविकल्पी पृष्ठों से जुड़ते पृष्ठ',
 'disambiguationspage' => 'Template:बहुविकल्पी',
-'disambiguations-text' => "निम्नांकित पृष्ठ '''बहुविकल्पी पृष्ठों''' से जुड़ते हैं।
-à¤\87नà¥\8dहà¥\87à¤\82 à¤\89पयà¥\81à¤\95à¥\8dत à¤µà¤¿à¤·à¤¯ à¤¸à¥\87 à¤\9cà¥\81à¥\9cा होना चाहिए।<br />
+'disambiguations-text' => "निम्नांकित पृष्ठ कम-से-कम एक '''बहुविकल्पी पृष्ठ''' से जुड़ते हैं।
+सà¤\82भवतà¤\83 à¤\87नà¥\8dहà¥\87à¤\82 à¤\89पयà¥\81à¤\95à¥\8dत à¤ªà¥\83षà¥\8dठ à¤¸à¥\87 à¤\9cà¥\81ड़ा होना चाहिए।<br />
 यदि कोई पृष्ठ ऐसे साँचे का प्रयोग करता है जो [[MediaWiki:Disambiguationspage]] से जुड़ा हुआ है, तो उसे बहुविकल्पी पृष्ठ माना जाता है।",
 
 'doubleredirects' => 'दुगुने पुनर्निर्देश',
@@ -1997,6 +2003,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'mostlinkedtemplates' => 'सर्वाधिक से जुड़े हुए साँचे',
 'mostcategories' => 'सर्वाधिक श्रेणियों वाले पृष्ठ',
 'mostimages' => 'सर्वाधिक से जुड़ी हुई फ़ाइलें',
+'mostinterwikis' => 'सर्वाधिक अंतरविकी कड़ियों वाले पृष्ठ',
 'mostrevisions' => 'सर्वाधिक अवतरणित पृष्ठ',
 'prefixindex' => 'उपसर्ग अनुसार पृष्ठ',
 'prefixindex-namespace' => 'उपसर्ग वाले सभी पृष्ठ ($1 नामस्थान)',
@@ -2072,6 +2079,11 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'allpages-bad-ns' => '{{SITENAME}} में "$1" नामस्थान नहीं है।',
 'allpages-hide-redirects' => 'पुनर्निर्देश छुपाएँ',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'आप इस पृष्ठ का कैश किया हुआ अवतरण देख रहे हैं, जो $1 पुराना हो सकता है।',
+'cachedspecial-viewing-cached-ts' => 'आप इस पृष्ठ का कैश किया हुआ अवतरण देख रहे हैं, जो कि संभवतः वर्तमान अवस्था से भिन्न हो।',
+'cachedspecial-refresh-now' => 'नवीनतम देखें।',
+
 # Special:Categories
 'categories' => 'श्रेणियाँ',
 'categoriespagetext' => 'निम्नोक्त {{PLURAL:$1|श्रेणी|श्रेणियों}} में पृष्ठ या मीडिया है।
@@ -2093,7 +2105,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'linksearch-ok' => 'खोजें',
 'linksearch-text' => '"*.wikipedia.org" जैसे वाईल्ड-कार्ड्स प्रयोग किये जा सकते हैं।
 कम-से-कम ".org" जैसे किसी top-level डोमेन की आवश्यकता है।<br />
-स्वीकार्य प्रोटोकॉल: <code>$1</code> (इनमें से कोई भी अपनी खोज में न जोड़ें)',
+स्वीकार्य {{PLURAL:$2|प्रोटोकॉल}}: <code>$1</code> (यदि कोई प्रोटोकॉल ना दिया जाए तो http:// का प्रयोग किया जाता है)',
 'linksearch-line' => '$2 में से $1 जुडा हुआ हैं',
 'linksearch-error' => 'वाईल्डकार्ड्स होस्टनाम के सिर्फ शुरू में आ सकते हैं।',
 
@@ -2112,10 +2124,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'activeusers-hidesysops' => 'प्रबंधक छुपाएँ',
 'activeusers-noresult' => 'कोई सदस्य नहीं मिले।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'सदस्य खाता निर्माण लॉग',
-'newuserlogpagetext' => 'यह सदस्य खातों के निर्माण का लॉग है।',
-
 # Special:ListGroupRights
 'listgrouprights' => 'सदस्य समूह अधिकार',
 'listgrouprights-summary' => 'नीचे इसे विकि के लिए परिभाषित सदस्य समूहों की सूची है, साथ में हर समूह से जुड़े अधिकार भी वर्णित हैं।
@@ -2142,8 +2150,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'emailuser-title-target' => 'इस {{GENDER:$1|सदस्य|सदस्या}} को ई-मेल करें।',
 'emailuser-title-notarget' => 'सदस्य को ई-मेल करें',
 'emailpage' => 'सदस्य को ई-मेल करें',
-'emailpagetext' => 'नीचे दिए पर्चे को जरिए आप इस सदस्य को ई-मेल भेज सकते हैं।
-à¤\86पनà¥\87 à¤\9cà¥\8b à¤ªà¤¤à¤¾ [[Special:Preferences|à¤\85पनà¥\80 à¤¸à¤¦à¤¸à¥\8dय à¤µà¤°à¥\80यताà¤\93à¤\82]] में दिया था वह इस ई-मेल के "भेजने वाले" के तौर पर आएगा, अतः प्राप्तकर्ता आपको सीधे जवाब दे सकेंगे।',
+'emailpagetext' => 'नीचे दिए पर्चे को जरिए आप इस {{GENDER:$1|सदस्य}} को ई-मेल भेज सकते हैं।
+à¤\86पनà¥\87 à¤\9cà¥\8b à¤ªà¤¤à¤¾ [[Special:Preferences|à¤\85पनà¥\80 à¤ªà¤¸à¤\82द]] में दिया था वह इस ई-मेल के "भेजने वाले" के तौर पर आएगा, अतः प्राप्तकर्ता आपको सीधे जवाब दे सकेंगे।',
 'usermailererror' => 'मेल ऑब्जेक्ट ने त्रुटि दी:',
 'defemailsubject' => '{{SITENAME}} ई-मेल "$1" सदस्य से',
 'usermaildisabled' => 'सदस्य ई-मेल अक्षम किया गया',
@@ -2181,10 +2189,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'watchnologin' => 'लॉग इन नहीं किया है',
 'watchnologintext' => 'ध्यानसूची में बदलाव के लिये [[Special:UserLogin|लॉग इन]] करना आवश्यक है।',
 'addwatch' => 'ध्यानसूची में जोड़ें',
-'addedwatchtext' => 'आपकी [[Special:Watchlist|ध्यानसूची]] में "[[:$1]]" पृष्ठ का समावेश कर दिया गया है।
-भविष्य में इस पृष्ठ तथा इसके वार्ता पृष्ठ में होने वाले बदलाव आपकी ध्यानसूची में दिखेंगे तथा [[Special:RecentChanges|हाल में हुए बदलावों की सूची]] में यह पृष्ठ बोल्ड दिखेगा ताकि आप आसानी से इसका ध्यान रख सकें।
-
-अगर आपको इस पृष्ठ को अपनी ध्यानसूची से निकालना हो तो "ध्यान हटायें" पर क्लिक करें।',
+'addedwatchtext' => 'आपकी [[Special:Watchlist|ध्यानसूची]] में "[[:$1]]" पृष्ठ जोड़ दिया गया है।
+भविष्य में इस पृष्ठ तथा इसके वार्ता पृष्ठ में होने वाले बदलाव आपकी ध्यानसूची में दिखेंगे।',
 'removewatch' => 'ध्यानसूची से हटाएँ',
 'removedwatchtext' => '"[[:$1]]" नामक पृष्ठ को आपकी [[Special:Watchlist|ध्यानसूची]] से हटा दिया गया है।',
 'watch' => 'ध्यान रखें',
@@ -2213,15 +2219,22 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'enotif_mailer' => '{{SITENAME}} सूचना इ-मेल कर्ता',
 'enotif_reset' => 'सभी पृष्ठ देखे हुए दर्शाएँ',
 'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
+'enotif_subject_deleted' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने हटा दिया है',
+'enotif_subject_created' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने बना दिया है',
+'enotif_subject_moved' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने स्थानांतरित कर दिया है',
+'enotif_subject_restored' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने पुनर्स्थापित कर दिया है',
+'enotif_subject_changed' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने परिवर्तित किया है',
+'enotif_body_intro_deleted' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को हटा दिया है, देखें $3।',
+'enotif_body_intro_created' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को बनाया है, वर्तमान अवतरण के लिए $3 देखें।',
+'enotif_body_intro_moved' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को स्थानांतरित किया है, वर्तमान अवतरण के लिए $3 देखें।',
+'enotif_body_intro_restored' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को पुनर्स्थापित किया है, वर्तमान अवतरण के लिए $3 देखें।',
+'enotif_body_intro_changed' => '{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को परिवर्तित किया है, वर्तमान अवतरण के लिए $3 देखें।',
 'enotif_lastvisited' => 'आपकी आखिरी भेंट के बाद हुए बदलाव देखने के लिये $1 देखें।',
 'enotif_lastdiff' => 'इस बदलाव को देखने के लिये $1 देखें।',
 'enotif_anon_editor' => 'अनामक सदस्य $1',
 'enotif_body' => 'प्रिय $WATCHINGUSERNAME जी,
 
-
-{{SITENAME}} का $PAGETITLE पृष्ठ $PAGEEDITDATE को $PAGEEDITOR द्वारा $CHANGEDORCREATED गया, कृपया ताज़े अवतरण के लिए $PAGETITLE_URL देखें।
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 सम्पादन सारांश: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2246,6 +2259,8 @@ $UNWATCHURL
 
 राय देने या अधिक सहायता पाने के लिए:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'बनाया',
+'changed' => 'परिवर्तित किया',
 
 # Delete
 'deletepage' => 'पृष्ठ हटाएँ',
@@ -2285,6 +2300,8 @@ $UNWATCHURL
 'rollback' => 'संपादन वापिस लें',
 'rollback_short' => 'वापिस लें',
 'rollbacklink' => 'वापिस लें',
+'rollbacklinkcount' => '$1 {{PLURAL:$1|सम्पादन}} वापिस लें',
+'rollbacklinkcount-morethan' => '$1 से अधिक {{PLURAL:$1|सम्पादन}} वापिस लें',
 'rollbackfailed' => 'वापिस लेना असफल रहा',
 'cantrollback' => 'पुराने अवतरण को पूर्ववत नहीं कर सकते हैं;
 इस पृष्ठ का अन्तिम योगदानकर्ता इस लेख का एकमात्र लेखक है।',
@@ -2379,8 +2396,7 @@ $2 द्वारा संपादित अन्तिम अवतरण 
 लेखागार समय-समय पर साफ किये जाते हैं।',
 'undelete-fieldset-title' => 'अवतरण पुरानी स्थिति पर लाएँ',
 'undeleteextrahelp' => "पृष्ठ का संपूर्ण इतिहास वापस लाने के लिए सभी बक्सों से सही का निशान हटा दें और '''''{{int:undeletebtn}}''''' पर क्लिक करें।
-चुनिंदा इतिहास को वापस लाने के लिए, उन अवतरणों के बगल के बक्सों पर सही का निशान लगाएँ, और '''''{{int:undeletebtn}}''''' पर क्लिक करें।
-'''''पूर्ववत करें''''' पर चटका लगाने से टिप्पणी कोष्ठक और सभी बक्से खाली कर दिए जाएँगे।",
+चुनिंदा इतिहास को वापस लाने के लिए उन अवतरणों के बगल के बक्सों पर सही का निशान लगाएँ और '''''{{int:undeletebtn}}''''' पर क्लिक करें।",
 'undeleterevisions' => '$1 {{PLURAL:$1|अवतरण}} लेखागार में हैं',
 'undeletehistory' => 'यदि आप पृष्ठ को पुनर्स्थापित करते हैं तो सभी अवतरण इतिहास में पुनर्स्थापित हो जायेंगे।
 हटाने के बाद यदि एक नया पृष्ठ उसी नाम से बनाया गया है तो पुनर्स्थापित अवतरण पिछले इतिहास में दर्शित होंगे।',
@@ -2402,8 +2418,8 @@ $2 द्वारा संपादित अन्तिम अवतरण 
 'undeletedrevisions' => '{{PLURAL:$1|एक रूपान्तर वापस लाया गया|$1 रूपान्तर वापस लाये गये}} है',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 अवतरण|$1 अवतरण}} और {{PLURAL:$2|1 फ़ाईल|$2 फ़ाइलें}} पुनर्स्थापित कर दियें',
 'undeletedfiles' => '{{PLURAL:$1|1 फ़ाईल|$1 फ़ाईलें}} पुनर्स्थापित',
-'cannotundelete' => 'पुनर्स्थापित नहीं कर सकें;
-किसी और ने पहले ही पुनर्स्थापित कर दिया हों।',
+'cannotundelete' => 'पुनर्स्थापित नहीं कर सके:
+$1',
 'undeletedpage' => "'''$1 को पुनर्स्थापित कर दिया गया है'''
 
 हाल में हटाये गये तथा पुनर्स्थापित किये गए पन्नों की जानकारी के लिये [[Special:Log/delete|हटाने की लॉग]] देखें।",
@@ -2444,7 +2460,7 @@ $1',
 'month' => 'इस महिनेसे (और पुरानें):',
 'year' => 'इस सालसे (और पुराने):',
 
-'sp-contributions-newbies' => 'सिर्फ़ नये सदस्योंका योगदान दर्शायें',
+'sp-contributions-newbies' => 'सिर्फ़ नये सदस्यों के योगदान दर्शायें',
 'sp-contributions-newbies-sub' => 'नये सदस्योंके लिये',
 'sp-contributions-newbies-title' => 'नए सदस्यों द्वारा योगदान',
 'sp-contributions-blocklog' => 'ब्लॉक सूची',
@@ -2518,8 +2534,8 @@ $1',
 'ipb-confirm' => 'अवरोधण की पुष्टि करें',
 'badipaddress' => 'अमान्य आईपी पता।',
 'blockipsuccesssub' => 'अवरोधन सफल ।(संपादन करने से रोक दिया गया है)',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] à¤\95à¥\8b à¤¬à¤¾à¤§à¥\8dय किया जा चुका है।<br />
-बाधà¥\8dयà¥\8bà¤\82 à¤\95à¥\80 à¤¸à¤®à¥\80à¤\95à¥\8dषा à¤\95à¥\87 à¤²à¤¿à¤\8f [[Special:BlockList|IP à¤¬à¤¾à¤§à¥\8dय à¤¸à¥\82à¤\9aà¥\80]] देखें।',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] à¤\95à¥\8b à¤¬à¥\8dलà¥\89à¤\95 किया जा चुका है।<br />
+बà¥\8dलà¥\89à¤\95à¥\8bà¤\82 à¤\95à¥\80 à¤¸à¤®à¥\80à¤\95à¥\8dषा à¤\95à¥\87 à¤²à¤¿à¤\8f [[Special:BlockList|बà¥\8dलà¥\89à¤\95 à¤²à¥\89à¤\97]] देखें।',
 'ipb-blockingself' => 'आप खुद को अवरोधित कर रहे हैं! क्या आप वाकई ऐसा करना चाहते हैं?',
 'ipb-edit-dropdown' => 'ब्लॉक कारण संपादित करें',
 'ipb-unblock-addr' => '$1 को अनब्लॉक करें',
@@ -2571,9 +2587,9 @@ $1 को बाध्य करने का कारण है: "$2"',
 यह दबाया गया लॉग सन्दर्भ के लिए उपलब्ध कया गया है:',
 'blocklogentry' => '"[[$1]]" को $2 $3 तक बदलाव करने से रोक दिया गया है।',
 'reblock-logentry' => '[[$1]] का अवरोध जमाव बदला गया, मियाद अब $2 $3 पर खत्म होगी',
-'blocklogtext' => 'यह à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\8b à¤¬à¤¾à¤§à¥\8dय à¤\8fवà¤\82 à¤\85बाधà¥\8dय à¤\95रनà¥\87 à¤\95à¥\87 à¤\95à¥\8dरियाà¤\95लापà¥\8bà¤\82 à¤\95ा à¤\85भिलà¥\87à¤\96 है।
-स्वत: बाधित होने वाले IP पते इस सूची में उपलब्ध नहीं है।
-वरà¥\8dतà¥\8dतमान à¤®à¥\87à¤\82 à¤\95à¥\8dरियाशà¥\80ल à¤ªà¥\8dरतिबà¤\82धà¥\8bà¤\82 à¤\94र à¤¬à¤¾à¤§à¥\8dयà¥\8bà¤\82 à¤\95à¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤\95à¥\87 à¤²à¤¿à¤\8f [[Special:BlockList|IP à¤¬à¤¾à¤§à¤¿à¤¤ à¤¸à¥\82à¤\9aà¥\80]] देखें।',
+'blocklogtext' => 'यह à¤¸à¤¦à¤¸à¥\8dयà¥\8bà¤\82 à¤\95à¥\8b à¤¬à¥\8dलà¥\89à¤\95 à¤\8fवà¤\82 à¤\85नबà¥\8dलà¥\89à¤\95 à¤\95रनà¥\87 à¤\95à¥\87 à¤\95ारà¥\8dयà¥\8bà¤\82 à¤\95ा à¤²à¥\89à¤\97 है।
+स्वत बाधित होने वाले IP पते इस सूची में उपलब्ध नहीं है।
+वरà¥\8dतमान à¤®à¥\87à¤\82 à¤\95à¥\8dरियाशà¥\80ल à¤ªà¥\8dरतिबà¤\82धà¥\8bà¤\82 à¤\94र à¤¬à¥\8dलà¥\89à¤\95à¥\8bà¤\82 à¤\95à¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤\95à¥\87 à¤²à¤¿à¤\8f [[Special:BlockList|बà¥\8dलà¥\89à¤\95 à¤²à¥\89à¤\97]] देखें।',
 'unblocklogentry' => '$1 अनवरोधित',
 'block-log-flags-anononly' => 'केवल अनाम सदस्य',
 'block-log-flags-nocreate' => 'खाता निर्माण पर रोक',
@@ -2727,7 +2743,8 @@ $1 को बाध्य करने का कारण है: "$2"',
 'move-leave-redirect' => 'एक पुनर्निर्देशन पीछे छोड़ते जाएँ',
 'protectedpagemovewarning' => "'''चेतावनी:''' यह पृष्ठ तालाबंद है अतः केवल वही सदस्य इनका स्थानांतरण कर सकते हैं जो प्रबंधक हों।
 निम्न् तलिका मे ताजा सदस्यो कि जानकारी दि गयि है:",
-'semiprotectedpagemovewarning' => "'''ध्यान दें:''' इस पृष्ठ को सुरक्षित कर दिया गया है ताकि केवल पंजीकृत सदस्य ही इसे स्थानांतरित कर पाएँ।",
+'semiprotectedpagemovewarning' => "'''सूचना:''' यह पृष्ठ सुरक्षित कर दिया गया है और इसे केवल पंजीकृत सदस्य ही स्थानांतरित कर सकते हैं।
+नवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
 'move-over-sharedrepo' => '== फ़ाइल मौजूद है ==
 [[:$1]] एक साझे भंडार पर मौजूद है। इस नाम पर स्थानांतरण से नई फ़ाइल साझा फ़ाइल को ओवरराइड करेगी।',
 'file-exists-sharedrepo' => 'फ़ाइल रेपो साझा मौजूद',
@@ -2824,6 +2841,9 @@ $1 को बाध्य करने का कारण है: "$2"',
 'import-invalid-interwiki' => 'इस विकि से आयात नहीं हो सकता है।',
 'import-error-edit' => 'पृष्ठ " $1 " आयातित नहीं किया जासकता है क्योंकि आपको उसे संपादित करने की अनुमति नहीं हैं।',
 'import-error-create' => 'पृष्ठ " $1 " आयातित नहीं है क्योंकि आपको उसे बनाने की अनुमति नहीं हैं।',
+'import-error-interwiki' => 'पृष्ठ "$1" आयात नहीं किया गया है क्योंकि इसका नाम अंतरविकी कड़ियाँ बनाने के लिए आरक्षित है।',
+'import-error-special' => 'पृष्ठ "$1" आयात नहीं किया गया है क्योंकि यह एक ऐसे विशेष नामस्थान के अंतर्गत आता है जिसमें पृष्ठ नहीं बनाए जा सकते हैं।',
+'import-error-invalid' => 'पृष्ठ "$1" आयात नहीं किया गया है क्योंकि इसका नाम अमान्य है।',
 
 # Import log
 'importlogpage' => 'आयात सूची',
@@ -2869,13 +2889,13 @@ $1 को बाध्य करने का कारण है: "$2"',
 'tooltip-n-randompage' => 'किसी एक लेख पर जाएँ',
 'tooltip-n-help' => 'पता लगाने का स्थान',
 'tooltip-t-whatlinkshere' => 'यहाँ का हवाला देने वाले सभी विकि पन्नों की सूची',
-'tooltip-t-recentchangeslinked' => 'यहाà¤\81 à¤\9cà¥\81डà¥\87 à¤¹à¥\81à¤\8f à¤¸à¤­à¥\80 à¤ªà¤¨à¥\8dनà¥\8bà¤\82में हुए हाल के बदलाव',
+'tooltip-t-recentchangeslinked' => 'यहाà¤\81 à¤\9cà¥\81ड़à¥\87 à¤¹à¥\81à¤\8f à¤¸à¤­à¥\80 à¤ªà¤¨à¥\8dनà¥\8bà¤\82 में हुए हाल के बदलाव',
 'tooltip-feed-rss' => 'इस पृष्ठ की आरएसएस फ़ीड',
 'tooltip-feed-atom' => 'इस पृष्ठ की अणु फ़ीड',
 'tooltip-t-contributions' => 'इस सदस्यके योगदानकी सूची देखियें',
 'tooltip-t-emailuser' => 'इस सदस्य को इमेल भेजें',
 'tooltip-t-upload' => 'संचिका चढ़ाएँ',
-'tooltip-t-specialpages' => 'सभà¥\80 à¤\96ास à¤ªà¤¨à¥\8dनों की सूची',
+'tooltip-t-specialpages' => 'सभà¥\80 à¤µà¤¿à¤¶à¥\87ष à¤ªà¥\83षà¥\8dठों की सूची',
 'tooltip-t-print' => 'इस पृष्ठका छपानेलायक अवतरण',
 'tooltip-t-permalink' => 'पृष्ठ के इस संस्करण की स्थायी कड़ी',
 'tooltip-ca-nstab-main' => 'सामग्री वाला पृष्ठ देखें',
@@ -2938,11 +2958,26 @@ $1 को बाध्य करने का कारण है: "$2"',
 
 # Info page
 'pageinfo-title' => '"$1" के लिये जानकारी',
-'pageinfo-header-edits' => 'बदलने के लिये',
+'pageinfo-not-current' => 'क्षमा करें, पुराने अवतरणों के लिए यह जानकारी प्रदान करना संभव नहीं है।',
+'pageinfo-header-basic' => 'मूल जानकारी',
+'pageinfo-header-edits' => 'सम्पादन इतिहास',
+'pageinfo-header-restrictions' => 'पृष्ठ सुरक्षा',
+'pageinfo-header-properties' => 'पृष्ठ जानकारी',
+'pageinfo-display-title' => 'प्रदर्शित शीर्षक',
+'pageinfo-default-sort' => 'डिफ़ॉल्ट सॉर्ट की',
+'pageinfo-length' => 'पृष्ठ आकार (बाइट्स में)',
+'pageinfo-article-id' => 'पृष्ठ आइ॰डी',
+'pageinfo-language' => 'पृष्ठ सामग्री भाषा',
 'pageinfo-views' => 'दर्शाव की संख्या',
-'pageinfo-watchers' => 'पर नजर रखने वालों की संख्या',
+'pageinfo-watchers' => 'पृष्ठ पर नज़र रखने वालों की संख्या',
+'pageinfo-redirects-name' => 'इस पृष्ठ को पुनर्निर्देश',
+'pageinfo-subpages-name' => 'इस पृष्ठ के उप-पृष्ठ',
+'pageinfo-firstuser' => 'पृष्ठ निर्माता',
+'pageinfo-firsttime' => 'पृष्ठ निर्माण तिथि',
+'pageinfo-lastuser' => 'नवीनतम सम्पादक',
+'pageinfo-lasttime' => 'नवीनतम सम्पादन तिथि',
 'pageinfo-edits' => 'संपादन की संख्या',
-'pageinfo-authors' => 'à¤\85लà¤\97 à¤²à¥\87à¤\96à¤\95à¥\8bà¤\82 à¤\95à¥\80 à¤¸à¤\82à¤\96à¥\8dया',
+'pageinfo-authors' => 'लेखकों की संख्या',
 'pageinfo-recent-edits' => 'हाल में हुए सम्पादनों की संख्या (पिछ्ले $1 में)',
 'pageinfo-magic-words' => 'जादुई {{PLURAL:$1|शब्द}} ($1)',
 'pageinfo-hidden-categories' => 'छुपी {{PLURAL:$1|श्रेणी|श्रेणियाँ}} ($1)',
@@ -2950,8 +2985,13 @@ $1 को बाध्य करने का कारण है: "$2"',
 'pageinfo-toolboxlink' => 'इस पृष्ठ पर जानकारी',
 'pageinfo-redirectsto' => 'पुनर्निर्देशन लक्ष्य',
 'pageinfo-redirectsto-info' => 'जानकारी',
+'pageinfo-contentpage' => 'सामग्री पृष्ठों में गिना जाता है',
 'pageinfo-contentpage-yes' => 'हाँ',
 'pageinfo-protect-cascading-yes' => 'हाँ',
+'pageinfo-category-info' => 'श्रेणी जानकारी',
+'pageinfo-category-pages' => 'पृष्ठ संख्या',
+'pageinfo-category-subcats' => 'उपश्रेणियों की संख्या',
+'pageinfo-category-files' => 'फ़ाइलों की संख्या',
 
 # Patrolling
 'markaspatrolleddiff' => 'देख लिया ऐसा मार्क करें',
@@ -3023,7 +3063,9 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minute|$1 minutes}}',
 'hours' => '{{PLURAL:$1|$1 hour|$1 hours}}',
 'days' => '{{PLURAL:$1|$1 day|$1 days}}',
+'months' => '{{PLURAL:$1|महीना|महीने}}',
 'ago' => '$1 पहले',
+'just-now' => 'अभी-अभी',
 
 # Bad image list
 'bad_image_list' => 'प्रारूप इस प्रकार है:
@@ -3034,7 +3076,7 @@ $1',
 
 # Metadata
 'metadata' => 'मेटाडाटा',
-'metadata-help' => 'इस फ़ाइल में बढ़ाई हुई जानकारी हैं, हो सकता है कि यह फ़ाइल बनाने में इस्तेमाल किये गए स्कैनर अथवा कैमेरा से यह प्राप्त हुई हैं। अगर यह फ़ाइल बदलदी गई हैं तो यह जानकारी नई फ़ाईलसे मेल नहीं खाने की आशंका हैं ।',
+'metadata-help' => 'इस फ़ाइल में बढ़ाई हुई जानकारी हैं, हो सकता है कि यह फ़ाइल बनाने में इस्तेमाल किये गए स्कैनर अथवा कैमेरा से यह प्राप्त हुई हैं। अगर यह फ़ाइल बदलदी गई है तो यह जानकारी नई फ़ाइल से मेल नहीं खाने की आशंका है।',
 'metadata-expand' => 'विस्तृत जानकारियां दिखाएं',
 'metadata-collapse' => 'विस्तृत जानकारियां छिपाएं',
 'metadata-fields' => 'जब मेटाडाटा तालिका को लघुरूप किया जाएगा तो इस सन्देश में सूचीबद्ध इएक्सआयएफ मेटाडाटा जानकारियां छवि प्रदर्शित होते समय सम्मिलित की जाएंगी।
@@ -3697,7 +3739,7 @@ $5
 * <span class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठ।</span>',
 'specialpages-group-maintenance' => 'अनुरक्षण रिपोर्ट',
 'specialpages-group-other' => 'अन्य विशेष पृष्ठ',
-'specialpages-group-login' => 'सतà¥\8dर à¤ªà¥\8dरारमà¥\8dभ / à¤¹à¤¸à¥\8dताà¤\95à¥\8dषर à¤\95रें',
+'specialpages-group-login' => 'सतà¥\8dर à¤\86रमà¥\8dभ / à¤\96ाता à¤\96à¥\8bलें',
 'specialpages-group-changes' => 'हाल ही में हुए परिवर्तन एवं अभिलेख',
 'specialpages-group-media' => 'मीडिया रिपोर्ट एवं अपलोड',
 'specialpages-group-users' => 'सदस्य एवं अधिकार',
@@ -3713,14 +3755,14 @@ $5
 'intentionallyblankpage' => 'यह पृष्ठ जानबूझ कर खाली छोड़ा गया है।',
 
 # External image whitelist
-'external_image_whitelist' => 'इस लाइन बिल्कुल के रूप में यह #Leave है<pre>
- #Put नियमित अभिव्यक्ति टुकड़े (बस हिस्सा है कि के बीच चला जाता है / /) के नीचे
- # à¤¯à¥\87 à¤¬à¤¾à¤¹à¤°à¥\80 (hotlinked) à¤\9bवियà¥\8bà¤\82 à¤\95à¥\87 à¤¯à¥\82à¤\86रà¤\8fल à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤®à¤¿à¤²à¤¾à¤¨ à¤\95िया à¤\9cाà¤\8fà¤\97ा
- # कि मैच उन छवियों के रूप में प्रदर्शित किया जाएगा, अन्यथा केवल छवि के लिए एक कड़ी दिखाया जाएगा
- #Lines # साथ शुरुआत टिप्पणी के रूप में इलाज कर रहे हैं
+'external_image_whitelist' => ' #यह लाइन जैसी है वैसी ही छोड़ दें<pre>
+ #नीचे रेगुलर एक्सप्रेशन के टुकड़े लिखें(बस वही हिस्सा जो // के बीच में आता है)
+ #à¤\87न à¤\8fà¤\95à¥\8dसपà¥\8dरà¥\87शन à¤\95ा à¤¬à¤¾à¤¹à¤°à¥\80 (hotlinked) à¤\9bवियà¥\8bà¤\82 à¤\95à¥\87 à¤¯à¥\82॰à¤\86र॰à¤\8fल à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤®à¤¿à¤²à¤¾à¤¨ à¤\95िया à¤\9cाà¤\8fà¤\97ा
+ #जो छवियाँ मिलान करेंगी, उन्हें प्रदर्शित किया जाएगा, अन्यथा केवल छवि की कड़ी दिखायी जाएगी
+ # # से शुरू होने वाली लाइनें टिप्पणी मानी जाती हैं
  # इस केस-असंवेदी है
 
- #Put सब regex टुकड़े इस रेखा से ऊपर। वास्तव में यह है के रूप में इस लाइन छोड़ दो</pre>',
+ #सब रेगुलर एक्सप्रेशन टुकड़े इस लाइन से ऊपर रखें। यह लाइन जैसी है वैसी ही छोड़ दें</pre>',
 
 # Special:Tags
 'tags' => 'वैध बदलाव चिप्पियाँ',
@@ -3798,11 +3840,15 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 ने $4 से पुनार्निर्देश हटाकर $3 पर पुनर्निर्देश छोड़े बिना $3 को $4 पर स्थानांतरित किया',
 'logentry-patrol-patrol' => '$1 ने $3 पृष्ठ के $4 अवतरण को देखा हुआ चिन्हित किया',
 'logentry-patrol-patrol-auto' => '$1 ने $3 पृष्ठ के $4 अवतरण को स्वचालित रूप से देखा हुआ चिन्हित किया',
-'logentry-newusers-newusers' => '$1 created उपयोगकर्ता के खाता',
-'logentry-newusers-create' => '$1 created उपयोगकर्ता के खाता',
-'logentry-newusers-create2' => '$1 created a user account $3',
+'logentry-newusers-newusers' => 'सदस्य खाता $1 बनाया गया',
+'logentry-newusers-create' => 'सदस्य खाता $1 बनाया गया',
+'logentry-newusers-create2' => 'सदस्य खाता $3 $1 द्वारा बनाया गया था',
 'logentry-newusers-autocreate' => 'खाते $1 स्वचालित रूप से बनाया गया',
 'newuserlog-byemail' => 'कूटशब्द इ-मेल द्वारा भेजा गया हैं',
+'logentry-rights-rights' => '$1 ने $3 के सदस्य समूह $4 से बदलकर $5 किये',
+'logentry-rights-rights-legacy' => '$1 ने $3 के सदस्य समूह बदले',
+'logentry-rights-autopromote' => '$1 के सदस्य समूह स्वतः $4 से बदलकर $5 किये गए',
+'rightsnone' => '(कोई नहीं)',
 
 # Feedback
 'feedback-bugornote' => 'यदि आप किसी तकनीकी परेशानी को विस्तार से समझाने के लिये तैयार हैं तो कृपया [$1 बग फ़ाइल करें]।
@@ -3822,6 +3868,7 @@ $5
 
 # Search suggestions
 'searchsuggest-search' => 'खोज',
+'searchsuggest-containing' => '...से युक्त',
 
 # API errors
 'api-error-badaccess-groups' => 'आपको इस विकि के लिए फ़ाइलें अपलोड करने की अनुमति नहीं है.',
@@ -3839,7 +3886,7 @@ $5
 'api-error-file-too-large' => 'प्रस्तुत फ़ाइल बहुत बड़ी थी।',
 'api-error-filename-tooshort' => 'फ़ाइल का नाम बहुत छोटा है।',
 'api-error-filetype-banned' => 'इस प्रकार की फ़ाइल पर प्रतिबंध लगा दिया है।',
-'api-error-filetype-banned-type' => '$1 à¥\9eाà¤\87ल {{PLURAL:$4|पà¥\8dरà¤\95ार|पà¥\8dरà¤\95ारà¥\8bà¤\82}} à¤\95à¥\80 à¤\85नà¥\81मति à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\88। à¥\9eाइल प्रकार {{PLURAL:$3|जिसकी|जिनकी}} अनुमति है: $2।',
+'api-error-filetype-banned-type' => '$1 à¤«à¤¼à¤¾à¤\87ल {{PLURAL:$4|पà¥\8dरà¤\95ार|पà¥\8dरà¤\95ारà¥\8bà¤\82}} à¤\95à¥\80 à¤\85नà¥\81मति à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\88। à¤«à¤¼ाइल प्रकार {{PLURAL:$3|जिसकी|जिनकी}} अनुमति है: $2।',
 'api-error-filetype-missing' => 'फाईल की एक्सटेंशन लापता है.',
 'api-error-hookaborted' => 'आपके द्वारा प्रयासरत संशोधन विस्तार हूक द्वारा निरस्त किया गया।',
 'api-error-http' => 'आंतरिक त्रुटि: सर्वर से कनेक्ट करने में असमर्थ।',
index d327dd8..1f38e0a 100644 (file)
@@ -1338,15 +1338,13 @@ Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
 'right-sendemail' => 'Duusra sadasya ke lage e-mail bhejo',
 'right-passwordreset' => 'Password ke badle waala e-mail ke dekho',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Sadasya ke banae waala log',
+'newuserlogpagetext' => 'Ii sadasya ke banae waala log hai.',
+
 # User rights log
 'rightslog' => 'Sadasya adhikar suchi',
 'rightslogtext' => 'Ii sadasya ke adhikar ke badlao ke suchi hai.',
-'rightslogentry' => '$1 ke group ke membership ke $2 se $3 badal dia hai',
-'rightslogentry-autopromote' => 'ke apne se $2 se $3 ke promotion dewa gais',
-'logentry-rights-rights' => '$1 $3 ke group ke membership ke $4 se badal ke $5 kar dia hae',
-'logentry-rights-rights-legacy' => '$1 $3 ke group membership ke badal dia hae',
-'logentry-rights-autopromote' => '$1 ke apne se $2 se $3 ke promotion dewa gais',
-'rightsnone' => '(koi nai hai)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ii panna ke parrho',
@@ -1988,10 +1986,6 @@ Support karaa gais protocol: <code>$1</code> (defaults to http:// if no protocol
 'activeusers-hidesysops' => 'Administrator log ke lukao',
 'activeusers-noresult' => 'koi sadasya ke pawa nai gais hai.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Sadasya ke banae waala log',
-'newuserlogpagetext' => 'Ii sadasya ke banae waala log hai.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Sadasya  ke group adhikar',
 'listgrouprights-summary' => 'Niche likha hai ek suchi hai groups ke jon ki ii wiki me defined hai, aapan  associated access rights ke saathe
@@ -2131,6 +2125,8 @@ $UNWATCHURL
 
 Aapan bichar de ke khatir aur aage ke sahaeta:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'banae dewa gais hai',
+'changed' => 'badal dewa gais hai',
 
 # Delete
 'deletepage' => 'Pana ke delete karo',
@@ -3244,6 +3240,10 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'revdelete-restricted' => 'sysops pe llabu restrictions',
 'revdelete-unrestricted' => 'sysops se hatawa gae rukawat',
 'newuserlog-byemail' => 'password ke e-mail se bheja gais hai',
+'logentry-rights-rights' => '$1 $3 ke group ke membership ke $4 se badal ke $5 kar dia hae',
+'logentry-rights-rights-legacy' => '$1 $3 ke group membership ke badal dia hae',
+'logentry-rights-autopromote' => '$1 ke apne se $2 se $3 ke promotion dewa gais',
+'rightsnone' => '(koi nai hai)',
 
 # Search suggestions
 'searchsuggest-search' => 'Khojo',
index 61e6bb6..63c8abb 100644 (file)
@@ -1218,9 +1218,11 @@ Ang imo adres sang e-mail wala ginapakita kon kontakon ka sang iban.',
 'right-read' => 'Basahan ang panid',
 'right-edit' => 'Ilisan ang panid',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Naga-usar nga ginhimo log',
+
 # User rights log
 'rightslog' => 'Karapatan sang naga-usar log',
-'rightsnone' => '(wala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'islan ini nga pahina',
@@ -1337,9 +1339,6 @@ Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
 'linksearch' => 'Eksternal na mga tabid',
 'linksearch-ok' => 'Pangita-a',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Naga-usar nga ginhimo log',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Grupo',
 'listgrouprights-members' => '(lista sang mga membro)',
@@ -1644,5 +1643,6 @@ Ang iban ay pagataguon sang default.
 # New logging system
 'revdelete-restricted' => 'ginapatuman nga pagbawal sa mga administrador',
 'revdelete-unrestricted' => 'ginkakas nga pagbawal sa mga administrador',
+'rightsnone' => '(wala)',
 
 );
index dfa3bb4..c64986a 100644 (file)
@@ -1590,15 +1590,13 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'right-sendemail' => 'Slanje e-maila drugim korisnicima',
 'right-passwordreset' => 'Vidi poruku e-pošte o ponovnom postavljanju lozinke',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Evidencija novih suradnika',
+'newuserlogpagetext' => 'Ispod je popis nedavno otvorenih suradničkih imena.',
+
 # User rights log
 'rightslog' => 'Evidencija suradničkih prava',
 'rightslogtext' => 'Ovo je evidencija promjena suradničkih prava.',
-'rightslogentry' => 'promijenjena suradnička prava za $1 iz $2 u $3',
-'rightslogentry-autopromote' => 'je automatski unaprijeđen s $2 na $3',
-'logentry-rights-rights' => '$1 promijeni suradnička prava računa $3 iz $4 u $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|je promijenio|je promijenila|je promijenio}} članstvo grupe suradničkog računa $3',
-'logentry-rights-autopromote' => 'Suradničkom računu $1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5',
-'rightsnone' => '(suradnik)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'čitanje ove stranice',
@@ -2224,10 +2222,6 @@ Podržani {{PLURAL:$2|protokol|protokoli}}: <code>$1</code> (default je http://
 'activeusers-hidesysops' => 'Sakrij administratore',
 'activeusers-noresult' => 'Niti jedan suradnik nije nađen.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Evidencija novih suradnika',
-'newuserlogpagetext' => 'Ispod je popis nedavno otvorenih suradničkih imena.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prava suradničkih skupina',
 'listgrouprights-summary' => 'Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.
@@ -2365,6 +2359,8 @@ $UNWATCHURL
 
 Za povratne informacije i pomoć posjetite:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'stvorio',
+'changed' => 'promijenio',
 
 # Delete
 'deletepage' => 'Izbriši stranicu',
@@ -3988,6 +3984,10 @@ Slike se na taj način prikazuju u punoj rezoluciji, a drugi tipovi datoteka se
 'logentry-newusers-create2' => '$1 je  {{GENDER:$2|otvorio|otvorila}} suradnički račun $3',
 'logentry-newusers-autocreate' => 'Suradnički račun $1 je automatski stvoren',
 'newuserlog-byemail' => 'lozinka poslana e-poštom',
+'logentry-rights-rights' => '$1 {{GENDER:$2|je promijenio|je promijenila}} suradnička prava računa $3 iz $4 u $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|je promijenio|je promijenila|je promijenio}} članstvo grupe suradničkog računa $3',
+'logentry-rights-autopromote' => 'Suradničkom računu $1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5',
+'rightsnone' => '(suradnik)',
 
 # Feedback
 'feedback-bugornote' => 'Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite "bug"].
index aa7b179..0ce4753 100644 (file)
@@ -286,6 +286,7 @@ $messages = array(
 'newwindow' => '(wočinja so w nowym woknje)',
 'cancel' => 'Přetorhnyć',
 'moredotdotdot' => 'Wjace…',
+'morenotlisted' => 'Dalše njepodate...',
 'mypage' => 'Strona',
 'mytalk' => 'Diskusija',
 'anontalk' => 'Diskusijna strona tuteje IP.adresy',
@@ -648,6 +649,7 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
 # E-mail sending
 'php-mail-error-unknown' => 'Njeznaty zmylk w PHP-funkciji mail()',
 'user-mail-no-addy' => 'Je so spytało e-mejl bjez e-mejloweje adresy słać.',
+'user-mail-no-body' => 'Je so spytało, e-mejl bjez teksta abo z překrótkim tekstom pósłać',
 
 # Change password dialog
 'resetpass' => 'Hesło změnić',
@@ -1416,15 +1418,13 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'right-sendemail' => 'Druhim wužiwarjam e-mejl pósłać',
 'right-passwordreset' => 'E-mejlki za wróćostajenje hesłow sej wobhladać',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Protokol nowych wužiwarjow',
+'newuserlogpagetext' => 'To je protokol wutworjenja nowych wužiwarskich kontow.',
+
 # User rights log
 'rightslog' => 'Protokol zrjadowanja wužiwarskich prawow',
 'rightslogtext' => 'To je protokol změnow wužiwarskich prawow.',
-'rightslogentry' => 'změni skupinske čłonstwo za $1 z $2 do $3',
-'rightslogentry-autopromote' => 'je so awtomatisce wot $2 do $3 změnił',
-'logentry-rights-rights' => '$1 změni skupinske čłonstwo za $3 z $4 do $5',
-'logentry-rights-rights-legacy' => '$1 změni skupinske čłonstwo za $3',
-'logentry-rights-autopromote' => '$1 powyši so awtomatisce wot $4 do $5',
-'rightsnone' => '(ničo)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'tutu stronu čitać',
@@ -2061,10 +2061,6 @@ Znajmjeńša hłowna domena je trěbna, na přikład "*.org".<br />
 'activeusers-hidesysops' => 'Administratorow schować',
 'activeusers-noresult' => 'Žani wužiwarjo namakani.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Protokol nowych wužiwarjow',
-'newuserlogpagetext' => 'To je protokol wutworjenja nowych wužiwarskich kontow.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prawa wužiwarskeje skupiny',
 'listgrouprights-summary' => 'Slěduje lisćina wužiwarskich skupinow na tutej wikiju z jich wotpowědnymi přistupnymi prawami. Tu móžeš [[{{MediaWiki:Listgrouprights-helppage}}|dalše informacije]] wo jednotliwych prawach namakać.',
@@ -2201,6 +2197,8 @@ $UNWATCHURL
 
 Wotmołwy a dalša pomoc:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'wutworjena',
+'changed' => 'změnjena',
 
 # Delete
 'deletepage' => 'Stronu zhašeć',
@@ -2265,6 +2263,8 @@ Hlej [[Special:ProtectedPages|lisćinu škitanych stronow]] za lisćinu tuchwilu
 'prot_1movedto2' => 'je [[$1]] pod hesło [[$2]] přesunył',
 'protect-badnamespace-title' => 'Nješkitajomny mjenowy rum',
 'protect-badnamespace-text' => 'Strony w tutym mjenowym rumje njehodźa so škitać.',
+'protect-norestrictiontypes-text' => 'Tuta strona njeda so škitać, dokelž žane wobmjezowanja k dispoziciji njesteja.',
+'protect-norestrictiontypes-title' => 'Nješkitajomna strona',
 'protect-legend' => 'Škit wobkrućić',
 'protectcomment' => 'Přičina:',
 'protectexpiry' => 'Čas škita:',
@@ -2893,6 +2893,7 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'pageinfo-magic-words' => '{{PLURAL:$1|Magiske słowo|Magiskej słowje|Magiske słowa|Magiske słowa}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Schowana kategorija|Schowanej kategoriji|Schowane kategorije|Schowane kategorije}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Zapřijata předłoha|Zapřijatej předłoze|Zapřijate předłohi|Zapřijate předłohi}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Strona zapřijata|Stronje zapřijatej|Strony zapřijate}}  do ($1)',
 'pageinfo-toolboxlink' => 'Informacije wo stronje',
 'pageinfo-redirectsto' => 'Sposrědkuje k',
 'pageinfo-redirectsto-info' => 'Info',
@@ -2901,6 +2902,10 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'pageinfo-protect-cascading' => 'Kaskadowy škit wottud',
 'pageinfo-protect-cascading-yes' => 'Haj',
 'pageinfo-protect-cascading-from' => 'Kaskadowy škit wot',
+'pageinfo-category-info' => 'Kategorijowe informacije',
+'pageinfo-category-pages' => 'Ličba rěkow',
+'pageinfo-category-subcats' => 'Ličba podkategorijow',
+'pageinfo-category-files' => 'Ličba datajow',
 
 # Skin names
 'skinname-standard' => 'Klasiski',
@@ -2987,6 +2992,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 mjeńšinu|$1 mjeńšinomaj|$1 mjeńšinami|$1 mjeńšinami}}',
 'hours' => '{{PLURAL:$1|$1 hodźinu|$1 hodźinomaj|$1 hodźinami|$1 hodźinami}}',
 'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjomaj|$1 dnjemi|$1 dnjemi}}',
+'months' => '{{PLURAL:$1|$1 měsacom|$1 měsacomaj|$1 měsacami}}',
+'years' => '{{PLURAL:$1|$1 lětom|$1 lětomaj|$1 lětami}}',
 'ago' => 'před $1',
 'just-now' => 'runje',
 
@@ -3734,6 +3741,10 @@ Wobrazy so połnym rozeznaću pokazuja, druhe datajowe typy so ze zwjazanym prog
 'logentry-newusers-create2' => '$1 załoži wužiwarske konto $3',
 'logentry-newusers-autocreate' => 'Konto $1 je so awtomatisce załožiło',
 'newuserlog-byemail' => 'Hesło z e-mejlku pósłane',
+'logentry-rights-rights' => '$1 změni skupinske čłonstwo za $3 z $4 do $5',
+'logentry-rights-rights-legacy' => '$1 změni skupinske čłonstwo za $3',
+'logentry-rights-autopromote' => '$1 powyši so awtomatisce wot $4 do $5',
+'rightsnone' => '(ničo)',
 
 # Feedback
 'feedback-bugornote' => 'Jeli sy zwólniwy, techniski problem nadrobnje wopisać, [$1 zdźěl prošu zmylk].
index 2bf229b..8c180d1 100644 (file)
@@ -932,6 +932,10 @@ Si ou mete li, n ap itilize li pou nou ka nonmen ou pou kontribisyon ou yo.',
 
 'grouppage-sysop' => '{{ns:project}}:Administratè',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Jounal pou kreyasyon kont itilizatè yo',
+'newuserlogpagetext' => 'Men jounal, istorik kreyasyon kont itilizatè yo.',
+
 # User rights log
 'rightslog' => 'Jounal modifikasyon estati itilizatè yo',
 
@@ -1093,10 +1097,6 @@ Gade tou [[Special:WantedCategories|kategori moun mande]].',
 # Special:LinkSearch
 'linksearch' => 'Lyen andeyò',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Jounal pou kreyasyon kont itilizatè yo',
-'newuserlogpagetext' => 'Men jounal, istorik kreyasyon kont itilizatè yo.',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lis manm yo)',
 
index bfda311..21279a1 100644 (file)
@@ -1589,15 +1589,13 @@ A műveletet nem lehet visszavonni.',
 'right-sendemail' => 'e-mail küldése más felhasználóknak',
 'right-passwordreset' => 'Jelszó visszaállítási emailek megtekintése',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Új szerkesztők naplója',
+'newuserlogpagetext' => 'Ez a napló az újonnan regisztrált szerkesztők listáját tartalmazza.',
+
 # User rights log
 'rightslog' => 'Szerkesztői jogosultságok naplója',
 'rightslogtext' => 'Ez a rendszernapló a felhasználó jogosultságok változásait mutatja.',
-'rightslogentry' => 'megváltoztatta $1 szerkesztő felhasználó jogait (régi: $2; új: $3)',
-'rightslogentry-autopromote' => 'automatikusan $2 helyett $3 jogokat kapott',
-'logentry-rights-rights' => '$1 megváltoztatta $3 csoport tagságát erről: $4 erre: $5',
-'logentry-rights-rights-legacy' => '$1 megváltoztatta $3 csoport tagságát',
-'logentry-rights-autopromote' => '$1 automatikusan előléptetve erről: $4 erre: $5',
-'rightsnone' => '(semmi)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lap olvasása',
@@ -2237,10 +2235,6 @@ Támogatott protokollok: <code>$1</code> (http:// az alapértelmezett, ha nincs
 'activeusers-hidesysops' => 'Adminisztrátorok elrejtése',
 'activeusers-noresult' => 'Nem található ilyen szerkesztő.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Új szerkesztők naplója',
-'newuserlogpagetext' => 'Ez a napló az újonnan regisztrált szerkesztők listáját tartalmazza.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Szerkesztői csoportok jogai',
 'listgrouprights-summary' => 'Lenn láthatóak a wikiben létező szerkesztői csoportok, valamint az azokhoz tartozó jogok.
@@ -2374,6 +2368,8 @@ $UNWATCHURL címet
 
 Visszajelzés és további segítség:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'létrehozta',
+'changed' => 'megváltoztatta',
 
 # Delete
 'deletepage' => 'Lap törlése',
@@ -3133,6 +3129,9 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'pageinfo-contentpage' => 'Tartalmi lapnak számít',
 'pageinfo-contentpage-yes' => 'Igen',
 'pageinfo-protect-cascading-yes' => 'Igen',
+'pageinfo-category-pages' => 'Lapok száma',
+'pageinfo-category-subcats' => 'Alkategóriák száma',
+'pageinfo-category-files' => 'Fájlok száma',
 
 # Skin names
 'skinname-standard' => 'Klasszikus',
@@ -3219,6 +3218,8 @@ A futtatása során kárt tehet a számítógépedben.",
 'minutes' => '{{PLURAL:$1|egy|$1}} perccel',
 'hours' => '{{PLURAL:$1|egy|$1}} órával',
 'days' => '{{PLURAL:$1|egy|$1}} nappal',
+'months' => '{{PLURAL:$1|$1 hónap|$1 hónap}}',
+'years' => '{{PLURAL:$1|$1 év|$1 év}}',
 'ago' => '$1 ezelőtt',
 'just-now' => 'épp most',
 
@@ -3827,6 +3828,7 @@ minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt ta
 'version-license' => 'Licenc',
 'version-poweredby-credits' => "Ez a wiki '''[//www.mediawiki.org/ MediaWiki]''' szoftverrel működik, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'mások',
+'version-credits-summary' => 'Szeretnénk elismerni a következő személyek hozzájárulását a [[Special:Version|MediaWiki]] szoftverhez.',
 'version-license-info' => 'A MediaWiki szabad szoftver, terjeszthető és / vagy módosítható a GNU General Public License alatt, amit a Free Software Foundation közzétett; vagy a 2-es verziójú licenc, vagy (az Ön választása alapján) bármely későbbi verzió szerint. 
 
 A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉLKÜL, anélkül, hogy PIACKÉPES vagy HASZNÁLHATÓ LENNE EGY ADOTT CÉLRA. Lásd a GNU General Public License-t a további részletekért. 
@@ -3970,6 +3972,10 @@ A képek teljes méretben jelennek meg, más fájltípusok közvetlenül a hozz
 'logentry-newusers-create2' => '$1 létrehozta $3 felhasználói fiókját',
 'logentry-newusers-autocreate' => '$1 fiók automatikusan létrehozva',
 'newuserlog-byemail' => 'a jelszót kiküldtük a megadott e-mail címre',
+'logentry-rights-rights' => '$1 megváltoztatta $3 csoport tagságát erről: $4 erre: $5',
+'logentry-rights-rights-legacy' => '$1 megváltoztatta $3 csoport tagságát',
+'logentry-rights-autopromote' => '$1 automatikusan előléptetve erről: $4 erre: $5',
+'rightsnone' => '(semmi)',
 
 # Feedback
 'feedback-bugornote' => 'Ha kész technikai problémát részletesen leírni, akkor kérjük [$1 jelents egy hibát]. Egyébként használd az alábbi űrlapot. A hozzászólásod a „[$3 $2]” laphoz kerül felvételre, a szerkesztő neveddel és böngésződ típusával együtt.',
index 6ff11ee..adfda36 100644 (file)
@@ -1348,11 +1348,13 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'right-upload_by_url' => 'Բեռնել նիշքեր ինտերնետային հասցեից',
 'right-delete' => 'Էջերի ջնջում',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Մասնակիցների գրանցման տեղեկամատյան',
+'newuserlogpagetext' => 'Սա նոր մասնակիցների գրանցման տեղեկամատյանն է.',
+
 # User rights log
 'rightslog' => 'Մասնակցի իրավունքների տեղեկամատյան',
 'rightslogtext' => 'Սա մասնակիցների իրավունքների փոփոխությունների տեղեկամատյանն է։',
-'rightslogentry' => '$1 մասնակցի անդամակցությունը փոխվել է $2-ից $3',
-'rightsnone' => '(ոչ մի)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'խմբագրել այս էջը',
@@ -1737,10 +1739,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ActiveUsers
 'activeusers' => 'Ակտիվ մասնակիցների ցանկ',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Մասնակիցների գրանցման տեղեկամատյան',
-'newuserlogpagetext' => 'Սա նոր մասնակիցների գրանցման տեղեկամատյանն է.',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(անդամների ցանկ)',
 
@@ -1834,6 +1832,8 @@ $NEWPAGE
 
 Հետադարձ կապ և օգնություն՝
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ստեղծված է',
+'changed' => 'փոփոխված է',
 
 # Delete
 'deletepage' => 'Ջնջել էջը',
@@ -2728,6 +2728,7 @@ $3
 'logentry-newusers-create' => '$1 մասնակիցը ստեղծեց նոր հաշիվ',
 'logentry-newusers-create2' => '$1 Ստեղծեց նոր հաշիվ $3',
 'newuserlog-byemail' => 'Գաղտնաբառն ուղարկված է էլ․ փոստով',
+'rightsnone' => '(ոչ մի)',
 
 # Feedback
 'feedback-subject' => 'Թեմա.',
index 85c0855..cb21211 100644 (file)
@@ -1471,15 +1471,13 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'right-sendemail' => 'Inviar e-mail a altere usatores',
 'right-passwordreset' => 'Vider le e-mails pro reinitialisar le contrasigno',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registro de creation de usatores',
+'newuserlogpagetext' => 'Isto es un registro de creation de usatores.',
+
 # User rights log
 'rightslog' => 'Registro de derectos de usator',
 'rightslogtext' => 'Isto es un registro de cambios in derectos de usator.',
-'rightslogentry' => 'cambiava le gruppos del quales $1 es membro de $2 a $3',
-'rightslogentry-autopromote' => 'ha essite automaticamente promovite de $2 a $3',
-'logentry-rights-rights' => '$1 cambiava le appertinentia a gruppos pro $3 de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 cambiava le appertinentia a gruppos pro $3',
-'logentry-rights-autopromote' => '$1 ha essite automaticamente promovite de $4 a $5',
-'rightsnone' => '(nulle)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leger iste pagina',
@@ -2138,10 +2136,6 @@ Protocollos supportate: <code>$1</code> (http:// es assumite si nulle protocollo
 'activeusers-hidesysops' => 'Celar administratores',
 'activeusers-noresult' => 'Nulle usator trovate.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registro de creation de usatores',
-'newuserlogpagetext' => 'Isto es un registro de creation de usatores.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Derectos del gruppos de usatores',
 'listgrouprights-summary' => 'Lo sequente es un lista de gruppos de usatores definite in iste wiki, con lor derectos de accesso associate.
@@ -2275,6 +2269,8 @@ $UNWATCHURL
 
 Feedback e ulterior assistentia:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'create',
+'changed' => 'modificate',
 
 # Delete
 'deletepage' => 'Deler pagina',
@@ -3891,6 +3887,10 @@ Le imagines se monstra in plen resolution, le altere typos de file se executa di
 'logentry-newusers-create2' => 'Le conto de usator $3 ha essite create per $1',
 'logentry-newusers-autocreate' => 'Le conto $1 ha essite create automaticamente',
 'newuserlog-byemail' => 'contrasigno inviate per e-mail',
+'logentry-rights-rights' => '$1 cambiava le appertinentia a gruppos pro $3 de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 cambiava le appertinentia a gruppos pro $3',
+'logentry-rights-autopromote' => '$1 ha essite automaticamente promovite de $4 a $5',
+'rightsnone' => '(nulle)',
 
 # Feedback
 'feedback-bugornote' => 'Si tu es preste a describer un problema technic in detalio, per favor [$1 reporta un falta].
index ac3f403..c3df096 100644 (file)
@@ -26,6 +26,7 @@
  * @author Mahali syarifuddin
  * @author McDutchie
  * @author Meursault2004
+ * @author Naval Scene
  * @author Remember the dot
  * @author Rex
  * @author Urhixidur
@@ -439,7 +440,7 @@ $messages = array(
 'may' => 'Mei',
 'jun' => 'Jun',
 'jul' => 'Jul',
-'aug' => 'Agu',
+'aug' => 'Ags',
 'sep' => 'Sep',
 'oct' => 'Okt',
 'nov' => 'Nov',
@@ -1615,15 +1616,13 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'right-sendemail' => 'Mengirim surel ke pengguna lain',
 'right-passwordreset' => 'Lihat surel pengaturulangan kata sandi',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log pengguna baru',
+'newuserlogpagetext' => 'Di bawah ini adalah log pendaftaran pengguna baru',
+
 # User rights log
 'rightslog' => 'Log perubahan hak akses',
 'rightslogtext' => 'Di bawah ini adalah log perubahan terhadap hak-hak pengguna.',
-'rightslogentry' => 'mengganti keanggotaan kelompok untuk $1 dari $2 menjadi $3',
-'rightslogentry-autopromote' => 'secara otomatis dipromosikan dari $2 ke $3',
-'logentry-rights-rights' => '$1 mengubah keanggotaan grup $3 dari $4 menjadi $5',
-'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
-'logentry-rights-autopromote' => '$1 secara otomatis dipromosikan dari $4 menjadi $5',
-'rightsnone' => '(tidak ada)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'membaca halaman ini',
@@ -2230,9 +2229,9 @@ Lihat pula [[Special:WantedCategories|kategori yang diinginkan]].',
 'linksearch-pat' => 'Pola pencarian:',
 'linksearch-ns' => 'Ruang nama:',
 'linksearch-ok' => 'Cari',
-'linksearch-text' => 'Kartu liar seperti "*.wikipedia.org" dapat digunakan.
+'linksearch-text' => 'Tanda bintang seperti "*.wikipedia.org" dapat digunakan.
 Perlu sedikitnya satu domain tingkat atas, misalnya "*.org".<br />
-Protokol yang didukung: <code>$1</code> (menggunakan http:// bila protokol tidak ditentukan)',
+{{PLURAL:$2|Protokol|Protokol}} yang didukung: <code>$1</code> (menggunakan http:// bila protokol tidak ditentukan)',
 'linksearch-line' => '$1 memiliki pranala dari $2',
 'linksearch-error' => "''Wildcards'' hanya dapat digunakan di bagian awal dari nama host.",
 
@@ -2251,10 +2250,6 @@ Protokol yang didukung: <code>$1</code> (menggunakan http:// bila protokol tidak
 'activeusers-hidesysops' => 'Sembunyikan pengurus',
 'activeusers-noresult' => 'Pengguna tidak ditemukan.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log pengguna baru',
-'newuserlogpagetext' => 'Di bawah ini adalah log pendaftaran pengguna baru',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Daftar kelompok pengguna',
 'listgrouprights-summary' => 'Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].',
@@ -2392,6 +2387,8 @@ $UNWATCHURL
 
 Umpan balik dan bantuan lebih lanjut:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'dibuat',
+'changed' => 'diubah',
 
 # Delete
 'deletepage' => 'Hapus halaman',
@@ -2563,7 +2560,7 @@ $1',
 'namespace' => 'Ruang nama:',
 'invert' => 'Balikkan pilihan',
 'tooltip-invert' => 'Centang kotak ini untuk menyembunyikan perubahan halaman dalam ruang nama yang dipilih (dan ruang nama terkait jika dicentang)',
-'namespace_association' => 'Ruang nama terkait',
+'namespace_association' => 'Ruangnama terkait',
 'tooltip-namespace_association' => 'Centang halaman ini untuk menyertakan ruang nama pembicaraan atau subjek yang terkait dengan ruang nama terpilih',
 'blanknamespace' => '(Utama)',
 
@@ -3993,6 +3990,10 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 'logentry-newusers-create2' => '$1 membuat akun pengguna $3',
 'logentry-newusers-autocreate' => 'Akun $1 dibuat secara otomatis',
 'newuserlog-byemail' => 'kata sandi dikirim melalui surel',
+'logentry-rights-rights' => '$1 mengubah keanggotaan grup $3 dari $4 menjadi $5',
+'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
+'logentry-rights-autopromote' => '$1 secara otomatis dipromosikan dari $4 menjadi $5',
+'rightsnone' => '(tidak ada)',
 
 # Feedback
 'feedback-bugornote' => 'Jika Anda sudah siap untuk mendeskripsikan masalah teknis secara rinci silakan [$1 melaporkan bug].
index e0235b8..12b6a35 100644 (file)
@@ -715,9 +715,11 @@ Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
 'grouppage-bureaucrat' => '{{ns:project}}:Burócrates',
 'grouppage-suppress' => '{{ns:project}}:Vigilatores',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Diarium de creation de usator',
+
 # User rights log
 'rightslog' => 'Diarium de jures de usator',
-'rightsnone' => '(null)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'redacter ti págine',
@@ -967,9 +969,6 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'linksearch-ns' => 'Spacie de nómine:',
 'linksearch-line' => '$1 es ligat de $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Diarium de creation de usator',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(liste de membres)',
 
@@ -1010,6 +1009,8 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'watching' => 'Vigilant...',
 'unwatching' => 'Desvigilant...',
 
+'created' => 'creat',
+
 # Delete
 'deletepage' => 'Deleter págine',
 'delete-legend' => 'Deleter',
@@ -1412,4 +1413,7 @@ Vu posse anc [[Special:EditWatchlist|usar li redactor uniform]].',
 'tags-edit' => 'redacter',
 'tags-hitcount' => '$1 {{PLURAL:$1|change|changes}}',
 
+# New logging system
+'rightsnone' => '(null)',
+
 );
index 193b6d7..05ea9a4 100644 (file)
@@ -857,9 +857,11 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 'right-bigdelete' => 'Kàcha ihü nwéré ákíkó mbu dí ógólógó',
 'right-undelete' => 'Ágbakashia ótù ihü',
 
+# Special:Log/newusers
+'newuserlogpage' => "Ndétu nchétá ihe ọ'bànifé kèrè",
+
 # User rights log
 'rightslog' => "Ndetu échìchè íwú ọ'bànifé",
-'rightsnone' => '(efù)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'guwa ihüá',
@@ -1106,9 +1108,6 @@ Ubwa, o na ga [[$2]].',
 'activeusers-hidesysops' => 'Zonari ndi íshí',
 'activeusers-noresult' => "Ọ hügị ọ'bànifé.",
 
-# Special:Log/newusers
-'newuserlogpage' => "Ndétu nchétá ihe ọ'bànifé kèrè",
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Ọtú',
 'listgrouprights-rights' => 'Nkwènyé',
@@ -1148,6 +1147,8 @@ Ihe gi gbanwe na ógè gi bya nà ihüá na ihü okwu ya gi di ndétu ngáhù, n
 
 'enotif_impersonal_salutation' => "ọ'bànifé {{SITENAME}}",
 'enotif_anon_editor' => "ọ'bànifé ézíghị ihu $1",
+'created' => 'kèrè',
+'changed' => 'gbanwere',
 
 # Delete
 'deletepage' => 'Kàchafu ihü',
@@ -1752,6 +1753,7 @@ Nke ozor gí zonari na áká onwe ha.
 
 # New logging system
 'revdelete-content-hid' => 'ihe zọ̀nàri',
+'rightsnone' => '(efù)',
 
 # Feedback
 'feedback-message' => 'Ozi:',
index 93ccb1a..0fdee86 100644 (file)
@@ -1216,7 +1216,7 @@ Ngem saanto a mabalinen nga ipasubli.',
 'youremail' => 'E-surat:',
 'username' => 'Nagan ti agar-aramat:',
 'uid' => 'ID ti agar-aramat:',
-'prefs-memberingroups' => 'Kameng iti {{PLURAL:$1|a bunggoy| a bungbunggoy}}:',
+'prefs-memberingroups' => 'Kameng {{PLURAL:$1|ti grupo|dagiti grupo}}:',
 'prefs-registration' => 'Oras a nagrehistro:',
 'yourrealname' => 'Pudno a nagan:',
 'yourlanguage' => 'Pagsasao:',
@@ -1368,15 +1368,13 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-sendemail' => 'Agpatulod ti e-surat kadagiti sabali nga agar-aramat',
 'right-passwordreset' => 'Kitaen dagiti e-surat ti naipasubli a kontrasenias',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Listaan dagiti naaramid nga agar-aramat',
+'newuserlogpagetext' => 'Listaan dagiti panakaramid ti agar-aramat.',
+
 # User rights log
 'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
 'rightslogtext' => 'Listaan daytoy kadagiti sinukatan a karbengan ti agar-aramat.',
-'rightslogentry' => 'sinukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
-'rightslogentry-autopromote' => 'naautomatiko a naipangato a naggapo iti $2 idiay $3',
-'logentry-rights-rights' => 'Ni $1 ket nangbaliw ti grupo a panakaikameng para kenni $3 manipud ti $4 iti $5',
-'logentry-rights-rights-legacy' => 'Ni $1 ket nangbaliw ti grupo a panakaikameng para kenni $3',
-'logentry-rights-autopromote' => 'Ni $1 ket automatiko idi a naipangato manipud ti $4 iti $5',
-'rightsnone' => '(awan)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaen datoy a panid',
@@ -2001,9 +1999,9 @@ Kitaen met [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
 'linksearch-pat' => 'Alagad ti panagbiruk:',
 'linksearch-ns' => 'Nagan ti lugar:',
 'linksearch-ok' => 'Biruken',
-'linksearch-text' => 'Ti naataap a tarheta a kas "*.wikipedia.org" ket mabalin nga usaren.
+'linksearch-text' => 'Ti naataap a tarheta a kas ti "*.wikipedia.org" ket mabalin nga usaren.
 Masapul ti kangatuan a pagturayan, a kaspagarigan "*.org".<br />
-Dagiti nasuportaran a protokol: <code>$1</code> (naipakasigud ti http:// no awan ti protokol a nainaganan).',
+{PLURAL:$2|Ti protokol|Dagiti protokol}} a nasuportaran: <code>$1</code> (naipakasigud ti http:// no awan ti protokol a nainaganan).',
 'linksearch-line' => 'Ti $1 ket nakasilpo idiay $2',
 'linksearch-error' => 'Ti naatap a tarheta ket agparang laeng iti pinagrugi ti nagan ti agsangaili.',
 
@@ -2022,10 +2020,6 @@ Dagiti nasuportaran a protokol: <code>$1</code> (naipakasigud ti http:// no awan
 'activeusers-hidesysops' => 'Ilemmeng dagiti administrador',
 'activeusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Listaan dagiti naaramid nga agar-aramat',
-'newuserlogpagetext' => 'Listaan dagiti panakaramid ti agar-aramat.',
-
 # 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 panagserrekda.
@@ -2160,6 +2154,8 @@ $UNWATCHURL
 
 Ti makunkunam ken no masapulmo pay ti tulong:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'naaramid',
+'changed' => 'nasukatan',
 
 # Delete
 'deletepage' => 'Ikkaten ti panid',
@@ -3731,6 +3727,10 @@ Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.',
 'logentry-newusers-create2' => 'Nagpartuat ni ti $3 a pakabilangan ti agar-aramat babaen ni $1',
 'logentry-newusers-autocreate' => 'Ti pakabilangan ni $1 ket automatiko a napartuat',
 'newuserlog-byemail' => 'naipatulod ti kontrasenias ti e-surat',
+'logentry-rights-rights' => 'Ni $1 ket nangbaliw ti grupo a panakaikameng para kenni $3 manipud ti $4 iti $5',
+'logentry-rights-rights-legacy' => 'Ni $1 ket nangbaliw ti grupo a panakaikameng para kenni $3',
+'logentry-rights-autopromote' => 'Ni $1 ket automatiko idi a naipangato manipud ti $4 iti $5',
+'rightsnone' => '(awan)',
 
 # Feedback
 'feedback-bugornote' => 'No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti kiteb].
index f7ce2a7..8a011c2 100644 (file)
@@ -631,9 +631,11 @@ $messages = array(
 'right-move' => 'ОагIувний цIи хувца',
 'right-movefile' => 'Паьлий цIи хувца',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Дакъалаьцархоший дIаязбeнна таптар',
+
 # User rights log
 'rightslog' => 'Дакъалаьцархочунна бокъона тептар',
-'rightsnone' => '(а)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'Укх оагIуви дешам',
@@ -790,9 +792,6 @@ $messages = array(
 'linksearch-ok' => 'Лаха',
 'linksearch-line' => '$1 тIа Iинк $2 юкъера',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Дакъалаьцархоший дIаязбeнна таптар',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(тоабий дагарче)',
 
@@ -1180,4 +1179,7 @@ $messages = array(
 'htmlform-reset' => 'Хувцамаш юхадаккха',
 'htmlform-selectorother-other' => 'Кхыдола',
 
+# New logging system
+'rightsnone' => '(а)',
+
 );
index 3eb74dc..a5dcde3 100644 (file)
@@ -461,12 +461,13 @@ Of margir notendur eru að reyna að skoða þessa síðu.
 Vinsamlegast bíddu í smástund áður en þú reynir að sækja þessa síðu aftur.
 
 $1',
+'pool-timeout' => 'Of löng bið efttir lás',
 'pool-queuefull' => 'Vefþjónninn er yfirhlaðinn í augnablikinu.',
 'pool-errorunknown' => 'Óþekkt villa',
 
 # 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' => 'Um {{SITENAME}}',
-'aboutpage' => 'Project:Um',
+'aboutpage' => 'Project:Um verkefnið',
 'copyright' => 'Efni má nota samkvæmt $1.',
 'copyrightpage' => '{{ns:project}}:Höfundarréttur',
 'currentevents' => 'Potturinn',
@@ -593,6 +594,8 @@ Gjörðu svo vel og tilkynntu atvikið til [[Special:ListUsers/sysop|stjórnanda
 'cannotdelete' => 'Ekki var hægt að eyða síðunni "$1".
 Líklegt er að einhver annar hafi gert það.',
 'cannotdelete-title' => 'Gat ekki eytt síðunni $1',
+'delete-hook-aborted' => 'Eyðing síðu stöðvuð af viðbótarkrók (extension hook).
+Engin skýring gefin.',
 'badtitle' => 'Slæmur titill',
 'badtitletext' => 'Umbeðin síðutitill er ógildur.',
 'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að {{PLURAL:$1|ein niðurstaða er aðgengileg|$1 niðurstöður eru aðgengilegar}} í skyndiminninu.',
@@ -605,7 +608,7 @@ Spurn: $2',
 'viewsource-title' => 'Skoða efni $1',
 'actionthrottled' => 'Aðgerðin kafnaði',
 'actionthrottledtext' => 'Til þess að verjast ruslpósti, er ekki hægt að framkvæma þessa aðgerð of oft, og þú hefur farið fram yfir þau takmörk. Gjörðu svo vel og reyndu aftur eftir nokkrar mínútur.',
-'protectedpagetext' => 'Þessari síðu hefur verið læst til að koma í veg fyrir breytingar.',
+'protectedpagetext' => 'Þessari síðu hefur verið læst til að koma í veg fyrir breytingar eða aðrar aðgerðir.',
 'viewsourcetext' => 'Þú getur skoðað og afritað kóða þessarar síðu:',
 'viewyourtext' => "Þú getur skoðað og afritað kóða '''breytinganna þinna''' yfir á þessa síðu:",
 'protectedinterface' => 'Þessi síða útvegar textann sem birtist í viðmóti hugbúnaðarins sem keyrir þessa síðu, og er læst til að koma í veg fyrir misnotkun.
@@ -799,6 +802,7 @@ Tímabundið lykilorð: $2',
 'changeemail-oldemail' => 'Núverandi netfang:',
 'changeemail-newemail' => 'Nýtt netfang:',
 'changeemail-none' => '(ekkert)',
+'changeemail-password' => '{{SITENAME}} lykilorðið þitt:',
 'changeemail-submit' => 'Breyta netfangi',
 'changeemail-cancel' => 'Hætta við',
 
@@ -991,6 +995,8 @@ Eyðingarskrá og flutningaskrá fyrir þessa síðu eru útvegaðar hér til þ
 'moveddeleted-notice' => 'Þessari síðu hefur verið eytt.
 Eyðingaskrá og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.',
 'log-fulllog' => 'Skoða alla aðgerðarskránna',
+'edit-hook-aborted' => 'Breyting síðu stöðvuð af viðbótarkrók (extension hook).
+Engin skýring gefin.',
 'edit-gone-missing' => 'Gat ekki uppfært síðu.
 Svo virðist sem henni hafi verið eytt.',
 'edit-conflict' => 'Breytingaárekstur.',
@@ -998,6 +1004,9 @@ Svo virðist sem henni hafi verið eytt.',
 'edit-already-exists' => 'Gat ekki skapað nýja síðu.
 Hún er nú þegar til.',
 'defaultmessagetext' => 'Sjálfgefinn skilaboða texti',
+'content-failed-to-parse' => 'Gat ekki þáttað $2 efni samkvæmt $1 líkani: $3',
+'invalid-content-data' => 'Ógild efnisgögn.',
+'content-not-allowed-here' => '„$1“ efni er ekki leyfilegt á síðunni [[$2]]',
 
 # Content models
 'content-model-wikitext' => 'wiki-texti',
@@ -1325,9 +1334,9 @@ Ekki er hægt að taka þessa breytingu til baka.',
 'prefs-emailconfirm-label' => 'Staðfesting netfangs:',
 'prefs-textboxsize' => 'Stærð breytingarglugga',
 'youremail' => 'Netfang:',
-'username' => 'Notandanafn:',
-'uid' => 'Raðnúmer:',
-'prefs-memberingroups' => 'Meðlimur {{PLURAL:$1|hóps|hópa}}:',
+'username' => '{{Gender:$1|Notandanafn}}:',
+'uid' => 'Raðnúmer {{GENDER:$1|notanda}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Meðlimur}} {{PLURAL:$1|hóps|hópa}}:',
 'prefs-registration' => 'Nýskráningartími:',
 'yourrealname' => 'Fullt nafn:',
 'yourlanguage' => 'Viðmótstungumál:',
@@ -1477,12 +1486,13 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'right-sendemail' => 'Senda tölvupóst til annara notenda',
 'right-passwordreset' => 'Skoða tölvupósta um endurstillingu lykilorðs',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Skrá yfir nýja notendur',
+'newuserlogpagetext' => 'Þetta er skrá yfir nýskráða notendur.',
+
 # User rights log
 'rightslog' => 'Réttindaskrá notenda',
 'rightslogtext' => 'Þetta er skrá yfir breytingar á réttindum notenda.',
-'rightslogentry' => 'breytti réttindum $1 frá $2 í $3',
-'rightslogentry-autopromote' => 'fékk sjálfvirkt aukin réttindi frá $2 til $3',
-'rightsnone' => '(engin)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lesa þessa síðu',
@@ -1945,6 +1955,7 @@ Hún er tilvísun á [[$2]].',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bæt|bæti}}',
 'ncategories' => '$1 {{PLURAL:$1|flokkur|flokkar}}',
+'ninterwikis' => '$1 {{PLURAL:$1|tungumálatengill|tungumálatenglar}}',
 'nlinks' => '$1 {{PLURAL:$1|tengill|tenglar}}',
 'nmembers' => '$1 {{PLURAL:$1|meðlimur|meðlimir}}',
 'nrevisions' => '$1 {{PLURAL:$1|breyting|breytingar}}',
@@ -1973,6 +1984,7 @@ Hún er tilvísun á [[$2]].',
 'mostlinkedtemplates' => 'Mest ítengdu snið',
 'mostcategories' => 'Mest flokkaðar greinar',
 'mostimages' => 'Mest ítengdu skrárnar',
+'mostinterwikis' => 'Síður með flestm tungumálatenglum',
 'mostrevisions' => 'Síður eftir fjölda breytinga',
 'prefixindex' => 'Allar síður með forskeyti',
 'prefixindex-namespace' => 'Allar síður með forskeyti ($1 nafnrými)',
@@ -2048,6 +2060,7 @@ Vinsamlegast athugið að aðrar vefsíður gætu tengt beint í skrár héðan,
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Þú ert að skoða útgáfu síðunnar úr skyndiminni, sem getur verið allt að $1 gömul.',
+'cachedspecial-viewing-cached-ts' => 'Þetta er útgáfa þessarar síðu úr skyndiminni og sem endurspeglar ekki endilega núverandi ástand.',
 'cachedspecial-refresh-now' => 'Skoða síðustu',
 
 # Special:Categories
@@ -2069,9 +2082,9 @@ Sjá einnig [[Special:WantedCategories|eftirsótta flokka]].',
 'linksearch-pat' => 'Leitarmynstur:',
 'linksearch-ns' => 'Nafnrými:',
 'linksearch-ok' => 'Leita',
-'linksearch-text' => 'Algildistafir eins og "*.wikipedia.org" eru leyfðir.<br />
-Stafurinn þarf í minnsta kosti að innihalda rótarlén, eins og "*.org"
-Studdar samskiptareglur: <code>$1</code> (ekki bæta neinum af þessum í leitina)',
+'linksearch-text' => 'Algildisleit eins og "*.wikipedia.org" er leyfð.<br />
+Leitin þarf að minnsta kosti að innihalda rótarlén, eins og "*.org"
+{{PLURAL:$2|Studd samskiptaregla|Studdar samskiptareglur}}: <code>$1</code> (http:// sjálfgefið ef engin regla er valin).',
 'linksearch-line' => 'Tengt er í $1 á síðunni $2',
 'linksearch-error' => 'Algildistafir mega engöngu birtast í upphafi vefslóðarinnar.',
 
@@ -2090,10 +2103,6 @@ Studdar samskiptareglur: <code>$1</code> (ekki bæta neinum af þessum í leitin
 'activeusers-hidesysops' => 'Fela möppudýr',
 'activeusers-noresult' => 'Enginn notandi fannst.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Skrá yfir nýja notendur',
-'newuserlogpagetext' => 'Þetta er skrá yfir nýskráða notendur.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Notandahópréttindi',
 'listgrouprights-summary' => 'Hér er listi yfir notendahópa á þessum wiki, með þeirra réttindum. 
@@ -2117,9 +2126,11 @@ Studdar samskiptareglur: <code>$1</code> (ekki bæta neinum af þessum í leitin
 'mailnologin' => 'Ekkert netfang til að senda á',
 'mailnologintext' => 'Þú verður að vera [[Special:UserLogin|innskráð(ur)]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.',
 'emailuser' => 'Senda þessum notanda tölvupóst',
+'emailuser-title-target' => 'Sendu þessum {{GENDER:$1|notanda}} tölvupóst',
+'emailuser-title-notarget' => 'Senda tölvupóst',
 'emailpage' => 'Senda tölvupóst',
-'emailpagetext' => 'Hafi notandi tilgreint netfang í stillingunum sínum er hægt að senda póst til hans hér.
-Póstfangið sem þú tilgreindir í [[Special:Preferences|stillingunum þínum]] birtist í "Frá:" hluta tölvupóstsins, svo að viðtakandi þess geti svarað beint til þín.',
+'emailpagetext' => 'Hafi notandinn tilgreint netfang í stillingunum sínum er hægt að senda póst til {{GENDER:$1|hans|hennar|hans}} hér.
+Póstfangið sem þú tilgreindir í [[Special:Preferences|stillingunum þínum]] birtist í "Frá:" hluta tölvupóstsins, svo að viðtakandi hans geti svarað beint til þín.',
 'usermailererror' => 'Póst hlutur skilaði villu:',
 'defemailsubject' => '{{SITENAME}} skilaboð frá notandanum "$1"',
 'usermaildisabled' => 'Netfang notenda er óvirkt',
@@ -2157,8 +2168,8 @@ Póstfangið sem þú tilgreindir í [[Special:Preferences|stillingunum þínum]
 'watchnologin' => 'Óinnskráð(ur)',
 'watchnologintext' => 'Þú verður að vera [[Special:UserLogin|innskáð(ur)]] til að geta breytt vaktlistanum.',
 'addwatch' => 'Bæta á vaktlistann',
-'addedwatchtext' => "Síðunni „[[:$1]]“ hefur verið bætt á [[Special:Watchlist|Vaktlistann]] þinn.
-Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og síðan mun vera '''feitletruð''' í [[Special:RecentChanges|Nýlegum breytingum]] svo auðveldara sé að finna hana.",
+'addedwatchtext' => 'Síðunni „[[:$1]]“ hefur verið bætt á [[Special:Watchlist|vaktlistann]] þinn.
+Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar.',
 'removewatch' => 'Fjarlægja af vaktlistanum',
 'removedwatchtext' => 'Síðan „[[:$1]]“ hefur verið fjarlægð af [[Special:Watchlist|vaktlistanum þínum]].',
 'watch' => 'Vakta',
@@ -2184,6 +2195,7 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
 'unwatching' => 'Afvakta...',
 'watcherrortext' => 'Villa kom upp við breytingu á stillingum vaktlistans fyrir "$1".',
 
+'enotif_mailer' => '{{SITENAME}} tilkynningasendill',
 'enotif_reset' => 'Merkja allar síður sem skoðaðar',
 'enotif_impersonal_salutation' => '{{SITENAME}}notandi',
 'enotif_subject_deleted' => '$1 á {{SITENAME}} hefur verið eytt af {{gender:$2|$2}}',
@@ -2227,6 +2239,8 @@ Til þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smel
 Til þess að hætta að fylgjast með „$PAGETITLE”, smelltu á:
 
 $UNWATCHURL',
+'created' => 'búin til',
+'changed' => 'breytt',
 
 # Delete
 'deletepage' => 'Eyða',
@@ -2297,6 +2311,8 @@ Sjáðu [[Special:ProtectedPages|Verndunarskrá]] fyrir núverandi lista yfir ve
 'prot_1movedto2' => '[[$1]] færð á [[$2]]',
 'protect-badnamespace-title' => 'Óverndanlegt nafnrými',
 'protect-badnamespace-text' => 'Síður í þessu nafnrými geta ekki verið verndaðar.',
+'protect-norestrictiontypes-text' => 'Ekki er hægt að vernda síðuna þar sem skilgreind verndunarstig eru ekki til staðar.',
+'protect-norestrictiontypes-title' => 'Óverndanleg síða',
 'protect-legend' => 'Verndunarstaðfesting',
 'protectcomment' => 'Ástæða:',
 'protectexpiry' => 'Rennur út:',
@@ -2381,7 +2397,8 @@ Innihald greinarinnar er einungis aðgengilegt möppudýrum.',
 'undeletedrevisions' => '$1 {{PLURAL:$1|breyting endurvakin|breytingar endurvaktar}}',
 'undeletedrevisions-files' => '$1 {{PLURAL:$1|breyting|breytingar}} og $2 {{PLURAL:$2|skrá|skrár}} endurvaktar',
 'undeletedfiles' => '{{PLURAL:$1|Ein skrá endurvakin|$1 skrár endurvaktar}}',
-'cannotundelete' => 'Ekki var hægt að afturkalla síðuna. (Líklega hefur einhver gert það á undan þér.)',
+'cannotundelete' => 'Ekki var hægt að afturkalla eyðingu.
+$1',
 'undeletedpage' => "'''$1 var endurvakin'''
 
 Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og endurvakningar.",
@@ -2604,6 +2621,7 @@ Vinsamlegast hafðu samband við internetþjónustuaðilann þinn eða netstjór
 Mundu að [[Special:UnlockDB|opna hann aftur]] þegar þú hefur lokið viðgerðum.',
 'unlockdbsuccesstext' => 'Gagnagrunnurinn hefur verið opnaður.',
 'databasenotlocked' => 'Gagnagrunnurinn er ekki læstur.',
+'lockedbyandtime' => '(af {{GENDER:$1|$1}} kl. $3, $2)',
 
 # Move page
 'move-page' => 'Færa $1',
@@ -3681,11 +3699,12 @@ Tæknilegir örðugleikar eru á þessari síðu.',
 'logentry-move-move_redir-noredirect' => '$1 færði $3 á $4 yfir tilvísun, án þess að skilja eftir tilvísun',
 'logentry-patrol-patrol' => '$1 merkti útgáfu $3 frá $4 sem yfirfarna',
 'logentry-patrol-patrol-auto' => '$1 merkti sjálfvirkt útgáfu $3 frá $4 sem yfirfarna',
-'logentry-newusers-newusers' => '$1 stofnaði notanda aðgang',
-'logentry-newusers-create' => '$1 stofnaði notanda aðgang',
-'logentry-newusers-create2' => '$1 stofnaði aðganginn $3',
+'logentry-newusers-newusers' => 'Notandaaðgangurinn $1 var stofnaður',
+'logentry-newusers-create' => 'Notandaaðgangurinn $1 var stofnaður',
+'logentry-newusers-create2' => '$1 stofnaði notandaaðganginn $3',
 'logentry-newusers-autocreate' => 'Aðgangurinn $1 var stofnaður sjálfvirkt',
 'newuserlog-byemail' => 'lykilorð sent með tölvupósti',
+'rightsnone' => '(engin)',
 
 # Feedback
 'feedback-bugornote' => 'Ef þú ert reiðubúinn að lýsa tæknilegri villu í smáatriðum, vinsamlegast [$1 tilkynntu villu].
index df8afc8..95482b3 100644 (file)
@@ -405,6 +405,7 @@ $messages = array(
 'newwindow' => '(si apre in una nuova finestra)',
 'cancel' => 'Annulla',
 'moredotdotdot' => 'Altro...',
+'morenotlisted' => 'Altro non elencato...',
 'mypage' => 'Pagina',
 'mytalk' => 'discussioni',
 'anontalk' => 'Discussioni per questo IP',
@@ -650,7 +651,7 @@ Query: $2',
 'viewsourcetext' => 'È possibile visualizzare e copiare il codice sorgente di questa pagina:',
 'viewyourtext' => "È possibile visualizzare e copiare il codice sorgente delle '''tue modifiche''' a questa pagina:",
 'protectedinterface' => "Questa pagina contiene un elemento che fa parte dell'interfaccia utente del software di questo sito ed è protetta per evitare possibili abusi.
-Per aggiungere o modificare traduzioni per tutti i wiki usare [//translatewiki.net/ translatewiki.net], il progetto di localizzazione di MediaWiki,",
+Per aggiungere o modificare traduzioni per tutti i wiki usare [//translatewiki.net/ translatewiki.net], il progetto di localizzazione di MediaWiki.",
 'editinginterface' => "'''Attenzione:''' Il testo di questa pagina fa parte dell'interfaccia utente del sito. Tutte le modifiche apportate a questa pagina si riflettono sui messaggi visualizzati per tutti gli utenti su questo wiki.
 Per aggiungere o modificare le traduzioni valide su tutti i wiki, considera la possibilità di usare [//translatewiki.net/wiki/Main_Page?setlang=it translatewiki.net], il progetto MediaWiki per la localizzazione.",
 'sqlhidden' => '(la query SQL è stata nascosta)',
@@ -771,6 +772,7 @@ Riprovare più tardi.',
 # E-mail sending
 'php-mail-error-unknown' => 'Errore sconosciuto nella funzione PHP mail()',
 'user-mail-no-addy' => 'Hai cercato di inviare una e-mail senza un indirizzo.',
+'user-mail-no-body' => 'Tentato di inviare una e-mail con un testo vuoto o estremamente breve.',
 
 # Change password dialog
 'resetpass' => 'Cambia la password',
@@ -866,7 +868,7 @@ Password temporanea: $2',
 'showpreview' => 'Visualizza anteprima',
 'showlivepreview' => "Funzione ''Live preview''",
 'showdiff' => 'Mostra cambiamenti',
-'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato l'indirizzo IP.",
+'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato il tuo indirizzo IP.",
 'anonpreviewwarning' => "''Non è stato eseguito il login. Salvando la pagina, il proprio indirizzo IP sarà registrato nella cronologia.''",
 'missingsummary' => "'''Attenzione:''' non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata con l'oggetto vuoto.",
 'missingcommenttext' => 'Inserire un commento qui sotto.',
@@ -1538,15 +1540,13 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'right-sendemail' => 'Invia e-mail ad altri utenti',
 'right-passwordreset' => 'Vede i messaggi di reimpostazione della password',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nuovi utenti',
+'newuserlogpagetext' => 'Di seguito sono elencate le utenze di nuova creazione.',
+
 # User rights log
 'rightslog' => 'Diritti degli utenti',
 'rightslogtext' => 'Di seguito sono elencate le modifiche ai diritti assegnati agli utenti.',
-'rightslogentry' => "ha modificato l'appartenenza di $1 dal gruppo $2 al gruppo $3",
-'rightslogentry-autopromote' => 'è stato/a automaticamente promosso/a da $2 a $3',
-'logentry-rights-rights' => "$1 ha modificato l'appartenenza di $3 dal gruppo $4 al gruppo $5",
-'logentry-rights-rights-legacy' => "$1 ha modificato l'appartenenza a gruppi di $3",
-'logentry-rights-autopromote' => '$1 è stato/a automaticamente promosso/a da $4 a $5',
-'rightsnone' => '(nessuno)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leggere questa pagina',
@@ -2181,10 +2181,6 @@ Vedi anche le [[Special:WantedCategories|categorie richieste]].',
 'activeusers-hidesysops' => 'Nascondi gli amministratori',
 'activeusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nuovi utenti',
-'newuserlogpagetext' => 'Di seguito sono elencate le utenze di nuova creazione.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Diritti del gruppo utente',
 'listgrouprights-summary' => "Di seguito sono elencati i gruppi utente definiti per questo sito, con i diritti d'accesso loro associati.
@@ -2319,6 +2315,8 @@ $UNWATCHURL
 
 Per commentare e ricevere aiuto:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creata',
+'changed' => 'modificata',
 
 # Delete
 'deletepage' => 'Cancella pagina',
@@ -2383,6 +2381,8 @@ Vedi la [[Special:ProtectedPages|lista delle pagine protette]] per l'elenco dell
 'prot_1movedto2' => 'ha spostato [[$1]] a [[$2]]',
 'protect-badnamespace-title' => 'Namespace non suscettibile di protezione',
 'protect-badnamespace-text' => 'Le pagine di questo namespace non possono essere protette.',
+'protect-norestrictiontypes-text' => 'Questa pagina non può essere protetta poiché non vi è alcun tipo di restrizione disponibile.',
+'protect-norestrictiontypes-title' => 'Pagina non proteggibile',
 'protect-legend' => 'Conferma la protezione',
 'protectcomment' => 'Motivo:',
 'protectexpiry' => 'Scadenza:',
@@ -3043,7 +3043,8 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'pageinfo-recent-authors' => 'Numero di autori diversi recenti',
 'pageinfo-magic-words' => '{{PLURAL:$1|Parola magica|Parole magiche}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoria nascosta|Categorie nascoste}} ($1)',
-'pageinfo-templates' => 'Template {{PLURAL:$1|incluso|inclusi}}  ($1)',
+'pageinfo-templates' => 'Template {{PLURAL:$1|incluso|inclusi}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pagina inclusa|Pagine incluse}} su ($1)',
 'pageinfo-toolboxlink' => 'Informazioni sulla pagina',
 'pageinfo-redirectsto' => 'Reindirizza a',
 'pageinfo-redirectsto-info' => 'info',
@@ -3052,6 +3053,10 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'pageinfo-protect-cascading' => 'Protezione ricorsiva da qui',
 'pageinfo-protect-cascading-yes' => 'Sì',
 'pageinfo-protect-cascading-from' => 'Protezione ricorsiva ereditata da',
+'pageinfo-category-info' => 'Informazioni sulla categoria',
+'pageinfo-category-pages' => 'Numero di pagine',
+'pageinfo-category-subcats' => 'Numero di sottocategorie',
+'pageinfo-category-files' => 'Numero di file',
 
 # Patrolling
 'markaspatrolleddiff' => 'Segna la modifica come verificata',
@@ -3131,6 +3136,8 @@ $1',
 'minutes' => '{{PLURAL:$1|un minuto|$1 minuti}}',
 'hours' => "{{PLURAL:$1|un'ora|$1 ore}}",
 'days' => '{{PLURAL:$1|un giorno|$1 giorni}}',
+'months' => '{{PLURAL:$1|$1 mese|$1 mesi}}',
+'years' => '{{PLURAL:$1|$1 anno|$1 anni}}',
 'ago' => '$1 fa',
 'just-now' => 'proprio ora',
 
@@ -3899,6 +3906,10 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'logentry-newusers-create2' => "L'utenza $3 è stata creata da $1",
 'logentry-newusers-autocreate' => "L'utenza $1 è stata creata automaticamente",
 'newuserlog-byemail' => 'password inviata via mail',
+'logentry-rights-rights' => "$1 ha modificato l'appartenenza di $3 dal gruppo $4 al gruppo $5",
+'logentry-rights-rights-legacy' => "$1 ha modificato l'appartenenza a gruppi di $3",
+'logentry-rights-autopromote' => '$1 è stato/a automaticamente promosso/a da $4 a $5',
+'rightsnone' => '(nessuno)',
 
 # Feedback
 'feedback-bugornote' => 'Se si è in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnalate il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina "[$3 $2]", insieme al proprio nome utente e al browser in uso.',
index 911c7f7..c56c0d0 100644 (file)
@@ -885,6 +885,7 @@ Cookieを有効にしていることを確認して、このページを再読
 # E-mail sending
 'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
 'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
+'user-mail-no-body' => '本文が空、またはあまりにも短いメールは送信できません。',
 
 # Change password dialog
 'resetpass' => 'パスワードの変更',
@@ -1063,7 +1064,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 このページの作成/編集が適切かご確認ください。',
 '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'')
@@ -1265,7 +1266,7 @@ $3が示した理由:''$2''",
 内容を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-deleted-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-no-diff' => "指定された差分は'''削除された'''版を含んでいるため、閲覧できません。",
+'rev-suppressed-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。",
 'rev-deleted-unhide-diff' => "この差分の一方の版は'''削除されています'''。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
 このまま[$1 この差分を閲覧]できます。",
@@ -1286,14 +1287,14 @@ $3が示した理由:''$2''",
 'revdelete-nologid-title' => '無効な記録項目',
 'revdelete-nologid-text' => 'この操作の対象となる記録項目を指定していないか、または指定した項目が存在しません。',
 'revdelete-no-file' => '指定されたファイルは存在しません。',
-'revdelete-show-file-confirm' => '本当にファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を閲覧しますか?',
+'revdelete-show-file-confirm' => 'ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?',
 'revdelete-show-file-submit' => 'はい',
 'revdelete-selected' => "'''[[:$1]] の{{PLURAL:$2|選択された版}}:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|選択された記録項目}}:'''",
 'revdelete-text' => "'''削除された版や記録項目は引き続きページの履歴や記録に表示されますが、一般利用者はその内容の一部を取得できなくなります。'''
 追加の制限がかけられない限り、{{SITENAME}}の他の管理者は同じインターフェイスを使って非表示の内容の取得や復元ができます。",
 'revdelete-confirm' => 'この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。',
-'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです
+'revdelete-suppress-text' => "秘匿は、'''以下の場合に限って'''使用すべきです:
 * 名誉毀損の恐れのある記述
 * 非公開個人情報
 *: ''自宅の住所、電話番号、社会保障番号など''",
@@ -1309,7 +1310,7 @@ $3が示した理由:''$2''",
 'revdelete-radio-unset' => 'いいえ',
 'revdelete-suppress' => '他の利用者と同様に管理者からもデータを隠す',
 'revdelete-unsuppress' => '復元版に対する制限を除去',
-'revdelete-log' => '理由',
+'revdelete-log' => '理由:',
 'revdelete-submit' => '選択された{{PLURAL:$1|版}}に適用',
 'revdelete-success' => "'''版の閲覧レベルを更新しました。'''",
 'revdelete-failure' => "'''版の閲覧レベルを更新できませんでした:'''
@@ -1322,26 +1323,26 @@ $1",
 'revdel-restore-visible' => '閲覧できる版',
 'pagehist' => 'ページの履歴',
 'deletedhist' => '削除された履歴',
-'revdelete-hide-current' => '$1$2の項目の非表示に失敗しましたこれは最新版であるため。
+'revdelete-hide-current' => '$1$2の項目の非表示に失敗しましたこれは最新版であるため。
 非表示にはできません。',
-'revdelete-show-no-access' => '$1$2の項目の表示に失敗しましたこの項目には「制限付き」の印が付いています。
+'revdelete-show-no-access' => '$1$2の項目の表示に失敗しましたこの項目には「制限付き」の印が付いています。
 アクセス権限がありません。',
-'revdelete-modify-no-access' => '$1$2の項目の修正に失敗しましたこの項目には「制限付き」の印が付いています。
+'revdelete-modify-no-access' => '$1$2の項目の修正に失敗しましたこの項目には「制限付き」の印が付いています。
 アクセス権限がありません。',
 '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-only-restricted' => '$1$2の項目の版指定削除に失敗しました他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
 'revdelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
 ** 不適切なコメントや個人情報の開示
 ** 不適切な利用者名
 ** 名誉毀損のおそれ',
-'revdelete-otherreason' => '他の、または追加の理由',
+'revdelete-otherreason' => '他の、または追加の理由:',
 'revdelete-reasonotherlist' => 'その他の理由',
 'revdelete-edit-reasonlist' => '削除理由を編集',
-'revdelete-offender' => '指定版の投稿者',
+'revdelete-offender' => '指定版の投稿者:',
 
 # Suppression log
 'suppressionlog' => '秘匿記録',
@@ -1705,15 +1706,13 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'right-sendemail' => '他の利用者にメールを送信',
 'right-passwordreset' => 'パスワード再設定メールを閲覧',
 
+# Special:Log/newusers
+'newuserlogpage' => 'アカウント作成記録',
+'newuserlogpagetext' => '以下はアカウント作成の記録です。',
+
 # User rights log
 'rightslog' => '利用者権限変更記録',
 'rightslogtext' => '以下は利用者権限の変更記録です。',
-'rightslogentry' => '$1 の所属グループを $2 から $3 に変更しました',
-'rightslogentry-autopromote' => '$2 から $3 に自動的に昇格しました',
-'logentry-rights-rights' => '$1 が $3 の所属グループを $4 から $5 に変更しました',
-'logentry-rights-rights-legacy' => '$1 が $3 の所属グループを変更しました',
-'logentry-rights-autopromote' => '$1 が $4 から $5 に自動的に昇格しました',
-'rightsnone' => '(なし)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'このページの閲覧',
@@ -1815,12 +1814,13 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 
 参考のため、このページの削除と移動の記録を以下に示します:",
 'uploadtext' => "ファイルをアップロードするには、以下のフォームを使用してください。
+
 以前にアップロードされたファイルの表示と検索には[[Special:FileList|{{int:listfiles}}]]を使用してください。(再) アップロードは[[Special:Log/upload|アップロード記録]]に、削除は[[Special:Log/delete|削除記録]]にも記録されます。
 
 ページにファイルを入れるには、以下の書式のリンクを使用してください:
-* '''<code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.jpg]]</nowiki></code>''' とすると、ファイルが完全なままで使用されます
+* '''<code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.jpg]]</nowiki></code>''' とすると、ファイルが完全なままで使用されます
 * '''<code><nowiki>[[</nowiki>{{ns:file}}:<nowiki>File.png|200px|thumb|left|代替文]]</nowiki></code>''' とすると、200ピクセルの幅に修正された状態で、左寄せの枠内に、「代替文」が説明として使用されます。
-* '''<code><nowiki>[[</nowiki>{{ns:media}}:<nowiki>File.ogg]]</nowiki></code>''' とすると、ファイルを表示せずにそのファイルに直接リンクします",
+* '''<code><nowiki>[[</nowiki>{{ns:media}}:<nowiki>File.ogg]]</nowiki></code>''' とすると、ファイルを表示せずにそのファイルに直接リンクします",
 'upload-permitted' => '許可されているファイル形式: $1。',
 'upload-preferred' => '推奨されているファイル形式: $1。',
 'upload-prohibited' => '禁止されているファイル形式: $1。',
@@ -2043,7 +2043,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください
 'http-invalid-url' => '無効なURL:$1',
 'http-invalid-scheme' => 'スキーム「$1」の URL には未対応です。',
 'http-request-error' => '不明なエラーによりHTTPリクエストに失敗しました。',
-'http-read-error' => 'HTTP読み込みエラー。',
+'http-read-error' => 'HTTP読ã\81¿è¾¼ã\81¿ã\82¨ã\83©ã\83¼ã\81§ã\81\99ã\80\82',
 'http-timed-out' => 'HTTP要求がタイムアウトしました。',
 'http-curl-error' => 'URLからの取得に失敗しました: $1',
 'http-host-unreachable' => 'URLに到達できません。',
@@ -2127,7 +2127,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filerevert' => '$1を差し戻す',
 'filerevert-legend' => 'ファイルを差し戻す',
 'filerevert-intro' => "ファイル'''[[Media:$1|$1]]'''を[$4 $2$3版]に差し戻そうとしています。",
-'filerevert-comment' => '理由',
+'filerevert-comment' => '理由:',
 'filerevert-defaultcomment' => '$1$2の版へ差し戻し',
 'filerevert-submit' => '差し戻す',
 'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4 $2$3の版]に差し戻されました。",
@@ -2138,13 +2138,13 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filedelete-legend' => 'ファイルの削除',
 'filedelete-intro' => "'''[[Media:$1|$1]]'''をすべての履歴とともに削除しようとしています。",
 'filedelete-intro-old' => "'''[[Media:$1|$1]]'''の[$4 $2$3の版]を削除しようとしています。",
-'filedelete-comment' => '理由',
+'filedelete-comment' => '理由:',
 'filedelete-submit' => '削除',
 'filedelete-success' => "'''$1''' は削除されました。",
 'filedelete-success-old' => "'''[[Media:$1|$1]]'''の$2$3の版は削除されています。",
 'filedelete-nofile' => "'''$1'''は存在しません。",
 'filedelete-nofile-old' => "指定された属性を持つ'''$1'''の古い版は存在しません。",
-'filedelete-otherreason' => '他の、または追加の理由',
+'filedelete-otherreason' => '他の、または追加の理由:',
 'filedelete-reason-otherlist' => 'その他の理由',
 'filedelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
@@ -2263,7 +2263,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'mostinterwikis' => 'ウィキ間リンクの多いページ',
 'mostrevisions' => '版の多いページ',
 'prefixindex' => '先頭が同じ全ページ',
-'prefixindex-namespace' => '先頭が同じ全ページ($1名前空間)',
+'prefixindex-namespace' => '先頭が同じ全ページ ($1名前空間)',
 'shortpages' => '短いページ',
 'longpages' => '長いページ',
 'deadendpages' => '行き止まりページ',
@@ -2282,7 +2282,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'usereditcount' => '$1 {{PLURAL:$1|回編集}}',
 'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
 'newpages' => '新しいページ',
-'newpages-username' => '利用者名',
+'newpages-username' => '利用者名:',
 'ancientpages' => '最古のページ',
 'move' => '移動',
 'movethispage' => 'このページを移動',
@@ -2381,10 +2381,6 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'activeusers-hidesysops' => '管理者を隠す',
 'activeusers-noresult' => '利用者が見つかりませんでした。',
 
-# Special:Log/newusers
-'newuserlogpage' => 'アカウント作成記録',
-'newuserlogpagetext' => '以下はアカウント作成の記録です。',
-
 # Special:ListGroupRights
 'listgrouprights' => '利用者グループの権限',
 'listgrouprights-summary' => '以下は、このウィキに登録されている利用者グループと、それぞれに割り当てられている権限の一覧です。
@@ -2463,7 +2459,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'notanarticle' => '記事ではありません',
 'notvisiblerev' => '別の利用者による最終版は削除されました',
 'watchnochange' => 'ウォッチリストに登録しているページで、指定期間内に編集されたものはありません。',
-'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています(トークページを除く)。',
+'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページを除く)。',
 'wlheader-enotif' => '* メール通知が有効になっています',
 'wlheader-showupdated' => "* 最終訪問以降に変更されたページは、'''太字'''で表示されます",
 'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
@@ -2521,6 +2517,8 @@ $UNWATCHURL
 
 ご意見、お問い合わせ:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '作成',
+'changed' => '変更',
 
 # Delete
 'deletepage' => 'ページを削除',
@@ -2542,8 +2540,8 @@ $UNWATCHURL
 'dellogpagetext' => '以下は最近の削除と復元の一覧です。',
 'deletionlog' => '削除記録',
 'reverted' => '以前の版への差し戻し',
-'deletecomment' => '理由',
-'deleteotherreason' => '他の、または追加の理由',
+'deletecomment' => '理由:',
+'deleteotherreason' => '他の、または追加の理由:',
 'deletereasonotherlist' => 'その他の理由',
 'deletereason-dropdown' => '*よくある削除理由
 ** 投稿者依頼
@@ -2594,35 +2592,37 @@ $2による直前の版へ変更されました。',
 'prot_1movedto2' => '[[$1]] を [[$2]] へ移動',
 'protect-badnamespace-title' => '保護不可能な名前空間',
 'protect-badnamespace-text' => 'この名前空間のページは保護できません。',
+'protect-norestrictiontypes-title' => '保護できないページ',
 'protect-legend' => '保護の確認',
-'protectcomment' => '理由',
-'protectexpiry' => '有効期限',
+'protectcomment' => '理由:',
+'protectexpiry' => '有効期限:',
 'protect_expiry_invalid' => '有効期間が正しくありません。',
 'protect_expiry_old' => '有効期限が過去の時刻です。',
 'protect-unchain-permissions' => '追加保護オプションをロック解除',
 'protect-text' => "ページ「'''$1'''」に対する保護レベルの表示と操作ができます。",
 'protect-locked-blocked' => "ブロックされている間は、保護レベルを変更できません。
-ページ「'''$1'''」の現在の状態は以下の通りです",
+ページ「'''$1'''」の現在の状態は以下の通りです:",
 'protect-locked-dblock' => "データベースのロックが有効なため、保護レベルを変更できません。
-ページ「'''$1'''」の現在の状態は以下の通りです",
+ページ「'''$1'''」の現在の状態は以下の通りです:",
 'protect-locked-access' => "アカウントに、ページの保護レベルを変更する権限がありません。
-ページ「'''$1'''」の現在の状態は以下の通りです",
+ページ「'''$1'''」の現在の状態は以下の通りです:",
 'protect-cascadeon' => 'このページは現在、カスケード保護が有効になっている以下の{{PLURAL:$1|ページ|ページ群}}から読み込まれているため、保護されています。
 このページの保護レベルを変更できますが、カスケード保護には影響しません。',
 'protect-default' => 'すべての利用者を許可',
 'protect-fallback' => '「$1」権限が必要',
 'protect-level-autoconfirmed' => '新規利用者と匿名利用者を禁止',
 'protect-level-sysop' => '管理者のみ',
+'protect-summary-desc' => '[$1=$2] ($3)',
 'protect-summary-cascade' => 'カスケード',
 'protect-expiring' => '$1(UTC)で自動的に解除',
 'protect-expiring-local' => '期限 $1',
 'protect-expiry-indefinite' => '無期限',
-'protect-cascade' => 'このページに読み込まれているページを保護する(カスケード保護)',
+'protect-cascade' => 'このページに読み込まれているページを保護する (カスケード保護)',
 'protect-cantedit' => 'このページの編集権限がないため、保護レベルを変更できません。',
-'protect-othertime' => 'その他の期間',
+'protect-othertime' => 'その他の期間:',
 'protect-othertime-op' => 'その他の期間',
 'protect-existing-expiry' => '現在の保護期限: $2 $3',
-'protect-otherreason' => '他の、または追加の理由',
+'protect-otherreason' => '他の、または追加の理由:',
 'protect-otherreason-op' => 'その他の理由',
 'protect-dropdown' => '*よくある保護理由
 ** 度重なる荒らし
@@ -2666,7 +2666,7 @@ $2による直前の版へ変更されました。',
 'undeletehistorynoadmin' => 'このページは削除されています。
 削除の理由は、削除前にこのページを編集していた利用者の詳細情報と共に、以下に表示されています。
 管理者以外の利用者には、削除された各版の本文への制限がかけられています。',
-'undelete-revision' => '削除されたページ「$1」の $4 $5 時点での $3 による版',
+'undelete-revision' => '削除されたページ「$1」の $4 $5 時点での $3 による版:',
 'undeleterevision-missing' => '無効または存在しない版です。
 間違ったリンクをたどったか、この版は既に復元されたか、もしくは保存版から除去された可能性があります。',
 'undelete-nodiff' => 'これより前の版はありません。',
@@ -2700,7 +2700,7 @@ $1',
 'undelete-error-long' => 'ファイルの復元中にエラーが発生しました:
 
 $1',
-'undelete-show-file-confirm' => '$2$3の版からファイル「<nowiki>$1</nowiki>」の削除版を本当に表示しますか?',
+'undelete-show-file-confirm' => 'ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?',
 'undelete-show-file-submit' => 'はい',
 
 # Namespace form on various pages
@@ -2731,9 +2731,9 @@ $1',
 'sp-contributions-talk' => 'トーク',
 'sp-contributions-userrights' => '利用者権限の管理',
 'sp-contributions-blocked-notice' => 'この利用者は現在ブロックされています。
-参考のために最新のブロック記録項目を以下に表示します',
+参考のために最新のブロック記録項目を以下に表示します:',
 'sp-contributions-blocked-notice-anon' => 'このIPアドレスは現在ブロックされています。
-参考のために最近のブロック記録項目を以下に表示します',
+参考のために最近のブロック記録項目を以下に表示します:',
 'sp-contributions-search' => '投稿の検索',
 'sp-contributions-username' => 'IPアドレスまたは利用者名:',
 'sp-contributions-toponly' => '最新版の編集のみを表示',
@@ -2742,10 +2742,10 @@ $1',
 # What links here
 'whatlinkshere' => 'リンク元',
 'whatlinkshere-title' => '「$1」へリンクしているページ',
-'whatlinkshere-page' => 'ページ',
-'linkshere' => "以下のページが、'''[[:$1]]'''にリンクしています",
+'whatlinkshere-page' => 'ページ:',
+'linkshere' => "以下のページが、'''[[:$1]]'''にリンクしています:",
 'nolinkshere' => "'''[[:$1]]'''にリンクしているページはありません。",
-'nolinkshere-ns' => "選択された名前空間中で、'''[[:$1]]'''にリンクしているページはありません。",
+'nolinkshere-ns' => "指定した名前空間内に、'''[[:$1]]'''にリンクしているページはありません。",
 'isredirect' => '転送ページ',
 'istemplate' => '参照読み込み',
 'isimage' => 'ファイルへのリンク',
@@ -2769,8 +2769,8 @@ $1',
 このような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
 以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。',
 'ipadressorusername' => 'IPアドレスまたは利用者名:',
-'ipbexpiry' => '有効期限',
-'ipbreason' => '理由',
+'ipbexpiry' => '有効期限:',
+'ipbreason' => '理由:',
 'ipbreasonotherlist' => 'その他の理由',
 'ipbreason-dropdown' => '*よくあるブロック理由
 ** 虚偽情報の挿入
@@ -2785,13 +2785,13 @@ $1',
 'ipbemailban' => 'メール送信を禁止',
 'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスと、ブロック後に編集を試みた際のIPアドレスを自動的にブロック',
 'ipbsubmit' => 'この利用者をブロック',
-'ipbother' => 'その他の期間',
+'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' => 'その他',
-'ipbotherreason' => '他の、または追加の理由',
+'ipbotherreason' => '他の、または追加の理由:',
 'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
 'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチ',
-'ipb-disableusertalk' => 'ã\83\96ã\83­ã\83\83ã\82¯ä¸­ã\81®ã\81\93ã\81®å\88©ç\94¨è\80\85è\87ªèº«ã\81«ã\82\88ã\82\8bã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ç·¨é\9b\86を禁止',
+'ipb-disableusertalk' => 'ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ä¸­ã\81«è\87ªèº«ã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bã\81\93ã\81¨を禁止',
 'ipb-change-block' => 'これらの設定で、利用者を再びブロック',
 'ipb-confirm' => 'ブロックの確認',
 'badipaddress' => '無効なIPアドレス',
@@ -2845,11 +2845,11 @@ $1',
 $1 のブロックの理由は「''$2''」です。",
 'blocklogpage' => 'ブロック記録',
 'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
-参考のため、ブロックの記録を以下に示します:',
+参考のため、ブロック記録を以下に示します:',
 'blocklog-showsuppresslog' => 'この利用者は以前にブロックされ、隠されたことがあります。
-参考のため、秘匿記録を以下に示します',
-'blocklogentry' => 'が [[$1]] を$2ブロックしました。ブロックの詳細$3',
-'reblock-logentry' => 'が [[$1]] のブロック設定を$2に変更しました。ブロックの詳細$3',
+参考のため、秘匿記録を以下に示します:',
+'blocklogentry' => 'が [[$1]] を$2ブロックしました。ブロックの詳細$3',
+'reblock-logentry' => 'が [[$1]] のブロック設定を$2に変更しました。ブロックの詳細$3',
 'blocklogtext' => 'このページは利用者のブロックと解除の記録です。
 自動的にブロックされたIPアドレスは表示されていません。
 現時点で有効なブロックは[[Special:BlockList|ブロックの一覧]]をご覧ください。',
@@ -2869,8 +2869,8 @@ $1 のブロックの理由は「''$2''」です。",
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
-'ipb_cant_unblock' => 'エラー:ブロック ID $1 はありません。ブロックが既に解除されている可能性があります。',
-'ipb_blocked_as_range' => 'エラーIPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
+'ipb_cant_unblock' => 'エラー: ブロック ID $1 が見つかりません。ブロックが既に解除されている可能性があります。',
+'ipb_blocked_as_range' => 'エラーIPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
 ただし、$2の範囲でブロックされており、こちらのブロックは別途解除できます。',
 'ip_range_invalid' => 'IP範囲が無効です。',
 'ip_range_toolarge' => '/$1より広範囲の範囲ブロックは許可されていません。',
@@ -2947,7 +2947,7 @@ $1 のブロックの理由は「''$2''」です。",
 'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
 'movenotallowed' => 'ページを移動する権限がありません。',
 'movenotallowedfile' => 'ファイルを移動する権限がありません。',
-'cant-move-user-page' => '利用者ページを移動させる権限がありません(下位ページ内は除く)。',
+'cant-move-user-page' => '利用者ページを移動させる権限がありません (下位ページ内を除く)。',
 'cant-move-to-user-page' => '利用者下位ページ以外の利用者ページに、ページを移動させる権限がありません。',
 'newtitle' => '新しいページ名:',
 'move-watch' => '移動元と移動先ページをウォッチ',
@@ -3290,6 +3290,7 @@ MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、
 'pageinfo-magic-words' => 'マジック {{PLURAL:$1|ワード}} ($1)',
 'pageinfo-hidden-categories' => '隠し{{PLURAL:$1|カテゴリ}} ($1)',
 'pageinfo-templates' => '参照読み込みされている{{PLURAL:$1|テンプレート}} ($1)',
+'pageinfo-transclusions' => '参照読み込みされている{{PLURAL:$1|ページ}} ($1)',
 'pageinfo-toolboxlink' => 'ページ情報',
 'pageinfo-redirectsto' => '転送先',
 'pageinfo-redirectsto-info' => '情報',
@@ -3298,6 +3299,10 @@ MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、
 'pageinfo-protect-cascading' => 'カスケード保護されている',
 'pageinfo-protect-cascading-yes' => 'はい',
 'pageinfo-protect-cascading-from' => 'カスケード保護の起点',
+'pageinfo-category-info' => 'カテゴリ情報',
+'pageinfo-category-pages' => 'ページ数',
+'pageinfo-category-subcats' => '下位カテゴリ数',
+'pageinfo-category-files' => 'ファイル数',
 
 # Skin names
 'skinname-standard' => 'クラシック',
@@ -3319,8 +3324,8 @@ MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、
 'rcpatroldisabledtext' => '最近の更新の巡回機能は現在無効になっています。',
 'markedaspatrollederror' => '巡回済みにできません',
 'markedaspatrollederrortext' => '巡回済みにするには、版を指定する必要があります。',
-'markedaspatrollederror-noautopatrol' => '自分の編集を巡回済みにする権限がありません。',
-'markedaspatrollednotify' => '$1 ã\81¸ã\81®ã\81\93ã\81®å¤\89æ\9b´ã\81¯å·¡å\9b\9eæ¸\88ã\81¿ã\81«ã\81ªã\82\8aました。',
+'markedaspatrollederror-noautopatrol' => 'あなたには自分の編集を巡回済みにする権限がありません。',
+'markedaspatrollednotify' => '$1 ã\81¸ã\81®ã\81\93ã\81®å¤\89æ\9b´ã\82\92å·¡å\9b\9eæ¸\88ã\81¿ã\81«ã\81\97ました。',
 'markedaspatrollederrornotify' => '巡回済みにするのに失敗しました。',
 
 # Patrol log
@@ -3391,6 +3396,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 分}}',
 'hours' => '{{PLURAL:$1|$1 時間}}',
 'days' => '{{PLURAL:$1|$1 日}}',
+'months' => '{{PLURAL:$1|$1 か月}}',
+'years' => '{{PLURAL:$1|$1 年}}',
 'ago' => '$1前',
 'just-now' => 'ちょうど今',
 
@@ -3611,7 +3618,7 @@ Variants for Chinese language
 'exif-credit' => '帰属/提供者',
 'exif-source' => 'ソース',
 'exif-editstatus' => '画像の編集上の状態',
-'exif-urgency' => '緊急',
+'exif-urgency' => '緊急',
 'exif-fixtureidentifier' => 'フィクスチャ名',
 'exif-locationdest' => '映っている場所',
 'exif-locationdestcode' => '映っている場所のコード',
@@ -4237,7 +4244,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'dberr-again' => '数分間待った後、もう一度読み込んでください。',
 'dberr-info' => '(データベースサーバー $1 に接続できませんでした)',
 'dberr-usegoogle' => '元に戻るまで、Googleを利用して検索できます。',
-'dberr-outofdate' => 'それらが収集した内容は古い可能性があることに注意してください。',
+'dberr-outofdate' => '収集された内容は古い可能性があることに注意してください。',
 'dberr-cachederror' => 'これは要求されたページをキャッシュした複製であり、古くなっている可能性があります。',
 
 # HTML forms
@@ -4287,6 +4294,10 @@ MediaWikiは、有用であることを期待して配布されていますが
 'logentry-newusers-create2' => '利用者アカウント $3 が $1 により作成されました',
 'logentry-newusers-autocreate' => '利用者アカウント $1 が自動的に作成されました',
 'newuserlog-byemail' => 'パスワードをメールで送信しました',
+'logentry-rights-rights' => '$1 が $3 の所属グループを $4 から $5 に変更しました',
+'logentry-rights-rights-legacy' => '$1 が $3 の所属グループを変更しました',
+'logentry-rights-autopromote' => '$1 が $4 から $5 に自動的に昇格しました',
+'rightsnone' => '(なし)',
 
 # Feedback
 'feedback-bugornote' => '技術的な問題の詳細を説明する準備ができている場合は、[$1 バグ報告]をお願いします。
index 4253e16..637df82 100644 (file)
@@ -735,6 +735,9 @@ Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, t
 
 'grouppage-sysop' => '{{ns:project}}:Adminischrieta',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Yuuza krieshan lag',
+
 # User rights log
 'rightslog' => 'Yuuza raits lag',
 
@@ -825,9 +828,6 @@ Piej pahn [[Special:Watchlist|yu wachlis]] dem '''buol'''.",
 # Special:LinkSearch
 'linksearch' => 'Extoernal lingk',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Yuuza krieshan lag',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lis a memba)',
 
index 575d864..331f912 100644 (file)
@@ -454,6 +454,10 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 
 'grouppage-sysop' => '{{ns:project}}:Administråtorer',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brugeråprettelseslog',
+'newuserlogpagetext' => "Dett'er en log åver de senest åprettede brugere.",
+
 # User rights log
 'rightslog' => 'Rettigheds-logbåĝ',
 
@@ -605,10 +609,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 'linksearch-line' => '$2 linker til $1',
 'linksearch-error' => "Wildkårter må ken benyttes i'n stårt åf håstnavnet.",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brugeråprettelseslog',
-'newuserlogpagetext' => "Dett'er en log åver de senest åprettede brugere.",
-
 # E-mail user
 'emailuser' => 'E-mail til denne bruger',
 
index 97d1fb0..b37c7a0 100644 (file)
@@ -416,7 +416,7 @@ Ora ana alesané.",
 'actionthrottled' => 'Tindakan diwatesi',
 'actionthrottledtext' => 'Minangka sawijining pepesthèn anti-spam, panjenengan diwatesi nglakoni tindhakan iki sing cacahé kakèhan ing wektu cendhak.
 Mangga dicoba manèh ing sawetara menit.',
-'protectedpagetext' => 'Kaca iki dikunci supaya ora disunting.',
+'protectedpagetext' => 'Kaca iki wis digembok supaya ora bisa disunting lan diapa-apakaké.',
 'viewsourcetext' => 'Panjenengan bisa mirsani utawa nulad sumber kaca iki:',
 'viewyourtext' => "Sampéyan bisa ndelok lan nyalin sumber '''suntingan Sampéyan''' nèng kaca iki:",
 'protectedinterface' => 'Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.',
@@ -451,6 +451,7 @@ Pangurus sing ngopèni kuwi ngawedharaké: "$3".',
 Sampéyan bisa nganggo {{SITENAME}} sacara anonim, utawa bisa <span class='plainlinks'>[$1 mlebu log manèh]</span> kanthi jeneng panganggo sing padha utawa beda.
 
 Cathet yèn sapérangan kaca mungkin isih nampilaké tulisan yèn Sampéyan isih nèng njero log, kuwi bisa ilang yèn Sampéyan ngresiki ''cache'' pramban Sampéyan.",
+'welcomeuser' => 'Sugeng Rawuh, $1!',
 'yourname' => 'Asma pangangeman',
 'yourpassword' => 'Tembung sandhi:',
 'yourpasswordagain' => 'Balènana tembung sandhi',
@@ -1279,12 +1280,13 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'right-sendemail' => 'Ngirim layang listrik (e-mail) menyang panganggo liya',
 'right-passwordreset' => 'Delok layang èlèktronik panyetèlulangan tembung sandhi',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log panganggo anyar',
+'newuserlogpagetext' => 'Ing ngisor iki kapacak log pandaftaran panganggo anyar.',
+
 # User rights log
 'rightslog' => 'Log pangowahan hak aksès',
 'rightslogtext' => 'Ing ngisor iki kapacak log pangowahan marang hak-hak panganggo.',
-'rightslogentry' => 'ngganti kaanggotan kelompok kanggo $1 saka $2 dadi $3',
-'rightslogentry-autopromote' => 'otomatis ditawakaké saka $2 nèng $3',
-'rightsnone' => '(ora ana)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'maca kaca iki',
@@ -1899,10 +1901,6 @@ Deleng uga [[Special:WantedCategories|kategori sing diperlokaké]].',
 'activeusers-hidesysops' => 'Delikna pangurus',
 'activeusers-noresult' => 'Panganggo ora ditemokaké.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log panganggo anyar',
-'newuserlogpagetext' => 'Ing ngisor iki kapacak log pandaftaran panganggo anyar.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Hak-hak grup panganggo',
 'listgrouprights-summary' => 'Ing ngisor iki kapacak dhaftar grup panganggo sing didéfinisi ing wiki iki, kanthi hak-hak aksès gandhèngané.
@@ -2021,6 +2019,8 @@ Kanggo ngowahi préferènsi ing daftar pangawasan panjenengan, mangga mirsani
 
 Umpan balik lan pitulung sabanjuré:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'kadamel',
+'changed' => 'kaubah',
 
 # Delete
 'deletepage' => 'Busak kaca',
@@ -3479,6 +3479,7 @@ Gambar dituduhaké mawa résolusi kebak lan tipe liyané berkas bakal dibuka lan
 'logentry-newusers-create2' => 'Akun panganggo $3 digawé déning $1',
 'logentry-newusers-autocreate' => 'Akun $1 digawé otomatis',
 'newuserlog-byemail' => 'tembung sandhi wis dikirim liwat e-mail',
+'rightsnone' => '(ora ana)',
 
 # Feedback
 'feedback-bugornote' => 'Yèn Sampéyan siap njelasaké masalah tèhnis kanthi rinci mangga [$1 laporaké bug].
index 8f805a4..240391a 100644 (file)
@@ -1486,15 +1486,13 @@ $1",
 'right-sendemail' => 'გაგუგზავნე ელექტრონული ფოსტა სხვა მომხმარებლებს',
 'right-passwordreset' => 'ელ.ფოსტის ნახვა პაროლის შეცვლით',
 
+# Special:Log/newusers
+'newuserlogpage' => 'მომხმარებლის რეგისტრაციის ჟურნალი',
+'newuserlogpagetext' => 'ბოლო დროს დარეგისტრირებულ მომხმარებელთა სია',
+
 # User rights log
 'rightslog' => 'მომხმარებლის უფლებების ჟურნალი',
 'rightslogtext' => 'მომხმარებელთა უფლებების ცვლილებათა ჟურბალი',
-'rightslogentry' => 'შესწორდა მომხმარებლის ჯგუფები $1  $2-დან  $3-ზე',
-'rightslogentry-autopromote' => 'ავტომატურად იქნა გადაყვანილი $2–დან $3–ში',
-'logentry-rights-rights' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის $4-დან $5-ზე',
-'logentry-rights-rights-legacy' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის',
-'logentry-rights-autopromote' => '$1 ავტომატურად იქნა გადაყვანილი $4–დან $5–ში',
-'rightsnone' => '(არცერთი)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ამ გვერდის კითხვა',
@@ -2133,10 +2131,6 @@ $1',
 'activeusers-hidesysops' => 'ადმინისტრატორების დამალვა',
 'activeusers-noresult' => 'მომხმარებლები არ არიან ნაპოვნი.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'მომხმარებლის რეგისტრაციის ჟურნალი',
-'newuserlogpagetext' => 'ბოლო დროს დარეგისტრირებულ მომხმარებელთა სია',
-
 # Special:ListGroupRights
 'listgrouprights' => 'მომხმარებელთა ჯგუფების უფლებები',
 'listgrouprights-summary' => 'ქვემოთ წარმოდგენილია ამ ვიკიში გარკვეულ ჯგუფთა სია და მათი უფლებები.
@@ -2275,6 +2269,8 @@ $UNWATCHURL
 
 დამატებითი ინფორმაცია
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'შექმნილია',
+'changed' => 'შეცვლილი',
 
 # Delete
 'deletepage' => 'გვერდის წაშლა',
@@ -3929,6 +3925,10 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'logentry-newusers-create2' => 'მომხმარებლის ანგარიში $3 შექმნა მომხმარებელმა $1',
 'logentry-newusers-autocreate' => 'ავტომატურად შეიქმნა მომხმარებლის ანგარიში $1',
 'newuserlog-byemail' => 'პაროლი ელ-ფოსტითაა გამოგზავნილი',
+'logentry-rights-rights' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის $4-დან $5-ზე',
+'logentry-rights-rights-legacy' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის',
+'logentry-rights-autopromote' => '$1 ავტომატურად იქნა გადაყვანილი $4–დან $5–ში',
+'rightsnone' => '(არცერთი)',
 
 # Feedback
 'feedback-bugornote' => 'თუ თქვენ მზად ხართ დეტალურად აღწეროთ ტექნიკური პრობლემა, გთხოვთ, [$1 შეგვატყობინეთ შეცდომის შესახებ].
index c171b37..cbbb01f 100644 (file)
@@ -1014,11 +1014,13 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'right-userrights-interwiki' => "Basqa wikilerdegi paydalanıwshının' huquqların o'zgertiw",
 'right-siteadmin' => "Mag'lıwmatlar bazasın qulıplaw ha'm qulıplawın o'shiriw",
 
+# Special:Log/newusers
+'newuserlogpage' => 'Paydalanıwshılardı esapqa alıw jurnalı',
+'newuserlogpagetext' => 'Bul paydalanıwshılardı esapqa alıw jurnalı',
+
 # User rights log
 'rightslog' => 'Paydalanıwshı huquqları jurnalı',
 'rightslogtext' => "Bul paydalanıwshı huquqların o'zgertiw jurnalı.",
-'rightslogentry' => "$1 paydalanıwshısının' ag'za bolg'an toparları $2 degennen $3 degenge o'zgertti",
-'rightsnone' => '(hesh qanday)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'bul betti oqıw',
@@ -1365,10 +1367,6 @@ Ja'nede [[Special:WantedCategories|kerekli kategoriyalardı]] qarap ko'rin'.",
 'listusers-submit' => "Ko'rset",
 'listusers-noresult' => 'Paydalanıwshı tabılmadı.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Paydalanıwshılardı esapqa alıw jurnalı',
-'newuserlogpagetext' => 'Bul paydalanıwshılardı esapqa alıw jurnalı',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Paydalanıwshılar toparı huqıqları',
 'listgrouprights-group' => 'Topar',
@@ -1430,6 +1428,8 @@ Eger siz bul betti baqlaw dizimin'izden o'shirmekshi bolsan'ız bettin' joqarg'
 'enotif_lastvisited' => "Son'g'ı kirwin'izden beri bolg'an o'zgerisler ushın $1 degendi ko'rin'iz.",
 'enotif_lastdiff' => "Usı o'zgeris ushın $1 degendi ko'rin'iz.",
 'enotif_anon_editor' => 'anonim paydalanıwshı $1',
+'created' => "jaratılg'an",
+'changed' => "o'zgertilgen",
 
 # Delete
 'deletepage' => "Betti o'shir",
@@ -1943,5 +1943,6 @@ Bul tastıyıqlaw kodının' pitetug'ın waqtı: $4.",
 'revdelete-restricted' => "administratorlarg'a qollanılg'an sheklewler",
 'revdelete-unrestricted' => "administratorlardan alıp taslang'an sheklewler",
 'newuserlog-byemail' => 'parol e-mail arqalı jiberildi',
+'rightsnone' => '(hesh qanday)',
 
 );
index 46d927b..a3f2e0c 100644 (file)
@@ -1297,12 +1297,13 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'right-sendemail' => 'Ceggaɛ tirawt i iseqdacen nniḍen',
 'right-passwordreset' => 'Ẓeṛ tira n uwennez n awalen uɛaddi',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Aɣmis n isnulfan n  imiḍanen n imseqdacen',
+'newuserlogpagetext' => 'Asebter agi yebeqqeḍ amezruy n usnulfu n imiḍanen n iseqdacen.',
+
 # User rights log
 'rightslog' => 'Aɣmis n yizerfan n wemseqdac',
 'rightslogtext' => 'Wagi d aɣmis n yibeddlen n yizerfan n wemseqdac',
-'rightslogentry' => 'Yettubeddel izerfan n wemseqdac $1 seg $2 ar $3',
-'rightslogentry-autopromote' => 'yesnerna s uwurman seg $2 ar $3',
-'rightsnone' => '(ulaḥedd)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ɣaṛ asebter agi',
@@ -1930,10 +1931,6 @@ Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
 'activeusers-hidesysops' => 'Ffer inedbalen',
 'activeusers-noresult' => 'Ur yufi aseqdac.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Aɣmis n isnulfan n  imiḍanen n imseqdacen',
-'newuserlogpagetext' => 'Asebter agi yebeqqeḍ amezruy n usnulfu n imiḍanen n iseqdacen.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Izerfan n igrawen n iseqdacen',
 'listgrouprights-summary' => 'Asebter agi yesɛa yiwen umuɣ n igrawen i sengelen deg wiki agi dɣa izerfan n wadduf i qqenen.
@@ -2065,6 +2062,8 @@ $UNWATCHURL
 
 Tuɣalin d tadhelt :
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'yettwaxleq',
+'changed' => 'yettubeddel',
 
 # Delete
 'deletepage' => 'Mḥu asebter',
@@ -3004,6 +3003,9 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 # Special:Tags
 'tag-filter' => 'Astay n [[Special:Tags|ticraḍ]] :',
 
+# New logging system
+'rightsnone' => '(ulaḥedd)',
+
 # Feedback
 'feedback-subject' => 'Asentel :',
 'feedback-message' => 'Izen :',
index 0e46a18..7071b00 100644 (file)
@@ -975,6 +975,9 @@ $1",
 
 'grouppage-sysop' => '{{ns:project}}:Тхьэмадэхэр',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ЦӀыхухэтхэм я регистрациэ тхылъ',
+
 # User rights log
 'rightslog' => 'Хэтым пӀалъэ иӀэхэм я тхылъ',
 
@@ -1071,9 +1074,6 @@ $1",
 # Special:LinkSearch
 'linksearch' => 'КІуэцІ техьэпІэхэр',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ЦӀыхухэтхэм я регистрациэ тхылъ',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(гупым и тхылъ)',
 
index d4b30c0..0470242 100644 (file)
@@ -592,13 +592,16 @@ MySQL جوابِ خطاء پرائے "$3: $4"',
 'history-show-deleted' => 'صرفی حذف شدہ',
 'histfirst' => 'قدیم ترین',
 'histlast' => 'تازہ ترین',
+'historyempty' => '(خالی)',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 تا $2',
 
 # Revision deletion
 'rev-delundel' => 'پشاوے/کھوشتاوے',
+'rev-showdeleted' => 'پشاوے',
 'revdelete-radio-set' => 'Yes/دی',
+'revdelete-radio-unset' => 'نو',
 'revdel-restore' => 'ظاہریتو تبدیل کورے',
 'revdel-restore-deleted' => 'حذف شدہ رویژنز',
 'revdel-restore-visible' => 'ویزیبل رویژنز',
@@ -689,9 +692,11 @@ HTML tags لوڑے.',",
 'right-upload' => 'فائل انځاوے',
 'right-delete' => 'صفحان ضائع کورے',
 
+# Special:Log/newusers
+'newuserlogpage' => 'نوشتۂ آمد صارف',
+
 # User rights log
 'rightslog' => 'یوزروت مختص شدہ حقوق',
-'rightsnone' => '(نو)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'ھیہ صفحا ایڈیٹنگ کورے',
@@ -839,9 +844,6 @@ HTML tags لوڑے.',",
 'linksearch-ok' => 'Search/تلاش',
 'linksearch-line' => '$1 مربوط شیر $2 ری',
 
-# Special:Log/newusers
-'newuserlogpage' => 'نوشتۂ آمد صارف',
-
 # Special:ListGroupRights
 'listgrouprights-members' => 'ممبارانن فھرست',
 
@@ -1131,6 +1133,9 @@ HTML tags لوڑے.',",
 # Special:ComparePages
 'compare-page1' => 'صفحہ 1',
 
+# New logging system
+'rightsnone' => '(نو)',
+
 # Feedback
 'feedback-message' => 'پیغام',
 
index d6d552a..cd89fab 100644 (file)
@@ -905,11 +905,12 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-delete' => 'Pelu bıestere',
 'right-undelete' => 'Esterıtena na pele peyser bıcê',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Qeydê karberiê newey',
+
 # User rights log
 'rightslog' => 'Qeydê hequnê karberi',
 'rightslogtext' => 'No jü qeydê vurnaisê hequnê karberio.',
-'rightslogentry' => 'selahiyetê $1i $2 ra vurniya be $3i',
-'rightsnone' => '(qet jü)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'na pele bıwane',
@@ -1127,9 +1128,6 @@ Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
 # Special:ActiveUsers
 'activeusers' => 'Lista karberunê fealu',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Qeydê karberiê newey',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Kome',
 'listgrouprights-rights' => 'Heqi',
@@ -1167,6 +1165,8 @@ Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista,
 'watching' => 'Şêr ke…',
 'unwatching' => 'Şêr meke…',
 
+'changed' => 'vuriya',
+
 # Delete
 'deletepage' => 'Pele bıestere',
 'delete-legend' => 'Bıestere',
@@ -1252,7 +1252,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 'blanknamespace' => '(Ser)',
 
 # Contributions
-'contributions' => 'İştırakê karberi',
+'contributions' => 'İştıraqê {{GENDER:$1|karber}}i',
 'contributions-title' => '$1 de iştırakê karberi',
 'mycontris' => 'İştıraqi',
 'contribsub2' => 'Serba $1 ($2)',
@@ -1603,4 +1603,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'compare-page1' => 'Pele 1',
 'compare-page2' => 'Pele 2',
 
+# New logging system
+'rightsnone' => '(qet jü)',
+
 );
index 0c3ef92..edc0a10 100644 (file)
@@ -1303,11 +1303,13 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'right-userrights-interwiki' => 'باسقا ۇىيكىيلەردەگى قاتىسۋشىلاردىڭ قۇقىقتارىن وڭدەۋ',
 'right-siteadmin' => 'دەرەكقوردى قۇلىپتاۋ جانە قۇلىپتاۋىن ٴوشىرۋ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'تىركەلۋ جۋرنالى',
+'newuserlogpagetext' => 'بۇل قاتىسۋشى تىركەلگى جاساۋ جۋرنالى',
+
 # User rights log
 'rightslog' => 'قاتىسۋشى قۇقىقتارى جۋرنالى',
 'rightslogtext' => 'بۇل قاتىسۋشى قۇقىقتارىن وزگەرتۋ جۋرنالى.',
-'rightslogentry' => '$1 كىرگەن توپتارىن $2 دەگەننەن $3 دەگەنگە وزگەرتتى',
-'rightsnone' => '(ەشقانداي)',
 
 # Recent changes
 'nchanges' => '$1 وزگەرىس',
@@ -1682,10 +1684,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'كورسەت',
 'listusers-noresult' => 'قاتىسۋشى تابىلعان جوق.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'تىركەلۋ جۋرنالى',
-'newuserlogpagetext' => 'بۇل قاتىسۋشى تىركەلگى جاساۋ جۋرنالى',
-
 # Special:ListGroupRights
 'listgrouprights' => 'قاتىسۋشى توبى قۇقىقتارى',
 'listgrouprights-summary' => 'كەلەسى تىزىمدە بۇل ۋىيكىيدە تاعايىندالعان قاتىسۋشى قۇقىقتارى (بايلانىستى قاتىناۋ قۇقىقتارىمەن بىرگە) كورسەتىلەدى.
@@ -1777,6 +1775,8 @@ $NEWPAGE
 
 سىن-پىكىر بەرۋ جانە بىلايعى جاردەم الۋ ٴۇشىن:
 {{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
+'created' => 'باستادى',
+'changed' => 'وزگەرتتى',
 
 # Delete
 'deletepage' => 'بەتتى جويۋ',
@@ -2896,5 +2896,6 @@ $5
 # New logging system
 'revdelete-restricted' => 'اكىمشىلەرگە تىيىمدار قولدادى',
 'revdelete-unrestricted' => 'اكىمشىلەردەن تىيىمداردى الاستادى',
+'rightsnone' => '(ەشقانداي)',
 
 );
index f89af4e..b015c83 100644 (file)
@@ -1491,11 +1491,13 @@ $3 келтірілген себебі: ''$2''",
 'right-userrights-interwiki' => 'Басқа үикилердегі қатысушылардың құқықтарын өңдеу',
 'right-siteadmin' => 'Дерекқорды құлыптау және құлыптауын өшіру',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Тіркелу журналы',
+'newuserlogpagetext' => 'Бұл қатысушы тіркелгі жасау журналы',
+
 # User rights log
 'rightslog' => 'Қатысушы құқықтары журналы',
 'rightslogtext' => 'Бұл қатысушы құқықтарын өзгерту журналы.',
-'rightslogentry' => '$1 кірген топтарын $2 дегеннен $3 дегенге өзгертті',
-'rightsnone' => '(ешқандай)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'Осы бетті оқу',
@@ -1916,10 +1918,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Көрсет',
 'listusers-noresult' => 'Қатысушы табылған жоқ.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Тіркелу журналы',
-'newuserlogpagetext' => 'Бұл қатысушы тіркелгі жасау журналы',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Қатысушы тобы құқықтары',
 'listgrouprights-summary' => 'Келесі тізімде бұл уикиде тағайындалған қатысушы құқықтары (байланысты қатынау құқықтарымен бірге) көрсетіледі.
@@ -2014,6 +2012,8 @@ $NEWPAGE
 
 Сын-пікір беру және былайғы жәрдем алу үшін:
 {{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
+'created' => 'бастады',
+'changed' => 'өзгертті',
 
 # Delete
 'deletepage' => 'Бетті жою',
@@ -3181,6 +3181,7 @@ $5
 'logentry-newusers-create2' => '$1 $3 деген аккаунт тіркеді',
 'logentry-newusers-autocreate' => '$1 аккаунты автоматты түрде тіркелді',
 'newuserlog-byemail' => 'Құпия сөз e-mail арқылы жіберілді',
+'rightsnone' => '(ешқандай)',
 
 # Search suggestions
 'searchsuggest-search' => 'Іздеу',
index 52cc6e8..d1c1562 100644 (file)
@@ -1266,11 +1266,13 @@ Eger bunı jetistirwdi tañdasañız, bul tüzetwiñizdiñ awtorlığın anıqta
 'right-userrights-interwiki' => 'Basqa üïkïlerdegi qatıswşılardıñ quqıqtarın öñdew',
 'right-siteadmin' => 'Derekqordı qulıptaw jäne qulıptawın öşirw',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Tirkelw jwrnalı',
+'newuserlogpagetext' => 'Bul qatıswşı tirkelgi jasaw jwrnalı',
+
 # User rights log
 'rightslog' => 'Qatıswşı quqıqtarı jwrnalı',
 'rightslogtext' => 'Bul qatıswşı quqıqtarın özgertw jwrnalı.',
-'rightslogentry' => '$1 kirgen toptarın $2 degennen $3 degenge özgertti',
-'rightsnone' => '(eşqandaý)',
 
 # Recent changes
 'nchanges' => '$1 özgeris',
@@ -1645,10 +1647,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Körset',
 'listusers-noresult' => 'Qatıswşı tabılğan joq.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Tirkelw jwrnalı',
-'newuserlogpagetext' => 'Bul qatıswşı tirkelgi jasaw jwrnalı',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Qatıswşı tobı quqıqtarı',
 'listgrouprights-summary' => 'Kelesi tizimde bul wïkïde tağaýındalğan qatıswşı quqıqtarı (baýlanıstı qatınaw quqıqtarımen birge) körsetiledi.
@@ -1740,6 +1738,8 @@ Baqılaw tizimiñizdiñ baptawlırın özgertw üşin, mında kelip-ketiñiz:
 
 Sın-pikir berw jäne bılaýğı järdem alw üşin:
 {{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
+'created' => 'bastadı',
+'changed' => 'özgertti',
 
 # Delete
 'deletepage' => 'Betti joyw',
@@ -2855,5 +2855,6 @@ Swretter tolıq ajıratılımdığımen körsetiledi, basqa faýl türlerine qat
 # New logging system
 'revdelete-restricted' => 'äkimşilerge tïımdar qoldadı',
 'revdelete-unrestricted' => 'äkimşilerden tïımdardı alastadı',
+'rightsnone' => '(eşqandaý)',
 
 );
index 44b881c..d33d200 100644 (file)
@@ -1557,15 +1557,13 @@ $1",
 'right-sendemail' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ',
 'right-passwordreset' => 'មើលអ៊ីមែលសំរាប់កំណត់ពាក្យសំងាត់ឡើងវិញ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'កំណត់ហេតុនៃការបង្កើតគណនី',
+'newuserlogpagetext' => 'នេះជាកំណត់ហេតុនៃការបង្កើតអ្នកប្រើប្រាស់។',
+
 # User rights log
 'rightslog' => 'កំណត់ហេតុនៃការប្តូរសិទ្ធិអ្នកប្រើប្រាស់',
 'rightslogtext' => 'នេះ​ជា​កំណត់ហេតុនៃបំលាស់ប្ដូរចំពោះកាប្ដូរក្រុមសមាជិកភាព​របស់​អ្នកប្រើប្រាស់។',
-'rightslogentry' => 'បានប្ដូរក្រុមសមាជិកភាពសម្រាប់ $1 ពី $2 ទៅ $3',
-'rightslogentry-autopromote' => 'ត្រូវបានតំលើងតំណែងដោយស្វ័យប្រវត្តិពី $2 ទៅជា $3',
-'logentry-rights-rights' => '$1 បានផ្លាស់ប្ដូរសមាជិកភាពរបស់ $3 ពី $4 ទៅជា $5',
-'logentry-rights-rights-legacy' => '$1បានផ្លាស់ប្ដូរសមាជិកភាពរបស់ $3',
-'logentry-rights-autopromote' => '$1 ត្រូវបានតំលើងសមាជិកភាពពី $4 ជា $5',
-'rightsnone' => '(ទទេ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'អានទំព័រនេះ',
@@ -2175,10 +2173,6 @@ $1',
 'activeusers-hidesysops' => 'លាក់អ្នកអភិបាល',
 'activeusers-noresult' => 'អ្នកប្រើប្រាស់​រកមិនឃើញ​។​',
 
-# Special:Log/newusers
-'newuserlogpage' => 'កំណត់ហេតុនៃការបង្កើតគណនី',
-'newuserlogpagetext' => 'នេះជាកំណត់ហេតុនៃការបង្កើតអ្នកប្រើប្រាស់។',
-
 # Special:ListGroupRights
 'listgrouprights' => 'សិទ្ធិនិងក្រុមអ្នកប្រើប្រាស់',
 'listgrouprights-summary' => 'ខាងក្រោមនេះជាបញ្ជីរាយឈ្មោះក្រុមអ្នកប្រើប្រាស់ដែលបានកំណត់ជាមួយនឹងសិទ្ធិរបស់គេនៅលើវិគីនេះ។ មាន[[{{MediaWiki:Listgrouprights-helppage}}|ព័ត៌មានបន្ថែម]] អំពីសិទ្ធិផ្ទាល់ខ្លួន។',
@@ -2309,6 +2303,8 @@ $UNWATCHURL
 
 មតិ​យោបល់​និងជំនួយបន្ថែម ៖
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'បានបង្កើត',
+'changed' => 'បានផ្លាស់ប្តូរ',
 
 # Delete
 'deletepage' => 'លុបទំព័រចោល',
@@ -3649,6 +3645,10 @@ $5
 'logentry-newusers-create2' => ' $3 បានបង្កើតគណនីអ្នកប្រើប្រាស់ $1',
 'logentry-newusers-autocreate' => 'គណនី $1 ត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ',
 'newuserlog-byemail' => 'ពាក្យសំងាត់ត្រូវបានផ្ញើតាមអ៊ីមែល',
+'logentry-rights-rights' => '$1 បានផ្លាស់ប្ដូរសមាជិកភាពរបស់ $3 ពី $4 ទៅជា $5',
+'logentry-rights-rights-legacy' => '$1បានផ្លាស់ប្ដូរសមាជិកភាពរបស់ $3',
+'logentry-rights-autopromote' => '$1 ត្រូវបានតំលើងសមាជិកភាពពី $4 ជា $5',
+'rightsnone' => '(ទទេ)',
 
 # Feedback
 'feedback-subject' => 'កម្មវត្ថុ ៖',
index 472a1ff..b50820f 100644 (file)
@@ -1026,12 +1026,12 @@ $2',
 'right-sendemail' => 'ಇತರ ಬಳಕೆದಾರರಿಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿ',
 'right-passwordreset' => 'ಪಾಸ್ವರ್ಡ್ ಮತ್ತೆ ಜೋಡಿಸಲ್ಪಟ್ಟ  ಇಮೇಲ್ ಗಳನ್ನು ವೀಕ್ಷಿಸಿ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ಸದಸ್ಯತ್ವ ಸೃಷ್ಟಿಗಳ ದಾಖಲೆ',
+
 # User rights log
 'rightslog' => 'ಸದಸ್ಯರ ಹಕ್ಕುಗಳ ದಾಖಲೆಗಳು',
 'rightslogtext' => 'ಇದು ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ಬದಲಾವಣೆಗಳ ದಾಖಲೆ.',
-'rightslogentry' => '$1 ಅವರ ಗುಂಪು ಸದಸ್ಯತ್ವವನ್ನು $2 ಇಂದ $3 ಗೆ ಬದಲಾಯಿಸಲಾಯಿತು',
-'rightslogentry-autopromote' => 'ಸ್ವಯಂಚಾಲಿತವಾಗಿ $2 ರಿಂದ $3 ಬಡ್ತಿ ನೀಡಲಾಯಿತು',
-'rightsnone' => '(ಯಾವೂ ಇಲ್ಲ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ಈ ಪುಟವನ್ನು ಓದಿ',
@@ -1426,9 +1426,6 @@ $2',
 'activeusers' => 'ಸಕ್ರಿಯ ಸದಸ್ಯರ ಪಟ್ಟಿ',
 'activeusers-noresult' => 'ಯಾವ ಬಳಕೆದಾರರೂ ಸಿಗಲಿಲ್ಲ.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ಸದಸ್ಯತ್ವ ಸೃಷ್ಟಿಗಳ ದಾಖಲೆ',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ಬಳಕೆದಾರ ಗುಂಪು ಹಕ್ಕುಗಳು',
 'listgrouprights-summary' => 'ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರಚಲಿತವಾಗಿರುವ ಬಳಕೆದಾರ ಗುಂಪುಗಳು ಮತ್ತು ಆ ಗುಂಪುಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಹಕ್ಕುಗಳು ಈ ಕೆಳಗಿನಂತಿದೆ.',
@@ -1490,6 +1487,8 @@ $2',
 'enotif_impersonal_salutation' => '{{SITENAME}} ಸದಸ್ಯ',
 'enotif_lastvisited' => 'ನಿಮ್ಮ ಕಳೆದ ಭೇಟಿಯ ನಂತರದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳಿಗೆ $1 ನೋಡಿ.',
 'enotif_anon_editor' => 'ಅನಾಮಧೇಯ ಸದಸ್ಯ $1',
+'created' => 'ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ',
+'changed' => 'ಬದಲಾಯಿಸಲಾಗಿದೆ',
 
 # Delete
 'deletepage' => 'ಪುಟವನ್ನು ಅಳಿಸಿ',
@@ -2178,6 +2177,7 @@ $5
 # New logging system
 'revdelete-restricted' => 'ನಿರ್ವಾಹಕರಿಗೆ ನಿಬಂಧನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಯಿತು',
 'revdelete-unrestricted' => 'ನಿರ್ವಾಹಕರ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆಯಲಾಯಿತು',
+'rightsnone' => '(ಯಾವೂ ಇಲ್ಲ)',
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|ಕ್ಷಣ|ಕ್ಷಣಗಳು}}',
index 33be108..8d7fe2c 100644 (file)
@@ -26,6 +26,7 @@
  * @author Kaganer
  * @author Klutzy
  * @author Kwj2772
+ * @author LFM
  * @author Mintz0223
  * @author Pi.C.Noizecehx
  * @author PuzzletChung
@@ -477,6 +478,7 @@ $messages = array(
 'newwindow' => '(새 창으로 열림)',
 'cancel' => '취소',
 'moredotdotdot' => '더 보기...',
+'morenotlisted' => '목록에 없는 항목 더 보기...',
 'mypage' => '문서',
 'mytalk' => '토론',
 'anontalk' => '익명 사용자 토론',
@@ -861,6 +863,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
 'user-mail-no-addy' => '받는이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.',
+'user-mail-no-body' => '비어 있거나 지나치게 짧은 본문으로 이메일을 보내려고 했습니다.',
 
 # Change password dialog
 'resetpass' => '비밀번호 바꾸기',
@@ -957,7 +960,7 @@ $2
 'showlivepreview' => '실시간 미리 보기',
 'showdiff' => '차이 보기',
 'anoneditwarning' => "'''경고''': 로그인하고 있지 않습니다.
-당신의 IP 주소가 문서 역사에 남게 됩니다.",
+IP 주소가 문서 역사에 남게 됩니다.",
 'anonpreviewwarning' => "'''로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서 역사에 남게 됩니다.'''",
 'missingsummary' => "'''알림:''' 편집 요약을 적지 않았습니다.
 이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
@@ -1133,9 +1136,9 @@ IP 주소는 여러 사용자가 공유할 수 있습니다.
 'edit-gone-missing' => '문서를 저장하지 못했습니다.
 문서가 삭제된 것 같습니다.',
 'edit-conflict' => '편집 충돌.',
-'edit-no-change' => '문ì\84\9cì\97\90 ì\95\84무ë\9f° ë³\80í\99\94ê°\80 ì\97\86기 ë\95\8c문ì\97\90 ë\8b¹ì\8b ì\9d\98 편집은 무시되었습니다.',
+'edit-no-change' => '문ì\84\9cì\97\90 ì\96´ë\96 í\95\9c ë°\94ë\80\9cë\8f\84 ì\97\86기 ë\95\8c문ì\97\90 편집은 무시되었습니다.',
 'edit-already-exists' => '새 문서를 만들 수 없습니다.
-그 문서는 이미 존재합니다.',
+문서가 이미 존재합니다.',
 'defaultmessagetext' => '기본 메세지 내용',
 'content-failed-to-parse' => '$1 모델에 대한 $2 내용을 구문 분석하는 데 실패했습니다: $3',
 'invalid-content-data' => '잘못된 내용 데이터입니다',
@@ -1539,7 +1542,7 @@ HTML 태그를 확인하세요.',
 실명을 입력할 경우 문서 기여에 자신의 이름이 들어가게 됩니다.',
 'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호 바꾸기를 위해 필요합니다.',
 'prefs-help-email-others' => '자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.
-이 경우에도 당신의 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.',
+이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.',
 'prefs-help-email-required' => '이메일 주소가 필요합니다.',
 'prefs-info' => '기본 정보',
 'prefs-i18n' => '언어 설정',
@@ -1668,15 +1671,13 @@ HTML 태그를 확인하세요.',
 'right-sendemail' => '다른 사용자에게 이메일 보내기',
 'right-passwordreset' => '비밀번호 재설정 이메일을 보기',
 
+# Special:Log/newusers
+'newuserlogpage' => '사용자 등록 기록',
+'newuserlogpagetext' => '사용자 등록 기록입니다.',
+
 # User rights log
 'rightslog' => '사용자 권한 기록',
 'rightslogtext' => '사용자 권한 조정 기록입니다.',
-'rightslogentry' => '사용자가 $1의 권한을 $2에서 $3으로 바꾸었습니다',
-'rightslogentry-autopromote' => '사용자의 권한이 자동적으로 $2에서 $3으로 바뀌었습니다.',
-'logentry-rights-rights' => '$1 사용자가 $3 사용자의 권한을 $4에서 $5으로 바꾸었습니다.',
-'logentry-rights-rights-legacy' => '$1 사용자가 $3 사용자의 권한을 바꾸었습니다.',
-'logentry-rights-autopromote' => '$1 사용자의 권한이 자동적으로 $4에서 $5으로 바뀌었습니다.',
-'rightsnone' => '(없음)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '이 문서를 읽기',
@@ -1980,7 +1981,7 @@ URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세
 'invalid-chunk-offset' => '청크 오프셋이 잘못되었습니다.',
 
 # img_auth script messages
-'img-auth-accessdenied' => '접근 거부됨',
+'img-auth-accessdenied' => '접근 거부됨',
 'img-auth-nopathinfo' => 'PATH_INFO를 잃었습니다.
 서버가 이 정보를 받을 수 있도록 설정되어 있지 않습니다.
 이러한 경우는 서버가 CGI 기반이고 img_auth를 지원하지 않을 때 나타날 수 있습니다.
@@ -2340,10 +2341,6 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'activeusers-hidesysops' => '관리자를 숨기기',
 'activeusers-noresult' => '사용자가 없습니다.',
 
-# Special:Log/newusers
-'newuserlogpage' => '사용자 등록 기록',
-'newuserlogpagetext' => '사용자 등록 기록입니다.',
-
 # Special:ListGroupRights
 'listgrouprights' => '사용자 권한 목록',
 'listgrouprights-summary' => '다음은 이 위키에서 설정된 사용자 권한 그룹의 목록입니다.
@@ -2479,6 +2476,8 @@ $UNWATCHURL
 
 도움을 얻거나 피드백 하기:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '만들었',
+'changed' => '바꾸었',
 
 # Delete
 'deletepage' => '문서 삭제하기',
@@ -2551,6 +2550,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] 문서를 [[$2]] 문서로 이동함',
 'protect-badnamespace-title' => '보호할 수 없는 이름공간',
 'protect-badnamespace-text' => '이 이름공간에 있는 문서는 보호할 수 없습니다.',
+'protect-norestrictiontypes-text' => '이 문서는 제한 유형을 사용할 수 없음으로 보호할 수 없습니다.',
+'protect-norestrictiontypes-title' => '보호할 수 없는 문서',
 'protect-legend' => '보호 확인',
 'protectcomment' => '이유:',
 'protectexpiry' => '보호 기간:',
@@ -3158,15 +3159,15 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 
 # Stylesheets
 'common.css' => '/* 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
-'standard.css' => '/* 이 CSS 설정은 모든 스탠다드 스킨에 적용됩니다 */',
-'nostalgia.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\93  ë\85¸ì\8a¤í\85\94ì§\80ì\95\84 ì\8a¤í\82¨ì\97\90 적용됩니다 */',
-'cologneblue.css' => '/* 이 CSS 설정은 모든 쾰른 블루 스킨에 적용됩니다 */',
-'monobook.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\93  ëª¨ë\85¸ë¶\81 ì\8a¤í\82¨ì\97\90 적용됩니다 */',
-'myskin.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\93  ë§\88ì\9d´ì\8a¤í\82¨ ì\8a¤í\82¨ì\97\90 적용됩니다 */',
-'chick.css' => '/* 이 CSS 설정은 모든 치크 스킨에 적용됩니다 */',
-'simple.css' => '/* 이 CSS 설정은 모든 심플 스킨에 적용됩니다 */',
-'modern.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\93  ëª¨ë\8d\98 ì\8a¤í\82¨ì\97\90 적용됩니다 */',
-'vector.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\93  ë²¡í\84° ì\8a¤í\82¨ì\97\90 적용됩니다 */',
+'standard.css' => '/* 이 CSS 설정은 스탠다드 스킨을 사용하는 사용자에게 적용됩니다 */',
+'nostalgia.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ë\85¸ì\8a¤í\85\94ì§\80ì\95\84 ì\8a¤í\82¨ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c 적용됩니다 */',
+'cologneblue.css' => '/* 이 CSS 설정은 쾰른 블루 스킨을 사용하는 사용자에게 적용됩니다 */',
+'monobook.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\85¸ë¶\81 ì\8a¤í\82¨ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c 적용됩니다 */',
+'myskin.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ë§\88ì\9d´ì\8a¤í\82¨ ì\8a¤í\82¨ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c 적용됩니다 */',
+'chick.css' => '/* 이 CSS 설정은 치크 스킨을 사용하는 사용자에게 적용됩니다 */',
+'simple.css' => '/* 이 CSS 설정은 심플 스킨을 사용하는 사용자에게 적용됩니다 */',
+'modern.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ëª¨ë\8d\98 ì\8a¤í\82¨ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c 적용됩니다 */',
+'vector.css' => '/* ì\9d´ CSS ì\84¤ì \95ì\9d\80 ë²¡í\84° ì\8a¤í\82¨ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c 적용됩니다 */',
 'print.css' => '/* 이 CSS 설정은 인쇄 출력 화면에 적용됩니다 */',
 'handheld.css' => '/* 이 CSS 설정은 $wgHandheldStyle에 설정한 스킨을 기반으로 한 휴대 기기에 적용됩니다 */',
 'noscript.css' => '/* 이 CSS 설정은 자바스크립트를 비활성화한 사용자에 적용됩니다 */',
@@ -3248,6 +3249,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'pageinfo-magic-words' => '매직 {{PLURAL:$1|워드}} ($1개)',
 'pageinfo-hidden-categories' => '숨은 {{PLURAL:$1|분류}} ($1개)',
 'pageinfo-templates' => '포함한 {{PLURAL:$1|틀}} ($1개)',
+'pageinfo-transclusions' => '포함한 {{PLURAL:$1|문서}} ($1개)',
 'pageinfo-toolboxlink' => '문서 정보',
 'pageinfo-redirectsto' => '넘겨주기 대상',
 'pageinfo-redirectsto-info' => '정보',
@@ -3256,6 +3258,10 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'pageinfo-protect-cascading' => '여기서의 연쇄적 보호',
 'pageinfo-protect-cascading-yes' => '예',
 'pageinfo-protect-cascading-from' => '연쇄적 보호한 기점',
+'pageinfo-category-info' => '분류 정보',
+'pageinfo-category-pages' => '문서 수',
+'pageinfo-category-subcats' => '하위 분류 수',
+'pageinfo-category-files' => '파일 개수',
 
 # Skin names
 'skinname-standard' => '클래식',
@@ -3339,10 +3345,12 @@ $1',
 'sp-newimages-showfrom' => '$1 $2부터 올라온 파일 목록 보기',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '$1초',
-'minutes' => '$1분',
-'hours' => '$1시간',
-'days' => '$1일',
+'seconds' => '{{PLURAL:$1|$1초}}',
+'minutes' => '{{PLURAL:$1|$1분}}',
+'hours' => '{{PLURAL:$1|$1시간}}',
+'days' => '{{PLURAL:$1|$1일}}',
+'months' => '{{PLURAL:$1|$1월}}',
+'years' => '{{PLURAL:$1|$1년}}',
 'ago' => '$1 전',
 'just-now' => '방금',
 
@@ -3810,7 +3818,7 @@ Variants for Chinese language
 'confirmemail_success' => '이메일 주소가 인증되었습니다.
 이제 [[Special:UserLogin|로그인]]해서 위키를 사용하세요.',
 'confirmemail_loggedin' => '이메일 주소가 인증되었습니다.',
-'confirmemail_error' => '당신의 인증을 저장하는 도중 오류가 발생했습니다.',
+'confirmemail_error' => '인증을 저장하는 도중 오류가 발생했습니다.',
 'confirmemail_subject' => '{{SITENAME}} 이메일 주소 인증',
 'confirmemail_body' => '$1 IP 주소를 사용하는 사용자가
 {{SITENAME}}의 "$2" 계정에 이메일 인증 신청을 했습니다.
@@ -4119,10 +4127,14 @@ $5
 'logentry-newusers-create2' => '$1 사용자가 $3 사용자 계정을 만들었습니다.',
 'logentry-newusers-autocreate' => '$1 사용자 계정을 자동적으로 만들었습니다.',
 'newuserlog-byemail' => '이메일로 보낸 비밀번호',
+'logentry-rights-rights' => '$1 사용자가 $3 사용자의 권한을 $4에서 $5으로 바꾸었습니다.',
+'logentry-rights-rights-legacy' => '$1 사용자가 $3 사용자의 권한을 바꾸었습니다.',
+'logentry-rights-autopromote' => '$1 사용자의 권한이 자동적으로 $4에서 $5으로 바뀌었습니다.',
+'rightsnone' => '(없음)',
 
 # Feedback
 'feedback-bugornote' => '기술적 문제를 구체적으로 설명할 준비가 되었다면 [$1 버그를 신고]해 주세요.
-아니면 아래에 쉬운 양식을 쓸 수 있습니다. 당신의 의견은 사용자 이름과 사용 중인 브라우저 정보와 함께 "[$3 $2]"에 남겨질 것입니다.',
+아니면 아래에 쉬운 양식을 쓸 수 있습니다. 의견은 사용자 이름과 함께 "[$3 $2]"에 남겨질 것입니다.',
 'feedback-subject' => '제목:',
 'feedback-message' => '내용:',
 'feedback-cancel' => '취소',
@@ -4131,7 +4143,7 @@ $5
 'feedback-error1' => '오류: API 실행 결과를 인식할 수 없음',
 'feedback-error2' => '오류: 편집 실패',
 'feedback-error3' => '오류: API가 응답하지 않음',
-'feedback-thanks' => '감사합니다! "[$2 $1]" 문서에 당신의 의견을 남겼습니다.',
+'feedback-thanks' => '감사합니다! "[$2 $1]" 문서에 의견을 남겼습니다.',
 'feedback-close' => '완료',
 'feedback-bugcheck' => '감사합니다! 혹시 해당 사항이 [$1 기존의 버그 보고서]에 올라와 있는지 확인해주세요.',
 'feedback-bugnew' => '확인했습니다. 새로운 버그 보고서를 작성합니다.',
index 4433a56..37955af 100644 (file)
@@ -1303,15 +1303,13 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'right-sendemail' => 'Башха къошулуучулагъа электрон почта джиберирге',
 'right-passwordreset' => "пароль тюрлениуле бла e-mail'леге къарау",
 
+# Special:Log/newusers
+'newuserlogpage' => 'Къошулуучуланы регистрацияларыны журналы',
+'newuserlogpagetext' => 'Кёб болмай регистрация этген къошулуучуланы тизмеси.',
+
 # User rights log
 'rightslog' => 'Къошулуучуну хакъларыны журналы',
 'rightslogtext' => 'Бу къошулуучуну хакъларыны тюрлениуюню журналыды',
-'rightslogentry' => '$1-ни къауумлада членлиги $2-ден $3-ге тюрленнгенди',
-'rightslogentry-autopromote' => '$2 къауумдан автомат халда $3 къауумгъа кёчюрюлдю',
-'logentry-rights-rights' => '$1 къошулуучу, $3 къошулуучуну членлигин $4 къауумдан $5 къауумгъа кёчюрдю',
-'logentry-rights-rights-legacy' => '$1 къошулуучу, $3 къушулуучуну къауумлада членлигин тюрлендирди',
-'logentry-rights-autopromote' => '$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа кёчюрюлдю',
-'rightsnone' => '(джокъ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бу бетни окъуу',
@@ -1893,10 +1891,6 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'activeusers-hidesysops' => 'Администраторланы джашыр',
 'activeusers-noresult' => 'Къошлуучу табылмады.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Къошулуучуланы регистрацияларыны журналы',
-'newuserlogpagetext' => 'Кёб болмай регистрация этген къошулуучуланы тизмеси.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Къошулуучуланы къауумуну хакълары',
 'listgrouprights-summary' => 'Тюбюндеги бу викиде танылгъан къошулуучу къауумланы эмда аланы хакъларыны тизмеси.
@@ -2019,6 +2013,8 @@ $UNWATCHURL
 
 Болушлукъ эм теджеуле ючюн:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'къуралды',
+'changed' => 'тюрленди',
 
 # Delete
 'deletepage' => 'Бетни кетер',
@@ -3525,6 +3521,10 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'logentry-newusers-create2' => '$1, $3 тергеу джазыуну къурады',
 'logentry-newusers-autocreate' => '$1 тергеу джазыу автомат халда къуралды',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
+'logentry-rights-rights' => '$1 къошулуучу, $3 къошулуучуну членлигин $4 къауумдан $5 къауумгъа кёчюрдю',
+'logentry-rights-rights-legacy' => '$1 къошулуучу, $3 къушулуучуну къауумлада членлигин тюрлендирди',
+'logentry-rights-autopromote' => '$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа кёчюрюлдю',
+'rightsnone' => '(джокъ)',
 
 # Feedback
 'feedback-subject' => 'Тема:',
index ff5e3f7..d2aeef2 100644 (file)
@@ -1623,15 +1623,13 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
 'right-sendemail' => '<i lang="en">e-mail</i> aan ander Metmaacher schecke',
 'right-passwordreset' => 'De <i lang="en">e-mails</i> vum Paßwoot neu Säze aanloore',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboch för neu Metmaachere',
+'newuserlogpagetext' => 'He sin de Metmaacher opjelėßß, di sesh nöü aanjemäldt han.',
+
 # User rights log
 'rightslog' => 'Logboch för Änderunge aan Metmaacher-Räächde',
 'rightslogtext' => 'Hee sin de Änderunge an Metmaacher ehre Räächde opjeliss. Op de Sigge üvver Metmaacher, Wiki-Köbesse, Bürrokrade, Stewards, un esu, kanns De nohlese, wat domet es.',
-'rightslogentry' => 'hät däm Metmaacher „$1“ sing Räächde vun „$2“ op „$3“ ömjestallt.',
-'rightslogentry-autopromote' => 'wood automattesch vun $2 zohm $3 jemaat.',
-'logentry-rights-rights' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.',
-'logentry-rights-rights-legacy' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.',
-'logentry-rights-autopromote' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 wood automattesch vum $4 zom $5 jemaat.',
-'rightsnone' => '(nix)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'di Sigg ze lesse',
@@ -2335,10 +2333,6 @@ De Brauserprotokolle, di mer beim Söke aanjäjovve kann, sin: <code>$1</code>,
 'activeusers-hidesysops' => 'De Wiki_Köbesse fott lohße',
 'activeusers-noresult' => 'Kein Metmaacher jefonge.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboch för neu Metmaachere',
-'newuserlogpagetext' => 'He sin de Metmaacher opjelėßß, di sesh nöü aanjemäldt han.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Metmaacher-Jruppe-Rääschte',
 'listgrouprights-summary' => 'Hee kütt de Liss met dä Medmaacher-Jruppe, di dat Wiki hee kennt, un denne ier Rääschte.
@@ -2486,6 +2480,8 @@ $UNWATCHURL
 
 Do kanns hee noh Hölp luure:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'neu aanjelaht',
+'changed' => 'jeändert',
 
 # Delete
 'deletepage' => 'Schmieß die Sigg jetz fott',
@@ -4181,6 +4177,10 @@ die De häs han welle. Se künnt jet ällder un nit mieh aktoäll sin.',
 'logentry-newusers-create2' => 'Dä $1 hät dä $3 als ene neue Metmaacher aanjelaat.',
 'logentry-newusers-autocreate' => 'Dä $1 wood automattesch als Metmaacher aanjelaat.',
 'newuserlog-byemail' => 'dat Passwood wood med de e-mail loßjescheck',
+'logentry-rights-rights' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.',
+'logentry-rights-rights-legacy' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.',
+'logentry-rights-autopromote' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 wood automattesch vum $4 zom $5 jemaat.',
+'rightsnone' => '(nix)',
 
 # Feedback
 'feedback-bugornote' => 'Wann de em Bejreff bes, övver e täschesch Probleem ze schrieve, bes esu jood un donn dat als en [$1 Fählermäldong].
index 4085e3d..7e5038d 100644 (file)
@@ -1001,11 +1001,12 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'right-userrights' => 'Hemû mafên bikarhêner biguherîne',
 'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
 
+# Special:Log/newusers
+'newuserlogpage' => 'çêkirina hesabê nû',
+
 # User rights log
 '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',
@@ -1353,9 +1354,6 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'activeusers-hidesysops' => 'Rêveberan veşêre',
 'activeusers-noresult' => 'Tu bikarhêner nehate dîtin.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'çêkirina hesabê nû',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Mafên koma bikarhêner',
 'listgrouprights-group' => 'Kom',
@@ -1444,6 +1442,8 @@ Heke tu dixwazî lîsteya xwe ya şopandinê biguherînî, li
 
 Paşagahîdan û alîkaraya din:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'hate afirandin',
+'changed' => 'hate guhertin',
 
 # Delete
 'deletepage' => 'Rûpelê jê bibe',
@@ -2142,6 +2142,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'logentry-newusers-newusers' => '$1 hesabekî bikarhêneriyê çêkir',
 'logentry-newusers-create' => '$1 hesabekî bikarhêneriyê çêkir',
 'newuserlog-byemail' => 'şîfre bi e-nameyê hate şandin',
+'rightsnone' => '(tune)',
 
 # Feedback
 'feedback-subject' => 'Mijar:',
index fdbf8a4..a955942 100644 (file)
@@ -188,13 +188,13 @@ $messages = array(
 'vector-action-undelete' => 'Калыбына келтирүү',
 'vector-action-unprotect' => 'Коргоону өзгөртүү',
 'vector-simplesearch-preference' => 'Жөнөкөйлөнгөн издөө сабын күйгүзүү («Вектор» темасы гана)',
-'vector-view-create' => 'Ð\96аÑ\80аÑ\82Ñ\83Ñ\83',
+'vector-view-create' => 'Ð\91аÑ\88Ñ\82а',
 'vector-view-edit' => 'Оңдоо',
 'vector-view-history' => 'Тарыхын кароо',
 'vector-view-view' => 'Окуу',
 'vector-view-viewsource' => 'Кайнарын кароо',
 'actions' => 'Аракеттер',
-'namespaces' => 'Аталыш топтому',
+'namespaces' => 'Аталыштар мейкиндиги',
 'variants' => 'Варианттар',
 
 'navigation-heading' => 'Навигация менюсу',
@@ -207,14 +207,14 @@ $messages = array(
 'go' => 'Өтүү',
 'searcharticle' => 'Алга',
 'history' => 'Барактын тарыхы',
-'history_short' => 'Тарых',
+'history_short' => 'Тарыхы',
 'updatedmarker' => 'менин акыркы келүүмдөн кийин жаңыртылган',
 'printableversion' => 'Басма үлгүсү',
 'permalink' => 'Туруктуу шилтеме',
 'print' => 'Басып чыгаруу',
 'view' => 'Кароо',
 'edit' => 'Оңдоо',
-'create' => 'Ð\96аÑ\80аÑ\82Ñ\83Ñ\83',
+'create' => 'Ð\91аÑ\88Ñ\82а',
 'editthispage' => 'Бул баракты оңдоо',
 'create-this-page' => 'Бул баракты түзүү',
 'delete' => 'Өчүрүү',
@@ -273,12 +273,12 @@ $1',
 'disclaimerpage' => 'Project:Жоопкерчиликтен баш тартуу',
 'edithelp' => 'Өзгөртүү боюнча жардам',
 'edithelppage' => 'Help:Редакторлоо',
-'helppage' => 'Help:Мазмун',
+'helppage' => 'Help:Мазмуну',
 'mainpage' => 'Башбарак',
 'mainpage-description' => 'Башбарак',
 'policy-url' => 'Project:Эрежелер',
-'portal' => 'Ð\9aоомдоÑ\88Ñ\82Ñ\83к порталы',
-'portal-url' => 'Project:Ð\9aоомдоÑ\88Ñ\82Ñ\83к порталы',
+'portal' => 'Ð\96амааÑ\82 порталы',
+'portal-url' => 'Project:Ð\96амааÑ\82 порталы',
 'privacy' => 'Жашырындуулук саясаты',
 'privacypage' => 'Project:Жашырындуулук саясаты',
 
@@ -300,9 +300,9 @@ $1',
 'editold' => 'оңдоо',
 'viewsourceold' => 'баштапкы кодун көрүү',
 'editlink' => 'оңдоо',
-'viewsourcelink' => 'Ð\91айкоо',
+'viewsourcelink' => 'Ð\9aайнаÑ\80дÑ\8b ÐºÐ°Ñ\80а',
 'editsectionhint' => '$1 бөлүмүн оңдоо',
-'toc' => 'Мазмун',
+'toc' => 'Мазмуну',
 'showtoc' => 'көрсөтүү',
 'hidetoc' => 'жашыруу',
 'collapsible-collapse' => 'Түрүү',
@@ -694,7 +694,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchprofile-project-tooltip' => '$1 -де издөө',
 'searchprofile-images-tooltip' => 'Файлдарды издөө',
 'searchprofile-everything-tooltip' => 'Баардык барактардан (талкуу барактарды кошо) издөө',
-'searchprofile-advanced-tooltip' => 'Белгиленген аталыш топтомдорунан издөө',
+'searchprofile-advanced-tooltip' => 'Белгиленген аталыш мейкиндиктеринде издөө',
 'search-result-size' => '$1 ({{PLURAL:$2|1 сөз|$2 сөз}})',
 'search-result-category-size' => '{{PLURAL:$1|1 мүчө|$1 мүчө}} ({{PLURAL:$2|1 көмөк категория|$2 көмөк категория}}, {{PLURAL:$3|1 файл|$3 файл}})',
 'search-result-score' => 'Релеванттуулук: $1%',
@@ -872,8 +872,8 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'right-suppressionlog' => 'Жеке журналдарды көрүү',
 'right-userrights' => 'Бүт катышуучулардын укуктарын оңдоо',
 
-# User rights log
-'rightsnone' => '(жок)',
+# Special:Log/newusers
+'newuserlogpage' => 'Катышуучулардын каттоо журналы',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бул баракты окуу',
@@ -908,7 +908,7 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'rcshowhidemine' => 'Оңдоолорумду $1',
 'rclinks' => 'Соңку $2 күндө жасалган акыркы $1 өзгөртүүлөрдү көрсөтүү<br />$3',
 'diff' => 'айырма',
-'hist' => 'тарых',
+'hist' => 'тарыхы',
 'hide' => 'Жашыруу',
 'show' => 'Көрсөтүү',
 'minoreditletter' => 'м',
@@ -921,7 +921,7 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 # Recent changes linked
 'recentchangeslinked' => 'Тиешелүү өзгөрүүлөр',
 'recentchangeslinked-feed' => 'Тиешелүү өзгөрүүлөр',
-'recentchangeslinked-toolbox' => 'ТиеÑ\88елүү өзгөрүүлөр',
+'recentchangeslinked-toolbox' => 'Ð\91айланÑ\8bÑ\88Ñ\82Ñ\83Ñ\83 өзгөрүүлөр',
 'recentchangeslinked-title' => '"$1" үчүн тийиштүү өзгөртүүлөр',
 'recentchangeslinked-noresult' => 'Берилген мөөнөттө шилтемеленген барактарда өзгөртүү жок.',
 'recentchangeslinked-summary' => 'Бул көрсөтүлгөн (же көрсөтүлгөн категорияга кирген) барактан шилтемеленген барактардагы жакын арада жасалган өзгөрүүлөрдүн тизмеси.
@@ -1105,9 +1105,6 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'activeusers-hidesysops' => 'Администраторлорду жашыруу',
 'activeusers-noresult' => 'Катышуучулар табылган жок.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Катышуучулардын каттоо журналы',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Топ',
 'listgrouprights-rights' => 'Укуктар',
@@ -1136,6 +1133,9 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'wlshowlast' => 'Соңку $1 саат $2 күн $3 көрсөтүү.',
 'watchlist-options' => 'Көзөмөл тизменин ырастоолору',
 
+'created' => 'түзүлдү',
+'changed' => 'өзгөртүлдү',
+
 # Delete
 'deletepage' => 'Баракты өчүрүү',
 'confirm' => 'Аныктоо',
@@ -1241,7 +1241,7 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'blocklink' => 'бөгөттө',
 'unblocklink' => 'бөгөттөн чыгар',
 'change-blocklink' => 'бөгөттү өзгөрт',
-'contribslink' => 'салым',
+'contribslink' => 'салымдары',
 'emaillink' => 'кат жиберүү',
 'blocklogpage' => 'Тосмолоолордун журналы',
 'blocklogentry' => '[[$1]] тосмолонду, тосмолоо мөөнөтү: $2 $3',
@@ -1356,7 +1356,7 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'tooltip-pt-mycontris' => 'Салымдарыңыздын тизмеси',
 'tooltip-pt-login' => 'Сизге системада катталууга сунуш кылынат, бирок милдеттүү эмес',
 'tooltip-pt-logout' => 'Иш сеансын аяктоо',
-'tooltip-ca-talk' => 'Барактын мазмуну боюнча талкуулоо',
+'tooltip-ca-talk' => 'Барактын мазмунун талкуулоо',
 'tooltip-ca-edit' => 'Сиз бул баракты оңдой аласыз. Кичи пейилдикке, сактоодон мурда алдын ала көрсөтүү баскычын колдонуңуз.',
 'tooltip-ca-addsection' => 'Жаңы бөлүмдү жаратуу',
 'tooltip-ca-viewsource' => 'Бул барак корголгон.
@@ -1752,6 +1752,7 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'logentry-newusers-create2' => '$1 эсеп жазуусун жаратты',
 'logentry-newusers-autocreate' => 'Автоматтуу түрдө $1 эсеп жазуусу жаратылды',
 'newuserlog-byemail' => 'сырсөз эл. почта аркылуу жөнөтүлдү',
+'rightsnone' => '(жок)',
 
 # Feedback
 'feedback-subject' => 'Тема:',
index 3a5f9f2..89f6a18 100644 (file)
@@ -1036,10 +1036,13 @@ Si vis id dare, opera tua tibi ascribentur.',
 'right-userrights-interwiki' => 'Potestates usorum aliis in vicis recensere',
 'right-siteadmin' => 'Basem datorum obstruere vel deobstruere',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Index rationum novarum creatarum',
+'newuserlogpagetext' => 'Hic est index rationum novarum creatarum.',
+
 # User rights log
 'rightslog' => 'Index mutationum iuribus usorum',
 'rightslogtext' => 'Haec est index mutationum iuribus usorum.',
-'rightsnone' => '(nullus)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'hanc paginam legere',
@@ -1418,10 +1421,6 @@ Vide etiam [[Special:WantedCategories|categorias desideratas]].',
 'activeusers-hidesysops' => 'Celare magistratus',
 'activeusers-noresult' => 'Nullus usor inventus.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Index rationum novarum creatarum',
-'newuserlogpagetext' => 'Hic est index rationum novarum creatarum.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gregum usorum potestates',
 'listgrouprights-group' => 'Grex',
@@ -1519,6 +1518,8 @@ To change your watchlist settings, visit
 
 Feedback and further assistance:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creata',
+'changed' => 'mutata',
 
 # Delete
 'deletepage' => 'Delere paginam',
@@ -2374,6 +2375,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
 'logentry-newusers-create2' => 'Ratio usoris $3 creata est ab usore $1',
 'logentry-newusers-autocreate' => 'Ratio $1 automatice creata est',
 'newuserlog-byemail' => 'tessera missa litteris electronicis',
+'rightsnone' => '(nullus)',
 
 # Search suggestions
 'searchsuggest-search' => 'Quaerere',
index a3ec90d..3b6c0df 100644 (file)
@@ -749,6 +749,9 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
 'right-minoredit' => 'Marcar trocamientos como "chiquiticos"',
 'right-delete' => 'Efassar hojas',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registro de creación de usuarios',
+
 # User rights log
 'rightslog' => 'Trocamientos de profil de usuario',
 
@@ -882,9 +885,6 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
 'linksearch' => 'Linkes eksternos',
 'linksearch-line' => 'Atamiento para $1 en la ója $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registro de creación de usuarios',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(ver los miembros de este grupo)',
 
index efe017d..3773ff8 100644 (file)
@@ -1458,13 +1458,13 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'right-sendemail' => 'Anere Benotzer E-Maile schécken',
 'right-passwordreset' => 'Maile vum Zrécksetze vum Passwuert weisen',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logbuch vun den neien Umeldungen',
+'newuserlogpagetext' => "Dëst ass d'Lescht vun de Benotzernimm déi ugeluecht goufen.",
+
 # User rights log
 'rightslog' => 'Logbuch vun de Benotzerrechter',
 'rightslogtext' => "Dëst ass d'Lëscht vun den Ännerunge vu Benotzerrechter.",
-'rightslogentry' => "huet d'Benotzerrechter vum $1 vun $2 op $3 geännert.",
-'rightslogentry-autopromote' => 'gouf automatesch aus dem Grupp $2 an de Grupp $3 gesat',
-'logentry-rights-autopromote' => "De Benotzer $1 huet d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
-'rightsnone' => '(keen)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'dës Säit ze liesen',
@@ -2088,10 +2088,6 @@ Et muss mindestens en Top-Level-Domaine ugi ginn, wéi z. Bsp. ".org".<br />
 'activeusers-hidesysops' => 'Administrateure verstoppen',
 'activeusers-noresult' => 'Keng Benotzer fonnt.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logbuch vun den neien Umeldungen',
-'newuserlogpagetext' => "Dëst ass d'Lescht vun de Benotzernimm déi ugeluecht goufen.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rechter vun de Benotzergruppen',
 'listgrouprights-summary' => 'Dëst ass eng Lëscht vun den op dëser Wiki definéierte Benotzergruppen an den domat verbonnene Rechter.
@@ -2229,6 +2225,8 @@ $UNWATCHURL
 
 Reaktiounen a méi Hëllef:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'gemaach',
+'changed' => 'geännert',
 
 # Delete
 'deletepage' => 'Säit läschen',
@@ -2957,6 +2955,10 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'pageinfo-protect-cascading' => 'Säite mat Kaskadespär vun hei aus',
 'pageinfo-protect-cascading-yes' => 'Jo',
 'pageinfo-protect-cascading-from' => 'Säite mat Kaskadespär vu(n)',
+'pageinfo-category-info' => "Informatiounen iwwer d'Kategorie",
+'pageinfo-category-pages' => 'Zuel vun de Säiten',
+'pageinfo-category-subcats' => 'Zuel vun den Ënnerkategorien',
+'pageinfo-category-files' => 'Zuel vun de Fichieren',
 
 # Skin names
 'skinname-standard' => 'Klassesch',
@@ -3042,6 +3044,8 @@ Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
 'minutes' => '{{PLURAL:$1|enger Minutt|$1 Minutten}}',
 'hours' => '{{PLURAL:$1|enger Stonn|$1 Stonnen}}',
 'days' => '{{PLURAL:$1|engem Dag|$1 Deeg}}',
+'months' => '{{PLURAL:$1|ee Mount|$1 Méint}}',
+'years' => '{{PLURAL:$1|ee Joer|$1 Joer}}',
 'ago' => 'viru(n) $1',
 'just-now' => 'grad elo',
 
@@ -3771,6 +3775,8 @@ Den ugefrote Fichier gëtt direkt gewise respektiv mat enger verbonner Applikati
 'logentry-newusers-create2' => 'De Benotzerkont $3 gouf vum $1 ugeluecht',
 'logentry-newusers-autocreate' => 'De Benotzerkont $1 gouf automatesch ugeluecht',
 'newuserlog-byemail' => "d'Passwuert gouf per E-Mail geschéckt",
+'logentry-rights-autopromote' => "De Benotzer $1 huet d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
+'rightsnone' => '(keen)',
 
 # Feedback
 'feedback-bugornote' => 'Wann Dir bereet sidd fir en technesche Problem am Detail ze beschreiwen da [$1 mellt w.e.g. e Feeler (Bug)].
index fbd815f..d0be172 100644 (file)
@@ -899,6 +899,9 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 
 'grouppage-sysop' => '{{ns:project}}:Abateesiteesi',
 
+# Special:Log/newusers
+'newuserlogpage' => "Olukalala olw'ebifudeyo mu kukolawo akawunti empya",
+
 # User rights log
 'rightslog' => "Olukalala lw'ebifudeyo ku by'endukusa za bamemba",
 
@@ -1016,9 +1019,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'linksearch-ns' => 'Kuŋaanyizo:',
 'linksearch-ok' => 'Noonya',
 
-# Special:Log/newusers
-'newuserlogpage' => "Olukalala olw'ebifudeyo mu kukolawo akawunti empya",
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(lukalala lwa bamemba)',
 
index 8585ae7..0ecdb96 100644 (file)
@@ -1406,12 +1406,13 @@ Deze informatie is zichbaar veur angere gebroekers.',
 'right-sendemail' => 'Versjik e-mail aan anger gebroekers',
 'right-passwordreset' => 'Bekiek e-mails van ópnuuj ingestèldje wachwäörd',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logbook nuuj gebroekers',
+'newuserlogpagetext' => 'Hiej ónger saton de nuuj ingesjreve gebroekers.',
+
 # User rights log
 'rightslog' => 'Gebroekersrechtelogbook',
 'rightslogtext' => 'Hiej onger staon de wieziginge in gebroekersrechte.',
-'rightslogentry' => 'wiezigde de gebroekersrechte veur $1 van $2 nao $3',
-'rightslogentry-autopromote' => 'is autematis gepromoveerdj vanne groep "$2" nao de groep "$3"',
-'rightsnone' => '(gein)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'dees pagina te bekieke',
@@ -2036,10 +2037,6 @@ Haet mèndestes e toepleveldomein, wie beveurbeildj "*.org".<br />
 'activeusers-hidesysops' => 'Verberg admins',
 'activeusers-noresult' => 'Gein gebroekers gevónje.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logbook nuuj gebroekers',
-'newuserlogpagetext' => 'Hiej ónger saton de nuuj ingesjreve gebroekers.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rechte van gebroekersgróppe',
 'listgrouprights-summary' => 'Op dees pazjena sjtaon de gebroekersgróppe in deze wiki besjreve, mit zien biebehurende rechte.
@@ -2161,6 +2158,8 @@ $UNWATCHURL
 
 Commentaar en wiejer assistentie:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'aangemaak',
+'changed' => 'verangerd',
 
 # Delete
 'deletepage' => 'Pagina ewegsjaffe',
@@ -3649,6 +3648,7 @@ Aafbeildinge waere in häör vollejige resolutie getoeandj. Anger bestandjstypes
 'logentry-newusers-create2' => "$1 haet 'ne gebroeker $3 aangemaak",
 'logentry-newusers-autocreate' => 'De gebroeker $1 is autematis aangemaak',
 'newuserlog-byemail' => 'wachwaord is versjik per e-mail',
+'rightsnone' => '(gein)',
 
 # Feedback
 'feedback-bugornote' => 'Es se zewied bös óm e technisch perbleem in détail te besjrieve, [$1 rapperteer \'ne bug]. 
index 44fcc3d..6f66906 100644 (file)
@@ -504,7 +504,6 @@ Informasi: (bye) = petuho a nca selt,
 
 # User rights log
 'rightslog' => 'Desu di petuhoni kwa sebelu',
-'rightsnone' => '(ni)',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|petuho|petuho}}',
@@ -734,6 +733,8 @@ A sa afi kulobala di zwa mukoloko di kentezi, tampi \"ngambu kentezi\".",
 'unwatching' => 'Dikentezi...',
 
 'enotif_impersonal_salutation' => '{{SITENAME}} sebelu',
+'created' => 'hlolini',
+'changed' => 'petuhoni',
 
 # Delete
 'deletepage' => 'Afi kulobala petulo',
@@ -1078,4 +1079,7 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
 # Special:SpecialPages
 'specialpages' => 'Petulo zwenti',
 
+# New logging system
+'rightsnone' => '(ni)',
+
 );
index b647ee4..7bdd6f2 100644 (file)
@@ -1445,15 +1445,13 @@ teisės",
 'right-sendemail' => 'Siųsti el. laišką kitiems naudotojams',
 'right-passwordreset' => 'Peržiūrėti slaptažodžio pakeitimo e-mail laiškus',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Prisiregistravę naudotojai',
+'newuserlogpagetext' => 'Tai naudotojų kūrimo sąrašas.',
+
 # User rights log
 'rightslog' => 'Naudotojų teisių pakeitimai',
 'rightslogtext' => 'Pateikiamas naudotojų teisių pakeitimų sąrašas.',
-'rightslogentry' => 'pakeista $1 grupės narystė iš $2 į $3',
-'rightslogentry-autopromote' => 'buvo automatiškai paaukštintas iš $2 į $3',
-'logentry-rights-rights' => '$1 pakeista narystė grupėje $3 iš $4 į $5',
-'logentry-rights-rights-legacy' => '$1 pakeista narystė grupėje $3',
-'logentry-rights-autopromote' => '$1 buvo automatiškai pervestas iš $4 į $5',
-'rightsnone' => '(jokių)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'skaityti šį puslapį',
@@ -2065,10 +2063,6 @@ Palaikomi protokolai: <code>$1</code> (nei vieno iš jų nenurodykite paieškoje
 'activeusers-hidesysops' => 'Slėpti administratorius',
 'activeusers-noresult' => 'Nerasta jokių naudotojų.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Prisiregistravę naudotojai',
-'newuserlogpagetext' => 'Tai naudotojų kūrimo sąrašas.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Naudotojų grupių teisės',
 'listgrouprights-summary' => 'Žemiau pateiktas naudotojų grupių, apibrėžtų šioje wiki, ir su jomis susijusių teisių sąrašas.
@@ -2197,6 +2191,8 @@ $UNWATCHURL
 
 Atsiliepimai ir pagalba:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'sukurė',
+'changed' => 'pakeitė',
 
 # Delete
 'deletepage' => 'Trinti puslapį',
@@ -3770,6 +3766,10 @@ Paveikslėliai yra rodomi pilna raiška, kiti failų tipai paleidžiami tiesiogi
 'logentry-newusers-create2' => '$1 sukūrė naudotojo paskyrą $3',
 'logentry-newusers-autocreate' => 'Paskyra $1 buvo sukurta automatiškai',
 'newuserlog-byemail' => 'slaptažodis nusiųstas elektroniniu paštu',
+'logentry-rights-rights' => '$1 pakeista narystė grupėje $3 iš $4 į $5',
+'logentry-rights-rights-legacy' => '$1 pakeista narystė grupėje $3',
+'logentry-rights-autopromote' => '$1 buvo automatiškai pervestas iš $4 į $5',
+'rightsnone' => '(jokių)',
 
 # Feedback
 'feedback-bugornote' => 'Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą].
index b2201be..57e4127 100644 (file)
@@ -945,6 +945,10 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'right-hideuser' => 'Hmangtu hming dangbet rawh, vantlang laka thupin',
 'right-unblockself' => 'Mahnia dalna inphelh',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Hmangtu siamna chanchin-ziak',
+'newuserlogpagetext' => 'Hei hi hmangtu siangchan siam chhinchhiahna a ni.',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'he phêk hi chhiar rawh',
 'action-edit' => 'phek siamṭhat',
@@ -1353,10 +1357,6 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'activeusers-hidesysops' => 'Roreltu thupna',
 'activeusers-noresult' => 'Hmangtu awm lo.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Hmangtu siamna chanchin-ziak',
-'newuserlogpagetext' => 'Hei hi hmangtu siangchan siam chhinchhiahna a ni.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Hmangtu pawl dikna-chanvote',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">Dikna-chanvo phalsak</span>
@@ -1419,6 +1419,8 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'enotif_lastvisited' => 'I tlawh hnuhnùn ber hnu lama tihdanglam zawng zawng en i duh chuan $1 en rawh.',
 'enotif_lastdiff' => 'Hë tihdanglamna hi en tùrin $1 thlír rawh.',
 'enotif_anon_editor' => 'hmangtu hriat loh $1',
+'created' => 'siam a ni ta',
+'changed' => 'tihdanglam a ni ta',
 
 # Delete
 'deletepage' => 'Hë phêk hi paih rawh',
index 53b866f..51f38b6 100644 (file)
@@ -1183,11 +1183,13 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'right-sendemail' => 'Sūtīt e-pastu citiem lietotājiem',
 'right-passwordreset' => 'Apskatīt paroles atiestatīšanas e-pasta ziņojumus',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Jauno lietotāju reģistrs',
+'newuserlogpagetext' => 'Jauno lietotājvārdu reģistrs.',
+
 # User rights log
 'rightslog' => 'Lietotāju tiesību reģistrs',
 'rightslogtext' => 'Šis ir lietotāju tiesību izmaiņu reģistrs.',
-'rightslogentry' => 'izmainīja $1 grupas no $2 uz $3',
-'rightsnone' => '(nav)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lasīt šo lapu',
@@ -1733,10 +1735,6 @@ Skatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
 'activeusers-hidesysops' => 'Paslēpt administratorus',
 'activeusers-noresult' => 'Neviens lietotājs nav atrasts.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Jauno lietotāju reģistrs',
-'newuserlogpagetext' => 'Jauno lietotājvārdu reģistrs.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Lietotāju grupu tiesības',
 'listgrouprights-summary' => 'Šis ir šajā wiki definēto lietotāju grupu uskaitījums, kopā ar tām atbilstošajām piekļuves tiesībām.
@@ -1851,6 +1849,8 @@ $UNWATCHURL
 
 Papildinformācija:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'izveidoja',
+'changed' => 'izmainīja',
 
 # Delete
 'deletepage' => 'Dzēst lapu',
@@ -3114,6 +3114,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'logentry-newusers-create2' => 'Lietotāja kontu $3 izveidoja $1',
 'logentry-newusers-autocreate' => 'Konts $1 tika izveidots automātiski',
 'newuserlog-byemail' => 'parole nosūtīta pa e-pastu',
+'rightsnone' => '(nav)',
 
 # Feedback
 'feedback-subject' => 'Temats:',
index 2fda83a..407a06e 100644 (file)
@@ -1242,9 +1242,12 @@ $1",
 'right-override-export-depth' => '出有五層深之頁',
 'right-sendemail' => '擬書傳予他簿',
 
+# Special:Log/newusers
+'newuserlogpage' => '誌簿',
+'newuserlogpagetext' => '此為誌簿之記也',
+
 # User rights log
 'rightslog' => '職權志',
-'rightsnone' => '(凡)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '閱此頁',
@@ -1747,10 +1750,6 @@ $1',
 'activeusers-hidesysops' => '藏有秩',
 'activeusers-noresult' => '無簿矣。',
 
-# Special:Log/newusers
-'newuserlogpage' => '誌簿',
-'newuserlogpagetext' => '此為誌簿之記也',
-
 # Special:ListGroupRights
 'listgrouprights' => '權任一覽',
 'listgrouprights-summary' => '此所列述,諸職所司也,各有異同。欲知其詳,請閱[[{{MediaWiki:Listgrouprights-helppage}}|此文]]。',
@@ -1857,6 +1856,8 @@ $NEWPAGE
 欲刪之頁,惠訪$UNWATCHURL
 
 饋助之,惠訪{{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '撰',
+'changed' => '易',
 
 # Delete
 'deletepage' => '刪頁',
@@ -2830,5 +2831,6 @@ MediaWiki乃為用之發,無擔之責也;亦無售目之默擔也。參GNU
 'revdelete-restricted' => '應限至有秩',
 'revdelete-unrestricted' => '除限自有秩',
 'newuserlog-byemail' => '號發自電郵',
+'rightsnone' => '(凡)',
 
 );
index 182df56..78181c1 100644 (file)
@@ -1279,12 +1279,13 @@ $3 द्वारा देल कारण अछि ''$2''",
 'right-sendemail' => 'ई-पत्र दोसर प्रयोक्ता लोकनिकेँ पठाउ',
 'right-passwordreset' => 'कूटशब्द पुनर्निर्धारण ई-पत्र देखू',
 
+# Special:Log/newusers
+'newuserlogpage' => 'प्रयोक्ता रचना वृत्तलेख',
+'newuserlogpagetext' => 'ई प्रयोक्ता निर्माणक वृत्तलेख अछि।',
+
 # User rights log
 'rightslog' => 'प्रयोक्ता अधिकार वृत्तलेख',
 'rightslogtext' => 'ई प्रयोक्ता अधिकार परिवर्तन सभक वृतलेख छी।',
-'rightslogentry' => 'वर्गक सदस्यता बदलल गेल $1 लेल $2 सँ $3',
-'rightslogentry-autopromote' => 'स्वयंचालित रूपमे $2 सँ $3 मे पदोन्नत भेल',
-'rightsnone' => '(कोनो नै)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ई पन्ना पढ़ू',
@@ -1867,10 +1868,6 @@ $1',
 'activeusers-hidesysops' => 'संचालक नुकाउ',
 'activeusers-noresult' => 'कोनो प्रयोक्ता नै भेटल',
 
-# Special:Log/newusers
-'newuserlogpage' => 'प्रयोक्ता रचना वृत्तलेख',
-'newuserlogpagetext' => 'ई प्रयोक्ता निर्माणक वृत्तलेख अछि।',
-
 # Special:ListGroupRights
 'listgrouprights' => 'प्रयोक्ता संवर्ग अधिकार',
 'listgrouprights-summary' => 'ई सभ प्रयोक्ता संवर्गक एकटा सूची अछि जे ऐ विकीपरपरिभाषित अछि ओकर संसर्गित प्रवेश अधिकारक संग।
@@ -1997,6 +1994,8 @@ $UNWATCHURL
 
 अपन अनुभव बतेबा वा कोनो सहायता लेल:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'बनाएल गेल',
+'changed' => 'बदलल गेल',
 
 # Delete
 'deletepage' => 'पन्ना मेटाउ',
@@ -3529,6 +3528,7 @@ $5
 'logentry-newusers-create2' => '$1 {{लिंग:$2|बनाएल}} {{लिंग:$4|एकटा प्रयोक्ता खाता}} $3',
 'logentry-newusers-autocreate' => 'खाता $1 छल {{लिंग:$2|बनाएल}} स्वतः',
 'newuserlog-byemail' => 'कूटशब्द ई-पत्र द्वारा पठाएल गेल',
+'rightsnone' => '(कोनो नै)',
 
 # API errors
 'api-error-badaccess-groups' => 'अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.',
index dd11293..5730312 100644 (file)
@@ -22,7 +22,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Umpetna suntingan sing wis dipatroli nang owahan anyar',
 'tog-newpageshidepatrolled' => 'Umpetna kaca sing wis dipatroli sekang daftar kaca anyar',
 'tog-extendwatchlist' => 'Kembangna daftar pengawasan kanggo nidokna kabeh pangowahan, ora mung sing paling anyar thok',
-'tog-usenewrc' => 'Gunakna tampilan owahan anyar sing wis dikembangna (mbutuhna JavaScript)',
+'tog-usenewrc' => 'Klompok owahan miturut kaca nang owahan anyar lan daptar pangawasan (mbutuhna JavaScript)',
 'tog-numberheadings' => 'Aweh nomer judul secara otomatis',
 'tog-showtoolbar' => 'Tidhokna bilah alat penyuntingan',
 'tog-editondblclick' => 'Nyunting kaca nganggo dobel klik (mbutuhna JavaScript)',
@@ -30,17 +30,17 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Aktifna penyuntingan subbagian nganggo klik-tengen nang judul bagian (mbutuhna JavaScript)',
 'tog-showtoc' => 'Tidhokna daftar isine (kanggo kaca sing duwe lewih sekang 3 subbagian)',
 'tog-rememberpassword' => 'Emutna data login-ne inyong nang peramban kiye (kanggo paling suwe $1 {{PLURAL:$1|dina|dina}})',
-'tog-watchcreations' => 'Tambahna kaca gaweanne inyong nang daftar pangawasanne inyong',
-'tog-watchdefault' => 'Tambahna kaca sing tak-sunting maring daftar pangawasanne inyong',
-'tog-watchmoves' => 'Tambahna kaca sing tak-pindah maring daftar pangawasanne inyong',
-'tog-watchdeletion' => 'Tambahna kaca sing tak-busak maring daftar pangawasanne inyong',
+'tog-watchcreations' => 'Tambahna kaca gaweanne inyong lan berkas sing tek unggah nang daptar pangawasanne inyong',
+'tog-watchdefault' => 'Tambahna kaca lan berkas sing tek-sunting maring daptar pangawasanne inyong',
+'tog-watchmoves' => 'Tambahna kaca lan berkas sing tek-pindah maring daptar pangawasanne inyong',
+'tog-watchdeletion' => 'Tambahna kaca lan berkas sing tek-busek maring daptar pangawasanne inyong',
 'tog-minordefault' => 'Otomatis nandani kabeh suntingan dadi suntingan cilik',
 'tog-previewontop' => 'Tidokna pratayang sedurunge kotak sunting',
 'tog-previewonfirst' => 'Tidokna pratayang nang suntingan sing pertama',
 'tog-nocache' => 'Nonaktifna penyinggahan kaca peramban',
-'tog-enotifwatchlistpages' => 'Kirimna imel maring inyong angger kaca sing mlebu daftar pangawasanne inyong diowaih',
+'tog-enotifwatchlistpages' => 'Kirimna imel maring inyong angger kaca awa berkas utsing mlebu daptar pangawasanne inyong diowaih',
 'tog-enotifusertalkpages' => 'Kirimna imel maring inyong angger kaca dhiskusine inyong owah',
-'tog-enotifminoredits' => 'Kirimna imel maring inyong uga nek ana suntingan cilik',
+'tog-enotifminoredits' => 'Kirimna imel maring inyong uga nek ana suntingan cilik nang kaca lan berkas',
 'tog-enotifrevealaddr' => 'Tidokna alamat imel-e inyong nang imel notifikasi',
 'tog-shownumberswatching' => 'Tidhokna jumlah pangawas',
 'tog-oldsig' => 'Tapak asma sekiye:',
@@ -63,7 +63,7 @@ $messages = array(
 
 'underline-always' => 'Saben',
 'underline-never' => 'Ora tau',
-'underline-default' => 'Gawane peramban',
+'underline-default' => 'Gawane kulitutawa peramban',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Modhèl aksara (font) nang kotak suntingan:',
@@ -148,7 +148,7 @@ $messages = array(
 'newwindow' => '(buka nang jendhéla anyar)',
 'cancel' => 'Ora Sida',
 'moredotdotdot' => 'Liyané...',
-'mypage' => 'Kaca inyong',
+'mypage' => 'Kaca',
 'mytalk' => 'Dopokan',
 'anontalk' => 'Dhiskusi IP kiye',
 'navigation' => 'pandhu arah',
@@ -171,7 +171,7 @@ $messages = array(
 'vector-action-protect' => 'Reksa',
 'vector-action-undelete' => 'Batalna pambusakan',
 'vector-action-unprotect' => 'Owahi pangreksan',
-'vector-simplesearch-preference' => 'Aktifna saran panggoletan sing wis disempurnakna (nang kulit Vector thok)',
+'vector-simplesearch-preference' => 'Aktifna bilah panggoletan sing wis deringkes (nang kulit Vector thok)',
 'vector-view-create' => 'Gawe',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Sajarah kaca',
@@ -181,6 +181,7 @@ $messages = array(
 'namespaces' => 'Bilik jeneng',
 'variants' => 'Varian',
 
+'navigation-heading' => 'Menu navigasi',
 'errorpagetitle' => 'Kasalahan',
 'returnto' => 'Bali maring $1.',
 'tagline' => 'Sekang {{SITENAME}}',
@@ -278,6 +279,10 @@ Deleng [[Special:Version|kaca versi]].',
 'youhavenewmessages' => 'Rika duwe $1 ($2).',
 'newmessageslink' => 'pesen anyar',
 'newmessagesdifflink' => 'owahan keri dhewek',
+'youhavenewmessagesfromusers' => 'Rika nduwe $1 sekang {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).',
+'youhavenewmessagesmanyusers' => 'Rika nduwe $1 sekang akeh panganggo ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|pesen anyar|pesen anyar}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1||}}owah-owahan pungkasan',
 'youhavenewmessagesmulti' => 'Rika olih pesen-pesen anyar nang $1',
 'editsection' => 'sunting',
 'editold' => 'sunting',
@@ -329,12 +334,12 @@ Daftar kaca astamiwa sing sah teyeng dideleng nang [[Special:SpecialPages|{{int:
 # General errors
 'error' => 'Kasalahan',
 'databaseerror' => 'Kasalahan basis data',
-'dberrortext' => 'Ana kesalahan sintaksnang penjalukan basis data.
+'dberrortext' => 'Ana kesalahan sintaks nang penjalukan basis data.
 Kesalahan kiye ndeyan nandakna nek ana \'\'bug\'\' nang piranti alus.
 Penjalukan basis data sing pungkasan yakuwe:
-<blockquote><tt>$1</tt></blockquote>
-sekang jerone fungsi "<tt>$2</tt>".
-Basis data ngasilna kesalahan "<tt>$3: $4</tt>".',
+<blockquote><code>$1</code></blockquote>
+sekang jerone fungsi "<code>$2</code>".
+Basis data ngasilna kesalahan "<samp>$3: $4</samp>".',
 'laggedslavemode' => "'''Pènget:''' Kaca kiye mbokmenawa isiné dudu pangowahan pungkasan.",
 'readonly' => 'Basis data dikunci',
 'enterlockreason' => 'Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka',
@@ -1136,12 +1141,12 @@ Aja kuatir, alamat imele Rika ora ditidokna dong pangganggo sejen ngontak Rika.'
 'right-override-export-depth' => "Ekspor kaca sisan karo kaca sing kagandheng gutul lapisan (''depth'') kaping 5",
 'right-sendemail' => 'Ngirim imel maring panganggo liyane',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log panganggo anyar',
+
 # User rights log
 'rightslog' => 'Log pangowahan hak akses panganggo',
 'rightslogtext' => 'Kiye log pangowahan maring hak-hak panganggo.',
-'rightslogentry' => 'Ngganti kaanggotaan kelompok nggo $1 sekang $2 dadi $3',
-'rightslogentry-autopromote' => 'otomatis dipromosikna sekang $2 dadi $3',
-'rightsnone' => '(ora ana)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'maca kaca kiye',
@@ -1445,9 +1450,6 @@ Rika teyeng mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sensitif
 # Special:LinkSearch
 'linksearch-line' => '$1 duwe pranala sekang  $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log panganggo anyar',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(daftar anggota)',
 
@@ -1807,4 +1809,7 @@ Sing liyane bakal diumpetna sacara ''default''.
 # Special:Tags
 'tag-filter' => 'Filter [[Special:Tags|Tag]]:',
 
+# New logging system
+'rightsnone' => '(ora ana)',
+
 );
index c830dda..bf1105e 100644 (file)
@@ -1225,11 +1225,13 @@ $3 макссь туфталсь - ''$2''",
 'right-userrights-interwiki' => 'Петнемс тиихнень видекснон иля викить лопасонза',
 'right-siteadmin' => 'Пякстамс эди панжемс датабазать',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Тиинь ушедоманзон лувомасна',
+'newuserlogpagetext' => 'Тя тиинь ушедоманзон лувомасна.',
+
 # User rights log
 'rightslog' => 'Тиить видексонза лувомась',
 'rightslogtext' => 'Тиить видексонзон полафнемасна лувомась.',
-'rightslogentry' => '$1-нь полгац полафтсь $2-ста $3-с',
-'rightsnone' => '(аш)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'тя лопать морафтома',
@@ -1670,10 +1672,6 @@ $3 макссь туфталсь - ''$2''",
 'listusers-submit' => 'Няфтемс',
 'listusers-noresult' => 'Тиихть исть мув.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Тиинь ушедоманзон лувомасна',
-'newuserlogpagetext' => 'Тя тиинь ушедоманзон лувомасна.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Тиихнень полгаснон видексонза',
 'listgrouprights-summary' => 'Тяса тиихнень полгасна конатне сувсихть тя Викис синь сувама видексснон мархта.
@@ -1780,6 +1778,8 @@ $UNWATCHURL
 
 Азома мекпяли ди иля лезкс:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'тиф',
+'changed' => 'полафтсь',
 
 # Delete
 'deletepage' => 'Нардамс лопать',
@@ -2888,5 +2888,6 @@ $5
 'revdelete-restricted' => 'нолдаф тевс кардафксне системонь вятиксненди',
 'revdelete-unrestricted' => 'системонь вятиксненди кардафксне валхтфт',
 'newuserlog-byemail' => 'сувама валце кучф электрононь сёрмаса',
+'rightsnone' => '(аш)',
 
 );
index 77c6854..724ab52 100644 (file)
@@ -1476,15 +1476,13 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'right-sendemail' => "Mandefa imailaka any amin'ny mpikambana hafa",
 'right-passwordreset' => 'Hijery ny imailaka famerenana ny tenimiafina',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Tatitr’asan’ny fanokafana kaontim-pikambana',
+'newuserlogpagetext' => "Ity pejy ity dia maneho ny tantaran'asan'ny fampidirana mpikambana vaovao.",
+
 # User rights log
 'rightslog' => 'Tatitr’asa momban’ny fanovana satam-pikambana',
 'rightslogtext' => "Ity ny laogy momban'ny fanovana ny zom-pikambana.",
-'rightslogentry' => "nanova ny fahefan'ny mpikambana « $1 », avy amin'ny $2 izy lasa $3",
-'rightslogentry-autopromote' => '$2 navadika $3 ho azy',
-'logentry-rights-rights' => "$1 dia nanova ny sokajim-pikambana isian'i $3 avy amin'ny $4 lasa $5",
-'logentry-rights-rights-legacy' => "$1 nanova ny vonodrom-pikambana isian'i $3",
-'logentry-rights-autopromote' => 'Lasa $5 ho azy i $1 izay $4 taloha',
-'rightsnone' => '(tsy misy)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'mamaky ity pejy ity',
@@ -2082,10 +2080,6 @@ Protokoly zaka <code>$1</code> aza ampiana ao amin'ny karokao izy ireo.",
 'activeusers-hidesysops' => 'Asitriho ny mpandrindra',
 'activeusers-noresult' => 'Tsy nahitana mpikambana.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Tatitr’asan’ny fanokafana kaontim-pikambana',
-'newuserlogpagetext' => "Ity pejy ity dia maneho ny tantaran'asan'ny fampidirana mpikambana vaovao.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Fahefan'ny vondrom-pikambana",
 'listgrouprights-group' => 'Vondrona/Gropy',
@@ -2209,6 +2203,8 @@ Raha hanova ny fandehan\'ny momba ny lisitry ny pejy arahi-maso, jereo
 
 Hevitrao sy fanampiana:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'voaforona',
+'changed' => 'voaova',
 
 # Delete
 'deletepage' => 'Hamafa ny pejy',
@@ -3304,5 +3300,9 @@ Aseho amin'ny tena habeny ny sary aseho, ny hafa dia alefa miaraka amin'ny rindr
 'logentry-newusers-create2' => "Noforonin'i $1 ny kaomtim-pikambana $3",
 'logentry-newusers-autocreate' => 'Noforonina ho azy ny kaontim-pikambana $&',
 'newuserlog-byemail' => "tenimiafina nalefa tamin'ny imailaka",
+'logentry-rights-rights' => "$1 dia nanova ny sokajim-pikambana isian'i $3 avy amin'ny $4 lasa $5",
+'logentry-rights-rights-legacy' => "$1 nanova ny vonodrom-pikambana isian'i $3",
+'logentry-rights-autopromote' => 'Lasa $5 ho azy i $1 izay $4 taloha',
+'rightsnone' => '(tsy misy)',
 
 );
index 2a03355..23a0feb 100644 (file)
@@ -149,7 +149,7 @@ $messages = array(
 
 'about' => 'Tentang',
 'article' => 'Artikel',
-'newwindow' => '(buka di jendela baru)',
+'newwindow' => '(buka di jandela baru)',
 'cancel' => 'Batalkan',
 'moredotdotdot' => 'Lainnyo...',
 'mypage' => 'Laman',
@@ -194,7 +194,7 @@ $messages = array(
 'searchbutton' => 'Cari',
 'go' => 'Tuju',
 'searcharticle' => 'Tuju',
-'history' => 'Riwayat halaman',
+'history' => 'Riwayaik halaman',
 'history_short' => 'Riwayaik',
 'updatedmarker' => 'diubah sajak kunjuangan tarakhir ambo',
 'printableversion' => 'Versi cetak',
@@ -232,10 +232,10 @@ $messages = array(
 'viewhelppage' => 'Caliak laman bantuan',
 'categorypage' => 'Caliak laman kategori',
 'viewtalkpage' => 'Caliak laman ota',
-'otherlanguages' => 'Dalam baso lain',
+'otherlanguages' => 'Dalam bahaso lain',
 'redirectedfrom' => '(Dialiahkan dari $1)',
 'redirectpagesub' => 'Laman pengalihan',
-'lastmodifiedat' => 'Laman ko tarakhir diubah pado $2, $1.',
+'lastmodifiedat' => 'Laman ko taakia diubah pado $2, $1.',
 'viewcount' => 'Laman iko alah diakses sabanyak {{PLURAL:$1|ciek kali|$1 kali}}.<br />',
 'protectedpage' => 'Laman nan dilindungi',
 'jumpto' => 'Lompek ka:',
@@ -259,7 +259,7 @@ $1',
 'currentevents-url' => 'Project:Kajadian kini ko',
 'disclaimers' => 'Sanggah',
 'disclaimerpage' => 'Project:Sanggahan umum',
-'edithelp' => 'Bantuan suntingan',
+'edithelp' => 'Bantuan suntiangan',
 'edithelppage' => 'Help:Suntingan',
 'helppage' => 'Help:Takadia',
 'mainpage' => 'Laman Utamo',
@@ -390,8 +390,8 @@ Indak ado keterangan.',
 'protectedpagetext' => 'Laman ko alah dikunci untuak manghindari panyuntiangan.',
 'viewsourcetext' => 'Sanak dapek malihek atau manyalin sumber laman iko:',
 'viewyourtext' => 'Sanak bisa mancaliak dan mangopi sumber untuak "editan sanak" ka halaman iko',
-'protectedinterface' => 'Laman iko barisi teks antarmuko untuak digunoan oleh parangkaik lunak di wiki iko sajo, dan alah dikunci untuak manghindari kasalahan. 
-Untuak manambah atau mangubah tarjemahan di sadonyo wiki, tolong digunoan [//translatewiki.net/ translatewiki.net], yaitu proyek lokalisasi dari MediaWiki.',
+'protectedinterface' => 'Laman iko baisi teks antarmuko untuak digunoan dek parangkaik lunak di wiki iko sajo, dan alah dikunci untuak maindaan kasalahan. 
+Untuak manambah atau maubah tajamahan di sadonyo wiki, harap gunoan [//translatewiki.net/ translatewiki.net], yaitu proyek palokalan MediaWiki.',
 'editinginterface' => "'''Paringatan:''' Sanak manyuntiang laman nan digunoan untuak manyadiokan teks antarmuko untuak parangkaik lunak.
 Parubahan teks ko akan mampangaruhi tampilan pado antarmuko pangguno untuak pangguno lain.
 Untuak tarjamahan, harap gunokan [//translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek palokalan MediaWiki.",
@@ -607,13 +607,13 @@ Sandi samantaro: $2',
 # Edit pages
 'summary' => 'Ringkasan:',
 'subject' => 'Subjek/tajuk:',
-'minoredit' => 'Iko di suntiang saketek',
+'minoredit' => 'Iko disuntiang saketek',
 'watchthis' => 'Pantau laman ko',
 'savearticle' => 'Simpan halaman',
 'preview' => 'Pratonton',
-'showpreview' => 'Lihek pratonton',
+'showpreview' => 'Caliak pratonton',
 'showlivepreview' => 'Pratayang langsuang',
-'showdiff' => 'Lihek parubahan',
+'showdiff' => 'Caliak parubahan',
 'anoneditwarning' => "'''Peringatan:''' Awak alun masuak log.
 Alamat IP awak akan tacatat pado riwayat suntingan laman ko.",
 'anonpreviewwarning' => "''Sanak alun masuak log. Manyimpan laman akan manyababkan alamaik IP Sanak tacatat pado riwayat suntiangan laman iko.''",
@@ -668,8 +668,8 @@ Subbagian iko mungkin dipindahan atau dihapuih katiko Sanak mambukanyo.',
 Kato sandi untuak akun baharu iko dapek diubah di laman ''[[Special:ChangePassword|pangubahan kato sandi]]'' satalah masuak log.",
 'newarticle' => '(Baru)',
 'newarticletext' => "Laman nan awak cari alun ado.
-Untuak mambuek laman tu, mulailah dengan menulis dalam kotak di bawah (lihek [[{{MediaWiki:Helppage}}|laman bantuan]] untuak maklumat lanjut).
-Jiko awak indak sangajo sampai ka laman ko, klik tombol '''back''' pado penjelajah web awak.",
+Untuak mambuek laman tu, mulailah dangan manulih dalam kotak di bawah (caliak [[{{MediaWiki:Helppage}}|laman bantuan]] untuak informasi lanjuiknyo).
+Jikok awak indak sangajo sampai ka laman ko, klik tombol '''back''' pado panjalajah web awak.",
 'anontalkpagetext' => "----''Iko adolah laman pambicaraan saurang pangguno anonim nan alun mambuek akun atau indak manggunoannyo.
 Jadi, kami tapaso harus mamakai alamat IP nan basangkutan untuak maidentifikasikannyo.
 Jikok Sanak adolah saurang pangguno anonim dan marasa mandapekkan komentar-komentar nan indak relevan nan ditujuan langsung kapado Sanak, sila [[Special:UserLogin/signup|mambuek akun]] atau [[Special:UserLogin|masuak log]] untuak mahindari karancuan jo pangguno anonim lainnya di lain wakatu.''",
@@ -678,9 +678,9 @@ Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancarian untuak judul laman
 'noarticletext-nopermission' => 'Kini ko indak ado teks dalam laman iko.
 
 Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancahari untuak judul laman iko]] di laman lain, atau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancahari log takaik] </span>, tapi Sanak indak punyo izin untuak mambuek laman iko.',
-'missing-revision' => 'Revisi $1 di halaman ko nan banamo "{{PAGENAME}}" indak ado.
+'missing-revision' => 'Revisi $1 di laman nan banamo "{{PAGENAME}}" ko indak ado.
 
-Hal iko biasonyo disababkan dek pranala sajarah nan alah kadaluarsa ka halaman ko nan alah dihapuih.
+Hal iko biasonyo disababkan dek pranala sijarah nan alah kadaluarsa ka laman nan alah dihapuih.
 Rinciannyo dapek dicaliak di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log panghapuihan].',
 'userpage-userdoesnotexist' => 'Akun pangguno "<nowiki>$1</nowiki>" indak tadafta.',
 'userpage-userdoesnotexist-view' => 'Pangguno "$1" indak tadafta.',
@@ -738,10 +738,10 @@ Alah tadapek sabuah solusi agar Sanak dapek manyuntiang laman jo aman: karakter
 Sanak manyuntiang revisi lama suatu laman.
 Jikok Sanak manyimpannyo, parubahan-parubahan nan dibuek sajak revisi iko akan hilang.'''",
 'yourdiff' => 'Pambedoan',
-'copyrightwarning' => "Untuak diingek bahwa apo nan disumbang kapado {{SITENAME}} dianggap lah dilapeh di bawah $2 (lihek $1 untuak lengkapnyo).
-Jiko awak indak ingin apo nan ditulis tu disuntiang dan disebarkan, jan dikirim tulisan tu ka siko.<br />
-Awak juo mesti bajanji bahwa itu adolah hasil karya awak surang, atau disalin dari sumber milik basamo atau sumber bebas lainnyo.
-'''Jan dikirim karya punyo hak cipta tanpa izin!'''",
+'copyrightwarning' => "Untuak diingek bahaso apo nan disumbang kapado {{SITENAME}} dianggap lah dilapeh di bawah $2 (caliak $1 untuak langkoknyo).
+Jikok awak indak ingin apo nan ditulih tu disuntiang dan disebaran, jan dikirim tulisan tu ka siko.<br />
+Awak musti bajanji juo bahaso iko adolah asia karya awak surang, atau disalin dari sumber miliak basamo atau sumber bebas lainnyo.
+'''Jan dikirim karya bahak cipta nan indak baizin!'''",
 'copyrightwarning2' => "Parhatikan bahawa sadoalah kontribusi terhadap {{SITENAME}} dapek disuntiang, diubah, atau dihapuih oleh panyumbang lainnyo. Jikok Sanak indak ingin tulisan Sanak disuntiang urang lain, jan kiriman ka siko.<br />Sanak jua bajanji bahawa iko adolah hasil karyo Sanak surang, atau disalin dari sumber miliak umum atau sumber bebas nan lain (liek $1 untuak informasi labiah lanjuik). '''JAN KIRIMAN KARYO NAN DILINDUNGI HAK CIPTA TANPA IJIN!'''",
 'longpageerror' => "'''KASALAHAN: Teks nan Sanak kiriman sagadang {{PLURAL:$1|kilobita|$1 kilobita}}, nan barati labiah gadang dari jumlah maksimum {{PLURAL:$2|kilobita|$2 kilobita}}. Teks indak dapek disimpan.'''",
 'readonlywarning' => "'''PARINGATAN: Basis data sadang dikunci karano pamaliharaan, sahinggo saat iko Sanak indak dapek manyimpan hasil suntiangan Sanak.
@@ -823,7 +823,7 @@ Tolong cek pabandiangan di bawah untuak mayakinkan bahwa bana itu nan Sanak ingi
 'undo-summary' => 'Mambatalan revisi $1 oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]])',
 
 # History pages
-'viewpagelogs' => 'Lihek log untuak laman ko',
+'viewpagelogs' => 'Caliak log untuak laman ko',
 'currentrev-asof' => 'Revisi terkini pado $1',
 'revisionasof' => 'Pabaikkan per $1',
 'revision-info' => 'Revisi sajak $1 dek $2',
@@ -832,9 +832,9 @@ Tolong cek pabandiangan di bawah untuak mayakinkan bahwa bana itu nan Sanak ingi
 'currentrevisionlink' => 'Revisi terkini',
 'cur' => 'kini',
 'last' => 'sabalun',
-'histlegend' => "Membandingkan pilihan: Tandoi dari revisi yang ingin dibandingkan dengan memilih kotak radionyo dan tekan tombol ''Bandingkan revisi pilihan''.<br />
-Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''' = perbedaan jo revisi sabalunnyo, '''{{int:k}}''' = suntingan ketek, '''{{int:b}}''' = suntingan bot.",
-'history-fieldset-title' => 'Telusuri riwayat',
+'histlegend' => "Membandingkan pilihan: Tandoi antaro duo versi nan ingin dibandingan dangan mamilih kotak radionyo, dan takan tombol ''Bandiangan versi tapiliah''.<br />
+Legend: '''({{int:kini}})''' = perbedaan jo versi taakhia, '''({{int:dulu}})''' = pabedoan jo versi sabalunnyo, '''{{int:k}}''' = suntiangan ketek, '''{{int:b}}''' = suntiangan bot.",
+'history-fieldset-title' => 'Talusuri riwayaik',
 'history-show-deleted' => 'Hanyo nan dihapuih',
 'histfirst' => 'Nan lamo',
 'histlast' => 'Nan baru',
@@ -854,20 +854,20 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 # Diffs
 'history-title' => 'Riwayaik pabaiakkan dari "$1"',
 'lineno' => 'Barih $1:',
-'compareselectedversions' => 'Bandingkan revisi pilihan',
+'compareselectedversions' => 'Bandiangan versi tapiliah',
 'editundo' => 'batalan',
 'diff-multi' => '({{PLURAL:$1|ciek |$1 revisi antaro}} oleh {{PLURAL:$2|ciek|$2 pangguno}} indak ditampilkan)',
 
 # Search results
-'searchresults' => 'Hasil pencarian',
+'searchresults' => 'Asia pancarian',
 'searchresults-title' => 'Hasil pancarian untuak "$1"',
-'searchresulttext' => 'Untuak informasi lanjut tentang pencarian {{SITENAME}}, lihek [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchresulttext' => 'Untuak informasi labiah lanjuik tantang pancarian {{SITENAME}}, caliak [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'Awak mancari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sado laman yang dimulai jo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sado laman nan tapauik ka "$1"]])',
 'searchsubtitleinvalid' => "Awak mancari '''$1'''",
 'notitlematches' => 'Indak ado judul nan pas',
 'notextmatches' => 'Indak ado judul nan pas',
 'prevn' => '{{PLURAL:$1|$1}} sabalunnyo',
-'nextn' => '{{PLURAL:$1|$1}} salanjuknyo',
+'nextn' => '{{PLURAL:$1|$1}} salanjuiknyo',
 'prevn-title' => '$1 {{PLURAL:$1|Hasil|Hasil-hasil}} sabalunnyo',
 'nextn-title' => '$1 {{PLURAL:$1|Hasil|Hasil-hasil}} barikuiknyo',
 'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil|hasil-hasil}} per laman',
@@ -878,7 +878,7 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 'searchprofile-project' => 'Laman Bantuan jo Proyek',
 'searchprofile-images' => 'Multimedia',
 'searchprofile-everything' => 'Sadonyo',
-'searchprofile-advanced' => 'Lanjukkan',
+'searchprofile-advanced' => 'Labiah lanjuik',
 'searchprofile-articles-tooltip' => 'Cari di $1',
 'searchprofile-project-tooltip' => 'Cari di $1',
 'searchprofile-images-tooltip' => 'Cari untuak berkas',
@@ -894,6 +894,8 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 'search-interwiki-more' => '(selanjutnyo)',
 'searchrelated' => 'bakaitan',
 'searchall' => 'sado',
+'showingresults' => "Di bawah iko dikaluaan inggo {{PLURAL:$1|'''1''' asia|'''$1''' asia}}, dimulai dari #'''$2'''.",
+'showingresultsnum' => "Di bawah iko dikaluaan {{PLURAL:$3|'''1'''|'''$3'''}} asia, dimulai dari #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
 'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo yang dicari sacaro default.
 Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasuak laman ota, templat, dll), atau gunoan ruangnamo yang diinginkan sabagai awalan.",
@@ -901,7 +903,7 @@ Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasua
 'powersearch' => 'Pencarian lanjut',
 'powersearch-legend' => 'Pencarian lanjut',
 'powersearch-ns' => 'Mancari di ruangnamo:',
-'powersearch-redir' => 'Senarai pengalihan',
+'powersearch-redir' => 'Dafta pangaliahan',
 'powersearch-field' => 'Mancari',
 
 # Preferences page
@@ -920,6 +922,9 @@ Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan mangh
 
 'grouppage-sysop' => '{{ns:project}}:Pengurus',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log pangguno baru',
+
 # User rights log
 'rightslog' => 'Log parubahan hak akses',
 
@@ -933,7 +938,7 @@ Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan mangh
 'recentchanges-summary' => 'Manjajak parubahan terbaru dalam wiki di laman ko.',
 'recentchanges-feed-description' => 'Temukan parubahan baru dalam umpan wiki ko',
 'recentchanges-label-newpage' => 'Suntiang ko mambuek laman baru',
-'recentchanges-label-minor' => 'Iko di suntiang saketek',
+'recentchanges-label-minor' => 'Iko disuntiang saketek',
 'recentchanges-label-bot' => 'Suntiang ko dibuek dek bot',
 'recentchanges-label-unpatrolled' => 'Suntiangan ko alun tajago',
 'rcnote' => "Berikut ko {{PLURAL:$1|'''1'''|'''$1'''}} parubahan dalam {{PLURAL:$2|hari|'''$2''' hari}} terakhir, sampai $5, pukul $4.",
@@ -947,7 +952,7 @@ Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan mangh
 'rcshowhidemine' => '$1 suntingan denai',
 'rclinks' => 'Tampilkan $1 parubahan baru dalam $2 hari terakhir<br />$3',
 'diff' => 'bedo',
-'hist' => 'sajarah',
+'hist' => 'sijarah',
 'hide' => 'Suruakkan',
 'show' => 'Tampilkan',
 'minoreditletter' => 'k',
@@ -1009,8 +1014,8 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 'prefixindex' => 'Semua laman jo awalan',
 'usercreated' => '{{GENDER:$3|Dibuek}} pado $1 pukua $2',
 'newpages' => 'Laman baru',
-'move' => 'Pindahkan',
-'movethispage' => 'Pindahkan laman ko',
+'move' => 'Pindahan',
+'movethispage' => 'Pindahan laman ko',
 'pager-newer-n' => '{{PLURAL:$1|labiah baru 1|labiah baru $1}}',
 'pager-older-n' => '{{PLURAL:$1|labiah lamo 1|labiah lamo $1}}',
 
@@ -1038,9 +1043,6 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 'linksearch' => 'Pranala lua',
 'linksearch-line' => '$1 tapauik dari $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log pangguno baru',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(senarai anggota)',
 
@@ -1049,7 +1051,7 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 
 # Watchlist
 'watchlist' => 'Senarai pantauan denai',
-'mywatchlist' => 'Daftar pantauan denai',
+'mywatchlist' => 'Dafta pantauan denai',
 'watchlistfor2' => 'Untuak $1 $2',
 'addedwatchtext' => "Laman \"[[:\$1]]\" lah ditambahkan ka [[Special:Watchlist|senarai pantauan awak]].
 Parubahan laman ko tamasuak laman otanyo akan ditampilkan dalam '''cetak taba''' pado [[Special:RecentChanges|senarai parubahan]] agar lebih mudah manjagonyo.",
@@ -1072,7 +1074,7 @@ Pastikan awak mainginkannyo, dan awak lah tahu sagalo akibatnyo dan sasuai jo [[
 'actioncomplete' => 'Proses selesai',
 'actionfailed' => 'Aksi gagal',
 'deletedtext' => '"$1" lah dihapuih.
-Lihek $2 untuak rekam jejak laman yang lah dihapuih.',
+Caliak $2 untuak rakam jajak laman nan lah dihapuih.',
 'dellogpage' => 'Log penghapusan',
 'deletecomment' => 'Alasan:',
 'deleteotherreason' => 'Alasan lain/tambahan:',
@@ -1105,6 +1107,9 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'restriction-type' => 'Perlindungan:',
 'restriction-level' => 'Tingkek larangan:',
 
+# Restrictions (nouns)
+'restriction-move' => 'Pindahan',
+
 # Undelete
 'undeletelink' => 'caliak/cegakkan',
 'undeleteviewlink' => 'caliak',
@@ -1115,22 +1120,23 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'blanknamespace' => '(Utamo)',
 
 # Contributions
-'contributions' => '{{GENDER:$1|User}} kontribusi',
+'contributions' => 'Kontribusi {{GENDER:$1|pangguno}}',
 'contributions-title' => 'Jariah pangguno untuak $1',
 'mycontris' => 'Jariah denai',
 'contribsub2' => 'Untuak $1 ($2)',
 'uctop' => '(atas)',
-'month' => 'Sejak bulan (dan sabalunnyo):',
-'year' => 'Sejak tahun (dan sabalunnyo):',
+'month' => 'Sajak bulan (dan sabalunnyo):',
+'year' => 'Sajak taun (dan sabalunnyo):',
 
 'sp-contributions-newbies' => 'Tampilkan jariah pangguno baru',
-'sp-contributions-blocklog' => 'log pemblokiran',
+'sp-contributions-blocklog' => 'log pambalokiran',
+'sp-contributions-deleted' => 'kontribusi pangguno nan lah batiadoan',
 'sp-contributions-uploads' => 'muek',
 'sp-contributions-logs' => 'log',
 'sp-contributions-talk' => 'kecek',
 'sp-contributions-search' => 'Cari jariah',
 'sp-contributions-username' => 'Alamat IP atau namo pangguno:',
-'sp-contributions-toponly' => 'Hanyo manampilkan suntiang nan tarakhir',
+'sp-contributions-toponly' => 'Hanyo manampilan suntiangan nan taakhia',
 'sp-contributions-submit' => 'Cari',
 
 # What links here
@@ -1159,7 +1165,7 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'unblocklink' => 'hilangkan balokir',
 'change-blocklink' => 'ubah balokir',
 'contribslink' => 'jariah',
-'blocklogpage' => 'Log pemblokiran',
+'blocklogpage' => 'Log pambalokiran',
 'blocklogentry' => 'memblokir [[$1]] dalam maso berlaku $2 $3',
 'unblocklogentry' => 'mahilangkan blokir $1',
 'block-log-flags-nocreate' => 'cipta akun dimatikan',
@@ -1213,11 +1219,11 @@ Dalam kasus tu, apobilo diinginkan, awak dapek mamindahkan atau manggabuangkan l
 'tooltip-ca-edit' => 'Sanak dapek manyuntiang laman iko. Silakan gunokan tombol pratonton sabalun manyimpan',
 'tooltip-ca-addsection' => 'Mulai bagian baru',
 'tooltip-ca-viewsource' => 'Laman ko dilinduangi.
-Sanak hanyo buliah lihek sumbernyo sajo',
+Sanak hanyo buliah caliak sumbernyo sajo',
 'tooltip-ca-history' => 'Pabaiakkan sabalunnyo dari laman ko',
 'tooltip-ca-protect' => 'Lindungi laman ko',
 'tooltip-ca-delete' => 'Hapuih laman iko',
-'tooltip-ca-move' => 'Pindahkan laman ko',
+'tooltip-ca-move' => 'Pindahan laman ko',
 'tooltip-ca-watch' => 'Tambahkan laman ko ka daftar pantauan sanak',
 'tooltip-ca-unwatch' => 'Kaluaan laman ko dari senarai pantauan awak',
 'tooltip-search' => 'Cari {{SITENAME}}',
@@ -1235,7 +1241,7 @@ Sanak hanyo buliah lihek sumbernyo sajo',
 'tooltip-t-recentchangeslinked' => 'Parubahan baru halaman nan bakaik jo laman ko',
 'tooltip-feed-rss' => 'Umpan RSS untuak laman ko',
 'tooltip-feed-atom' => 'Umpan Atom untuak laman ko',
-'tooltip-t-contributions' => 'Lihek senarai jariah pangguno ko',
+'tooltip-t-contributions' => 'Caliak dafta jariah pangguno ko',
 'tooltip-t-emailuser' => 'Kirimkan e-mail ka pangguno ko',
 'tooltip-t-upload' => 'Muek berkas',
 'tooltip-t-specialpages' => 'Daftar dari kasado laman istimewa',
@@ -1244,16 +1250,16 @@ Sanak hanyo buliah lihek sumbernyo sajo',
 'tooltip-ca-nstab-main' => 'Caliak isi laman',
 'tooltip-ca-nstab-user' => 'Caliak laman pangguno',
 'tooltip-ca-nstab-special' => 'Iko adolah laman istimewa, awak indak buliah manyuntiangnyo',
-'tooltip-ca-nstab-project' => 'Lihek laman proyek',
+'tooltip-ca-nstab-project' => 'Caliak laman proyek',
 'tooltip-ca-nstab-image' => 'Caliak laman berkas',
-'tooltip-ca-nstab-template' => 'Lihek templat',
+'tooltip-ca-nstab-template' => 'Caliak templat',
 'tooltip-ca-nstab-help' => 'Caliak laman bantuan',
-'tooltip-ca-nstab-category' => 'Lihek laman kategori',
+'tooltip-ca-nstab-category' => 'Caliak laman kategori',
 'tooltip-minoredit' => 'Tandoi iko sabagai suntingan ketek',
 'tooltip-save' => 'Simpan yang awak ubah ko',
 'tooltip-preview' => 'Pratonton parubahan, harap gunokan iko sabalun disimpan',
-'tooltip-diff' => 'Lihek parubahan yang sudah awak buek tu',
-'tooltip-compareselectedversions' => 'Lihek parbedaan antaro duo revisi pilihan laman ko',
+'tooltip-diff' => 'Caliak parubahan nan alah awak buek tu',
+'tooltip-compareselectedversions' => 'Caliak pabedoan antaro duo revisi pilihan laman ko',
 'tooltip-watch' => 'Tambahkan laman ko ka senarai pantauan awak',
 'tooltip-recreate' => 'Buek baliak laman walaupun sabananyo pernah dihapuih',
 'tooltip-upload' => 'Mulai mamuek',
@@ -1305,7 +1311,7 @@ Nan lainnyo akan tasuruak sacaro default.
 
 # External editor support
 'edit-externally' => 'Suntiang berkas ko dengan aplikasi lua',
-'edit-externally-help' => '(Lihek [//www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuak maklumat lanjutnyo)',
+'edit-externally-help' => '(Caliak [//www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] untuak informasi lanjuiknyo)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
index c1bb820..b93a469 100644 (file)
@@ -379,7 +379,7 @@ $messages = array(
 'tog-externaleditor' => 'По основно користи надворешен уредувач (само за стручњаци, потребно е посебно нагодување на сметачот. [//www.mediawiki.org/wiki/Manual:External_editors?uselang=mk Повеќе информации.])',
 'tog-externaldiff' => 'По основно користи надворешен програм за споредување верзии (само за стручњаци, потребно е специјално нагодување на сметачот. [//www.mediawiki.org/wiki/Manual:External_editors?uselang=mk Повеќе информации.])',
 'tog-showjumplinks' => 'Овозможи врски на пристапност „скокни на“',
-'tog-uselivepreview' => 'Користи преглед во живо (JavaScript, експериментално)',
+'tog-uselivepreview' => 'Користи преглед во живо (бара JavaScript) (експериментално)',
 'tog-forceeditsummary' => 'Извести ме кога нема опис на промените',
 'tog-watchlisthideown' => 'Скриј мои уредувања од списокот на набљудувања',
 'tog-watchlisthidebots' => 'Скриј ботовски уредувања од списокот на набљудувања',
@@ -482,6 +482,7 @@ $messages = array(
 'newwindow' => '(се отвора во нов прозорец)',
 'cancel' => 'Откажи',
 'moredotdotdot' => 'Повеќе...',
+'morenotlisted' => 'Повеќе (вон списокот)...',
 'mypage' => 'Страница',
 'mytalk' => 'Разговор',
 'anontalk' => 'Разговор за оваа IP-адреса',
@@ -597,7 +598,7 @@ $1',
 'policy-url' => 'Project:Начела',
 'portal' => 'Портал',
 'portal-url' => 'Project:Портал на заедницата',
-'privacy' => 'Ð\97аÑ\88Ñ\82иÑ\82а Ð½Ð° Ð¿Ñ\80иваÑ\82ноÑ\81Ñ\82а',
+'privacy' => 'Ð\97аÑ\88Ñ\82иÑ\82а Ð½Ð° Ð»Ð¸Ñ\87ниÑ\82е Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и',
 'privacypage' => 'Project:Заштита на личните податоци',
 
 'badaccess' => 'Немате овластување',
@@ -868,6 +869,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => 'Непозната грешка во функцијата mail() на PHP',
 'user-mail-no-addy' => 'Се обидовте да испратите порака без да внесете адреса',
+'user-mail-no-body' => 'Се обидовте да испратите писмо кое е празно или со неразумно куса содржина.',
 
 # Change password dialog
 'resetpass' => 'Промена на лозинка',
@@ -1670,15 +1672,13 @@ $1",
 'right-sendemail' => 'Испраќање на е-пошта до други корисници',
 'right-passwordreset' => 'Преглед на пораки по е-пошта за промена на лозинка',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Дневник на регистрирања на корисници',
+'newuserlogpagetext' => 'Ова е дневник на регистрирани корисници.',
+
 # User rights log
 'rightslog' => 'Дневник на менувања на кориснички права',
 'rightslogtext' => 'Ова е дневник на промени на кориснички права.',
-'rightslogentry' => 'Променето членство во група за $1 од $2 во $3',
-'rightslogentry-autopromote' => 'е автоматски унапреден од $2 во $3',
-'logentry-rights-rights' => '$1 го смени групното членство за $3 од $4 во $5',
-'logentry-rights-rights-legacy' => '$1 го смени групното членство за $3',
-'logentry-rights-autopromote' => '$1 е автоматски унапреден од $4 во $5',
-'rightsnone' => '(нема)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'читање на оваа страница',
@@ -2339,10 +2339,6 @@ $1',
 'activeusers-hidesysops' => 'Скриј администратори',
 'activeusers-noresult' => 'Нема пронајдено корисници.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Дневник на регистрирања на корисници',
-'newuserlogpagetext' => 'Ова е дневник на регистрирани корисници.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права на кориснички групи',
 'listgrouprights-summary' => 'Следи список на кориснички групи утврдени на ова вики, заедно со нивните придружни права на пристап.
@@ -2480,6 +2476,8 @@ $UNWATCHURL
 
 Ваши мислења, прашања и повеќе помош:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'создадена',
+'changed' => 'изменета',
 
 # Delete
 'deletepage' => 'Избриши страница',
@@ -2551,6 +2549,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] преместена како [[$2]]',
 'protect-badnamespace-title' => 'Незаштитлив именски простор',
 'protect-badnamespace-text' => 'Страниците во овој именски простор не можат да се заштитуваат.',
+'protect-norestrictiontypes-text' => 'Страницава не може да се заштити бидејќи нема расположиви типови на ограничување.',
+'protect-norestrictiontypes-title' => 'Незаштитливи страници',
 'protect-legend' => 'Потврдете ја заштитата',
 'protectcomment' => 'Причина:',
 'protectexpiry' => 'Истекува:',
@@ -3247,6 +3247,7 @@ $1',
 'pageinfo-magic-words' => '{{PLURAL:$1|Волшебен збор|Волшебни зборови}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Скриена категорија|Скриени категории}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Превметнат шаблон|Превметнати шаблони}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Превметната страница|Превметнати страници}} на ($1)',
 'pageinfo-toolboxlink' => 'Информации за страницата',
 'pageinfo-redirectsto' => 'Пренасочува кон',
 'pageinfo-redirectsto-info' => 'инфо',
@@ -3255,6 +3256,10 @@ $1',
 'pageinfo-protect-cascading' => 'Каскадната заштита на страниците важи од тука',
 'pageinfo-protect-cascading-yes' => 'Да',
 'pageinfo-protect-cascading-from' => 'Страници со каскадна заштита од',
+'pageinfo-category-info' => 'Информации за категоријата',
+'pageinfo-category-pages' => 'Број на страници',
+'pageinfo-category-subcats' => 'Број на поткатегории',
+'pageinfo-category-files' => 'Број на податотеки',
 
 # Skin names
 'skinname-standard' => 'Класично',
@@ -3348,6 +3353,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 минута|$1 минути}}',
 'hours' => '{{PLURAL:$1|$1 час|$1 часа}}',
 'days' => '{{PLURAL:$1|$1 ден|$1 дена}}',
+'months' => '{{PLURAL:$1|$1 месец|$1 месеци}}',
+'years' => '{{PLURAL:$1|$1 година|$1 години}}',
 'ago' => 'пред $1',
 'just-now' => 'Штотуку',
 
@@ -4257,6 +4264,10 @@ $5
 'logentry-newusers-create2' => 'Направена е корисничката сметка $3; создавач: $1',
 'logentry-newusers-autocreate' => 'Сметката $1 е создадена автоматски',
 'newuserlog-byemail' => 'испратена лозинка по е-пошта',
+'logentry-rights-rights' => '$1 го смени групното членство за $3 од $4 во $5',
+'logentry-rights-rights-legacy' => '$1 го смени групното членство за $3',
+'logentry-rights-autopromote' => '$1 е автоматски унапреден од $4 во $5',
+'rightsnone' => '(нема)',
 
 # Feedback
 'feedback-bugornote' => 'Ако сте спремни подробно да го опишете техничкиот проблем, тогаш [$1 пријавете грешка]. 
index 9f4e84a..c4b1099 100644 (file)
@@ -365,7 +365,7 @@ $messages = array(
 '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' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് യന്ത്രങ്ങൾ വരുത്തിയ തിരുത്തലുകൾ മറയ്ക്കുക',
@@ -449,7 +449,7 @@ $messages = array(
 'category-empty' => "''ഈ വർഗ്ഗത്തിൽ താളുകളോ പ്രമാണങ്ങളോ ഇല്ല.''",
 'hidden-categories' => '{{PLURAL:$1|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗം|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ}}',
 'hidden-category-category' => 'മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ',
-'category-subcat-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´\89പവർà´\97àµ\8dà´\97à´\82 à´®à´¾à´¤àµ\8dരമാണàµ\81à´³àµ\8dളതàµ\8d.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c $2 ഉപവർഗ്ഗങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
+'category-subcat-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\8d, à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´\89പവർà´\97àµ\8dà´\97à´\82 à´®à´¾à´¤àµ\8dരമാണàµ\81à´³àµ\8dളതàµ\8d.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\8d $2 ഉപവർഗ്ഗങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
 'category-subcat-count-limited' => 'ഈ വർഗ്ഗത്തിനു താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഉപവർഗ്ഗമുണ്ട്|$1 ഉപവർഗ്ഗങ്ങളുണ്ട്}}.',
 'category-article-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന ഒരു താൾ മാത്രമാണുള്ളത്.|ഈ വർഗ്ഗത്തിൽ $2 താളുകളുള്ളതിൽ {{PLURAL:$1|ഒരു താൾ|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
 'category-article-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഒരു താൾ ഉണ്ട്|$1 താളുകൾ ഉണ്ട്}}.',
@@ -465,6 +465,7 @@ $messages = array(
 'newwindow' => '(പുതിയ ജാലകത്തിൽ തുറന്നു വരും)',
 'cancel' => 'റദ്ദാക്കുക',
 'moredotdotdot' => 'കൂടുതൽ...',
+'morenotlisted' => 'ബാക്കി പട്ടികയിൽ ഉൾപ്പെടുത്തിയിട്ടില്ല...',
 'mypage' => 'താൾ',
 'mytalk' => 'സംവാദത്താൾ',
 'anontalk' => 'ഈ ഐ.പി.യുടെ സം‌വാദം താൾ',
@@ -831,6 +832,7 @@ $2',
 # E-mail sending
 'php-mail-error-unknown' => 'പി.എച്ച്.പി.യുടെ main() ഫങ്ഷനിൽ അപരിചിതമായ പിഴവ്',
 'user-mail-no-addy' => 'ഇമെയിൽ വിലാസം ഇല്ലാതെയാണ് ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചത്',
+'user-mail-no-body' => 'ശൂന്യമായതോ അസാമാന്യമായി ചെറുതോ ആയ ഉള്ളടക്കമുള്ള ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചു.',
 
 # Change password dialog
 'resetpass' => 'രഹസ്യവാക്ക് മാറ്റുക',
@@ -1605,15 +1607,13 @@ $1",
 'right-sendemail' => 'മറ്റുപയോക്താക്കൾക്ക് ഇമെയിൽ അയയ്ക്കുക',
 'right-passwordreset' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കാനുള്ള ഇമെയിലുകൾ കാണുക',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ഉപയോക്തൃ സൃഷ്ടിയുടെ രേഖ',
+'newuserlogpagetext' => 'പുതിയതായി അംഗത്വമെടുത്ത ഉപയോക്താക്കളുടെ പട്ടിക താഴെ കാണാം.',
+
 # User rights log
 'rightslog' => 'ഉപയോക്തൃ അവകാശ രേഖ',
 'rightslogtext' => 'ഈ പ്രവർത്തനരേഖ ഉപയോക്തൃ അവകാശങ്ങൾക്കുണ്ടായ മാറ്റങ്ങളുടേതാണ്.',
-'rightslogentry' => '$1 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $2 എന്നതിൽ നിന്നു $3 എന്നതിലേക്കു മാറ്റിയിരിക്കുന്നു',
-'rightslogentry-autopromote' => '$2 എന്നതിൽ നിന്ന് $3 എന്നതിലേയ്ക്ക് സ്വയം ഉയർത്തിയിരിക്കുന്നു',
-'logentry-rights-rights' => '$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1, $4 എന്നതിൽ നിന്നു $5 എന്നതിലേക്കു മാറ്റിയിരിക്കുന്നു',
-'logentry-rights-rights-legacy' => '$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1 മാറ്റിയിരിക്കുന്നു',
-'logentry-rights-autopromote' => '$1 എന്ന ഉപയോക്താവ് $4 എന്നതിൽ നിന്നും $5 എന്നതിലേയ്ക്ക് സ്വയം ഉയർത്തിയിരിക്കുന്നു',
-'rightsnone' => '(ഒന്നുമില്ല)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ഈ താൾ വായിക്കുക',
@@ -2250,10 +2250,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'activeusers-hidesysops' => 'കാര്യനിർവാഹകരെ മറയ്ക്കുക',
 'activeusers-noresult' => 'ഉപയോക്താക്കളില്ല',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ഉപയോക്തൃ സൃഷ്ടിയുടെ രേഖ',
-'newuserlogpagetext' => 'പുതിയതായി അംഗത്വമെടുത്ത ഉപയോക്താക്കളുടെ പട്ടിക താഴെ കാണാം.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ഉപയോക്തൃവിഭാഗത്തിന്റെ അവകാശങ്ങൾ',
 'listgrouprights-summary' => 'ഈ വിക്കിയിൽ നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോക്തൃസംഘങ്ങളെയും, ആ സംഘങ്ങൾക്ക് പ്രാപ്തമായിട്ടുള്ള അവകാശങ്ങളേയും താഴെ കുറിച്ചിരിക്കുന്നു.
@@ -2353,7 +2349,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'enotif_subject_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു',
 'enotif_subject_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
 'enotif_subject_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
-'enotif_body_intro_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
+'enotif_body_intro_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു, $3 കാണുക.',
 'enotif_body_intro_created' => '{{SITENAME}} സംരംഭത്തിൽ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
 'enotif_body_intro_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
 'enotif_body_intro_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
@@ -2390,6 +2386,8 @@ $UNWATCHURL
 
 അഭിപ്രായം അറിയിക്കാനും മറ്റു സഹായങ്ങൾക്കും:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'സൃഷ്ടിച്ചു',
+'changed' => 'മാറ്റിയിരിക്കുന്നു',
 
 # Delete
 'deletepage' => 'താൾ മായ്ക്കുക',
@@ -2455,6 +2453,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] എന്ന താളിന്റെ പേർ [[$2]] എന്നാക്കിയിരിക്കുന്നു',
 'protect-badnamespace-title' => 'സംരക്ഷിക്കാനാവാത്ത നാമമേഖല',
 'protect-badnamespace-text' => 'ഈ നാമമേഖലയിലെ താളുകൾ സംരക്ഷിക്കാനാവില്ല.',
+'protect-norestrictiontypes-text' => 'പരിധി നിർണ്ണയിക്കാനുള്ള വിധം ഇല്ലാത്തതിനാൽ ഈ താൾ സംരക്ഷിക്കാനാവില്ല.',
+'protect-norestrictiontypes-title' => 'സംരക്ഷിക്കാനാവാത്ത താൾ',
 'protect-legend' => 'സം‌രക്ഷണം സ്ഥിരീകരിക്കുക',
 'protectcomment' => 'കാരണം:',
 'protectexpiry' => 'സംരക്ഷണ കാലാവധി:',
@@ -3139,6 +3139,10 @@ $1',
 'pageinfo-protect-cascading' => 'സംരക്ഷണങ്ങൾ ഇവിടെ നിന്ന് നിർഝരിതപ്പെടുത്തുന്നു',
 'pageinfo-protect-cascading-yes' => 'അതെ',
 'pageinfo-protect-cascading-from' => 'സംരക്ഷണങ്ങൾ നിർഝരിതപ്പെടുത്തുന്നത്',
+'pageinfo-category-info' => 'വർഗ്ഗത്തിന്റെ വിവരങ്ങൾ',
+'pageinfo-category-pages' => 'താളുകളുടെ എണ്ണം',
+'pageinfo-category-subcats' => 'ഉപവർഗ്ഗങ്ങളുടെ എണ്ണം',
+'pageinfo-category-files' => 'പ്രമാണങ്ങളുടെ എണ്ണം',
 
 # Skin names
 'skinname-standard' => 'സാർവത്രികം',
@@ -3229,6 +3233,8 @@ $1',
 'minutes' => '{{PLURAL:$1|ഒരു മിനിറ്റ്|$1 മിനിറ്റ്}}',
 'hours' => '{{PLURAL:$1|ഒരു മണിക്കൂർ|$1 മണിക്കൂർ}}',
 'days' => '{{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}',
+'months' => '{{PLURAL:$1|ഒരു മാസം|$1 മാസം}}',
+'years' => '{{PLURAL:$1|ഒരു വർഷം|$1 വർഷം}}',
 'ago' => '$1 മുമ്പ്',
 'just-now' => 'ഇപ്പോൾ',
 
@@ -3984,6 +3990,10 @@ $5
 'logentry-newusers-create2' => '$3 എന്ന ഉപയോക്തൃ അംഗത്വം $1 സൃഷ്ടിച്ചിരിക്കുന്നു',
 'logentry-newusers-autocreate' => '$1 എന്ന അംഗത്വം സ്വയം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു',
 'newuserlog-byemail' => 'രഹസ്യവാക്ക് ഇ-മെയിൽ വഴി അയച്ചിരിക്കുന്നു',
+'logentry-rights-rights' => '$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1, $4 എന്നതിൽ നിന്നു $5 എന്നതിലേക്കു മാറ്റിയിരിക്കുന്നു',
+'logentry-rights-rights-legacy' => '$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1 മാറ്റിയിരിക്കുന്നു',
+'logentry-rights-autopromote' => '$1 എന്ന ഉപയോക്താവ് $4 എന്നതിൽ നിന്നും $5 എന്നതിലേയ്ക്ക് സ്വയം ഉയർത്തിയിരിക്കുന്നു',
+'rightsnone' => '(ഒന്നുമില്ല)',
 
 # Feedback
 'feedback-bugornote' => 'സാങ്കേതിക പ്രശ്നം എന്താണെന്ന് വിവരിച്ചെഴുതാൻ താങ്കൾ തയ്യാറാണെങ്കിൽ [$1 ബഗ് അറിയിക്കുക].
index 7a9fb5e..79cfce4 100644 (file)
@@ -1335,15 +1335,13 @@ $1 тэмдэгтээс богино байх ёстой.',
 'right-sendemail' => 'Бусад хэрэглэгчид руу и-мэйл явуулах',
 'right-passwordreset' => 'Цахим шуудангийн нууц үгийг сэргээн харах',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Хэрэглэгч үүсгэлтийн лог',
+'newuserlogpagetext' => 'Энэ нь хэрэглэгч үүсгэлтийн лог юм.',
+
 # User rights log
 'rightslog' => 'Хэрэглэгчдийн эрхийн лог',
 'rightslogtext' => 'Энэ бол хэрэглэгчдийн эрхэд учруулсан өөрчлөлтүүдийн лог юм.',
-'rightslogentry' => '$1-н бүлгийн гишүүнчлэлийг $2-с $3 болгож өөрчиллөө',
-'rightslogentry-autopromote' => '$2 -оос $3 -руу автоматаар шилжив',
-'logentry-rights-rights' => '$1 $3 дахь грүпийн гишүүнчлэлээ $4 ээс $5 руу шилжүүллээ',
-'logentry-rights-rights-legacy' => '$1 $3 дэхь грүпийн гишүүнчлэлээ сольсон',
-'logentry-rights-autopromote' => '$1 $4 аас $5 руу автоматаар дэвшигдлээ',
-'rightsnone' => '(байхгүй)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'энэ хуудсыг унших',
@@ -1972,10 +1970,6 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'activeusers-hidesysops' => 'Администраторуудыг нуух',
 'activeusers-noresult' => 'Хэрэглэгч олдсонгүй.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Хэрэглэгч үүсгэлтийн лог',
-'newuserlogpagetext' => 'Энэ нь хэрэглэгч үүсгэлтийн лог юм.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Хэрэглэгчийн бүлгийн эрхүүд',
 'listgrouprights-summary' => 'Дараах нь энэ вики дээрх хэрэглэгчийн бүлгүүд болон тэдгээрийн эрх, зөвшөөрлүүдийн жагсаалт юм.
@@ -2105,6 +2099,8 @@ $UNWATCHURL
 
 Санал сэтгэгдэл болон тулгарсан бэрхшээлээ :
 {{canonicalurl:{{MediaWiki:Helppage}}}} хаягаар орж бичнэ үү',
+'created' => 'үүсгэсэн',
+'changed' => 'өөрчлөгдсөн',
 
 # Delete
 'deletepage' => 'Хуудсыг устга',
@@ -3489,6 +3485,10 @@ $5
 'revdelete-restricted' => 'системийн операторуудад тавигдсан хязгаарлалтууд',
 'revdelete-unrestricted' => 'системийн операторуудаас авч хаясан хязгаарлалтууд',
 'newuserlog-byemail' => 'мэйлээр явуулсан нууц үг',
+'logentry-rights-rights' => '$1 $3 дахь грүпийн гишүүнчлэлээ $4 ээс $5 руу шилжүүллээ',
+'logentry-rights-rights-legacy' => '$1 $3 дэхь грүпийн гишүүнчлэлээ сольсон',
+'logentry-rights-autopromote' => '$1 $4 аас $5 руу автоматаар дэвшигдлээ',
+'rightsnone' => '(байхгүй)',
 
 # Feedback
 'feedback-cancel' => 'Болих',
index 053e4f8..aa0f6fa 100644 (file)
@@ -1524,12 +1524,13 @@ $1",
 'right-sendemail' => 'इतर सदस्यांना विपत्रे पाठवा',
 'right-passwordreset' => 'परवलीचा शब्द (पासवर्ड) पुन:स्थापित केल्याची इ मेल पहा.',
 
+# Special:Log/newusers
+'newuserlogpage' => 'नवीन सदस्यांची नोंद',
+'newuserlogpagetext' => 'ही नवीन सदस्यांची नोंद यादी आहे.',
+
 # User rights log
 'rightslog' => 'सदस्य आधिकार नोंद',
 'rightslogtext' => 'ही सदस्य अधिकारांमध्ये झालेल्या बदलांची यादी आहे.',
-'rightslogentry' => '$1 चे ग्रुप सदस्यत्व $2 पासून $3 ला बदलण्यात आलेले आहे',
-'rightslogentry-autopromote' => '$2 ते $3 आपोआप नियुक्ती झाली.',
-'rightsnone' => '(काहीही नाही)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'हे पान वाचा',
@@ -2130,10 +2131,6 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'activeusers-hidesysops' => 'प्रचालक लपवा',
 'activeusers-noresult' => 'एकही सदस्य सापडला नाही.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'नवीन सदस्यांची नोंद',
-'newuserlogpagetext' => 'ही नवीन सदस्यांची नोंद यादी आहे.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'सदस्य गट अधिकार',
 'listgrouprights-summary' => 'खाली या विकिवर दिलेली सदस्य गटांची यादी त्यांच्या अधिकारांसकट दर्शविलेली आहे. प्रत्येकाच्या अधिकारांची अधिक माहिती [[{{MediaWiki:Listgrouprights-helppage}}|इथे]] दिलेली आहे.',
@@ -2256,6 +2253,8 @@ $UNWATCHURL
 
 पुढील साहाय्य आणि प्रतिक्रिया:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'तयार केले',
+'changed' => 'बदलले',
 
 # Delete
 'deletepage' => 'पान वगळा',
@@ -3756,6 +3755,7 @@ $5
 'logentry-newusers-create2' => '$1  ने  सदस्य खाते $3  निर्मित केले  आहे.',
 'logentry-newusers-autocreate' => '$1  खाते स्वयमेव निर्मित झाले आहे.',
 'newuserlog-byemail' => 'परवलीचा शब्द ई-मेल मार्फत पाठविलेला आहे',
+'rightsnone' => '(काहीही नाही)',
 
 # Feedback
 'feedback-bugornote' => 'जर आपण तांत्रिक प्रश्न  विस्तृतपणे मांडण्यास तयार असाल तर कृपया ($1 गणकदोष वृतांत) पाठवा. नपेक्षा, खाली देण्यात आलेले सोपे आवेदनपत्र वापरा. आपली टिप्पणी "[ $3, $2]" या पानास आपले सदस्यनाव व आपण कोणता ब्राउजर वापरता यासह जोडण्यात येईल.',
index 0811cd8..243b3b2 100644 (file)
@@ -326,6 +326,7 @@ $messages = array(
 'newwindow' => '(dibuka di tetingkap baru)',
 'cancel' => 'Batalkan',
 'moredotdotdot' => 'Lagi...',
+'morenotlisted' => 'Lain-lain yang tidak tersenarai...',
 'mypage' => 'Halaman',
 'mytalk' => 'Perbualan',
 'anontalk' => 'Perbualan bagi IP ini',
@@ -699,6 +700,7 @@ Sila tunggu sebentar dan cuba lagi.',
 # E-mail sending
 'php-mail-error-unknown' => 'Ralat tak diketahui dalam fungsi mail() PHP',
 'user-mail-no-addy' => 'E-eml cuba dihantar tanpa alamat e-mel',
+'user-mail-no-body' => 'Anda telah cuba menghantar e-mel dengan isi yang kosong atau terlampau ringkas.',
 
 # Change password dialog
 'resetpass' => 'Tukar kata laluan',
@@ -1479,15 +1481,13 @@ Tindakan ini tidak boleh dibatalkan.',
 'right-sendemail' => 'Mengirim e-mel kepada pengguna-pengguna lain',
 'right-passwordreset' => 'Lihat e-mel set semula kata laluan',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log akaun baru',
+'newuserlogpagetext' => 'Yang berikut ialah log penciptaan pengguna.',
+
 # User rights log
 'rightslog' => 'Log hak pengguna',
 'rightslogtext' => 'Ini ialah log perubahan terhadap hak pengguna.',
-'rightslogentry' => 'menukar keahlian kumpulan bagi $1 daripada $2 kepada $3',
-'rightslogentry-autopromote' => 'dinaik pangkat secara automatik dari $2 ke $3',
-'logentry-rights-rights' => '$1 menukar keahlian kumpulan untuk $3 dari $4 ke $5',
-'logentry-rights-rights-legacy' => '$1 menukar keahlian kumpulan untuk $3',
-'logentry-rights-autopromote' => '$1 dinaik pangkat secara automatik dari $4 ke $5',
-'rightsnone' => '(tiada)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'membaca laman ini',
@@ -2127,10 +2127,6 @@ Memerlukan sekurang-kurangnya satu domain peringkat tinggi, cth. "*.org".<br />
 'activeusers-hidesysops' => 'Sorokkan pentadbir',
 'activeusers-noresult' => 'Tiada pengguna dijumpai.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log akaun baru',
-'newuserlogpagetext' => 'Yang berikut ialah log penciptaan pengguna.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Hak kumpulan pengguna',
 'listgrouprights-summary' => 'Yang berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini dengan hak-hak masing-masing.
@@ -2268,6 +2264,8 @@ $UNWATCHURL
 
 Maklum balas dan bantuan selanjutnya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'dicipta',
+'changed' => 'diubah',
 
 # Delete
 'deletepage' => 'Hapus laman',
@@ -2336,6 +2334,8 @@ Lihat [[Special:ProtectedPages|senarai laman terlindung]] untuk senarai laman-la
 'prot_1movedto2' => '[[$1]] dipindahkan ke [[$2]]',
 'protect-badnamespace-title' => 'Ruang nama yang tidak boleh dilindungi',
 'protect-badnamespace-text' => 'Laman-laman dalam ruang nama ini tidak boleh dilindungi.',
+'protect-norestrictiontypes-text' => 'Halaman ini tidak boleh dilindungi kerana tiadanya jenis-jenis sekatan yang disediakan.',
+'protect-norestrictiontypes-title' => 'Halaman tak terlindung',
 'protect-legend' => 'Sahkan perlindungan',
 'protectcomment' => 'Sebab:',
 'protectexpiry' => 'Sehingga:',
@@ -2993,6 +2993,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'pageinfo-magic-words' => 'Kata sakti ($1)',
 'pageinfo-hidden-categories' => 'Kategori tersembunyi ($1)',
 'pageinfo-templates' => 'Templat tertransklusi ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Halaman|Halaman-halaman}} yang tertransklusi pada ($1)',
 'pageinfo-toolboxlink' => 'Maklumat halaman',
 'pageinfo-redirectsto' => 'Melencong ke',
 'pageinfo-redirectsto-info' => 'maklumat',
@@ -3001,6 +3002,10 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'pageinfo-protect-cascading' => 'Perlindungan sedang melata dari sini',
 'pageinfo-protect-cascading-yes' => 'Ya',
 'pageinfo-protect-cascading-from' => 'Perlindungan sedang melata dari',
+'pageinfo-category-info' => 'Keterangan kategori',
+'pageinfo-category-pages' => 'Bilangan halaman',
+'pageinfo-category-subcats' => 'Bilangan subkategori',
+'pageinfo-category-files' => 'Bilangan fail',
 
 # Skin names
 'skinname-standard' => 'Klasik',
@@ -3092,6 +3097,8 @@ Dengan menjalankannya, komputer anda mungkin akan terjejas.",
 'minutes' => '$1 minit',
 'hours' => '$1 jam',
 'days' => '$1 hari',
+'months' => '$1 bulan',
+'years' => '$1 tahun',
 'ago' => '$1 yang lalu',
 'just-now' => 'tadi',
 
@@ -3854,6 +3861,10 @@ Imej ditunjuk dalam leraian penuh, jenis fail yang lain dibuka dengan atur cara
 'logentry-newusers-create2' => 'Akaun pengguna $3 dibuka oleh $1',
 'logentry-newusers-autocreate' => 'Akaun $1 dibuka secara automatik',
 'newuserlog-byemail' => 'kata laluan dihantar melalui e-mel',
+'logentry-rights-rights' => '$1 menukar keahlian kumpulan untuk $3 dari $4 ke $5',
+'logentry-rights-rights-legacy' => '$1 menukar keahlian kumpulan untuk $3',
+'logentry-rights-autopromote' => '$1 dinaik pangkat secara automatik dari $4 ke $5',
+'rightsnone' => '(tiada)',
 
 # Feedback
 'feedback-bugornote' => 'Jika anda bersedia untuk menerangkan masalah teknikal secara terperinci, sila [$1 laporkan pepijat]. 
index 67ea8de..1845e5d 100644 (file)
@@ -1517,15 +1517,13 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
 'right-sendemail' => 'Jibgħat ittri-e lil utenti oħra',
 'right-passwordreset' => 'Jara l-messaġġi tal-impostazzjoni mill-ġdid tal-password',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Utenti ġodda',
+'newuserlogpagetext' => "Dan hu reġistru tal-kreazzjoni ta' kontijiet ġodda.",
+
 # User rights log
 'rightslog' => 'Drittijiet tal-utenti',
 'rightslogtext' => "Dan huwa r-reġistru tal-modifiki ta' drittijiet tal-utenti.",
-'rightslogentry' => "biddel is-sħubija ta' $1 minn $2 għal $3",
-'rightslogentry-autopromote' => 'ġie awtomatikament promoss minn $2 għal $3',
-'logentry-rights-rights' => "$1 biddel is-sħubija ta' $3 minn $4 għal $5",
-'logentry-rights-rights-legacy' => "$1 biddel is-sħubija fil-gruppi ta' $3",
-'logentry-rights-autopromote' => '$1 ġie awtomatikament promoss minn $4 għal $5',
-'rightsnone' => '(xejn)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'aqra din il-paġna',
@@ -2127,10 +2125,6 @@ Protokolli aċċettati: <code>$1</code> (jekk ma jiġi speċifikat l-ebda protok
 'activeusers-hidesysops' => 'Aħbi amministraturi',
 'activeusers-noresult' => 'L-ebda utent ma nstab.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Utenti ġodda',
-'newuserlogpagetext' => "Dan hu reġistru tal-kreazzjoni ta' kontijiet ġodda.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Drittijiet tal-grupp tal-utenti',
 'listgrouprights-summary' => "Hawn taħt hawn elenkati l-gruppi tal-utenti għal din il-wiki, bid-drittijiet ta' aċċess rispettiv.
@@ -2264,6 +2258,8 @@ $UNWATCHURL
 
 Biex tgħaddi kumment u biex tikseb iktar għajnuna:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'inħolqot',
+'changed' => 'modifikata',
 
 # Delete
 'deletepage' => 'Ħassar il-paġna',
@@ -3810,6 +3806,10 @@ Stampi huwa mogħrija b'risoluzzjoni sħiħa, tipi tal-fajl oħrajn jibdew bil-p
 'logentry-newusers-create2' => 'Il-kont $3 ġie maħluq minn $1',
 'logentry-newusers-autocreate' => 'Il-kont $1 ġie maħluq awtomatikament',
 'newuserlog-byemail' => "il-password intbagħtet permezz ta' posta elettronika",
+'logentry-rights-rights' => "$1 biddel is-sħubija ta' $3 minn $4 għal $5",
+'logentry-rights-rights-legacy' => "$1 biddel is-sħubija fil-gruppi ta' $3",
+'logentry-rights-autopromote' => '$1 ġie awtomatikament promoss minn $4 għal $5',
+'rightsnone' => '(xejn)',
 
 # Feedback
 'feedback-subject' => 'Suġġett:',
index 18e0686..26ed430 100644 (file)
@@ -639,9 +639,11 @@ Causo l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.
 'right-move' => 'Arrastrar páiginas',
 'right-movefile' => 'Arrastrar fexeiros',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registro de criaçon de outelizadores',
+
 # User rights log
 'rightslog' => 'Registro de dreitos de l outelizador',
-'rightsnone' => '(nanhun)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lher esta páigina',
@@ -846,9 +848,6 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
 # Special:ListUsers
 'listusers-submit' => 'Amostrar',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registro de criaçon de outelizadores',
-
 # Special:ListGroupRights
 'listgrouprights-rights' => 'Dreitos',
 'listgrouprights-members' => '(lista de nembros)',
@@ -875,6 +874,9 @@ Altaraçones feturas na tal páigina i páiginas de çcusson a eilha associadas
 'watching' => 'A begiar...',
 'unwatching' => 'A deixar de begiar...',
 
+'created' => 'criada',
+'changed' => 'demudada',
+
 # Delete
 'deletepage' => 'Botar fuora páigina',
 'delete-confirm' => 'Botar fuora "$1"',
@@ -1230,4 +1232,7 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
 'tags-title' => 'Eitiquetas',
 'tags-edit' => 'eiditar',
 
+# New logging system
+'rightsnone' => '(nanhun)',
+
 );
index cefe191..a368246 100644 (file)
@@ -233,7 +233,7 @@ $messages = array(
 
 'underline-always' => 'Свал',
 'underline-never' => 'Зярдояк',
-'underline-default' => 'Ð\92аÑ\81нÑ\8fнÑ\8c Ð±Ñ\80аÑ\83зеÑ\80',
+'underline-default' => 'Ð\91Ñ\80аÑ\83зеÑ\80Ñ\8dнÑ\8c Ñ\83Ñ\88одкÑ\81 Ð»Ð°Ð´Ñ\81емаÑ\82не',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Витнема-петнема уминенть фонт стилезэ',
@@ -491,8 +491,8 @@ $messages = array(
 Пачтта сёрмине теде [[Special:ListUsers/sysop|системань ветийнень]] URL адресэнть тештязь.',
 'missingarticle-rev' => '(лиякстомтома#: $1)',
 'missingarticle-diff' => '(Мейсэ явовить: $1, $2)',
-'internalerror' => 'Ð\9fоÑ\82монÑ\8c Ð¸Ð»Ñ\8cведÑ\8cкÑ\81',
-'internalerror_info' => 'Ð\9fоÑ\82монÑ\8c Ð¸Ð»Ñ\8cведÑ\8cкÑ\81: $1',
+'internalerror' => 'Потмоильведькс',
+'internalerror_info' => 'Потмоильведькс: $1',
 'fileappenderrorread' => '"$1" файлась эзь ловново поладомо шкастонзо.',
 'fileappenderror' => '"$1" файлась эзь поладово "$2" файлантень.',
 'filecopyerror' => '"$1" файлась эзь ванстово од "$2" файлакс.',
@@ -504,6 +504,7 @@ $messages = array(
 'unexpected' => 'Апак учонь вейкетстямо: "$1"="$2".',
 'formerror' => 'Ильведевкс: Формась а кучови',
 'badarticleerror' => 'Те лопасонть вешезь тевесь а тееви.',
+'cannotdelete-title' => '"$1" лопась а нардави',
 'badtitle' => 'Амаштовикс конякс',
 'badtitletext' => 'Вешезь лопанть лемезэ аволь виде, чаво, эли аволь видестэ сюлмазь келеньйутковань эли интервикинь лем. Паряк, лемсэнть тевс нолдазь анолдавикс тешкст.',
 'viewsource' => 'Ванномс лисьмапрянть',
@@ -512,9 +513,11 @@ $messages = array(
 'protectedpagetext' => 'Те лопась панжома экшсэ, илязо понго витнемс-петнемс эли лия тевс.',
 'viewsourcetext' => 'Те лопанть лисьмапрясь маштови ваномскак, лангстонзо саемс копияяк:',
 'sqlhidden' => '(SQL вешнемась кекшезь)',
+'namespaceprotected' => "'''$1''' лемпотмосонть арась видечить витнемс-петнемс лопатнесэ.",
 'ns-specialprotected' => '{{ns:special}} лем марто лопатне а витневить-петневить.',
 'titleprotected' => "Те коняксонть ванстызе [[Теиця:$1|$1]], кияк иляссо тее.
 Тувталось вана ''$2''.",
+'exception-nologin' => 'Эзить сова',
 
 # Virus scanner
 'virus-scanfailed' => 'сканнось эзь лисе (код $1)',
@@ -526,7 +529,9 @@ $messages = array(
 'yourpassword' => 'Салава валот:',
 'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
 'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'securelogin-stick-https' => 'Кирдемс "HTTPS" сюлмавкс совамодо мейлеяк',
 'yourdomainname' => 'Эсеть доменэть:',
+'password-change-forbidden' => 'Те викисэнть а полавтсак салававалот.',
 'login' => 'Совамо',
 'nav-login-createaccount' => 'Совамо / тейть совамотарка',
 'loginprompt' => '{{SITENAME}} сайтэнтень совамга эряви нолдамс тевс cookies.',
@@ -593,6 +598,7 @@ $messages = array(
 
 # Change password dialog
 'resetpass' => 'Полавтомс совамо валот',
+'resetpass_announce' => 'Совавить нурька шкань салававалсо, кона кучозель куляпаргозот. Совамот прядомга эряви путомс од салававал вана тезэень:',
 'resetpass_header' => 'Полавтомс совамо валот',
 'oldpassword' => 'Ташто совамо валот:',
 'newpassword' => 'Од совамо валот:',
@@ -865,6 +871,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'search-interwiki-default' => '$1 савкс:',
 'search-interwiki-more' => '(седе ламо)',
 'search-relatedarticle' => 'Малавикс',
+'mwsuggest-disable' => 'Лоткавтомс "AJAX" превспутыенть',
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
@@ -914,6 +921,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'prefs-rendering' => 'Тюсозо-лангозо',
 'saveprefs' => 'Ванстомс',
 'resetprefs' => 'Нардамс апак вансто полавтнемат',
+'restoreprefs' => 'Велявтомс мекев весе ушодкс ладсематнень',
 'prefs-editing' => 'Витнема-петнема',
 'prefs-edit-boxsize' => 'Витнема-петнема вальманть сэрензэ-келензэ.',
 'rows' => 'Вал чилькстнэ (строкатне):',
@@ -985,9 +993,10 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'group-user-member' => '{{GENDER:$1|теиця}}',
 'group-autoconfirmed-member' => '
 {{GENDER:$1|сонсь кемекставиця теиця}}',
-'group-bot-member' => 'Бот',
-'group-sysop-member' => 'Администратор',
-'group-bureaucrat-member' => 'Бюрократ',
+'group-bot-member' => '{{GENDER:$1|Бот}}',
+'group-sysop-member' => '{{GENDER:$1|Администратор}}',
+'group-bureaucrat-member' => '
+{{GENDER:$1|Бюрократ}}',
 
 'grouppage-user' => '{{ns:project}}:Совицятне',
 'grouppage-bot' => '{{ns:project}}:Ботт',
@@ -1024,9 +1033,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'right-siteadmin' => 'Датабазань сёлгомо ды панжомо',
 'right-passwordreset' => 'Ваномс теицянь салава валонь полавтома е-сёрмат',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Теицянь шкамодо-теемадо конёв',
+'newuserlogpagetext' => 'Те теицянь шкавксто журнал',
+
 # User rights log
 'rightslog' => 'Уськетеицянть видечинть кемекстома',
-'rightsnone' => '(арасть)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'те лопань ловномо',
@@ -1087,6 +1099,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'newsectionsummary' => '/* $1 */ од пелькс',
 'rc-enhanced-expand' => 'Невтемс седе ламо тень ланга (JavaScript эряви)',
 'rc-enhanced-hide' => 'Кекшемс келейстэ ёвтазенть',
+'rc-old-title' => 'васня сёрмадозель «$1» лем марто',
 
 # Recent changes linked
 'recentchangeslinked' => 'Сюлмавозь лиякстоматне',
@@ -1115,6 +1128,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'filestatus' => 'Авторонь видечинь статусозо:',
 'filesource' => 'Лисьмапрязо:',
 'uploadedfiles' => 'Ёвкстань файлат',
+'ignorewarnings' => 'А явомс мель «Ванок» серьгедематненень',
 'minlength1' => 'Файлалемесь аштезэ вейке эли седе ламо тешксттнэстэ.',
 'badfilename' => 'Файланть лемесь полавтозь "$1"-кс.',
 'filetype-missing' => 'Файланть арась поладкс пезэ (саемга «.jpg»).',
@@ -1312,6 +1326,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'mostimages' => 'Весемеде ламо сюлмавкс марто файлат',
 'mostrevisions' => 'Лопат конатнесэ теезь сехте ламо лиякстомтомат',
 'prefixindex' => 'Весе лопатне, конат саевить истямо икелькс пене марто',
+'prefixindex-namespace' => 'Весе лопат, косо лемушодксось ($1 лемпотмо)',
 'shortpages' => 'Нурькине лопат',
 'longpages' => 'Кувака лопат',
 'deadendpages' => 'Поладкстомо-лисемавтомо лопат',
@@ -1393,10 +1408,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'activeusers-hidesysops' => 'Кекшемс администратортнэнь',
 'activeusers-noresult' => 'Якинзэ-пакинзэ арасть',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Теицянь шкамодо-теемадо конёв',
-'newuserlogpagetext' => 'Те теицянь шкавксто журнал',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Теиця куронть видечинзэ',
 'listgrouprights-group' => 'Куро',
@@ -1448,6 +1459,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'enotif_impersonal_salutation' => '{{SITENAME}} теицясь',
 'enotif_lastdiff' => 'Те полавтоманть ваномга вант $1.',
 'enotif_anon_editor' => 'лемтеме теиця $1',
+'created' => 'теезь-шказь',
+'changed' => 'полавтозь',
 
 # Delete
 'deletepage' => 'Нардамс лопанть',
@@ -2213,6 +2226,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # New logging system
 'newuserlog-byemail' => 'салава валот кучозь е-сёрмасо',
+'rightsnone' => '(арасть)',
 
 # Feedback
 'feedback-subject' => 'Мезде:',
@@ -2220,6 +2234,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'feedback-cancel' => 'А теемс',
 'feedback-close' => 'Анок',
 
+# Search suggestions
+'searchsuggest-search' => 'Вешнемс',
+
 # API errors
 'api-error-filename-tooshort' => 'Керьмазлементь а саты кувалмозо',
 'api-error-illegal-filename' => 'Керьмазлемесь а маштови.',
index 7d54b31..48d2e38 100644 (file)
@@ -711,7 +711,6 @@ $2، $1',
 # User rights log
 'rightslog' => 'سیاهه اختیارای کاروری',
 'rightslogtext' => 'اینتا سیاهه تغییرای اختیارای کاروری هسته.',
-'rightsnone' => '(هچّی)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'این صفحه ره دچی‌ین',
@@ -864,6 +863,7 @@ $2، $1',
 'enotif_lastvisited' => 'بدی‌ین همه‌ی تغییرات از آخرین باری که سر بزونی وسّه $1 ره هارشین.',
 'enotif_lastdiff' => 'هارشائن این تغییر وسّه $1 ره بزنین.',
 'enotif_anon_editor' => 'نشناسی‌یه کارور $1',
+'created' => 'بساته بیّه',
 
 # Delete
 'deletepage' => 'صفحه پاک هاکردن',
@@ -1086,6 +1086,7 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 ، $3 ره بدون اینکه مسیر تغییری درس بوه به $4 که مسیر تغییر بیه منتقل هاکرده',
 'logentry-newusers-newusers' => '$1  بساتن اتا حساب کاروری',
 'logentry-newusers-create' => '$1  بساتن اتا حساب کاروری',
+'rightsnone' => '(هچّی)',
 
 # Feedback
 'feedback-subject' => 'موضوع:',
index 78313ce..44266cf 100644 (file)
@@ -1612,15 +1612,13 @@ Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
 'right-sendemail' => 'Send e-post til andre brukere',
 'right-passwordreset' => 'Vis e-poster over tilbakestilte passord',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brukeropprettelseslogg',
+'newuserlogpagetext' => 'Dette er en logg over brukeropprettelser.',
+
 # User rights log
 'rightslog' => 'Brukerrettighetslogg',
 'rightslogtext' => 'Dette er en logg over endringer av brukerrettigheter.',
-'rightslogentry' => 'endret gruppe for $1 fra $2 til $3',
-'rightslogentry-autopromote' => 'ble automatisk forfremmet fra $2 til $3',
-'logentry-rights-rights' => '$1 endret gruppemedlemskap for $3 fra $4 til $5',
-'logentry-rights-rights-legacy' => '$1 endret gruppemedlemskap for $3',
-'logentry-rights-autopromote' => '$1 ble automatisk forfremmet fra $4 til $5',
-'rightsnone' => '(ingen)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'se denne siden',
@@ -2262,10 +2260,6 @@ Støttede protokoller: <code>$1</code> (ikke legg til noen av disse i søket dit
 'activeusers-hidesysops' => 'Skjul administratorer',
 'activeusers-noresult' => 'Ingen brukere funnet.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brukeropprettelseslogg',
-'newuserlogpagetext' => 'Dette er en logg over brukeropprettelser.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rettigheter for brukergrupper',
 'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
@@ -2401,6 +2395,8 @@ $UNWATCHURL
 
 Tilbakemelding og videre assistanse:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'opprettet',
+'changed' => 'endret',
 
 # Delete
 'deletepage' => 'Slett side',
@@ -2576,7 +2572,7 @@ $1',
 'blanknamespace' => '(Hoved)',
 
 # Contributions
-'contributions' => 'Brukerbidrag',
+'contributions' => '{{GENDER:$1|Brukerbidrag}}',
 'contributions-title' => 'Brukerbidrag av $1',
 'mycontris' => 'Bidrag',
 'contribsub2' => 'For $1 ($2)',
@@ -3135,6 +3131,10 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'pageinfo-protect-cascading' => 'Dypbeskyttelse starter herfra',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Dypbeskyttelse fra',
+'pageinfo-category-info' => 'Kategoriinformasjon',
+'pageinfo-category-pages' => 'Antall sider',
+'pageinfo-category-subcats' => 'Antall underkategorier',
+'pageinfo-category-files' => 'Antall filer',
 
 # Skin names
 'skinname-standard' => 'Standard',
@@ -3221,6 +3221,8 @@ Ved å åpne den kan systemet ditt kompromitteres.",
 'minutes' => '{{PLURAL:$1|$1 minutt|$1 minutter}}',
 'hours' => '{{PLURAL:$1|$1 time|$1 timer}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dager}}',
+'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
+'years' => '{{PLURAL:$1|$1 år}}',
 'ago' => '$1 siden',
 'just-now' => 'nettopp',
 
@@ -3997,6 +3999,10 @@ Bilder vises med full oppløsning, mens andre filtyper startes direkte gjennom s
 'logentry-newusers-create2' => 'Kontoen $3 ble opprettet av $1',
 'logentry-newusers-autocreate' => 'Konto $1 ble opprettet automatisk',
 'newuserlog-byemail' => 'passord sendt på e-post',
+'logentry-rights-rights' => '$1 endret gruppemedlemskap for $3 fra $4 til $5',
+'logentry-rights-rights-legacy' => '$1 endret gruppemedlemskap for $3',
+'logentry-rights-autopromote' => '$1 ble automatisk forfremmet fra $4 til $5',
+'rightsnone' => '(ingen)',
 
 # Feedback
 'feedback-bugornote' => 'Hvis du er klar til å sende inn en detaljert feilrapport, vennligst [$1 rapporter en feil].
index f815fcf..be27a74 100644 (file)
@@ -1341,11 +1341,13 @@ Dat kann nich wedder ungeschehn maakt warrn.',
 'right-siteadmin' => 'Datenbank sperren un wedder apen maken',
 'right-override-export-depth' => 'Exporteer Sieden, lenkt Sieden inslaten bet to en Deepd vun 5',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Ne’e-Bruker-Logbook',
+'newuserlogpagetext' => 'Dit is dat Logbook för nee opstellte Brukerkonten.',
+
 # User rights log
 'rightslog' => 'Brukerrechten-Logbook',
 'rightslogtext' => 'In dit Logbook staht Ännern an de Brukerrechten.',
-'rightslogentry' => 'Grupp bi $1 vun $2 op $3 ännert.',
-'rightsnone' => '(kene)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'de Sied to lesen',
@@ -1806,10 +1808,6 @@ Kiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].',
 'activeusers-hidesysops' => 'Administraters nich wiesen',
 'activeusers-noresult' => 'Keen Brukers funnen.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Ne’e-Bruker-Logbook',
-'newuserlogpagetext' => 'Dit is dat Logbook för nee opstellte Brukerkonten.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Brukergruppen-Rechten',
 'listgrouprights-summary' => 'Dit is en List vun de Brukergruppen, de in dit Wiki defineert sünd, un de Rechten, de dor mit verbunnen sünd.
@@ -1917,6 +1915,8 @@ Du kriggst solang keen Bescheedgeev-E-Mails mehr, bet dat du de Siet wedder bes
 
 --
 De Instellungen vun dien Oppasslist to ännern, gah na: {{canonicalurl:Special:Watchlist/edit}}',
+'created' => 'opstellt',
+'changed' => 'ännert',
 
 # Delete
 'deletepage' => 'Siet wegsmieten',
@@ -3089,5 +3089,6 @@ Geev den Dateinaam ahn den Tosatz „{{ns:file}}:“ an.',
 'revdelete-restricted' => 'Inschränkungen för Administraters instellt',
 'revdelete-unrestricted' => 'Inschränkungen för Administraters rutnahmen',
 'newuserlog-byemail' => 'Passwoord per E-Mail toschickt',
+'rightsnone' => '(kene)',
 
 );
index a283803..fe35dac 100644 (file)
@@ -1578,12 +1578,13 @@ Disse informasie is zichtbaor veur aandere gebrukers.',
 'right-sendemail' => 'Bericht versturen naor aandere gebrukers',
 'right-passwordreset' => 'Bekiek netpostberichten veur t opniej instellen van joew wachtwoord',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboek mit anwas',
+'newuserlogpagetext' => 'Hieronder staon de niej in-eschreven gebrukers',
+
 # User rights log
 'rightslog' => 'Gebrukersrechtenlogboek',
 'rightslogtext' => 'Dit is n logboek mit veraanderingen van gebrukersrechten',
-'rightslogentry' => 'Gebrukersrechten veur $1 ewiezigd van $2 naor $3',
-'rightslogentry-autopromote' => 'was automaties umhoge egaon van $2 naor $3',
-'rightsnone' => '(gien)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'disse zied lezen',
@@ -2217,10 +2218,6 @@ Ondersteunde protokollen: <code>$1</code> (zet t niet in joew zeukopdrachte).',
 'activeusers-hidesysops' => 'Beheerders verbargen',
 'activeusers-noresult' => 'Gien aktieve gebrukers evunnen.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboek mit anwas',
-'newuserlogpagetext' => 'Hieronder staon de niej in-eschreven gebrukers',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rechten van gebrukersgroepen',
 'listgrouprights-summary' => "Op disse zied staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechten.
@@ -2349,6 +2346,8 @@ $UNWATCHURL
 
 Opmarkingen en veerdere hulpe:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'an-emaakt',
+'changed' => 'ewiezigd',
 
 # Delete
 'deletepage' => 'Vortdoon',
@@ -3885,6 +3884,7 @@ Aandere bestaandstypen wörden gelieke in t mit t MIME-type verbunnen programma
 'logentry-newusers-create2' => '$1 hef n gebruker $3 an-emaakt',
 'logentry-newusers-autocreate' => 'De gebruker $1 is automaties an-emaakt',
 'newuserlog-byemail' => 'wachtwoord is verstuurd via de netpost',
+'rightsnone' => '(gien)',
 
 # Feedback
 'feedback-bugornote' => 'A\'j zovere bin um n technies probleem nauwkeurig te beschrieven, [$1 meld dan n programmafout].
index 5691ef6..05f60a9 100644 (file)
@@ -1305,12 +1305,12 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'right-sendemail' => 'अन्य प्रयोगकर्ताहरुलाई इमेल गर्ने',
 'right-passwordreset' => 'पासवर्ड परिवर्तन गर्ने ईमेलहरु हेर्नुहोस',
 
+# Special:Log/newusers
+'newuserlogpage' => 'प्रयोगकर्ता श्रृजना लग',
+
 # User rights log
 'rightslog' => 'प्रयोगकर्ता अधिकार लग',
 'rightslogtext' => 'यो प्रयोगकर्ता अधिकारहरुको परिवर्तन लग हो ।',
-'rightslogentry' => '$1 समूह सदस्याता $2 बाट $3 मा परिवर्तन गरिएको छ',
-'rightslogentry-autopromote' => ' $2 बाट $3 मा स्वत: बढुवा गरिएको छ',
-'rightsnone' => '(कुनैपनि होइन)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'यो पृष्ठ पढ्ने',
@@ -1812,9 +1812,6 @@ $1',
 'activeusers-hidesysops' => 'प्रबन्धकहरु लुकाउने',
 'activeusers-noresult' => 'प्रयोगकर्ताहरु भेटिएनन्।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'प्रयोगकर्ता श्रृजना लग',
-
 # Special:ListGroupRights
 'listgrouprights' => 'प्रयोगकर्ता समूह अधिकार',
 'listgrouprights-summary' => 'निम्न सूची यस विकिमा परिभाषित समूहहरु र तिनीहरुले प्रयोगगर्न सक्ने संबद्ध  अधिकारहरुको हो।
@@ -1939,6 +1936,8 @@ $UNWATCHURL
 
 प्रतिक्रिया र अन्य सहयोगको निम्ति:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'बनाइएको',
+'changed' => 'परिवर्तन भइसकेको',
 
 # Delete
 'deletepage' => 'पृष्ठ मेट्नुहोस्',
@@ -3434,6 +3433,7 @@ $5
 'revdelete-unrestricted' => 'प्रवन्धककोलागि निषेधहरु हटाइयो ।',
 'logentry-move-move' => '$1 द्वारा $3 पृष्ठलाई $4 मा सारियो',
 'newuserlog-byemail' => 'इ मेलबाट पठाइएको प्रवेशशव्द',
+'rightsnone' => '(कुनैपनि होइन)',
 
 # Feedback
 'feedback-subject' => 'विषय:',
index 036fcb7..b3d45db 100644 (file)
@@ -487,6 +487,7 @@ $messages = array(
 'newwindow' => '(opent in een nieuw venster)',
 'cancel' => 'Annuleren',
 'moredotdotdot' => 'Meer…',
+'morenotlisted' => 'Meer niet in de lijst...',
 'mypage' => 'Gebruikerspagina',
 'mytalk' => 'Overleg',
 'anontalk' => 'Overlegpagina voor dit IP-adres',
@@ -718,7 +719,7 @@ Mogelijk is deze al door iemand anders verwijderd.',
 '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 interwikinaamkoppeling.
+'badtitletext' => 'De naam van de opgevraagde pagina was ongeldig, leeg of bevatte een verkeerde intertaal- of interwikikoppeling.
 Wellicht bevat de paginanaam niet toegestane tekens.',
 'perfcached' => 'Deze gegevens komen uit een cache en zijn mogelijk niet actueel. Er {{PLURAL:$1|is maximaal één resultaat|zijn maximaal $1 resultaten}} beschikbaar in de cache.',
 'perfcachedts' => 'Deze gegevens komen uit een cache die voor het laatst is bijgewerkt op $2 om $3. Er {{PLURAL:$4|is maximaal één resultaat|zijn maximaal $4 resultaten}} beschikbaar in de cache.',
@@ -879,6 +880,7 @@ Wacht even voordat u het opnieuw probeert.',
 # E-mail sending
 'php-mail-error-unknown' => 'Er is een onbekende fout opgetreden in de mail()-functie van PHP',
 'user-mail-no-addy' => 'Geprobeerd een e-mail te verzenden zonder een e-mailadres.',
+'user-mail-no-body' => 'Er is geprobeerd een e-mail te verzenden zonder inhoud of met een hele korte inhoud.',
 
 # Change password dialog
 'resetpass' => 'Wachtwoord wijzigen',
@@ -1689,15 +1691,13 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'right-sendemail' => 'E-mail versturen aan andere gebruikers',
 'right-passwordreset' => 'E-mails voor wachtwoord opnieuw instellen bekijken',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboek nieuwe gebruikers',
+'newuserlogpagetext' => 'Hieronder staan de nieuw ingeschreven gebruikers',
+
 # User rights log
 'rightslog' => 'Gebruikersrechtenlogboek',
 'rightslogtext' => 'Hieronder staan de wijzigingen in gebruikersrechten.',
-'rightslogentry' => 'heeft de gebruikersrechten voor $1 gewijzigd van $2 naar $3',
-'rightslogentry-autopromote' => 'is automatisch gepromoveerd van de groepen "$2" naar de groepen "$3"',
-'logentry-rights-rights' => '$1 heeft groepslidmaatschap voor $3 gewijzigd van $4 naar $5',
-'logentry-rights-rights-legacy' => '$1 heeft groepslidmaatschap voor $3 gewijzigd',
-'logentry-rights-autopromote' => '$1 is automatisch gepromoveerd van $4 naar $5',
-'rightsnone' => '(geen)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'deze pagina te bekijken',
@@ -2367,10 +2367,6 @@ Heeft tenminste een topleveldomein nodig, zoals bijvoorbeeld "*.org".<br />
 'activeusers-hidesysops' => 'Beheerders verbergen',
 'activeusers-noresult' => 'Geen actieve gebruikers gevonden.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboek nieuwe gebruikers',
-'newuserlogpagetext' => 'Hieronder staan de nieuw ingeschreven gebruikers',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rechten van gebruikersgroepen',
 'listgrouprights-summary' => 'Op deze pagina staan de gebruikersgroepen in deze wiki beschreven, met hun bijbehorende rechten.
@@ -2506,6 +2502,8 @@ $UNWATCHURL
 
 Terugkoppeling en verdere assistentie:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'aangemaakt',
+'changed' => 'gewijzigd',
 
 # Delete
 'deletepage' => 'Pagina verwijderen',
@@ -2578,6 +2576,8 @@ Zie de [[Special:ProtectedPages|lijst met beveiligde pagina's]] voor alle beveil
 'prot_1movedto2' => '[[$1]] is hernoemd naar [[$2]]',
 'protect-badnamespace-title' => 'Niet te beveiligen naamruimte',
 'protect-badnamespace-text' => "Pagina's in deze naamruimte kunnen niet beveiligd worden.",
+'protect-norestrictiontypes-text' => 'Deze pagina kan niet beveiligd worden omdat er geen beperkingstypen beschikbaar zijn.',
+'protect-norestrictiontypes-title' => 'Niet te beveiligen pagina',
 'protect-legend' => 'Beveiliging bevestigen',
 'protectcomment' => 'Reden:',
 'protectexpiry' => 'Duur:',
@@ -2734,7 +2734,7 @@ De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergege
 'isimage' => 'bestandskoppeling',
 'whatlinkshere-prev' => '{{PLURAL:$1|vorige|vorige $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|volgende|volgende $1}}',
-'whatlinkshere-links' => '← koppelingen naar deze pagina',
+'whatlinkshere-links' => '← koppelingen',
 'whatlinkshere-hideredirs' => 'doorverwijzingen $1',
 'whatlinkshere-hidetrans' => 'Transclusies $1',
 'whatlinkshere-hidelinks' => 'koppelingen $1',
@@ -3274,6 +3274,7 @@ Meestal wordt dit door een externe koppeling op een zwarte lijst veroorzaakt.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magisch woord|Magische woorden}} ($1)',
 'pageinfo-hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Gebruikt sjabloon|Gebruikte sjablonen}} ($1)',
+'pageinfo-transclusions' => "{{PLURAL:$1|Pagina|Pagina's}} getranscludeerd op ($1)",
 'pageinfo-toolboxlink' => 'Paginagegevens',
 'pageinfo-redirectsto' => 'Verwijst door naar',
 'pageinfo-redirectsto-info' => 'informatie',
@@ -3282,6 +3283,10 @@ Meestal wordt dit door een externe koppeling op een zwarte lijst veroorzaakt.',
 'pageinfo-protect-cascading' => 'Beveiligingen werken vanaf hier door',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Pagina is beveiligd vanuit een andere pagina',
+'pageinfo-category-info' => 'Categoriegegevens',
+'pageinfo-category-pages' => "Aantal pagina's",
+'pageinfo-category-subcats' => 'Aantal subcategorieën',
+'pageinfo-category-files' => 'Aantal bestanden',
 
 # Skin names
 'skinname-standard' => 'Klassiek',
@@ -3370,6 +3375,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuut|$1 minuten}}',
 'hours' => '{{PLURAL:$1|$1 uur|$1 uur}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
+'months' => '{{PLURAL:$1|één maand|$1 maanden}}',
+'years' => '{{PLURAL:$1|één jaar|$1 jaar}}',
 'ago' => '$1 geleden',
 'just-now' => 'Daarnet',
 
@@ -4147,6 +4154,10 @@ Andere bestandstypen worden direct in het met het MIME-type verbonden programma
 'logentry-newusers-create2' => 'Gebruiker $3 is aangemaakt door $1',
 'logentry-newusers-autocreate' => 'De gebruiker $1 is automatisch aangemaakt',
 'newuserlog-byemail' => 'wachtwoord is verzonden per e-mail',
+'logentry-rights-rights' => '$1 heeft groepslidmaatschap voor $3 gewijzigd van $4 naar $5',
+'logentry-rights-rights-legacy' => '$1 heeft groepslidmaatschap voor $3 gewijzigd',
+'logentry-rights-autopromote' => '$1 is automatisch gepromoveerd van $4 naar $5',
+'rightsnone' => '(geen)',
 
 # Feedback
 'feedback-bugornote' => 'Als u zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].
index 405992d..3a50cad 100644 (file)
@@ -449,6 +449,7 @@ $messages = array(
 'newwindow' => '(vert opna i eit nytt vindauge)',
 'cancel' => 'Avbryt',
 'moredotdotdot' => 'Meir …',
+'morenotlisted' => 'Meir som ikkje er lista opp …',
 'mypage' => 'Sida mi',
 'mytalk' => 'Diskusjon',
 'anontalk' => 'Diskusjonside for denne IP-adressa',
@@ -1570,15 +1571,13 @@ Dette kan ikkje tilbakestillast.',
 'right-sendemail' => 'Senda e-post til andre brukarar',
 'right-passwordreset' => 'Sjå e-postar for passord som er stilte attende',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brukaropprettingslogg',
+'newuserlogpagetext' => 'Dette er ein logg over oppretta brukarkontoar.',
+
 # User rights log
 'rightslog' => 'Brukartilgangslogg',
 'rightslogtext' => 'Dette er ein logg over endringar av brukartilgang.',
-'rightslogentry' => 'endra brukartilgangen til $1 frå $2 til $3',
-'rightslogentry-autopromote' => '↓vart automatisk forfremja frå $2 til $3',
-'logentry-rights-rights' => '$1 endra gruppemedlemskap for $3 frå $4 til $5',
-'logentry-rights-rights-legacy' => '$1 endra gruppemedlemskap for $3',
-'logentry-rights-autopromote' => '$1 vart automatisk forfremja frå $4 til $5',
-'rightsnone' => '(ingen)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'sjå denne sida',
@@ -2212,10 +2211,6 @@ Det er påkravt med eit toppnivådomene, til dømes «*.org».<br />
 'activeusers-hidesysops' => 'Skjul administratorar',
 'activeusers-noresult' => 'Ingen brukarar funne.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brukaropprettingslogg',
-'newuserlogpagetext' => 'Dette er ein logg over oppretta brukarkontoar.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Rettar for brukargrupper',
 'listgrouprights-summary' => 'Følgjande liste viser brukargruppene som er definert på denne wikien, og kvar rettar dei har. Meir informasjon om dei ulike rettane ein kan ha finn ein [[{{MediaWiki:Listgrouprights-helppage}}|her]].',
@@ -2348,6 +2343,8 @@ $UNWATCHURL
 
 Attendemelding og hjelp:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'oppretta',
+'changed' => 'endra',
 
 # Delete
 'deletepage' => 'Slett sida',
@@ -2411,6 +2408,8 @@ Sjå [[Special:ProtectedPages|lista over verna sider]] for lista over vern som n
 'prot_1movedto2' => '«[[$1]]» flytt til «[[$2]]»',
 'protect-badnamespace-title' => 'Namnerommet kan ikkje vernast',
 'protect-badnamespace-text' => 'Sider i dette namnerommet kan ikkje vernast.',
+'protect-norestrictiontypes-text' => 'Sida kan ikkje vernast sidan det ikkje finst tilgjengelege restriksjonstypar.',
+'protect-norestrictiontypes-title' => 'Side som ikkje kan vernast',
 'protect-legend' => 'Stadfest vern',
 'protectcomment' => 'Grunngjeving:',
 'protectexpiry' => 'Endar:',
@@ -3063,6 +3062,10 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'pageinfo-protect-cascading' => 'Djupvern byrjar her',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Djupvern byrjar i',
+'pageinfo-category-info' => 'Kategoriinformasjon',
+'pageinfo-category-pages' => 'Tal sider',
+'pageinfo-category-subcats' => 'Tal underkategoriar',
+'pageinfo-category-files' => 'Tal filer',
 
 # Skin names
 'skinname-standard' => 'Klassisk',
@@ -3148,6 +3151,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minutt|$1 minutt}}',
 'hours' => '{{PLURAL:$1|$1 time|$1 timar}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagar}}',
+'months' => '{{PLURAL:$1|éin månad|$1 månader}}',
+'years' => '{{PLURAL:$1|éitt år|$1 år}}',
 'ago' => '$1 sidan',
 'just-now' => 'akkurat no',
 
@@ -3898,6 +3903,10 @@ Bilete vert viste i full oppløysing, andre filtypar vert starta direkte i dei t
 'logentry-newusers-create2' => 'Brukarkontoen $3 vart oppretta av $1',
 'logentry-newusers-autocreate' => 'Kontoen $1 vart oppretta av seg sjølv',
 'newuserlog-byemail' => 'passordet er sendt på e-post',
+'logentry-rights-rights' => '$1 endra gruppemedlemskap for $3 frå $4 til $5',
+'logentry-rights-rights-legacy' => '$1 endra gruppemedlemskap for $3',
+'logentry-rights-autopromote' => '$1 vart automatisk forfremja frå $4 til $5',
+'rightsnone' => '(ingen)',
 
 # Feedback
 'feedback-bugornote' => 'Er du klar til å skildra ein teknisk vanske i detalj, gjer vel å [$1 rapportera inn ein feil].
diff --git a/languages/messages/MessagesNo.php b/languages/messages/MessagesNo.php
deleted file mode 100644 (file)
index ca3f1b8..0000000
+++ /dev/null
@@ -1,3407 +0,0 @@
-<?php
-/** Norwegian (bokmål)‬ (‪norsk (bokmål)‬)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- * @author Jeblad
- */
-
-$fallback = 'nb';
-
-$messages = array(
-# User preference toggles
-'tog-underline' => 'Strek under lenker:',
-'tog-justify' => 'Blokkjusterte avsnitt',
-'tog-hideminor' => 'Skjul mindre redigeringer i siste endringer',
-'tog-hidepatrolled' => 'Skjul patruljerte redigeringer i siste endringer',
-'tog-newpageshidepatrolled' => 'Skjul patruljerte sider fra listen over nye sider.',
-'tog-extendwatchlist' => 'Utvid overvåkningslisten til å vise alle endringer, ikke bare de siste',
-'tog-usenewrc' => 'Forbedret siste endringer (krever JavaScript)',
-'tog-numberheadings' => 'Autonummerer overskrifter',
-'tog-showtoolbar' => 'Vis verktøylinje (JavaScript)',
-'tog-editondblclick' => 'Rediger sider ved å dobbeltklikke (JavaScript)',
-'tog-editsection' => 'Rediger avsnitt ved hjelp av [rediger]-lenke',
-'tog-editsectiononrightclick' => 'Rediger avsnitt ved å høyreklikke på avsnittsoverskrift (JavaScript)',
-'tog-showtoc' => 'Vis innholdsfortegnelse (for sider med flere enn tre avsnitt)',
-'tog-rememberpassword' => 'Husk meg i denne nettleseren (i høyst $1 {{PLURAL:$1|dag|dager}})',
-'tog-watchcreations' => 'Overvåk sider jeg oppretter',
-'tog-watchdefault' => 'Overvåk alle sider jeg redigerer',
-'tog-watchmoves' => 'Overvåk sider jeg flytter',
-'tog-watchdeletion' => 'Overvåk sider jeg sletter',
-'tog-minordefault' => 'Merk i utgangspunktet alle redigeringer som mindre',
-'tog-previewontop' => 'Flytt forhåndsvisningen foran redigeringsboksen',
-'tog-previewonfirst' => 'Bruk forhåndsvisning ved første redigering av en side',
-'tog-nocache' => 'Deaktiver nettlesermellomlagring av sider («caching»)',
-'tog-enotifwatchlistpages' => 'Send meg en e-post når sider på overvåkningslisten blir endret',
-'tog-enotifusertalkpages' => 'Send meg en e-post ved endringer av brukerdiskusjonssiden min',
-'tog-enotifminoredits' => 'Send meg en e-post også ved mindre sideendringer',
-'tog-enotifrevealaddr' => 'Vis min e-postadresse i utgående meldinger',
-'tog-shownumberswatching' => 'Vis antall overvåkende brukere',
-'tog-oldsig' => 'Nåværende signatur:',
-'tog-fancysig' => 'Signatur som wikitekst uten automatisk lenke',
-'tog-externaleditor' => 'Bruk ekstern behandler som standard (kun for viderekomne, krever spesielle innstillinger på din datamaskin. [//www.mediawiki.org/wiki/Manual:External_editors Mer informasjon.])',
-'tog-externaldiff' => 'Bruk ekstern differanse som standard (kun for viderekomne, krever spesielle innstillinger på din datamaskin. [//www.mediawiki.org/wiki/Manual:External_editors Mer informasjon.])',
-'tog-showjumplinks' => 'Slå på «gå til»-lenker',
-'tog-uselivepreview' => 'Bruk levende forhåndsvisning (eksperimentell JavaScript)',
-'tog-forceeditsummary' => 'Advar meg når jeg ikke gir noen redigeringsforklaring',
-'tog-watchlisthideown' => 'Skjul egne endringer fra overvåkningslisten',
-'tog-watchlisthidebots' => 'Skjul robotendringer fra overvåkningslisten',
-'tog-watchlisthideminor' => 'Skjul mindre endringer fra overvåkningslisten',
-'tog-watchlisthideliu' => 'Skjul endringer av innloggede brukere fra overvåkningslisten',
-'tog-watchlisthideanons' => 'Skjul endringer av anonyme brukere fra overvåkningslisten',
-'tog-watchlisthidepatrolled' => 'Skjul patruljerte endringer fra overvåkningslisten',
-'tog-nolangconversion' => 'Slå av variantkonvertering',
-'tog-ccmeonemails' => 'Send meg kopier av e-poster jeg sender til andre brukere',
-'tog-diffonly' => 'Ikke vis sideinnhold under differ',
-'tog-showhiddencats' => 'Vis skjulte kategorier',
-'tog-norollbackdiff' => 'Ikke vis diff etter tilbakestilling',
-
-'underline-always' => 'Alltid',
-'underline-never' => 'Aldri',
-'underline-default' => 'Bruk nettleserstandard',
-
-# Font style option in Special:Preferences
-'editfont-style' => 'Endre stilen for skrifttypen i området:',
-'editfont-default' => 'Nettleserstandard',
-'editfont-monospace' => 'Skrift med fast bredde',
-'editfont-sansserif' => 'Sans-serif',
-'editfont-serif' => 'Serif',
-
-# Dates
-'sunday' => 'søndag',
-'monday' => 'mandag',
-'tuesday' => 'tirsdag',
-'wednesday' => 'onsdag',
-'thursday' => 'torsdag',
-'friday' => 'fredag',
-'saturday' => 'lørdag',
-'sun' => 'søn',
-'mon' => 'man',
-'tue' => 'tir',
-'wed' => 'ons',
-'thu' => 'tor',
-'fri' => 'fre',
-'sat' => 'lør',
-'january' => 'januar',
-'february' => 'februar',
-'march' => 'mars',
-'april' => 'april',
-'may_long' => 'mai',
-'june' => 'juni',
-'july' => 'juli',
-'august' => 'august',
-'september' => 'september',
-'october' => 'oktober',
-'november' => 'november',
-'december' => 'desember',
-'january-gen' => 'januar',
-'february-gen' => 'februar',
-'march-gen' => 'mars',
-'april-gen' => 'april',
-'may-gen' => 'mai',
-'june-gen' => 'juni',
-'july-gen' => 'juli',
-'august-gen' => 'august',
-'september-gen' => 'september',
-'october-gen' => 'oktober',
-'november-gen' => 'november',
-'december-gen' => 'desember',
-'jan' => 'jan',
-'feb' => 'feb',
-'mar' => 'mar',
-'apr' => 'apr',
-'may' => 'mai',
-'jun' => 'jun',
-'jul' => 'jul',
-'aug' => 'aug',
-'sep' => 'sep',
-'oct' => 'okt',
-'nov' => 'nov',
-'dec' => 'des',
-
-# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategori|Kategorier}}',
-'category_header' => 'Sider i kategorien «$1»',
-'subcategories' => 'Underkategorier',
-'category-media-header' => 'Filer i kategorien «$1»',
-'category-empty' => "''Denne kategorien inneholder for tiden ingen artikler eller filer.''",
-'hidden-categories' => '{{PLURAL:$1|Skjult kategori|Skjulte kategorier}}',
-'hidden-category-category' => 'Skjulte kategorier',
-'category-subcat-count' => '{{PLURAL:$2|Denne kategorien har kun den følgende underkategorien.|Denne kategorien har følgende {{PLURAL:$1|underkategori|$1 underkategorier}}, av totalt $2.}}',
-'category-subcat-count-limited' => 'Kategorien har følgende {{PLURAL:$1|underkategori|$1 underkategorier}}.',
-'category-article-count' => '{{PLURAL:$2|Denne kategorien inneholder kun den følgende siden.|Følgende {{PLURAL:$1|side|$1 sider}} er i denne kategorien, av totalt $2.}}',
-'category-article-count-limited' => 'Følgende {{PLURAL:$1|side|$1 sider}} er i denne kategorien.',
-'category-file-count' => '{{PLURAL:$2|Denne kategorien inneholder kun den følgende filen.|Følgende {{PLURAL:$1|fil|$1 filer}} er i denne kategorien, av totalt $2.}}',
-'category-file-count-limited' => 'Følgende {{PLURAL:$1|fil|$1 filer}} er i denne kategorien.',
-'listingcontinuesabbrev' => 'forts.',
-'index-category' => 'Indekserte sider',
-'noindex-category' => 'Ikke-indekserte sider',
-'broken-file-category' => 'Sider med brutte fillenker',
-
-'about' => 'Om',
-'article' => 'Innholdsside',
-'newwindow' => '(åpnes i et nytt vindu)',
-'cancel' => 'Avbryt',
-'moredotdotdot' => 'Mer …',
-'mypage' => 'Min side',
-'mytalk' => 'Min diskusjonsside',
-'anontalk' => 'Brukerdiskusjon for denne IP-adressen',
-'navigation' => 'Navigasjon',
-'and' => '&#32;og',
-
-# Cologne Blue skin
-'qbfind' => 'Finn',
-'qbbrowse' => 'Bla gjennom',
-'qbedit' => 'Rediger',
-'qbpageoptions' => 'Sideinnstillinger',
-'qbpageinfo' => 'Sideinformasjon',
-'qbmyoptions' => 'Egne innstillinger',
-'qbspecialpages' => 'Spesialsider',
-'faq' => 'Ofte stilte spørsmål',
-'faqpage' => 'Project:Ofte stilte spørsmål',
-
-# Vector skin
-'vector-action-addsection' => 'Nytt emne',
-'vector-action-delete' => 'Slett',
-'vector-action-move' => 'Flytt',
-'vector-action-protect' => 'Beskytt',
-'vector-action-undelete' => 'Gjenopprett',
-'vector-action-unprotect' => 'Endre beskyttelse',
-'vector-simplesearch-preference' => 'Aktiver forbedrede søkeforslag (kun for drakten Vector)',
-'vector-view-create' => 'Opprett',
-'vector-view-edit' => 'Rediger',
-'vector-view-history' => 'Vis historikk',
-'vector-view-view' => 'Les',
-'vector-view-viewsource' => 'Vis kilden',
-'actions' => 'Handlinger',
-'namespaces' => 'Navnerom',
-'variants' => 'Varianter',
-
-'errorpagetitle' => 'Feil',
-'returnto' => 'Tilbake til $1.',
-'tagline' => 'Fra {{SITENAME}}',
-'help' => 'Hjelp',
-'search' => 'Søk',
-'searchbutton' => 'Søk',
-'go' => 'Gå',
-'searcharticle' => 'Gå',
-'history' => 'Sidehistorikk',
-'history_short' => 'Historikk',
-'updatedmarker' => 'oppdatert siden mitt forrige besøk',
-'printableversion' => 'Utskriftsvennlig versjon',
-'permalink' => 'Permanent lenke',
-'print' => 'Skriv ut',
-'view' => 'Vis',
-'edit' => 'Rediger',
-'create' => 'Opprett',
-'editthispage' => 'Rediger siden',
-'create-this-page' => 'Opprett denne siden',
-'delete' => 'Slett',
-'deletethispage' => 'Slett denne siden',
-'undelete_short' => 'Gjenopprett {{PLURAL:$1|én revisjon|$1 revisjoner}}',
-'viewdeleted_short' => 'Vis {{PLURAL:$1|en slettet redigering|$1 slettede redigeringer}}',
-'protect' => 'Beskytt',
-'protect_change' => 'endre',
-'protectthispage' => 'Lås siden',
-'unprotect' => 'Endre beskyttelse',
-'unprotectthispage' => 'Endre beskyttelsen av denne siden',
-'newpage' => 'Ny side',
-'talkpage' => 'Diskuter denne siden',
-'talkpagelinktext' => 'Diskusjon',
-'specialpage' => 'Spesialside',
-'personaltools' => 'Personlige verktøy',
-'postcomment' => 'Ny seksjon',
-'articlepage' => 'Vis innholdsside',
-'talk' => 'Diskusjon',
-'views' => 'Visninger',
-'toolbox' => 'Verktøy',
-'userpage' => 'Vis brukerside',
-'projectpage' => 'Vis prosjektside',
-'imagepage' => 'Vis filside',
-'mediawikipage' => 'Vis beskjedside',
-'templatepage' => 'Vis mal',
-'viewhelppage' => 'Vis hjelpeside',
-'categorypage' => 'Vis kategoriside',
-'viewtalkpage' => 'Vis diskusjon',
-'otherlanguages' => 'På andre språk',
-'redirectedfrom' => '(Omdirigert fra $1)',
-'redirectpagesub' => 'Omdirigeringsside',
-'lastmodifiedat' => 'Denne siden ble sist endret $1 kl. $2.',
-'viewcount' => 'Denne siden er vist $1 {{PLURAL:$1|gang|ganger}}.',
-'protectedpage' => 'Låst side',
-'jumpto' => 'Gå til:',
-'jumptonavigation' => 'navigasjon',
-'jumptosearch' => 'søk',
-'view-pool-error' => 'Beklager, serverne er overbelastet for øyeblikket.
-For mange brukere forsøker å se denne siden.
-Vennligst vent en stund før du prøver å besøke denne siden på nytt.
-
-$1',
-'pool-timeout' => 'Tidsavbudd mens man ventet på låsing',
-'pool-queuefull' => 'Køen er full',
-'pool-errorunknown' => 'Ukjent feil',
-
-# 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' => 'Om {{SITENAME}}',
-'aboutpage' => 'Project:Om',
-'copyright' => 'Innholdet er tilgjengelig under $1.',
-'copyrightpage' => '{{ns:project}}:Opphavsrett',
-'currentevents' => 'Aktuelt',
-'currentevents-url' => 'Project:Aktuelt',
-'disclaimers' => 'Forbehold',
-'disclaimerpage' => 'Project:Generelle forbehold',
-'edithelp' => 'Redigeringshjelp',
-'edithelppage' => 'Help:Redigering',
-'helppage' => 'Help:Innhold',
-'mainpage' => 'Hovedside',
-'mainpage-description' => 'Hovedside',
-'policy-url' => 'Project:Retningslinjer',
-'portal' => 'Prosjektportal',
-'portal-url' => 'Project:Prosjektportal',
-'privacy' => 'Personvern',
-'privacypage' => 'Project:Personvern',
-
-'badaccess' => 'Rettighetsfeil',
-'badaccess-group0' => 'Du har ikke tilgang til å utføre handlingen du prøvde på.',
-'badaccess-groups' => 'Handlingen du prøvde å utføre kan kun utføres av brukere i {{PLURAL:$2|gruppa|gruppene}} $1.',
-
-'versionrequired' => 'Versjon $1 av MediaWiki påtrengt',
-'versionrequiredtext' => 'Versjon $1 av MediaWiki er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
-
-'ok' => 'OK',
-'retrievedfrom' => 'Hentet fra «$1»',
-'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nye meldinger',
-'newmessagesdifflink' => 'siste endring',
-'youhavenewmessagesmulti' => 'Du har nye beskjeder på $1',
-'editsection' => 'rediger',
-'editold' => 'rediger',
-'viewsourceold' => 'vis kilde',
-'editlink' => 'rediger',
-'viewsourcelink' => 'vis kilde',
-'editsectionhint' => 'Rediger avsnitt: $1',
-'toc' => 'Innhold',
-'showtoc' => 'vis',
-'hidetoc' => 'skjul',
-'collapsible-collapse' => 'skjul',
-'collapsible-expand' => 'vis',
-'thisisdeleted' => 'Se eller gjenopprett $1?',
-'viewdeleted' => 'Vis $1?',
-'restorelink' => '{{PLURAL:$1|én slettet revisjon|$1 slettede revisjoner}}',
-'feedlinks' => 'Mating:',
-'feed-invalid' => 'Ugyldig matingstype.',
-'feed-unavailable' => 'Abonnementskilder er ikke tilgjengelig',
-'site-rss-feed' => '$1 RSS-mating',
-'site-atom-feed' => '$1 Atom-mating',
-'page-rss-feed' => '«$1» RSS-mating',
-'page-atom-feed' => '«$1» Atom-mating',
-'red-link-title' => '$1 (siden finnes ikke)',
-'sort-descending' => 'Sorter i synkende rekkefølge',
-'sort-ascending' => 'Sorter i stigende rekkefølge',
-
-# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Side',
-'nstab-user' => 'Brukerside',
-'nstab-media' => 'Mediaside',
-'nstab-special' => 'Spesialside',
-'nstab-project' => 'Prosjektside',
-'nstab-image' => 'Fil',
-'nstab-mediawiki' => 'Melding',
-'nstab-template' => 'Mal',
-'nstab-help' => 'Hjelp',
-'nstab-category' => 'Kategori',
-
-# Main script and global functions
-'nosuchaction' => 'Funksjonen finnes ikke',
-'nosuchactiontext' => 'Handlingen spesifisert i URL-en er ugyldig.
-Du kan ha skrevet URL-en feil, eller fulgt en link som var feil.
-Det kan også være en bug i {{SITENAME}}.',
-'nosuchspecialpage' => 'En slik spesialside finnes ikke',
-'nospecialpagetext' => 'Du ba om en ugyldig spesialside; en liste over gyldige spesialsider finnes på [[Special:SpecialPages|{{int:specialpages}}]].',
-
-# General errors
-'error' => 'Feil',
-'databaseerror' => 'Databasefeil',
-'dberrortext' => 'Det har oppstått en syntaksfeil i en databaseforespørsel.
-Dette kan tyde på en feil i programvaren.
-Forrige databaseforespørsel var:
-<blockquote><tt>$1</tt></blockquote>
-fra funksjonen «<tt>$2</tt>».
-Databasen returnerte feilen «<tt>$3: $4</tt>».',
-'dberrortextcl' => 'Det oppsto en syntaksfeil i en databaseforespørsel.
-Forrige databaseforespørsel var:
-«$1»
-fra funksjonen «$2».
-Databasen returnerte feilen «$3: $4».',
-'laggedslavemode' => 'Advarsel: Dette kan være en eldre versjon av siden.',
-'readonly' => 'Databasen er skrivebeskyttet',
-'enterlockreason' => 'Skriv en begrunnelse for skrivebeskyttelsen, inkludert et estimat for når den blir opphevet',
-'readonlytext' => 'Databasen er for øyeblikket skrivebeskyttet, sannsynligvis på grunn av rutinemessig vedlikehold.
-
-Administratoren som låste databasen ga forklaringen: $1',
-'missing-article' => 'Databasen fant ikke teksten på siden som den burde ha funnet, med navnet «$1» $2.
-
-Dette skyldes vanligvis at man følger en utdatert diff- eller historikklenke til en side som har blitt slettet.
-
-Om dette ikke er tilfellet kan du ha oppdaget en feil i programvaren.
-Vennligst rapporter dette til en [[Special:ListUsers/sysop|administrator]], oppgi da nettadressen.',
-'missingarticle-rev' => '(revisjon#: $1)',
-'missingarticle-diff' => '(diff: $1, $2)',
-'readonly_lag' => 'Databasen er automatisk skrivebeskyttet så slavetjenerne kan ta igjen mestertjeneren',
-'internalerror' => 'Intern feil',
-'internalerror_info' => 'Intern feil: $1',
-'fileappenderrorread' => 'Klarte ikke å lese «$1» når data skulle tilføyes.',
-'fileappenderror' => 'Kunne ikke legge "$1" til "$2".',
-'filecopyerror' => 'Klarte ikke å kopiere filen «$1» til «$2».',
-'filerenameerror' => 'Klarte ikke å døpe om filen «$1» til «$2».',
-'filedeleteerror' => 'Klarte ikke å slette filen «$1».',
-'directorycreateerror' => 'Klarte ikke å opprette mappe «$1».',
-'filenotfound' => 'Klarte ikke å finne filen «$1».',
-'fileexistserror' => 'Klarte ikke å skrive til filen «$1»: filen finnes fra før',
-'unexpected' => 'Uventet verdi: «$1»=«$2».',
-'formerror' => 'Feil: klarte ikke å sende skjema',
-'badarticleerror' => 'Handlingen kan ikke utføres på denne siden.',
-'cannotdelete' => 'Kunne ikke slette filen «$1». Den kan ha blitt slettet av noen andre.',
-'badtitle' => 'Ugyldig tittel',
-'badtitletext' => 'Den ønskede tittelen var ugyldig, tom eller feilaktig lenket fra en annen wiki.
-Det kan inneholder en eller flere tegn som ikke kan brukes i titler.',
-'querypage-no-updates' => 'Oppdateringer for denne siden er slått av. Data her blir ikke gjenoppfrisket.',
-'wrong_wfQuery_params' => 'Gale paramtere til wfQuery()<br />
-Funksjon: $1<br />
-Spørring: $2',
-'viewsource' => 'Vis kildetekst',
-'actionthrottled' => 'Handlingsgrense overskredet',
-'actionthrottledtext' => 'For å beskytte mot spam, kan du ikke utføre denne handlingen for mange ganger i løpet av et kort tidssrom, og du har overskredet denne grensen. Prøv igjen om noen minutter.',
-'protectedpagetext' => 'Denne siden har blitt låst for redigeringer.',
-'viewsourcetext' => 'Du kan se og kopiere kilden til denne siden:',
-'protectedinterface' => 'Denne siden viser brukergrensesnittet for programvaren, og er låst for å hindre misbruk.',
-'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes i grensesnittet for programvaren. Endringer på denne siden vil påvirke hvordan grensesnittet vil se ut. For oversettelser er det best om du bruker [//translatewiki.net/wiki/Main_Page?setlang=no translatewiki.net], prosjektet for oversettelse av MediaWiki.",
-'sqlhidden' => '(SQL-spørring skjult)',
-'cascadeprotected' => 'Denne siden er låst for redigering fordi den inkluderes på følgende sider som har dypbeskyttelse slått på:<!--{{PLURAL:$1}}-->
-$2',
-'namespaceprotected' => "Du har ikke tillatelse til å redigere sider i navnerommet '''$1'''.",
-'customcssprotected' => 'Du har ikke tillatelse til å redigere denne CSS-siden fordi den inneholder en annen brukers personlige innstillinger.',
-'customjsprotected' => 'Du har ikke tillatelse til å redigere denne JavaScript-siden fordi den inneholder en annen brukers personlige innstillinger.',
-'ns-specialprotected' => 'Sier i navnerommet {{ns:special}} kan ikke redigeres.',
-'titleprotected' => "Denne tittelen har blitt låst for oppretting av [[User:$1|$1]].
-Den angitte grunnen er ''$2''.",
-
-# Virus scanner
-'virus-badscanner' => "Dårlig konfigurasjon: ukjent virusskanner: ''$1''",
-'virus-scanfailed' => 'skanning mislyktes (kode $1)',
-'virus-unknownscanner' => 'ukjent antivirusprogram:',
-
-# Login and logout pages
-'logouttext' => "'''Du er nå logget ut.'''
-
-Du kan fortsette å bruke {{SITENAME}} anonymt, eller [[Special:UserLogin|logge inn igjen]] som samme eller annen bruker.
-Merk at noen sider kan vise at du fortsatt er logget inn fram til du tømmer mellomlageret i nettleseren.",
-'welcomecreation' => '==Velkommen, $1!==
-Brukerkontoen din har blitt opprettet.
-Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
-'yourname' => 'Brukernavn:',
-'yourpassword' => 'Passord:',
-'yourpasswordagain' => 'Gjenta passord',
-'remembermypassword' => 'Husk meg på denne datamaskinen (i maks $1 {{PLURAL:$1|dag|dager}})',
-'securelogin-stick-https' => 'Vær fortsatt koblet til HTTPS etter innlogging',
-'yourdomainname' => 'Ditt domene',
-'externaldberror' => 'Det var en ekstern autentifiseringsfeil, eller du kan ikke oppdatere din eksterne konto.',
-'login' => 'Logg inn',
-'nav-login-createaccount' => 'Logg inn eller opprett en konto',
-'loginprompt' => 'Du må ha slått på informasjonskapsler for å logge in på {{SITENAME}}.',
-'userlogin' => 'Logg inn eller opprett en konto',
-'userloginnocreate' => 'Logg inn',
-'logout' => 'Logg ut',
-'userlogout' => 'Logg ut',
-'notloggedin' => 'Ikke logget inn',
-'nologin' => "Er du ikke registrert? '''$1'''.",
-'nologinlink' => 'Opprett en konto',
-'createaccount' => 'Opprett konto',
-'gotaccount' => "Har du allerede et brukernavn? '''$1'''.",
-'gotaccountlink' => 'Logg inn',
-'userlogin-resetlink' => 'Har du glemt påloggingsdetaljene dine?',
-'createaccountmail' => 'per e-post',
-'createaccountreason' => 'Årsak:',
-'badretype' => 'Passordene samsvarte ikke.',
-'userexists' => 'Brukernavnet er allerede i bruk.
-Velg et annet brukernavn.',
-'loginerror' => 'Innloggingsfeil',
-'createaccounterror' => 'Kunne ikke opprette konto: $1',
-'nocookiesnew' => 'Din brukerkonto er nå opprettet, men du har ikke logget på. {{SITENAME}} bruker informasjonskapsler («cookies») for å logge brukere på og du har slått dem av. Slå dem på for å kunne logge på med ditt nye brukernavn og passord.',
-'nocookieslogin' => '{{SITENAME}} bruker informasjonskapsler («cookies») for å logge brukere på og du har slått dem av. Slå dem på og prøv igjen.',
-'nocookiesfornew' => 'Brukerkontoen ble ikke opprettet siden vi ikke kunne bekrefte dens kilde.
-Kontroller at du har aktivert informasjonskapsler, oppdater siden og prøv igjen.',
-'noname' => 'Du har ikke oppgitt et gyldig brukernavn.',
-'loginsuccesstitle' => 'Du er nå logget inn',
-'loginsuccess' => 'Du er nå logget inn på {{SITENAME}} som «$1».',
-'nosuchuser' => 'Det eksisterer ingen bruker ved navn «$1».
-Merk at det skilles mellom store og små bokstaver.
-Sjekk stavemåten eller [[Special:UserLogin/signup|opprett en ny konto]].',
-'nosuchusershort' => 'Det finnes ingen bruker ved navn «$1». Kontroller stavemåten.',
-'nouserspecified' => 'Du må oppgi et brukernavn.',
-'login-userblocked' => 'Brukeren er blokkert. Innlogging er ikke tillatt.',
-'wrongpassword' => 'Du har oppgitt et ugyldig passord. Prøv igjen.',
-'wrongpasswordempty' => 'Du oppga ikke noe passord. Prøv igjen.',
-'passwordtooshort' => 'Passord må ha minst {{PLURAL:$1|ett tegn|$1 tegn}}.',
-'password-name-match' => 'Passordet ditt må være anderledes enn brukernavnet.',
-'password-login-forbidden' => 'Bruken av disse brukernavn og passord har blitt forbudt.',
-'mailmypassword' => 'Send nytt passord',
-'passwordremindertitle' => 'Nytt midlertidig passord fra {{SITENAME}}',
-'passwordremindertext' => 'Noen (antagelig deg, fra IP-adressen $1) ba oss sende deg et nytt
-passord til {{SITENAME}} ($4). Et midlertidig passord for «$2» har
-blitt laget og er satt til «$3». Om det var det du ville, må du logge inn
-og velge et nytt passord nå. Det midlertidige passordet vil utgå om {{PLURAL:$5|én dag|$5 dager}}.
-
-Dersom denne forespørselen ble utført av noen andre, eller om du kom på passordet
-og ikke lenger ønsker å endre det, kan du ignorere denne beskjeden
-og fortsette å bruke det gamle passordet.',
-'noemail' => 'Det er ikke registrert noen e-postadresse for brukeren «$1».',
-'noemailcreate' => 'De må oppgi en gyldig e-postadresse.',
-'passwordsent' => 'Et nytt passord har blitt sendt til e-postadressen registrert på bruker «$1». Logg inn når du har mottatt det nye passordet.',
-'blocked-mailpassword' => 'IP-adressen din er blokkert fra å redigere, og for å forhindre misbruk kan du heller ikke bruke funksjonen som gir deg nytt passord.',
-'eauthentsent' => 'En bekreftelsesmelding ble sendt til gitte e-postadresse. Før andre e-poster kan sendes til kontoen må du følge instruksjonene i e-posten for å bekrefte at kontoen faktisk er din.',
-'throttled-mailpassword' => 'En passordpåminnelse ble sendt for mindre enn {{PLURAL:$1|en time|$1 timer}} siden.
-For å forhindre misbruk kan kun én passordpåminnelse sendes per {{PLURAL:$1|time|$1 timer}}.',
-'mailerror' => 'Feil under sending av e-post: $1',
-'acct_creation_throttle_hit' => 'Gjester med samme IP-adresse som deg har opprettet {{PLURAL:$1|én konto|$1 kontoer}} det siste døgnet, og det er ikke tillatt å opprette flere.
-Som et resultat kan det ikke opprettes flere kontoer fra denne IP-adressen.',
-'emailauthenticated' => 'Din e-postadresse ble bekreftet $2 $3.',
-'emailnotauthenticated' => 'Din e-postadresse er ikke bekreftet. Du vil ikke kunne motta e-post for noen av følgende egenskaper.',
-'noemailprefs' => 'Oppgi en e-postadresse for at disse funksjonene skal fungere.',
-'emailconfirmlink' => 'Bekreft e-postadressen din.',
-'invalidemailaddress' => 'Din e-postadresse kan ikke aksepteres, fordi den er ugyldig formatert.
-Skriv inn en fungerende e-postadresse eller tøm feltet.',
-'accountcreated' => 'Konto opprettet',
-'accountcreatedtext' => 'Brukerkonto for $1 har blitt opprettet.',
-'createaccount-title' => 'Kontooppretting på {{SITENAME}}',
-'createaccount-text' => 'Noen opprettet en konto for din e-postadresse på {{SITENAME}} ($4) med navnet «$2», med «$3» som passord. Du burde logge inn og endre passordet nå.
-
-Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
-'usernamehasherror' => 'Brukernavn kan ikke inneholde nummertegn.',
-'login-throttled' => 'Du har prøvd å logge inn med denne kontoen for mange ganger. Vent før du prøver igjen.',
-'login-abort-generic' => 'Innleggingen ble avbrutt.',
-'loginlanguagelabel' => 'Språk: $1',
-'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
-
-# E-mail sending
-'php-mail-error-unknown' => 'Ukjent feil i PHPs mail()-funksjon',
-
-# Change password dialog
-'resetpass' => 'Endre passord',
-'resetpass_announce' => 'Du logget inn med en midlertidig e-postkode. For å fullføre innloggingen må du oppgi et nytt passord her:',
-'resetpass_text' => '<!-- Legg til tekst her -->',
-'resetpass_header' => 'Endre passord',
-'oldpassword' => 'Gammelt passord:',
-'newpassword' => 'Nytt passord:',
-'retypenew' => 'Gjenta nytt passord:',
-'resetpass_submit' => 'Angi passord og logg inn',
-'resetpass_success' => 'Passordet ditt ble endret! Logger inn&nbsp;…',
-'resetpass_forbidden' => 'Passord kan ikke endres',
-'resetpass-no-info' => 'Du må være logget inn for å gå til denne siden direkte',
-'resetpass-submit-loggedin' => 'Endre passord',
-'resetpass-submit-cancel' => 'Avbryt',
-'resetpass-wrong-oldpass' => 'Feil midlertidig eller nåværende passord.
-Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.',
-'resetpass-temp-password' => 'Midlertidig passord:',
-
-# Special:PasswordReset
-'passwordreset' => 'Passordresetting',
-'passwordreset-text' => 'Fyll ut dette skjemaet for å motta en påminnelse om kontoopplysningene dine i en e-post.',
-'passwordreset-legend' => 'Tilbakestill passord',
-'passwordreset-disabled' => 'Tilbakestilling av passord har blitt deaktivert på denne wikien.',
-'passwordreset-pretext' => '{{PLURAL:$1||Angi en av datadelene nedenfor}}',
-'passwordreset-username' => 'Brukernavn:',
-'passwordreset-domain' => 'Domene:',
-'passwordreset-email' => 'E-postadresse:',
-'passwordreset-emailtitle' => 'Kontodetaljer på {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Noen (sannsynligvis deg fra IP-adressen $1) ba om en påminnelse om dine
-kontodetaljer for {{SITENAME}} ($4). {{PLURAL:$3|Den følgende brukerkontoen|De følgende brukerkontoene}} er
-tilknyttet denne e-postadressen:
-
-$2
-
-{{PLURAL:$3|Dette midlertidige passordet|Disse midlertidige passordene}} utløper om {{PLURAL:$5|én dag|$5 dager}}.
-Du bør logge på og velge et nytt passord nå. Dersom noen andre kom med denne
-forespørselen, eller du har kommet på ditt opprinnelige passord, og ikke lenger
-ønsker å endre det, kan du ignorere denne meldingen og fortsette å bruke ditt gamle
-passord.',
-'passwordreset-emailtext-user' => 'Brukeren $1 på {{SITENAME}} ba om en påminnelse om kontodetaljene dine for {{SITENAME}}
-($4). {{PLURAL:$3|Den følgende brukerkontoen|De følgende brukerkontoene}} er tilknyttet denne e-postadressen:
-
-$2
-
-{{PLURAL:$3|Dette midlertidige passordet|Disse midlertidige passordene}} utløper om {{én dag|$5 dager}}.
-Du bør logge på og velge et nytt passord nå. Dersom noen andre kom med denne
-forespørselen, eller du har kommet på ditt opprinnelige passord, og ikke lenger
-ønsker å endre det, kan du ignorere denne meldingen og fortsette å bruke ditt gamle
-passord.',
-'passwordreset-emailelement' => 'Brukernavn: $1
-Midlertidig passord: $2',
-'passwordreset-emailsent' => 'En påminnelse har blitt sendt på e-post.',
-
-# Edit page toolbar
-'bold_sample' => 'Fet tekst',
-'bold_tip' => 'Fet tekst',
-'italic_sample' => 'Kursiv tekst',
-'italic_tip' => 'Kursiv tekst',
-'link_sample' => 'Lenketittel',
-'link_tip' => 'Intern lenke',
-'extlink_sample' => 'http://www.example.com lenketittel',
-'extlink_tip' => 'Ekstern lenke (husk prefikset http://)',
-'headline_sample' => 'Overskriftstekst',
-'headline_tip' => 'Overskrift, nivå 2',
-'nowiki_sample' => 'Sett inn uformatert tekst her',
-'nowiki_tip' => 'Ignorer wikiformatering',
-'image_sample' => 'Eksempel.jpg',
-'image_tip' => 'Innebygd fil',
-'media_sample' => 'Eksempel.ogg',
-'media_tip' => 'Fillenke',
-'sig_tip' => 'Din signatur med dato',
-'hr_tip' => 'Horisontal linje (bruk sparsomt)',
-
-# Edit pages
-'summary' => 'Redigeringsforklaring:',
-'subject' => 'Emne/overskrift:',
-'minoredit' => 'Dette er en mindre endring',
-'watchthis' => 'Overvåk denne siden',
-'savearticle' => 'Lagre siden',
-'preview' => 'Forhåndsvisning',
-'showpreview' => 'Forhåndsvisning',
-'showlivepreview' => 'Levende forhåndsvisning',
-'showdiff' => 'Vis endringer',
-'anoneditwarning' => "'''Advarsel:''' Du er ikke logget inn.
-IP-adressen din blir bevart i sidens redigeringshistorikk.",
-'anonpreviewwarning' => "''Du er ikke logget inn. Lagring vil registrere din IP-adresse i sidens redigeringshistorikk.''",
-'missingsummary' => "'''Påminnelse:''' Du har ikke lagt inn en redigeringsforklaring.
-Velger du ''Lagre siden'' en gang til blir endringene lagret uten forklaring.",
-'missingcommenttext' => 'Vennligst legg inn en kommentar under.',
-'missingcommentheader' => "'''Påminnelse:''' Du har ikke angitt et emne/overskrift for denne kommentaren.
-Om du trykker «{{int:savearticle}}» igjen vil redigeringen din bli lagret uten forklaring.",
-'summary-preview' => 'Forhåndsvisning av redigeringsforklaring:',
-'subject-preview' => 'Forhåndsvisning av emne/overskrift:',
-'blockedtitle' => 'Brukeren er blokkert',
-'blockedtext' => "'''Ditt brukernavn eller din IP-adresse har blitt blokkert.'''
-
-Blokkeringen ble utført av $1. Grunnen som ble oppgitt var ''$2''.
-
-* Blokkeringen begynte: $8
-* Blokkeringen utgår: $6
-* Blokkering ment på: $7
-
-Du kan kontakte $1 eller en annen [[{{MediaWiki:Grouppage-sysop}}|administrator]] for å diskutere blokkeringen.
-Du kan ikke bruke «E-post til denne brukeren»-funksjonen med mindre du har oppgitt en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]] og du ikke er blokkert fra å sende e-post.
-Din nåværende IP-adresse er $3, og blokkerings-ID-en er #$5.
-Vennligst ta all denne informasjonen ved henvendelser.",
-'autoblockedtext' => "Din IP-adresse har blitt automatisk blokkert fordi den ble brukt av en annen bruker som ble blokkert av $1.
-Den oppgitte grunnen var:
-
-:'''$2'''
-
-* Blokkeringen begynte: $8
-* Blokkeringen utgår: $6
-* Blokkeringen er ment for: $7
-
-Du kan kontakte $1 eller en av de andre [[{{MediaWiki:Grouppage-sysop}}|administratorene]] for å diskutere blokkeringen.
-
-Merk at du ikke kan bruke «E-post til denne brukeren»-funksjonen med mindre du har registrert en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]].
-
-Din IP-adresse er $3, og blokkerings-ID-en er #$5.
-Vennligst ta med all denne informasjonen ved henvendelser.",
-'blockednoreason' => 'ingen grunn gitt',
-'whitelistedittext' => 'Du må $1 for å redigere artikler.',
-'confirmedittext' => 'Du må bekrefte e-postadressen din før du kan redigere sider. Vennligst oppgi og bekreft e-postadressen din via [[Special:Preferences|innstillingene dine]].',
-'nosuchsectiontitle' => 'Finner ikke avsnittet',
-'nosuchsectiontext' => 'Du prøvde å redigere et avsnitt som ikke eksisterer.
-Det kan ha blitt flyttet eller slettet mens du så på siden.',
-'loginreqtitle' => 'Innlogging kreves',
-'loginreqlink' => 'logge inn',
-'loginreqpagetext' => 'Du må $1 for å se andre sider.',
-'accmailtitle' => 'Passord sendt.',
-'accmailtext' => 'Et tilfeldig passord for [[User talk:$1|$1]] har blitt sendt til $2.
-
-Passordet for denne nye kontoen [[Special:ChangePassword|kan endres]] når du logger inn.',
-'newarticle' => '(Ny)',
-'newarticletext' => "Du har fulgt en lenke til en side som ikke finnes ennå.
-For å opprette siden, begynn å skrive i boksen under (se [[{{MediaWiki:Helppage}}|hjelpesiden]] for mer informasjon).
-Om du havnet her ved en feil, trykk '''tilbake''' i nettleseren.",
-'anontalkpagetext' => "----
-''Dette er en diskusjonsside for en uregistrert bruker som ikke har opprettet konto eller ikke er logget inn.
-Vi er derfor nødt til å bruke den numeriske IP-adressen til å identifisere ham eller henne.
-En IP-adresse kan være delt mellom flere brukere.
-Hvis du er en uregistrert bruker og synes at du har fått irrelevante kommentarer på en slik side, [[Special:UserLogin/signup|opprett en konto]] eller [[Special:UserLogin|logg inn]] så vi unngår fremtidige forvekslinger med andre uregistrerte brukere.''",
-'noarticletext' => 'Det er for tiden ingen tekst på denne siden.
-Du kan [[Special:Search/{{PAGENAME}}|søke etter denne sidetittelen]] på andre sider,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relaterte logger],
-eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} opprette siden]</span>.',
-'noarticletext-nopermission' => 'Det er ingen tekst på denne siden.
-Du kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] i andre sider, eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>.',
-'userpage-userdoesnotexist' => 'Brukerkontoen «<nowiki>$1</nowiki>» er ikke registrert. Sjekk om du ønsker å opprette/redigere denne siden.',
-'userpage-userdoesnotexist-view' => 'Kontoen «$1» er ikke registrert.',
-'blocked-notice-logextract' => 'Denne brukeren er for tiden blokkert.
-Siste blokkeringsloggelement kan sees nedenfor.',
-'clearyourcache' => "'''Merk:''' Etter lagring vil det kanskje være nødvendig at nettleseren sletter hurtiglageret sitt for at endringene skal tre i kraft.
-* '''Firefox / Safari:''' hold ''Shift'' mens du klikker på ''Oppdater'' eller trykk ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på en Mac)
-* '''Google Chrome:''' trykk ''Ctrl-Shift-R'' (''Command-Shift-R'' på en Mac)
-* '''Internet Explorer:''' hold ''Ctrl'' mens du klikker på ''Oppdater'' eller trykk ''Ctrl-F5''
-* '''Konqueror:''' klikk ''Oppdater'' eller trykk ''F5''
-* '''Opera:''' tøm hurtiglageret i ''Verktøy → Innstillinger''",
-'usercssyoucanpreview' => "'''Tips:''' Bruk '{{int:showpreview}}'-knappen for å teste din nye CSS før du lagrer.",
-'userjsyoucanpreview' => "'''Tips:''' Bruk '{{int:showpreview}}'-knappen for å teste ditt nye JS før du lagrer.",
-'usercsspreview' => "'''Husk at dette bare er en forhåndsvisning av din bruker-CSS og at den ikke er lagret!'''",
-'userjspreview' => "'''Husk at dette bare er en test eller forhåndsvisning av ditt bruker-JavaScript, og det ikke er lagret!'''",
-'sitecsspreview' => "'''Husk at du bare forhåndsviser denne CSS.'''
-'''Den har ikke blitt lagret ennå!'''",
-'sitejspreview' => "'''Husk at du bare forhåndsviser denne JavaScript-koden.'''
-'''Den har ikke blitt lagret ennå!'''",
-'userinvalidcssjstitle' => "'''Advarsel:''' Det finnes ikke noe utseende ved navn «$1». Husk at .css- og .js-sider bruker titler i små bokstaver, for eksempel {{ns:user}}:Eksempel/vector.css, ikke {{ns:user}}:Eksempel/Vector.css",
-'updated' => '(Oppdatert)',
-'note' => "'''Merk:'''",
-'previewnote' => "'''Husk at dette bare er en forhåndsvisning.'''
-Endringene dine har ikke blitt lagret ennå!",
-'previewconflict' => 'Slik vil teksten i redigeringsvinduet se ut dersom du lagrer den.',
-'session_fail_preview' => "'''Beklager! Klarte ikke å lagre redigeringen din. Prøv igjen. Om det fortsetter å gå galt, prøv å [[Special:UserLogout|logge ut]] og så inn igjen.'''",
-'session_fail_preview_html' => "'''Beklager! Klarte ikke å lagre redigeringen din på grunn av tap av øktdata.'''
-
-''Fordi {{SITENAME}} har rå HTML slått på, er forhåndsvisningen skjult for å forhindre JavaScript-angrep.''
-
-'''Om dette er et legitimt redigeringsforsøk, prøv igjen. Om det da ikke fungerer, prøv å [[Special:UserLogout|logge ut]] og logge inn igjen.'''",
-'token_suffix_mismatch' => "'''Redigeringen din har blitt avvist fordi klienten din ikke hadde punktasjonstegn i redigeringsteksten. Redigeringen har blitt avvist for å hindre ødeleggelse av artikkelteksten. Dette forekommer av og til når man bruker vevbaserte anonyme proxytjenester.'''",
-'edit_form_incomplete' => "'''Deler av redigeringsskjemaet nådde ikke tjeneren; dobbelsjekk at redigeringen er korrekt og prøv igjen.'''",
-'editing' => 'Redigerer $1',
-'editingsection' => 'Redigerer $1 (avsnitt)',
-'editingcomment' => 'Redigerer $1 (ny seksjon)',
-'editconflict' => 'Redigeringskonflikt: $1',
-'explainconflict' => "Noen andre har endret teksten siden du begynte å redigere.
-Den øverste boksen inneholder den nåværende tekst.
-Dine endringer vises i den nederste boksen.
-Du er nødt til å flette dine endringer sammen med den nåværende teksten.
-'''Kun''' teksten i den øverste tekstboksen blir lagret når du trykker «{{int:savearticle}}».",
-'yourtext' => 'Din tekst',
-'storedversion' => 'Den lagrede versjonen',
-'nonunicodebrowser' => "'''ADVARSEL: Nettleseren din har ikke støtte for Unicode. Skru det på før du begynner å redigere artikler.'''",
-'editingold' => "'''ADVARSEL:
-Du redigerer en gammel versjon av denne siden.
-Hvis du lagrer den, vil alle endringer foretatt siden denne versjonen bli overskrevet.'''",
-'yourdiff' => 'Forskjeller',
-'copyrightwarning' => "Merk at alle bidrag til {{SITENAME}} anses som utgitt under $2 (se $1 for detaljer).
-Om du ikke vil at dine bidrag skal kunne redigeres og distribuert fritt etter andres forgodtbefinnende, ikke legg det til her.<br />
-Du lover også at du har skrevet dette selv, eller kopiert det fra en ressurs som samsvarer med vilkårene eller ikke er vernet av opphavsrett.
-'''Ikke legg til opphavsbeskyttet materiale uten tillatelse!'''",
-'copyrightwarning2' => "Vennligst merk at alle bidrag til {{SITENAME}} kan bli redigert, endret eller fjernet av andre bidragsytere. Om du ikke vil at dine bidrag skal kunne redigeres fritt, ikke legg det til her.<br />
-Du lover også at du har skrevet dette selv, eller kopiert det fra en ressurs som er i public domain eller lignende (se $1 for detaljer). '''IKKE LEGG TIL OPPHAVSBESKYTTET MATERIALE UTEN TILLATELSE!'''",
-'readonlywarning' => "'''ADVARSEL: Databasen er låst på grunn av vedlikehold,
-så du kan ikke lagre dine endringer akkurat nå. Det kan være en god idé å
-kopiere teksten din til en tekstfil, så du kan lagre den til senere.'''
-
-Systemadministratoren som låste databasen oppga følgende årsak: $1",
-'protectedpagewarning' => "'''Advarsel: Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan redigere den.'''
-Det siste loggelementet er oppgitt under som referanse:",
-'semiprotectedpagewarning' => "'''Merk:''' Denne siden har blitt låst slik at kun registrerte brukere kan endre den.
-Det siste loggelementet er oppgitt under som referanse:",
-'cascadeprotectedwarning' => "'''Advarsel:''' Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan redigere den, fordi den inkluderes på følgende dypbeskyttede sider:<!--{{PLURAL:$1}}-->",
-'titleprotectedwarning' => "'''Advarsel: Denne siden har blitt låst slik at [[Special:ListGroupRights|spesielle rettigheter]] kreves for å opprette den.'''
-Det siste loggelementet er oppgitt under som referanse:",
-'templatesused' => '{{PLURAL:$1|Mal|Maler}} som brukes på denne siden:',
-'templatesusedpreview' => '{{PLURAL:$1|Mal|Maler}} brukt i denne forhåndsvisningen:',
-'templatesusedsection' => '{{PLURAL:$1|Mal|Maler}} brukt i denne seksjonen:',
-'template-protected' => '(beskyttet)',
-'template-semiprotected' => '(halvbeskyttet)',
-'hiddencategories' => 'Denne siden er medlem av {{PLURAL:$1|1 skjult kategori|$1 skjulte kategorier}}:',
-'edittools' => '<!-- Teksten her vil vises under redigerings- og opplastingsboksene. -->',
-'nocreatetitle' => 'Sideoppretting er begrenset',
-'nocreatetext' => '{{SITENAME}} har begrensede muligheter for oppretting av nye sider. Du kan gå tilbake og redigere en eksisterende side, eller [[Special:UserLogin|logge inn eller opprette en ny konto]].',
-'nocreate-loggedin' => 'Du har ikke tillatelse til å opprette sider.',
-'sectioneditnotsupported-title' => 'Seksjonsredigering støttes ikke',
-'sectioneditnotsupported-text' => 'Seksjonsredigering støttes ikke på denne siden.',
-'permissionserrors' => 'Tilgangsfeil',
-'permissionserrorstext' => 'Du har ikke tillatelse til å utføre dette, av følgende {{PLURAL:$1|grunn|grunner}}:',
-'permissionserrorstext-withaction' => 'Du har ikke tillatelse til å $2 {{PLURAL:$1|på grunn av|av følgende grunner}}:',
-'recreate-moveddeleted-warn' => "Advarsel: Du er i ferd med å opprette en side som tidligere har blitt slettet.'''
-
-Du bør vurdere om det er passende å fortsette å redigere denne siden.
-Slette- og flytteloggen for denne siden gjengis her:",
-'moveddeleted-notice' => 'Denne siden har blitt slettet.
-Slette- og flytteloggen vises nedenfor.',
-'log-fulllog' => 'Vis fullstendig logg',
-'edit-hook-aborted' => 'Redigering avbrutt av en funksjon, uten forklaring.',
-'edit-gone-missing' => 'Kunne ikke oppdatere siden fordi den har blitt slettet.',
-'edit-conflict' => 'Redigeringskonflikt.',
-'edit-no-change' => 'Redigeringen din ble ignorert fordi det ikke var noen endringer.',
-'edit-already-exists' => 'Kunne ikke opprette ny side fordi den finnes fra før.',
-
-# Parser/template warnings
-'expensive-parserfunction-warning' => 'Advarsel: Denne siden inneholder for mange prosesskrevende parserfunksjoner.
-
-Det burde være mindre enn {{PLURAL:$2|$2|$2}}, men er nå {{PLURAL:$1|$1|$1}}..',
-'expensive-parserfunction-category' => 'Sider med for mange prosesskrevende parserfunksjoner',
-'post-expand-template-inclusion-warning' => 'Advarsel: Størrelsen på inkluderte maler er for stor.
-Noen maler vil ikke bli inkludert.',
-'post-expand-template-inclusion-category' => 'Sider som inneholder for store maler',
-'post-expand-template-argument-warning' => 'Advarsel: Siden inneholder ett eller flere malparametere som blir for lange når de utvides.
-Disse parameterne har blitt utelatt.',
-'post-expand-template-argument-category' => 'Sider med utelatte malparametere',
-'parser-template-loop-warning' => 'Mal-loop oppdaget: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Mal er brukt for mange ganger ($1)',
-'language-converter-depth-warning' => 'Dybdegrense for språkkonvertering overskredet ($1)',
-
-# "Undo" feature
-'undo-success' => 'Redigeringen kan omgjøres. Sjekk sammenligningen under for å bekrefte at du vil gjøre dette, og lagre endringene for å fullføre omgjøringen.',
-'undo-failure' => 'Redigeringen kunne ikke omgjøres på grunn av konflikterende etterfølgende redigeringer.',
-'undo-norev' => 'Redigeringen kunne ikke fjernes fordi den ikke eksisterer eller ble slettet',
-'undo-summary' => 'Fjerner revisjon $1 av [[Special:Contributions/$2]] ([[User talk:$2|diskusjon]] | [[Special:Contributions/$2|{{int:contribslink}}]])',
-
-# Account creation failure
-'cantcreateaccounttitle' => 'Kan ikke opprette konto',
-'cantcreateaccount-text' => "Kontooppretting fra denne IP-adressen ('''$1''') har blitt blokkert av [[User:$3|$3]].
-
-Grunnen som ble oppgitt av $3 er ''$2''",
-
-# History pages
-'viewpagelogs' => 'Vis logger for denne siden',
-'nohistory' => 'Denne siden har ingen historikk.',
-'currentrev' => 'Nåværende versjon',
-'currentrev-asof' => 'Nåværende revisjon fra $1',
-'revisionasof' => 'Revisjonen fra $1',
-'revision-info' => 'Revisjon per $1 av $2',
-'previousrevision' => '← Eldre revisjon',
-'nextrevision' => 'Nyere revisjon →',
-'currentrevisionlink' => 'Nåværende revisjon',
-'cur' => 'nå',
-'next' => 'neste',
-'last' => 'forrige',
-'page_first' => 'første',
-'page_last' => 'siste',
-'histlegend' => "Valg av diff: merk i radioboksene de revisjonene du ønsker å sammenligne og trykk linjeskift eller knappen nederst på siden.<br />
-Forklaring: '''({{int:cur}})''' = forskjell fra nåværende revisjon, '''({{int:last}})''' = forskjell fra foregående revisjon, '''{{int:minoreditletter}}''' = mindre endring.",
-'history-fieldset-title' => 'Bla i historikken',
-'history-show-deleted' => 'Kun slettede',
-'histfirst' => 'Første',
-'histlast' => 'Siste',
-'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
-'historyempty' => '(tom)',
-
-# Revision feed
-'history-feed-title' => 'Revisjonshistorikk',
-'history-feed-description' => 'Revisjonshistorikk for denne siden',
-'history-feed-item-nocomment' => '$1 på $2',
-'history-feed-empty' => 'Den etterspurte siden finnes ikke. Den kan ha blitt slettet fra wikien, eller fått et nytt navn. Prøv å [[Special:Search|søke]] etter beslektede sider.',
-
-# Revision deletion
-'rev-deleted-comment' => '(redigeringskommentar fjernet)',
-'rev-deleted-user' => '(brukernavn fjernet)',
-'rev-deleted-event' => '(fjernet loggoppføring)',
-'rev-deleted-user-contribs' => '[brukernavn eller IP-adresse fjernet – redigeringen vises ikke blant bidragene]',
-'rev-deleted-text-permission' => "Denne revisjonen har blitt '''slettet'''.
-Det kan være detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].",
-'rev-deleted-text-unhide' => "Denne siderevisjonen har blitt '''slettet'''.
-Se etter detaljer i slettingsloggen: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}].
-Som administrator kan du fortsatt [$1 se revisjonen] om du ønsker det.",
-'rev-suppressed-text-unhide' => "Denne siderevisjonen har blitt '''skjult'''.
-Informasjon om dette kan finnes i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
-Som administrator kan du fortsatt [$1 se revisjonen] om du ønsker det.",
-'rev-deleted-text-view' => "Denne siderevisjonen har blitt '''slettet'''.
-Som administrator kan du fortsatt se den. Detaljer finnes i slettingsloggen: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}].",
-'rev-suppressed-text-view' => "!Denne siderevisjonen har blitt '''skjult'''.
-Som administrator kan du se den; detaljer kan finnes i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].",
-'rev-deleted-no-diff' => "Du kan ikke vise forskjellen fordi en av versjonene har blitt '''slettet'''.
-Det kan finnes flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].",
-'rev-suppressed-no-diff' => "Du kanne ikke se revisjonsforskjellen fordi en av revisjonene har blitt '''slettet'''.",
-'rev-deleted-unhide-diff' => "Én av revisjonene i denne diffen har blitt '''slettet'''.
-Det finnes flere detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} slettingsloggen].
-Som administrator kan du fortsatt [$1 se diffen] om du ønsker å gå videre.",
-'rev-suppressed-unhide-diff' => "En av siderevisjonene i denne diffen har blitt '''skjult'''.
-Det kan være detaljer i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
-Som administrator kan du fortsatt [$1 se diffen] om du ønsker å gå videre.",
-'rev-deleted-diff-view' => "En av revisjonene i denne diffen har blitt '''slettet'''.
-Som administrator kan du se diffen; det kan finnes detaljer i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-suppressed-diff-view' => "En av revisjonene i denne diffen har blitt '''skjult'''.
-Som administrator kan du se denne diffen; det kan finnes detaljer i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} skjulingsloggen].",
-'rev-delundel' => 'vis/skjul',
-'rev-showdeleted' => 'vis',
-'revisiondelete' => 'Slett/gjenopprett revisjoner',
-'revdelete-nooldid-title' => 'Ugyldig målversjon',
-'revdelete-nooldid-text' => 'Du har ikke angitt en målversjon for denne funksjonen, den angitte versjonen finnes ikke, eller du forsøker å skjule den nåværende versjonen.',
-'revdelete-nologtype-title' => 'Ingen loggtype spesifisert',
-'revdelete-nologtype-text' => 'Du har ikke spesifisert en loggtype å utføre denne handlingen på.',
-'revdelete-nologid-title' => 'Ugyldig loggelement',
-'revdelete-nologid-text' => 'Du har enten ikke spesifisert ett loggelement å utføre på denne funksjonen, eller spesifisert element finnes ikke.',
-'revdelete-no-file' => 'Den spesifiserte filen finnes ikke.',
-'revdelete-show-file-confirm' => 'Er du sikker på at du ønsker å vise en slettet versjon av filen «<nowiki>$1</nowiki>» fra den $2 klokken $3?',
-'revdelete-show-file-submit' => 'Ja',
-'revdelete-selected' => "'''{{PLURAL:$2|Valgt revisjon|Valgte revisjoner}} av [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Valgt loggoppføring|Valgte loggoppføringer}}:'''",
-'revdelete-text' => "'''Slettede versjoner og oppføringer vil fortsatt vises i sidehistorikken og loggene, men deler av innholdet vil ikke lenger bli offentliggjort.'''
-Andre administratorer på {{SITENAME}} vil fortsatt kunne se det skjulte innholdet, og kan gjenopprette det, med mindre videre begrensninger blir gitt av sideoperatørene.",
-'revdelete-confirm' => 'Bekreft at du ønsker å gjøre dette, at du forstår konsekvensene, og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].',
-'revdelete-suppress-text' => "Skjuling bør '''kun''' brukes i følgende tilfeller:
-* Mulig injurierende utsagn
-* Upassende personlige opplysninger, herunder
-*: ''privatadresser og -telefonnumre, fødselsnumre og lignende''",
-'revdelete-legend' => 'Fastsett synlighetsbegrensninger',
-'revdelete-hide-text' => 'Skjul revisjonstekst',
-'revdelete-hide-image' => 'Skjul filinnhold',
-'revdelete-hide-name' => 'Skjul handling og mål',
-'revdelete-hide-comment' => 'Skjul redigeringsforklaring',
-'revdelete-hide-user' => 'Skjul bidragsyters brukernavn eller IP',
-'revdelete-hide-restricted' => 'La disse begrensningene gjelde for administratorer også, og steng dette grensesnittet',
-'revdelete-radio-same' => '(ikke endre)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Nei',
-'revdelete-suppress' => 'Skjul informasjon også fra administratorer',
-'revdelete-unsuppress' => 'Fjern betingelser på gjenopprettede revisjoner',
-'revdelete-log' => 'Årsak:',
-'revdelete-submit' => 'Utfør på {{PLURAL:$1|valgt revisjon|valgte revisjoner}}',
-'revdelete-success' => "'''Versjonssynlighet vellykket oppdatert.'''",
-'revdelete-failure' => "'''Kunne ikke endre versjonssynligheten:'''
-$1",
-'logdelete-success' => "'''Hendelsessynlighet satt.'''",
-'logdelete-failure' => "'''Loggens synlighet kunne ikke bli stilt inn:'''
-$1",
-'revdel-restore' => 'endre synlighet',
-'revdel-restore-deleted' => 'slettede revisjoner',
-'revdel-restore-visible' => 'synlige revisjoner',
-'pagehist' => 'Sidehistorikk',
-'deletedhist' => 'Slettet historikk',
-'revdelete-hide-current' => 'Feil under skjuling av objektet datert $2, $1: dette er den gjeldende revisjonen.
-Den kan ikke skjules.',
-'revdelete-show-no-access' => 'Feil under visning av objekt datert $2, $1: dette objektet har blitt markert "begrenset".
-Du har ikke tilgang til det.',
-'revdelete-modify-no-access' => 'Feil under endring av objekt datert $2, $1: dette objektet har blitt markert "begrenset".
-Du har ikke tilgang til det.',
-'revdelete-modify-missing' => 'Feil under endring av objekt ID $1: det mangler i databasen!',
-'revdelete-no-change' => "'''Advarsel:''' objektet datert $2 $1 hadde allerede synlighetsinnstillingene du forespurte.",
-'revdelete-concurrent-change' => 'Feil under endring av objektet datert $2, $1: dets status ser ut til å ha blitt endret av noen andre mens du prøvde å endre det.
-Vennligst sjekk loggen.',
-'revdelete-only-restricted' => 'Feil ved gjemming av objekt datert $2, $1: du kan ikke skjule objekt fra å vises for administratorer uten også å velge en av de andre visningsalternativene.',
-'revdelete-reason-dropdown' => '*Vanlige slettingsgrunner
-** Opphavsrettsbrudd
-** Upassende personopplysninger
-** Mulig falskt sladder',
-'revdelete-otherreason' => 'Annen/ytterligere årsak:',
-'revdelete-reasonotherlist' => 'Annen årsak',
-'revdelete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
-'revdelete-offender' => 'Forfatter av denne versjonen:',
-
-# Suppression log
-'suppressionlog' => 'Sideskjulingslogg',
-'suppressionlogtext' => 'Under er en liste over sider som er slettet eller blokkert med innhold skjult fra administratorer.
-Se [[Special:BlockList|IP-blokkeringsliste]] for oversikt over aktuelle utelukkelser og blokkeringer.',
-
-# History merging
-'mergehistory' => 'Flett sidehistorikker',
-'mergehistory-header' => 'Denne siden lar deg flette historikken til to sider.
-Forsikre deg om at denne endringen vil opprettholde historisk sidekontinuitet.',
-'mergehistory-box' => 'Flett historikken til to sider:',
-'mergehistory-from' => 'Kildeside:',
-'mergehistory-into' => 'Målside:',
-'mergehistory-list' => 'Flettbar redigeringshistorikk',
-'mergehistory-merge' => 'Følgende revisjoner av [[:$1]] kan flettes til [[:$2]]. Du kan velge å flette kun de revisjonene som kom før tidspunktet gitt i tabellen. Merk at bruk av navigasjonslenkene vil resette denne kolonnen.',
-'mergehistory-go' => 'Vis flettbare redigeringer',
-'mergehistory-submit' => 'Flett revisjoner',
-'mergehistory-empty' => 'Ingen revisjoner kan flettes.',
-'mergehistory-success' => '{{PLURAL:$3|Én revisjon|$3 revisjoner}} av [[:$1]] ble flettet til [[:$2]].',
-'mergehistory-fail' => 'Klarte ikke å utføre historikkfletting; sjekk siden og tidsparameterne igjen.',
-'mergehistory-no-source' => 'Kildesiden $1 finnes ikke.',
-'mergehistory-no-destination' => 'Målsiden $1 finnes ikke.',
-'mergehistory-invalid-source' => 'Kildesiden må ha en gyldig tittel.',
-'mergehistory-invalid-destination' => 'Målsiden må ha en gyldig tittel.',
-'mergehistory-autocomment' => 'Flettet [[:$1]] inn i [[:$2]]',
-'mergehistory-comment' => 'Flettet [[:$1]] inn i [[:$2]]: $3',
-'mergehistory-same-destination' => 'Kilde- og målside kan ikke være den samme.',
-'mergehistory-reason' => 'Årsak:',
-
-# Merge log
-'mergelog' => 'Flettingslogg',
-'pagemerge-logentry' => 'flettet [[$1]] til [[$2]] (revisjoner fram til $3)',
-'revertmerge' => 'Omgjør fletting',
-'mergelogpagetext' => 'Nedenfor er en liste over de nyligste flettingene av sidehistorikker.',
-
-# Diffs
-'history-title' => 'Revisjonshistorikk for «$1»',
-'difference-multipage' => '(Forskjell mellom sider)',
-'lineno' => 'Linje $1:',
-'compareselectedversions' => 'Sammenlign valgte revisjoner',
-'showhideselectedversions' => 'Vis/skjul valgte versjoner',
-'editundo' => 'angre',
-'diff-multi' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av {{PLURAL:$2|én bruker|$2 brukere}} vises ikke)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av mer enn $2 {{PLURAL:$2|bruker|brukere}} vises ikke)',
-
-# Search results
-'searchresults' => 'Søkeresultat',
-'searchresults-title' => 'Søkeresultat for «$1»',
-'searchresulttext' => 'For mer informasjon om søking i {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som begynner med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenker til «$1»]])",
-'searchsubtitleinvalid' => "Du søkte etter '''$1'''",
-'toomanymatches' => 'For mange mulige svar, prøv med en annen spørring',
-'titlematches' => 'Artikkeltitler med treff på forespørselen',
-'notitlematches' => 'Ingen sidetitler samsvarte med søket',
-'textmatches' => 'Artikkeltekster med treff på forespørselen',
-'notextmatches' => 'Inden sidetekst samsvarte med søket',
-'prevn' => 'forrige {{PLURAL:$1|$1}}',
-'nextn' => 'neste {{PLURAL:$1|$1}}',
-'prevn-title' => 'Forrige $1 {{PLURAL:$1|resultat|resultater}}',
-'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultater}}',
-'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
-'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søkeinnstillinger',
-'searchmenu-exists' => "* Siden '''[[$1]]'''",
-'searchmenu-new' => "'''Opprett siden ''[[:$1]]'' på denne wikien.'''",
-'searchhelp-url' => 'Help:Hjelp',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynner med dette]]',
-'searchprofile-articles' => 'Innholdssider',
-'searchprofile-project' => 'Hjelp- og prosjektsider',
-'searchprofile-images' => 'Multimedia',
-'searchprofile-everything' => 'Alt',
-'searchprofile-advanced' => 'Avansert',
-'searchprofile-articles-tooltip' => 'Søk i $1',
-'searchprofile-project-tooltip' => 'Søk i $1',
-'searchprofile-images-tooltip' => 'Søk etter filer',
-'searchprofile-everything-tooltip' => 'Søk i alt innhold (inkldert diskusjonssider)',
-'searchprofile-advanced-tooltip' => 'Søk i visse navnerom',
-'search-result-size' => '$1 ({{PLURAL:$2|ett|$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&nbsp;%',
-'search-redirect' => '(omdirigering $1)',
-'search-section' => '(avsnitt $1)',
-'search-suggest' => 'Mente du: $1',
-'search-interwiki-caption' => 'Søsterprosjekt',
-'search-interwiki-default' => '$1-resultat:',
-'search-interwiki-more' => '(mer)',
-'search-mwsuggest-enabled' => 'med forslag',
-'search-mwsuggest-disabled' => 'ingen forslag',
-'search-relatedarticle' => 'Relatert',
-'mwsuggest-disable' => 'Slå av AJAX-forslag',
-'searcheverything-enable' => 'Søk i alle navnerom',
-'searchrelated' => 'relatert',
-'searchall' => 'alle',
-'showingresults' => "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
-'showingresultsnum' => "Nedenfor vises {{PLURAL:$3|'''ett''' resultat|'''$3''' resultater}} fra og med nummer '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
-'nonefound' => "'''Merk''': Som standard søkes det kun i enkelte navnerom.
-For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler, osv), eller bruk det ønskede navnerommet som prefiks.",
-'search-nonefound' => 'Det var ingen resultater som passet til søket.',
-'powersearch' => 'Avansert søk',
-'powersearch-legend' => 'Avansert søk',
-'powersearch-ns' => 'Søk i navnerom:',
-'powersearch-redir' => 'Vis omdirigeringer',
-'powersearch-field' => 'Søk etter',
-'powersearch-togglelabel' => 'Merk:',
-'powersearch-toggleall' => 'Alle',
-'powersearch-togglenone' => 'Ingen',
-'search-external' => 'Eksternt søk',
-'searchdisabled' => 'Søkefunksjonen er slått av. Du kan søke via Google i mellomtiden. Merk at Googles indeksering av {{SITENAME}} muligens er utdatert.',
-
-# Quickbar
-'qbsettings' => 'Brukerinnstillinger for hurtigmeny.',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast høyre',
-'qbsettings-floatingleft' => 'Flytende venstre',
-'qbsettings-floatingright' => 'Flytende til høyre',
-'qbsettings-directionality' => '"Låst", f. eks. i posisjon "låst til venstre eller til høyre". For venstre-mot-høyre-språk vil hurtigvelgeren være satt til venstre, for høyre-mot-venstre-språk til høyre.',
-
-# Preferences page
-'preferences' => 'Innstillinger',
-'mypreferences' => 'Innstillinger',
-'prefs-edits' => 'Antall redigeringer:',
-'prefsnologin' => 'Ikke logget inn',
-'prefsnologintext' => 'Du må være <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} logget inn]</span> for å endre brukerinnstillingene.',
-'changepassword' => 'Endre passord',
-'prefs-skin' => 'Utseende',
-'skin-preview' => 'Forhåndsvisning',
-'datedefault' => 'Ingen foretrukket',
-'prefs-beta' => 'Betafunksjoner',
-'prefs-datetime' => 'Dato og tid',
-'prefs-labs' => 'Lab-funksjoner',
-'prefs-personal' => 'Brukerdata',
-'prefs-rc' => 'Siste endringer',
-'prefs-watchlist' => 'Overvåkningsliste',
-'prefs-watchlist-days' => 'Dager som skal vises i overvåkningslisten:',
-'prefs-watchlist-edits' => 'Antall redigeringer som skal vises i utvidet overvåkningsliste:',
-'prefs-watchlist-edits-max' => 'Maksimum antall: 1000',
-'prefs-watchlist-token' => 'Nøkkel for overvåkningsliste',
-'prefs-misc' => 'Diverse',
-'prefs-resetpass' => 'Endre passord',
-'prefs-email' => 'Alternativer for e-post',
-'prefs-rendering' => 'Utseende',
-'saveprefs' => 'Lagre',
-'resetprefs' => 'Tilbakestill ulagrede endringer',
-'restoreprefs' => 'Tilbakestill til standardinnstillinger overalt',
-'prefs-editing' => 'Redigering',
-'prefs-edit-boxsize' => 'Størrelse på redigeringsvinduet.',
-'rows' => 'Rader:',
-'columns' => 'Kolonner',
-'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultater per side:',
-'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
-'stub-threshold-disabled' => 'Deaktivert',
-'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
-'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dag|dager}})',
-'recentchangescount' => 'Antall redigeringer som skal vises som standard:',
-'prefs-help-recentchangescount' => 'Dette inkluderer nylige endringer, sidehistorikk og logger.',
-'prefs-help-watchlist-token' => 'Om du fyller ut dette feltet med et hemmelig tall, vil det lages en RSS-liste for overvåkningslisten din.
-Alle som vet det rette tallet vil være i stand til å lese overvåkningslisten din, så velg en sikker verdi.
-Her er et tilfeldig tall du kan bruke: $1',
-'savedprefs' => 'Innstillingene ble lagret.',
-'timezonelegend' => 'Tidssone:',
-'localtime' => 'Lokaltid:',
-'timezoneuseserverdefault' => 'Bruk wikistandard ($1)',
-'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
-'timezoneoffset' => 'Forskjell¹:',
-'servertime' => 'Serverens tid er nå:',
-'guesstimezone' => 'Hent tidssone fra nettleseren',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-america' => 'Amerika',
-'timezoneregion-antarctica' => 'Antarktis',
-'timezoneregion-arctic' => 'Arktis',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Atlanterhavet',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europe',
-'timezoneregion-indian' => 'Det indiske hav',
-'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillat andre å sende meg e-post',
-'prefs-searchoptions' => 'Søkealternativ',
-'prefs-namespaces' => 'Navnerom',
-'defaultns' => 'Søk ellers i disse navnerommene:',
-'default' => 'standard',
-'prefs-files' => 'Filer',
-'prefs-custom-css' => 'Personlig CSS',
-'prefs-custom-js' => 'Personlig Javascript',
-'prefs-common-css-js' => 'Delt CSS/JS for alle drakter:',
-'prefs-reset-intro' => 'Du kan bruke denne siden til å tilbakestille innstillingene dine til standardinnstillingene.
-Dette kan ikke tilbakestilles.',
-'prefs-emailconfirm-label' => 'E-postbekreftelse:',
-'prefs-textboxsize' => 'Størrelse på redigeringsvindu',
-'youremail' => 'E-post:',
-'username' => 'Brukernavn:',
-'uid' => 'Bruker-ID:',
-'prefs-memberingroups' => 'Medlem i følgende {{PLURAL:$1|gruppe|grupper}}:',
-'prefs-registration' => 'Registreringstid:',
-'yourrealname' => 'Virkelig navn:',
-'yourlanguage' => 'Språk:',
-'yourvariant' => 'Språkvariant for innhold:',
-'yournick' => 'Signatur:',
-'prefs-help-signature' => 'Kommentarer på diskusjonssider bør alltid signeres med «<nowiki>~~~~</nowiki>», som vil bli konvertert til din signatur med tidspunkt.',
-'badsig' => 'Ugyldig råsignatur; sjekk HTML-elementer.',
-'badsiglength' => 'Signaturen er for lang.
-Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
-'yourgender' => 'Kjønn:',
-'gender-unknown' => 'Uspesifisert',
-'gender-male' => 'Mann',
-'gender-female' => 'Kvinne',
-'prefs-help-gender' => 'Valgfritt: brukes for kjønnskorrekt tekst av programvaren. Denne informasjonen vil være offentlig.',
-'email' => 'E-post',
-'prefs-help-realname' => '* Virkelig navn (valgfritt): dersom du velger å oppgi navnet, vil det bli brukt til å kreditere deg for ditt arbeid.',
-'prefs-help-email' => 'Å angi e-postadresse er valgfritt, men er nødvendig for å få tilsendt nytt passord om du skulle glemme det gamle.',
-'prefs-help-email-others' => 'Du kan også velge å la andre brukere kontakte deg via brukersiden din uten å røpe identiteten din.',
-'prefs-help-email-required' => 'E-postadresse er påkrevd.',
-'prefs-info' => 'Grunnleggende informasjon',
-'prefs-i18n' => 'Internasjonalisering',
-'prefs-signature' => 'Signatur',
-'prefs-dateformat' => 'Datoformat',
-'prefs-timeoffset' => 'Tidsforskyvning',
-'prefs-advancedediting' => 'Avanserte alternativ',
-'prefs-advancedrc' => 'Avanserte alternativ',
-'prefs-advancedrendering' => 'Avanserte alternativ',
-'prefs-advancedsearchoptions' => 'Avanserte alternativ',
-'prefs-advancedwatchlist' => 'Avanserte alternativ',
-'prefs-displayrc' => 'Visningsalternativ',
-'prefs-displaysearchoptions' => 'Visningsalternativer',
-'prefs-displaywatchlist' => 'Visningsalternativer',
-'prefs-diffs' => 'Forskjeller',
-
-# User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'E-postadressen ser gyldig ut',
-'email-address-validity-invalid' => 'Skriv inn en gyldig e-postadresse',
-
-# User rights
-'userrights' => 'Brukerrettighetskontroll',
-'userrights-lookup-user' => 'Ordne brukergrupper',
-'userrights-user-editname' => 'Skriv inn et brukernavn:',
-'editusergroup' => 'Endre brukergrupper',
-'userrights-editusergroup' => 'Rediger brukergrupper',
-'saveusergroups' => 'Lagre brukergrupper',
-'userrights-groupsmember' => 'Medlem av:',
-'userrights-groupsmember-auto' => 'Implisitt medlem av:',
-'userrights-groups-help' => 'Du kan endre hvilke grupper denne brukeren er medlem av.
-* En avkrysset boks betyr at brukeren er medlem av gruppen.
-* En uavkrysset boks betyr at brukeren ikke er medlem av gruppen.
-* En * betyr at du ikke kan fjerne gruppemedlemskapet når du har lagt det til, eller vice versa.',
-'userrights-reason' => 'Årsak:',
-'userrights-no-interwiki' => 'Du har ikke tillatelse til å endre brukerrettigheter på andre wikier.',
-'userrights-nodatabase' => 'Databasen $1 finnes ikke, eller er ikke lokal.',
-'userrights-nologin' => 'Du må [[Special:UserLogin|logge inn]] med en administratorkonto for å endre brukerrettigheter.',
-'userrights-notallowed' => 'Kontoen din har ikke tillatelse til å legge til eller fjerne brukerrettigheter.',
-'userrights-changeable-col' => 'Grupper du kan endre',
-'userrights-unchangeable-col' => 'Grupper du ikke kan endre',
-'userrights-irreversible-marker' => '$1 *',
-
-# Groups
-'group' => 'Gruppe:',
-'group-user' => 'Brukere',
-'group-autoconfirmed' => 'Autobekreftede brukere',
-'group-bot' => 'Roboter',
-'group-sysop' => 'Administratorer',
-'group-bureaucrat' => 'Byråkrater',
-'group-suppress' => 'Sidefjernere',
-'group-all' => '(alle)',
-
-'group-user-member' => 'bruker',
-'group-autoconfirmed-member' => 'autobekreftet bruker',
-'group-bot-member' => 'robot',
-'group-sysop-member' => 'administrator',
-'group-bureaucrat-member' => 'byråkrat',
-'group-suppress-member' => 'revisjonsfjerner',
-
-'grouppage-user' => '{{ns:project}}:Brukere',
-'grouppage-autoconfirmed' => '{{ns:project}}:Autobekreftede brukere',
-'grouppage-bot' => '{{ns:project}}:Roboter',
-'grouppage-sysop' => '{{ns:project}}:Administratorer',
-'grouppage-bureaucrat' => '{{ns:project}}:Byråkrater',
-'grouppage-suppress' => '{{ns:project}}:Historikkrydding',
-
-# Rights
-'right-read' => 'Se sider',
-'right-edit' => 'Redigere sider',
-'right-createpage' => 'Opprette sider (som ikke er diskusjonssider)',
-'right-createtalk' => 'Opprette diskusjonssider',
-'right-createaccount' => 'Opprette nye kontoer',
-'right-minoredit' => 'Marker endringer som mindre',
-'right-move' => 'Flytte sider',
-'right-move-subpages' => 'Flytte sider med undersider',
-'right-move-rootuserpages' => 'Flytte hovedbrukersider',
-'right-movefile' => 'Flytte filer',
-'right-suppressredirect' => 'Behøver ikke å opprette omdirigeringer ved sideflytting',
-'right-upload' => 'Laste opp filer',
-'right-reupload' => 'Skrive over eksisterende filer',
-'right-reupload-own' => 'Skrive over egne filer',
-'right-reupload-shared' => 'Skrive over delte filer lokalt',
-'right-upload_by_url' => 'Laste opp en fil via URL',
-'right-purge' => 'Rense mellomlageret for sider',
-'right-autoconfirmed' => 'Redigere halvlåste sider',
-'right-bot' => 'Bli behandlet som en automatisk prosess',
-'right-nominornewtalk' => 'Får ikke «Du har nye meldinger»-beskjeden ved mindre endringer på diskusjonsside',
-'right-apihighlimits' => 'Bruke API med høyere grenser',
-'right-writeapi' => 'Redigere via API',
-'right-delete' => 'Slette sider',
-'right-bigdelete' => 'Slette sider med stor historikk',
-'right-deleterevision' => 'Slette og gjenopprette enkeltrevisjoner av sider',
-'right-deletedhistory' => 'Se slettet sidehistorikk uten tilhørende sidetekst',
-'right-deletedtext' => 'Vis slettet tekst og endringer mellom slettede versjoner',
-'right-browsearchive' => 'Søke i slettede sider',
-'right-undelete' => 'Gjenopprette sider',
-'right-suppressrevision' => 'Se og gjenopprette skjulte siderevisjoner',
-'right-suppressionlog' => 'Se private logger',
-'right-block' => 'Blokkere andre brukere fra å redigere',
-'right-blockemail' => 'Blokkere brukere fra å sende e-post',
-'right-hideuser' => 'Blokkere et brukernavn og skjule det fra det offentlige',
-'right-ipblock-exempt' => 'Kan redigere fra blokkerte IP-adresser',
-'right-proxyunbannable' => 'Kan redigere fra blokkerte proxyer',
-'right-unblockself' => 'Fjern blokkering av seg selv',
-'right-protect' => 'Endre beskyttelsesnivåer',
-'right-editprotected' => 'Redigere beskyttede sider',
-'right-editinterface' => 'Redigere brukergrensesnittet',
-'right-editusercssjs' => 'Redigere andre brukeres CSS- og JS-filer',
-'right-editusercss' => 'Redigere andre brukeres CSS-filer',
-'right-edituserjs' => 'Redigere andre brukeres JS-filer',
-'right-rollback' => 'Raskt tilbakestille den siste brukeren som har redigert en gitt side',
-'right-markbotedits' => 'Markere tilbakestillinger som robotredigeringer',
-'right-noratelimit' => 'Påvirkes ikke av hastighetsgrenser',
-'right-import' => 'Importere sider fra andre wikier',
-'right-importupload' => 'Importere sider via opplasting',
-'right-patrol' => 'Markere redigeringer som patruljerte',
-'right-autopatrol' => 'Får sine egne redigeringer merket som patruljerte',
-'right-patrolmarks' => 'Bruke patruljeringsfunksjoner i siste endringer',
-'right-unwatchedpages' => 'Se listen over uovervåkede sider',
-'right-mergehistory' => 'Flette sidehistorikker',
-'right-userrights' => 'Redigere alle brukerrettigheter',
-'right-userrights-interwiki' => 'Redigere rettigheter for brukere på andre wikier',
-'right-siteadmin' => 'Låse og låse opp databasen',
-'right-override-export-depth' => 'Eksporter sider inkludert lenkede sider til en dypde på 5',
-'right-sendemail' => 'Send e-post til andre brukere',
-
-# User rights log
-'rightslog' => 'Brukerrettighetslogg',
-'rightslogtext' => 'Dette er en logg over forandringer i brukerrettigheter.',
-'rightslogentry' => 'endret gruppe for $1 fra $2 til $3',
-'rightslogentry-autopromote' => 'ble automatisk forfremmet fra $2 til $3',
-'rightsnone' => '(ingen)',
-
-# Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'se denne siden',
-'action-edit' => 'redigere denne siden',
-'action-createpage' => 'opprette sider',
-'action-createtalk' => 'opprette diskusjonssider',
-'action-createaccount' => 'opprette denne kontoen',
-'action-minoredit' => 'merke denne redigeringen som mindre',
-'action-move' => 'flytte denne siden',
-'action-move-subpages' => 'flytte denne siden og dens undersider',
-'action-move-rootuserpages' => 'flytte hovedbrukersider',
-'action-movefile' => 'flytte denne filen',
-'action-upload' => 'laste opp denne filen',
-'action-reupload' => 'overskrive den nåværende filen',
-'action-reupload-shared' => 'overskrive denne filen på fellesdatabasen',
-'action-upload_by_url' => 'laste opp denne filen fra en URL',
-'action-writeapi' => 'bruke skrive-API-en',
-'action-delete' => 'slette denne siden',
-'action-deleterevision' => 'slette denne revisjonen',
-'action-deletedhistory' => 'se denne sidens slettede historikk',
-'action-browsearchive' => 'søke i slettede sider',
-'action-undelete' => 'gjenopprette denne siden',
-'action-suppressrevision' => 'se og gjenopprette denne skjulte revisjonen',
-'action-suppressionlog' => 'se denne private loggen',
-'action-block' => 'blokkere denne brukeren fra å redigere',
-'action-protect' => 'endre denne sidens beskyttelsesnivåer',
-'action-import' => 'importere denne siden fra en annen wiki',
-'action-importupload' => 'importere denne siden fra en opplastet fil',
-'action-patrol' => 'merke andre brukeres redigeringer som patruljert',
-'action-autopatrol' => 'merke redigeringene dine som patruljert',
-'action-unwatchedpages' => 'vise listen over uovervåkede sider',
-'action-mergehistory' => 'flette sidens historikk',
-'action-userrights' => 'redigere alle brukerrettigheter',
-'action-userrights-interwiki' => 'endre brukerrettigheter for brukere på andre wikier',
-'action-siteadmin' => 'låse eller låse opp databasen',
-
-# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|endring|endringer}}',
-'recentchanges' => 'Siste endringer',
-'recentchanges-legend' => 'Alternativ for siste endringer',
-'recentchanges-summary' => 'Vis de siste endringene til denne siden',
-'recentchanges-feed-description' => 'Følg med på siste endringer i denne wikien med denne matingen.',
-'recentchanges-label-newpage' => 'Denne redigeringen opprettet en ny side',
-'recentchanges-label-minor' => 'Dette er en mindre endring',
-'recentchanges-label-bot' => 'Denne redigeringen ble gjort av en bot',
-'recentchanges-label-unpatrolled' => 'Denne redigeringen har ikke blitt patruljert ennå',
-'rcnote' => "Nedenfor vises {{PLURAL:$1|'''1''' endring|de siste '''$1''' endringene}} fra {{PLURAL:$2|det siste døgnet|de siste '''$2''' døgnene}}, per $5 $4.",
-'rcnotefrom' => "Nedenfor er endringene fra '''$2''' (opp til '''$1''' vises).",
-'rclistfrom' => 'Vis nye endringer med start fra $1',
-'rcshowhideminor' => '$1 mindre endringer',
-'rcshowhidebots' => '$1 roboter',
-'rcshowhideliu' => '$1 innloggede brukere',
-'rcshowhideanons' => '$1 anonyme brukere',
-'rcshowhidepatr' => '$1 godkjente endringer',
-'rcshowhidemine' => '$1 mine endringer',
-'rclinks' => 'Vis siste $1 endringer i de siste $2 dagene<br />$3',
-'diff' => 'diff',
-'hist' => 'hist',
-'hide' => 'Skjul',
-'show' => 'Vis',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[$1 overvåkende {{PLURAL:$1|bruker|brukere}}]',
-'rc_categories' => 'Begrens til kategorier (skilletegn: «|»)',
-'rc_categories_any' => 'Alle',
-'newsectionsummary' => '/* $1 */ ny seksjon',
-'rc-enhanced-expand' => 'Vis detaljer (krever JavaScript)',
-'rc-enhanced-hide' => 'Skjul detaljer',
-
-# Recent changes linked
-'recentchangeslinked' => 'Relaterte endringer',
-'recentchangeslinked-feed' => 'Relaterte endringer',
-'recentchangeslinked-toolbox' => 'Relaterte endringer',
-'recentchangeslinked-title' => 'Endringer relatert til «$1»',
-'recentchangeslinked-noresult' => 'Ingen endringer på lenkede sider i den gitte perioden.',
-'recentchangeslinked-summary' => "Dette er en liste over de siste endringene på sidene lenket fra en spesifisert side (eller til meldlemmer av en spesifisert kategori).
-Sider på [[Special:Watchlist|overvåkningslisten din]] er i '''fet skrift'''.",
-'recentchangeslinked-page' => 'Sidenavn:',
-'recentchangeslinked-to' => 'Vis endringer på sider som lenker til den gitte siden istedet',
-
-# Upload
-'upload' => 'Last opp fil',
-'uploadbtn' => 'Last opp fil',
-'reuploaddesc' => 'Avbryt opplasting og gå tilbake til opplastingsskjemaet',
-'upload-tryagain' => 'Send inn endret filbeskrivelse',
-'uploadnologin' => 'Ikke logget inn',
-'uploadnologintext' => 'Du må være [[Special:UserLogin|logget inn]] for å kunne laste opp filer.',
-'upload_directory_missing' => 'Oppplastingsmappen ($1) mangler og kunne ikke opprettes av tjeneren.',
-'upload_directory_read_only' => 'Opplastingsmappa ($1) er ikke skrivbar for tjeneren.',
-'uploaderror' => 'Feil under opplasting av fil',
-'upload-recreate-warning' => "'''Advarsel: En fil med det navnet har blitt slettet eller flyttet.'''
-
-Slette- og flytteloggen for denne siden gjengis her:",
-'uploadtext' => "Bruk skjemaet nedenfor for å laste opp filer.
-For å se eller søke i eksisterende filer, gå til [[Special:FileList|listen over filer]]. Opplastinger lagres også i [[Special:Log/upload|opplastingsloggen]].
-
-For å inkludere en fil på en side, bruk en slik lenke:
-*'''<tt><nowiki>[[</nowiki>{{ns:file}}:Filnavn.jpg<nowiki>]]</nowiki></tt>''' for å bruke bildet i opprinnelig form
-*'''<tt><nowiki>[[</nowiki>{{ns:file}}:Filnavn.png|200px|thumb|left|Alternativ tekst<nowiki>]]</nowiki></tt>''' for å bruke bildet med en bredde på 200&nbsp;piksler, venstrestilt og med «Alternativ tekst» som beskrivelse
-*'''<tt><nowiki>[[</nowiki>{{ns:media}}:Filnavn.ogg<nowiki>]]</nowiki></tt>''' for å lenke direkte til filen uten å vise den",
-'upload-permitted' => 'Tillatte filtyper: $1.',
-'upload-preferred' => 'Foretrukne filtyper: $1',
-'upload-prohibited' => 'Forbudte filtyper: $1.',
-'uploadlog' => 'opplastingslogg',
-'uploadlogpage' => 'Opplastingslogg',
-'uploadlogpagetext' => 'Her er en liste over de siste opplastede filene.
-Se [[Special:NewFiles|galleriet over nye filer]] for en mer visuell visning',
-'filename' => 'Filnavn',
-'filedesc' => 'Beskrivelse',
-'fileuploadsummary' => 'Beskrivelse:',
-'filereuploadsummary' => 'Filendringer:',
-'filestatus' => 'Opphavsrettsstatus:',
-'filesource' => 'Kilde:',
-'uploadedfiles' => 'Filer som er lastet opp',
-'ignorewarning' => 'Ignorer advarselen og lagre filen likevel',
-'ignorewarnings' => 'Ignorer eventuelle advarsler',
-'minlength1' => 'Filnavn må være på minst én bokstav.',
-'illegalfilename' => 'Filnavnet «$1» inneholder ugyldige tegn. Gi filen et nytt navn og prøv igjen.',
-'badfilename' => 'Navnet på filen er blitt endret til «$1».',
-'filetype-mime-mismatch' => 'Filendelsen «.$1» tilsvarer ikke MIME-typen som oppgis i filen ($2).',
-'filetype-badmime' => 'Filer av typen «$1» kan ikke lastes opp.',
-'filetype-bad-ie-mime' => 'Kan ikke laste opp denne filen fordi Internet Explorer ville detektert denne som «$1», noe som er ikke er tillatt, og en potensielt farlig filtype.',
-'filetype-unwanted-type' => "'''«.$1»''' er en uønsket filtype.
-{{PLURAL:$3|Foretrukken filtype|Foretrukne filtyper}} er $2.",
-'filetype-banned-type' => "{{PLURAL:$4|Filtypen|Filtypene}} '''«.$1»''' er ikke {{PLURAL:$4|tillatt|tillatte}}.
-{{PLURAL:$3|Tillatt filtype|Tillatte filtyper}} er $2.",
-'filetype-missing' => 'Filen har ingen endelse (som «.jpg»).',
-'empty-file' => 'Filen du sendte inn var tom.',
-'file-too-large' => 'Filen du sendte inn var for stor.',
-'filename-tooshort' => 'Filnavnet er for kort.',
-'filetype-banned' => 'Denne filtypen er forbudt.',
-'verification-error' => 'Denne filen bestod ikke filbekreftelsen.',
-'hookaborted' => 'Endringene du prøvde å gjøre ble avbrutt av en utvidelseskrok.',
-'illegal-filename' => 'Filnavnet er ikke tillatt.',
-'overwrite' => 'Overskriving av eksisterende filer er ikke tillatt.',
-'unknown-error' => 'En ukjent feil oppsto.',
-'tmp-create-error' => 'Kunne ikke opprette midlertidig fil.',
-'tmp-write-error' => 'Feil ved skriving av midlertidig fil.',
-'large-file' => 'Det er anbefalt at filen ikke er større enn $1; denne filen er $2.',
-'largefileserver' => 'Denne filen er større enn det tjeneren er satt opp til å tillate.',
-'emptyfile' => 'Filen du lastet opp ser ut til å være tom. Dette kan komme av en skrivefeil i filnavnet. Sjekk om du virkelig vil laste opp denne filen.',
-'windows-nonascii-filename' => 'Denne wikien støtter ikke filnavn med spesialtegn.',
-'fileexists' => "Ei fil med dette navnet finnes allerede.
-Sjekk '''<tt>[[:$1]]</tt>''' hvis du ikke er sikker på at du vil forandre den.
-[[$1|thumb]]",
-'filepageexists' => "Beskrivelsessiden for denne filen finnes allerede på '''<tt>[[:$1]]</tt>''', men ingen filer med dette navnet finnes. Sammendraget du skruver inn vil ikke vises på beskrivelsessiden. For at det skal dukke opp der må du skrive det inn manuelt etter å da lastet opp filen.
-[[$1|thumb]]",
-'fileexists-extension' => "En fil med et lignende navn finnes: [[$2|thumb]]
-* Navnet på din fil: '''<tt>[[:$1]]</tt>'''
-* Navn på eksisterende fil: '''<tt>[[:$2]]</tt>'''
-Velg et annet filnavn.",
-'fileexists-thumbnail-yes' => "Filen ser ut til å være et bilde av redusert størrelse. [[$1|thumb]]
-Vennligst sjekk filen '''<tt>[[:$1]]</tt>'''.
-Om filen du sjekket er det samme bildet, men i opprinnelig størrelse, er det ikke nødvendig å laste opp en ekstra fil.",
-'file-thumbnail-no' => "Filnavnet begynner med '''<tt>$1</tt>'''.
-Det virker som om det er et bilde av redusert størrelse ''(miniatyrbilde)''.
-Om du har dette bildet i stor utgave, last opp det, eller endre filnavnet på denne filen.",
-'fileexists-forbidden' => 'En fil med dette navnet finnes fra før, og kan ikke erstattes.
-Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et nytt navn. [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Ei fil med dette navnet finnes fra før i det delte fillageret.
-Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et nytt navn. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Denne filen er en dublett av følgende {{PLURAL:$1|fil|filer}}:',
-'file-deleted-duplicate' => 'En fil identisk med denne filen ([[:$1]]) har tidligere blitt slettet. Du bør sjekke denne filens slettehistorikk før du prøver å laste den opp på nytt.',
-'uploadwarning' => 'Opplastingsadvarsel',
-'uploadwarning-text' => 'Vennligst endre filbeskrivelsen nedenfor og prøv igjen.',
-'savefile' => 'Lagre fil',
-'uploadedimage' => 'lastet opp «[[$1]]»',
-'overwroteimage' => 'last opp en ny versjon av «[[$1]]»',
-'uploaddisabled' => 'Opplastingsfunksjonen er slått av',
-'copyuploaddisabled' => 'Opplasting via nettadresse deaktivert.',
-'uploadfromurl-queued' => 'Opplastingen din har blitt satt i kø.',
-'uploaddisabledtext' => 'Opplasting er slått av.',
-'php-uploaddisabledtext' => 'PHP-filopplasting er deaktivert. Sjekk innstillingen for file_uploads.',
-'uploadscripted' => 'Denne filen inneholder HTML eller skripting som kan feiltolkes av en nettleser.',
-'uploadvirus' => 'Denne filen inneholder virus! Detaljer: $1',
-'uploadjava' => 'Filen er en ZIP-fil som inneholder en Java-fil av typen .class.
-Det er ikke tillatt å laste opp Java-filer, fordi de kan omgå sikkerhetsrestriksjoner.',
-'upload-source' => 'Kildefil',
-'sourcefilename' => 'Velg en fil:',
-'sourceurl' => 'Kildens URL:',
-'destfilename' => 'Ønsket filnavn:',
-'upload-maxfilesize' => 'Maksimal filstørrelse: $1',
-'upload-description' => 'Filbeskrivelse',
-'upload-options' => 'Opplastingsvalg',
-'watchthisupload' => 'Overvåk denne filen',
-'filewasdeleted' => 'Ei fil ved dette navnet har blitt lastet opp tidligere, og så slettet. Sjekk $1 før du forsøker å laste det opp igjen.',
-'filename-bad-prefix' => "Navnet på filen du laster opp begynner med '''«$1»''', hvilket er et ikke-beskrivende navn som vanligvis brukes automatisk av digitalkameraer. Vennligst bruk et mer beskrivende navn på filen.",
-'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
-# Syntaksen er som følger:
-#   * Alt fra tegnet «#» til slutten av linja er en kommentar
-#   * Alle linjer som ikke er blanke er et prefiks som vanligvis brukes automatisk av digitale kameraer
-CIMG # Casio
-DSC_ # Nikon
-DSCF # Fuji
-DSCN # Nikon
-DUW # noen mobiltelefontyper
-IMG # generisk
-JD # Jenoptik
-MGP # Pentax
-PICT # div.
- #</pre> <!-- leave this line exactly as it is -->',
-'upload-success-subj' => 'Opplastingen er gjennomført',
-'upload-success-msg' => 'Din opplasting fra [$2] var vellykket. Den er tilgjengelig her: [[:{{ns:file}}:$1]]',
-'upload-failure-subj' => 'Opplastingsproblem',
-'upload-failure-msg' => 'Det oppsto et problem med opplastingen din fra [$2]:
-
-$1',
-'upload-warning-subj' => 'Opplastingsadvarsel',
-'upload-warning-msg' => 'Det oppsto et problem med opplastingen din fra [$2]. Du kan gå tilbake til [[Special:Upload/stash/$1|opplastingsskjemaet]] for å løse dette problemet.',
-
-'upload-proto-error' => 'Gal protokoll',
-'upload-proto-error-text' => 'Fjernopplasting behøver adresser som begynner med <code>http://</code> eller <code>ftp://</code>.',
-'upload-file-error' => 'Intern feil',
-'upload-file-error-text' => 'En intern feil oppsto under forsøk på å lage en midlertidig fil på tjeneren. Vennligst kontakt en [[Special:ListUsers/sysop|administrator]].',
-'upload-misc-error' => 'Ukjent opplastingsfeil',
-'upload-misc-error-text' => 'En ukjent feil forekom under opplastingen.
-Bekreft at adressen er gyldig og tilgjengelig, og prøv igjen.
-Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
-'upload-too-many-redirects' => 'URL-en inneholdt for mange omdirigeringer',
-'upload-unknown-size' => 'Ukjent størrelse',
-'upload-http-error' => 'En HTTP-feil oppstod: $1',
-
-# ZipDirectoryReader
-'zip-file-open-error' => 'Det oppsto en feil under åpning av filen for ZIP-sjekking.',
-'zip-wrong-format' => 'Den angitte filen var ikke en ZIP-fil.',
-'zip-bad' => 'Filen er en skadd eller på annen måte uleselig ZIP-fil.
-Den kan ikke sikkerhetskontrolleres.',
-'zip-unsupported' => 'Filen er en ZIP-fil som bruker funksjoner som ikke støttes av MediaWiki.
-Den kan ikke sikkerhetskontrolleres.',
-
-# Special:UploadStash
-'uploadstash' => 'Last opp stash',
-'uploadstash-summary' => 'Denne siden gir tilgang til filer som har blitt lastet opp (eller er i ferd med å bli lastet opp) men som ennå ikke er publisert til wikien. Disse filene er ikke synlige for andre enn brukeren som lastet dem opp.',
-'uploadstash-clear' => 'Fjern stashede filer',
-'uploadstash-nofiles' => 'Du har ingen stashede filer.',
-'uploadstash-badtoken' => 'Utføringen av den handlingen var mislykket, kanskje fordi dine redigeringsrettigheter har utløpt. Prøv igjen.',
-'uploadstash-errclear' => 'Fjerning av filene var mislykket.',
-'uploadstash-refresh' => 'Oppdater listen over filer',
-
-# img_auth script messages
-'img-auth-accessdenied' => 'Ingen tilgang',
-'img-auth-nopathinfo' => 'Manglende PATH_INFO.
-Tjeneren din er ikke satt opp til å gi denne informasjonen.
-Den er kanskje CGI-basert og støtter ikke img_auth.
-[//www.mediawiki.org/wiki/Manual:Image_Authorization Se bildeautorisasjon.]',
-'img-auth-notindir' => 'Den ønskede stien finnes ikke i den oppsatte opplastingsmappa.',
-'img-auth-badtitle' => 'Kunne ikke lage en gyldig tittel ut fra «$1».',
-'img-auth-nologinnWL' => 'Du er ikke logget inn, og «$1» er ikke på hvitelista.',
-'img-auth-nofile' => 'Filen «$1» finnes ikke.',
-'img-auth-isdir' => 'Du prøver å få tilgang til mappa «$1».
-Kun filtilgang tillates.',
-'img-auth-streaming' => 'Sender «$1».',
-'img-auth-public' => 'Funksjonen til img_auth.php er å lage filer fra en privat wiki.
-Denne wikien er satt opp som en offentlig wiki.
-For best mulig sikkerhet er img_auth.php slått av.',
-'img-auth-noread' => 'Brukeren har ikke tilgang til å lese «$1».',
-'img-auth-bad-query-string' => 'URL-en har en ugyldig spørrestreng.',
-
-# HTTP errors
-'http-invalid-url' => 'Ugyldig internettadresse: $1',
-'http-invalid-scheme' => 'Internettadresser med «$1»-formen støttes ikke',
-'http-request-error' => 'HTTP-forespørselen feilet på grunn av en ukjent feil.',
-'http-read-error' => 'HTTP-lesefeil.',
-'http-timed-out' => 'Tidsavbrudd på HTTP-forespørsel.',
-'http-curl-error' => 'Feil under henting av adresse: $1',
-'http-host-unreachable' => 'Kunne ikke nå adressen.',
-'http-bad-status' => 'Det var et problem under HTTP-forespørselen: $1 $2',
-
-# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => 'Kunne ikke nå adressen',
-'upload-curl-error6-text' => 'Adressen kunne ikke nås. Vennligst dobbelsjekk at adressen er korrekt og at siden er oppe.',
-'upload-curl-error28' => 'Opplastingstimeout',
-'upload-curl-error28-text' => 'Siden brukte for lang tid på å reagere. Vennligst sjekk at siden er oppe, og vent en kort stund for du prøver igjen. Vurder å prøve på en mindre hektisk tid.',
-
-'license' => 'Lisens:',
-'license-header' => 'Lisensiering',
-'nolicense' => 'Ingen spesifisert',
-'license-nopreview' => '(Forhåndsvisning ikke tilgjengelig)',
-'upload_source_url' => ' (en gyldig, offentlig tilgjengelig adresse)',
-'upload_source_file' => ' (en fil på din datamaskin)',
-
-# Special:ListFiles
-'listfiles-summary' => 'Denne spesialsiden viser alle opplastede filer.
-Når den filtreres av en bruker, vises bare de sist opplastede versjonene av filen.',
-'listfiles_search_for' => 'Søk etter filnavn:',
-'imgfile' => 'fil',
-'listfiles' => 'Filliste',
-'listfiles_thumb' => 'Miniatyrbilde',
-'listfiles_date' => 'Dato',
-'listfiles_name' => 'Navn',
-'listfiles_user' => 'Bruker',
-'listfiles_size' => 'Størrelse (bytes)',
-'listfiles_description' => 'Beskrivelse',
-'listfiles_count' => 'Versjoner',
-
-# File description page
-'file-anchor-link' => 'Fil',
-'filehist' => 'Filhistorikk',
-'filehist-help' => 'Klikk på en dato/klokkeslett for å se filen slik den var da.',
-'filehist-deleteall' => 'slett alt',
-'filehist-deleteone' => 'slett',
-'filehist-revert' => 'tilbakestill',
-'filehist-current' => 'nåværende',
-'filehist-datetime' => 'Dato/tid',
-'filehist-thumb' => 'Miniatyrbilde',
-'filehist-thumbtext' => 'Miniatyrbilde av versjonen fra $1',
-'filehist-nothumb' => 'Intet miniatyrbilde',
-'filehist-user' => 'Bruker',
-'filehist-dimensions' => 'Dimensjoner',
-'filehist-filesize' => 'Filstørrelse',
-'filehist-comment' => 'Kommentar',
-'filehist-missing' => 'Fil mangler',
-'imagelinks' => 'Filbruk',
-'linkstoimage' => 'Følgende {{PLURAL:$1|side|$1 sider}} har lenker til denne filen:',
-'linkstoimage-more' => 'Mer enn $1 {{PLURAL:$1|side|sider}} lenker til denne filen.
-Følgende liste viser {{PLURAL:$1|den første siden|de $1 første sidene}}.
-En [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengelig.',
-'nolinkstoimage' => 'Det er ingen sider som bruker denne filen.',
-'morelinkstoimage' => 'Vis [[Special:WhatLinksHere/$1|flere lenker]] til denne filen.',
-'linkstoimage-redirect' => '$1 (filomdirigering) $2',
-'duplicatesoffile' => 'Følgende {{PLURAL:$1|fil er en dublett|filer er dubletter}} av denne filen ([[Special:FileDuplicateSearch/$2|fler detaljer]]):',
-'sharedupload' => 'Denne filen er fra $1 og kan bli brukt av andre prosjekter.',
-'sharedupload-desc-there' => 'Denne filen er fra $1 og kan brukes på andre prosjekter.
-Se [$2 filbeskrivelsessida] for mer informasjon.',
-'sharedupload-desc-here' => 'Denne filen er fra $1 og kan brukes av andre prosjekter.
-Beskrivelsen fra [$2 filbeskrivelsessida] vises nedenfor.',
-'filepage-nofile' => 'Det finnes ingen fil med dette navnet.',
-'filepage-nofile-link' => 'Ingen fil med dette navnet eksisterer, men du kan [$1 laste den opp].',
-'uploadnewversion-linktext' => 'Last opp en ny versjon av denne filen',
-'shared-repo-from' => 'fra $1',
-'shared-repo' => 'et delt fillager',
-
-# File reversion
-'filerevert' => 'Tilbakestill $1',
-'filerevert-legend' => 'Tilbakestill fil',
-'filerevert-intro' => "Du tilbakestiller '''[[Media:$1|$1]]''' til [$4 versjonen à $2, $3].",
-'filerevert-comment' => 'Årsak:',
-'filerevert-defaultcomment' => 'Tilbakestilte til versjonen à $1, $2',
-'filerevert-submit' => 'Tilbakestill',
-'filerevert-success' => "'''[[Media:$1|$1]]''' ble tilbakestilt til [$4 versjonen à $2, $3].",
-'filerevert-badversion' => 'Det er ingen tidligere lokal versjon av denne filen med det gitte tidstrykket.',
-
-# File deletion
-'filedelete' => 'Slett $1',
-'filedelete-legend' => 'Slett fil',
-'filedelete-intro' => "Du er i ferd med å slette filen '''[[Media:$1|$1]]''' sammen med hele dens historikk.",
-'filedelete-intro-old' => "Du sletter versjonen av '''[[Media:$1|$1]]''' à [$4 $3, $2].",
-'filedelete-comment' => 'Årsak:',
-'filedelete-submit' => 'Slett',
-'filedelete-success' => "'''$1''' ble slettet.",
-'filedelete-success-old' => "Versjonen av '''[[Media:$1|$1]]''' à $3, $2 ble slettet.",
-'filedelete-nofile' => "'''$1''' finnes ikke.",
-'filedelete-nofile-old' => "Det er ingen arkivert versjon av '''$1''' med de gitte attributtene.",
-'filedelete-otherreason' => 'Annen/utdypende grunn:',
-'filedelete-reason-otherlist' => 'Annen grunn',
-'filedelete-reason-dropdown' => '*Vanlige slettingsgrunner
-** Opphavsrettsbrudd
-** Duplikatfil',
-'filedelete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
-'filedelete-maintenance' => 'Sletting og gjenoppretting av filer er midlertidig slått av på grunn av vedlikehold.',
-
-# MIME search
-'mimesearch' => 'MIME-søk',
-'mimesearch-summary' => 'Denne siden muliggjør filtrering av filer per MIME-type. Skriv inn: innholdstype/undertype, for eksempel <tt>image/jpeg</tt>.',
-'mimetype' => 'MIME-type:',
-'download' => 'last ned',
-
-# Unwatched pages
-'unwatchedpages' => 'Sider som ikke er overvåket',
-
-# List redirects
-'listredirects' => 'Liste over omdirigeringer',
-
-# Unused templates
-'unusedtemplates' => 'Ubrukte maler',
-'unusedtemplatestext' => 'Denne siden lister opp alle sider i malnavnerommet ({{ns:template}}:) som ikke er inkludert på en annen side. Husk å sjekke for andre slags lenker til malen før du sletter den.',
-'unusedtemplateswlh' => 'andre lenker',
-
-# Random page
-'randompage' => 'Tilfeldig side',
-'randompage-nopages' => 'Det er ingen sider i {{PLURAL:$2|det følgende navnrommet|de følgende navnrommene}}: $1.',
-
-# Random redirect
-'randomredirect' => 'Tilfeldig omdirigering',
-'randomredirect-nopages' => 'Det er ingen omdirigeringer i navnerommet $1.',
-
-# Statistics
-'statistics' => 'Statistikk',
-'statistics-header-pages' => 'Sidestatistikk',
-'statistics-header-edits' => 'Redigeringsstatistikk',
-'statistics-header-views' => 'Visningsstatistikk',
-'statistics-header-users' => 'Brukerstatistikk',
-'statistics-header-hooks' => 'Øvrig statistikk',
-'statistics-articles' => 'Innholdssider',
-'statistics-pages' => 'Sider',
-'statistics-pages-desc' => 'Alle sider på wikien, inkludert diskusjonssider, omdirigeringer o.l.',
-'statistics-files' => 'Opplastede filer',
-'statistics-edits' => 'Redigeringer siden {{SITENAME}} ble opprettet',
-'statistics-edits-average' => 'Gjennomsnittlig antall redigeringer per side',
-'statistics-views-total' => 'Totalt antall visninger',
-'statistics-views-total-desc' => 'Visninger av ikke-eksisterende sider og spesielsider inkluderes ikke',
-'statistics-views-peredit' => 'Visninger per redigering',
-'statistics-users' => 'Registrerte [[Special:ListUsers|brukere]]',
-'statistics-users-active' => 'Aktive brukere',
-'statistics-users-active-desc' => 'Brukere som har utført handlinger {{PLURAL:$1|det siste døgnet|de siste $1 dagene}}',
-'statistics-mostpopular' => 'Mest viste sider',
-
-'disambiguations' => 'Sider som lenker til artikler med flertydige titler',
-'disambiguationspage' => 'Template:Peker',
-'disambiguations-text' => "Følgende sider lenker til en '''pekerside'''.
-De burde i stedet lenke til en passende innholdsside.<br />
-En side anses om en pekerside om den inneholder en mal som det lenkes til fra [[MediaWiki:Disambiguationspage]]",
-
-'doubleredirects' => 'Doble omdirigeringer',
-'doubleredirectstext' => 'Denne siden lister opp de sidene som er omdirigeringer til andre omdirigeringssider.
-Hver rad inneholder lenker til første og andre omdirigering, samt målet for den andre omdirigeringen, som vanligvis er den «virkelige» målsiden som den første omdirigeringen burde peke til.
-<del>Gjennomstrøkne</del> sider har blitt fikset.',
-'double-redirect-fixed-move' => '[[$1]] har blitt flyttet, og er nå en omdirigering til [[$2]]',
-'double-redirect-fixed-maintenance' => 'Fikser dobbel omdirigering fra [[$1]] til [[$2]].',
-'double-redirect-fixer' => 'Omdirigeringsfikser',
-
-'brokenredirects' => 'Brutte omdirigeringer',
-'brokenredirectstext' => 'Følgende omdirigeringer peker til ikkeeksisterende sider:',
-'brokenredirects-edit' => 'rediger',
-'brokenredirects-delete' => 'slett',
-
-'withoutinterwiki' => 'Sider uten språklenker',
-'withoutinterwiki-summary' => 'Følgende sider lenker ikke til andre språkversjoner:',
-'withoutinterwiki-legend' => 'Prefiks',
-'withoutinterwiki-submit' => 'Vis',
-
-'fewestrevisions' => 'Artikler med færrest revisjoner',
-
-# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
-'ncategories' => '$1 {{PLURAL:$1|kategori|kategorier}}',
-'nlinks' => '$1 {{PLURAL:$1|lenke|lenker}}',
-'nmembers' => '$1 {{PLURAL:$1|medlem|medlemmer}}',
-'nrevisions' => '$1 {{PLURAL:$1|revisjon|revisjoner}}',
-'nviews' => '$1 {{PLURAL:$1|visning|visninger}}',
-'nimagelinks' => 'Brukt på $1 {{PLURAL:$1|side|sider}}',
-'ntransclusions' => 'brukt på $1 {{PLURAL:$1|side|sider}}',
-'specialpage-empty' => 'Denne siden er tom.',
-'lonelypages' => 'Foreldreløse sider',
-'lonelypagestext' => 'Følgende sider blir ikke lenket til eller brukt på andre sider på {{SITENAME}}.',
-'uncategorizedpages' => 'Ukategoriserte sider',
-'uncategorizedcategories' => 'Ukategoriserte kategorier',
-'uncategorizedimages' => 'Ukategoriserte filer',
-'uncategorizedtemplates' => 'Ukategoriserte maler',
-'unusedcategories' => 'Ubrukte kategorier',
-'unusedimages' => 'Ubrukte filer',
-'popularpages' => 'Populære sider',
-'wantedcategories' => 'Ønskede kategorier',
-'wantedpages' => 'Etterspurte sider',
-'wantedpages-badtitle' => 'Ugyldig tittel i resultatene: $1',
-'wantedfiles' => 'Ønskede filer',
-'wantedtemplates' => 'Etterspurte maler',
-'mostlinked' => 'Sider med flest lenker til seg',
-'mostlinkedcategories' => 'Kategorier med flest sider',
-'mostlinkedtemplates' => 'Mest brukte maler',
-'mostcategories' => 'Sider med flest kategorier',
-'mostimages' => 'Mest brukte filer',
-'mostrevisions' => 'Artikler med flest revisjoner',
-'prefixindex' => 'Alle sider med prefiks',
-'shortpages' => 'Korte sider',
-'longpages' => 'Lange sider',
-'deadendpages' => 'Blindveisider',
-'deadendpagestext' => 'Følgende sider lenker ikke til andre sider på {{SITENAME}}.',
-'protectedpages' => 'Låste sider',
-'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
-'protectedpages-cascade' => 'Kun dypbeskyttelse',
-'protectedpagestext' => 'Følgende sider er låst for flytting eller redigering',
-'protectedpagesempty' => 'Ingen sider er for øyeblikket låst med disse paramterne.',
-'protectedtitles' => 'Beskyttede titler',
-'protectedtitlestext' => 'Følgende titler er beskyttet fra opprettelse',
-'protectedtitlesempty' => 'Ingen titler beskyttes med disse parameterne for øyeblikket.',
-'listusers' => 'Brukerliste',
-'listusers-editsonly' => 'Vis bare brukere med redigeringer',
-'listusers-creationsort' => 'Sorter etter opprettelsesdato',
-'usereditcount' => '{{PLURAL:$1|én redigering|$1 redigeringer}}',
-'newpages' => 'Nye sider',
-'newpages-username' => 'Brukernavn:',
-'ancientpages' => 'Eldste sider',
-'move' => 'Flytt',
-'movethispage' => 'Flytt denne siden',
-'unusedimagestext' => 'Følgende filer eksisterer men er ikke innlagt på noen sider.
-Merk at andre sider kanskje lenker til en fil med en direkte lenke, så filen listes her selv om den faktisk er i bruk.',
-'unusedcategoriestext' => 'Følgende kategorier finnes, men det er ingen sider i dem.',
-'notargettitle' => 'Intet mål',
-'notargettext' => 'Du oppga ikke en målside eller bruker å utføre denne funksjonen på.',
-'nopagetitle' => 'Målsiden finnes ikke',
-'nopagetext' => 'Siden du ville flytte finnes ikke.',
-'pager-newer-n' => '{{PLURAL:$1|1 nyere|$1 nyere}}',
-'pager-older-n' => '{{PLURAL:$1|1 eldre|$1 eldre}}',
-'suppress' => 'Historikkrydding',
-'querypage-disabled' => 'Denne spesialsiden er deaktivert av ytelsesårsaker.',
-
-# Book sources
-'booksources' => 'Bokkilder',
-'booksources-search-legend' => 'Søk etter bokkilder',
-'booksources-go' => 'Gå',
-'booksources-text' => 'Under er en liste over lenker til andre sider som selger nye og brukte bøker, og kan også ha videre informasjon om bøker du leter etter:',
-'booksources-invalid-isbn' => 'Det gitte ISBN-nummeret er ugyldig; sjekk om du har angitt det riktig.',
-
-# Special:Log
-'specialloguserlabel' => 'Bruker:',
-'speciallogtitlelabel' => 'Tittel:',
-'log' => 'Logger',
-'all-logs-page' => 'Alle offentlige logger',
-'alllogstext' => 'Kombinert visning av alle loggene på {{SITENAME}}.
-Du kan minske antallet resultater ved å velge loggtype, brukernavn eller den siden som er påvirket (husk å skille mellom store og små bokstaver).',
-'logempty' => 'Ingen elementer i loggen.',
-'log-title-wildcard' => 'Søk i titler som starter med denne teksten',
-
-# Special:AllPages
-'allpages' => 'Alle sider',
-'alphaindexline' => '$1 til $2',
-'nextpage' => 'Neste side ($1)',
-'prevpage' => 'Forrige side ($1)',
-'allpagesfrom' => 'Vis sider fra og med:',
-'allpagesto' => 'Vis sider som slutter på:',
-'allarticles' => 'Alle sider',
-'allinnamespace' => 'Alle sider i $1-navnerommet',
-'allnotinnamespace' => 'Alle sider (ikke i $1-navnerommet)',
-'allpagesprev' => 'Forrige',
-'allpagesnext' => 'Neste',
-'allpagessubmit' => 'Gå',
-'allpagesprefix' => 'Vis sider med prefikset:',
-'allpagesbadtitle' => 'Den angitte sidetittelen var ugyldig eller hadde et interwiki-prefiks. Den kan inneholde ett eller flere tegn som ikke kan brukes i titler.',
-'allpages-bad-ns' => '{{SITENAME}} har ikke navnerommet «$1».',
-
-# Special:Categories
-'categories' => 'Kategorier',
-'categoriespagetext' => 'Følgende {{PLURAL:$1|kategori|kategorier}} inneholder sider eller media.
-[[Special:UnusedCategories|Ubrukte kategorier]] vises ikke her.
-Se også [[Special:WantedCategories|ønskede kategorier]].',
-'categoriesfrom' => 'Vis kategorier fra og med:',
-'special-categories-sort-count' => 'soter etter antall',
-'special-categories-sort-abc' => 'sorter alfabetisk',
-
-# Special:DeletedContributions
-'deletedcontributions' => 'Slettede brukerbidrag',
-'deletedcontributions-title' => 'Slettede brukerbidrag',
-'sp-deletedcontributions-contribs' => 'bidrag',
-
-# Special:LinkSearch
-'linksearch' => 'Søk i eksterne lenker',
-'linksearch-pat' => 'Søkemønster:',
-'linksearch-ns' => 'Navnerom:',
-'linksearch-ok' => 'Søk',
-'linksearch-text' => 'Jokertegn som «*.wikipedia.org» kan brukes.<br />Støttede protokoller: <tt>$1</tt>',
-'linksearch-line' => '$1 lenkes fra $2',
-'linksearch-error' => 'Jokertegn kan kun brukes foran tjenernavnet.',
-
-# Special:ListUsers
-'listusersfrom' => 'Vis brukere fra og med:',
-'listusers-submit' => 'Vis',
-'listusers-noresult' => 'Ingen bruker funnet.',
-'listusers-blocked' => '(konto blokkert)',
-
-# Special:ActiveUsers
-'activeusers' => 'Liste over aktive brukere',
-'activeusers-intro' => 'Dette er en liste over brukere som har hatt en eller annen form for aktivitet innenfor {{PLURAL:$1|den siste dagen|de siste dagene}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|endring|endringer}} {{PLURAL:$3|det siste døgnet|de siste $3 dagene}}',
-'activeusers-from' => 'Vis brukere fra og med:',
-'activeusers-hidebots' => 'Skjul roboter',
-'activeusers-hidesysops' => 'Skjul administratorer',
-'activeusers-noresult' => 'Ingen brukere funnet.',
-
-# Special:Log/newusers
-'newuserlogpage' => 'Brukeropprettelseslogg',
-'newuserlogpagetext' => 'Dette er en logg over brukeropprettelser.',
-
-# Special:ListGroupRights
-'listgrouprights' => 'Rettigheter for brukergrupper',
-'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
-Mer informasjon om de enkelte rettighetstypene kan finnes [[{{MediaWiki:Listgrouprights-helppage}}|her]].',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Innvilget rettighet</span>
-* <span class="listgrouprights-granted">Tilbaketrukket rettighet</span>',
-'listgrouprights-group' => 'Gruppe',
-'listgrouprights-rights' => 'Rettigheter',
-'listgrouprights-helppage' => 'Help:Grupperettigheter',
-'listgrouprights-members' => '(liste over medlemmer)',
-'listgrouprights-addgroup' => 'Kan legge til {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-removegroup' => 'Kan fjerne {{PLURAL:$2|gruppa|gruppene}}: $1',
-'listgrouprights-addgroup-all' => 'Kan legge til alle grupper',
-'listgrouprights-removegroup-all' => 'Kan fjerne alle grupper',
-'listgrouprights-addgroup-self' => 'Kan legge til {{PLURAL:$2|gruppe|gruppene}} til egen konto: $1',
-'listgrouprights-removegroup-self' => 'Kan ta vekk {{PLURAL:$2|gruppe|grupper}} fra egen konto: $1',
-'listgrouprights-addgroup-self-all' => 'Kan legge til alle grupper til egen konto',
-'listgrouprights-removegroup-self-all' => 'Kan ta bort alle grupper fra egen konto',
-
-# E-mail user
-'mailnologin' => 'Ingen avsenderadresse',
-'mailnologintext' => 'Du må være [[Special:UserLogin|logget inn]] og ha en gyldig e-postadresse satt i [[Special:Preferences|brukerinnstillingene]] for å sende e-post til andre brukere.',
-'emailuser' => 'E-post til denne brukeren',
-'emailpage' => 'E-post til bruker',
-'emailpagetext' => 'Du kan bruke skjemaet nedenfor for å sende en e-post til denne brukeren.
-Den e-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil dukke opp i «fra»-feltet på denne e-posten, så mottakeren er i stand til å svare.',
-'usermailererror' => 'E-postobjekt returnerte feilen:',
-'usermaildisabled' => 'Brukerepost deaktivert',
-'usermaildisabledtext' => 'Du kan ikke sende epost til andre brukere på denne wikien',
-'noemailtitle' => 'Ingen e-postadresse',
-'noemailtext' => 'Dene brukeren har ikke oppgitt en gyldig e-postadresse.',
-'nowikiemailtitle' => 'Ingen e-post tillatt',
-'nowikiemailtext' => 'Denne brukeren har valgt å ikke motta e-post fra andre brukere.',
-'emailnotarget' => 'Ikke-eksisterende eller ugyldig brukernavn for mottaker.',
-'emailtarget' => 'Skriv inn brukernavnet på mottakeren',
-'emailusername' => 'Brukernavn:',
-'emailusernamesubmit' => 'Send',
-'email-legend' => 'Send en e-post til en annen {{SITENAME}}-bruker',
-'emailfrom' => 'Fra:',
-'emailto' => 'Til:',
-'emailsubject' => 'Emne:',
-'emailmessage' => 'Beskjed:',
-'emailsend' => 'Send',
-'emailccme' => 'Send meg en kopi av beskjeden min.',
-'emailccsubject' => 'Kopi av din beskjed til $1: $2',
-'emailsent' => 'E-post sendt',
-'emailsenttext' => 'E-postbeskjeden er sendt',
-'emailuserfooter' => 'E-posten ble sendt av $1 til $2 via «Send e-post»-funksjonen på {{SITENAME}}.',
-
-# User Messenger
-'usermessage-summary' => 'Etterlater en systembeskjed.',
-'usermessage-editor' => 'Systembudbringer',
-
-# Watchlist
-'watchlist' => 'Overvåkningsliste',
-'mywatchlist' => 'Overvåkningsliste',
-'watchlistfor2' => 'For $1 $2',
-'nowatchlist' => 'Du har ingenting i overvåkningslisten.',
-'watchlistanontext' => 'Vennligst $1 for å vise eller redigere sider på overvåkningslisten din.',
-'watchnologin' => 'Ikke logget inn',
-'watchnologintext' => 'Du må være [[Special:UserLogin|logget inn]] for å kunne endre overvåkningslisten.',
-'addwatch' => 'Legg til i overvåkningslisten',
-'addedwatchtext' => "Siden «[[:$1]]» er lagt til [[Special:Watchlist|overvåkningslisten]].
-Fremtidige endringer til denne siden og den tilhørende diskusjonssiden blir listet opp her, og siden vil fremstå '''uthevet''' i [[Special:RecentChanges|listen over siste endringer]] for å gjøre det lettere å finne den.",
-'removewatch' => 'Fjern fra overvåkningslisten',
-'removedwatchtext' => 'Siden «[[:$1]]» er fjernet fra [[Special:Watchlist|overvåkningslisten din]].',
-'watch' => 'Overvåk',
-'watchthispage' => 'Overvåk denne siden',
-'unwatch' => 'Avslutt overvåkning',
-'unwatchthispage' => 'Fjerner overvåkning',
-'notanarticle' => 'Ikke en artikkel',
-'notvisiblerev' => 'Revisjonen er slettet',
-'watchnochange' => 'Ingen av sidene i overvåkningslisten er endret i den valgte perioden.',
-'watchlist-details' => '{{PLURAL:$1|Én side|$1 sider}} på din overvåkningsliste, teller ikke diskusjonssider.',
-'wlheader-enotif' => '* E-postnotifikasjon er slått på.',
-'wlheader-showupdated' => "* Sider som har blitt forandret siden du sist besøkte dem vises i '''fet tekst'''",
-'watchmethod-recent' => 'sjekker siste endringer for sider i overvåkningslisten',
-'watchmethod-list' => 'sjekker siste endringer for sider i overvåkningslisten',
-'watchlistcontains' => 'Overvåkningslisten inneholder $1 {{PLURAL:$1|side|sider}}.',
-'iteminvalidname' => 'Problem med «$1», ugyldig navn&nbsp;…',
-'wlshowlast' => 'Vis siste $1 timer $2 dager $3',
-'watchlist-options' => 'Alternativ for overvåkningslisten',
-
-# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Overvåker…',
-'unwatching' => 'Fjerner fra overvåkningsliste…',
-'watcherrortext' => 'Det oppsto en feil under endring av overvåkningsinnstillingene dine for «$1».',
-
-'enotif_mailer' => '{{SITENAME}}s påminnelsessystem',
-'enotif_reset' => 'Merk alle sider som besøkt',
-'enotif_newpagetext' => 'Dette er en ny side.',
-'enotif_impersonal_salutation' => '{{SITENAME}}-bruker',
-'changed' => 'endret',
-'created' => 'opprettet',
-'enotif_subject' => '{{SITENAME}}-siden $PAGETITLE har blitt $CHANGEDORCREATED av $PAGEEDITOR',
-'enotif_lastvisited' => 'Se $1 for alle endringer siden ditt forrige besøk.',
-'enotif_lastdiff' => 'Se $1 for å se denne endringen.',
-'enotif_anon_editor' => 'anonym bruker $1',
-'enotif_body' => 'Kjære $WATCHINGUSERNAME,
-
-
-{{SITENAME}}-siden $PAGETITLE har blitt $CHANGEDORCREATED den $PAGEEDITDATE av $PAGEEDITOR, se $PAGETITLE_URL for den nåværende revisjonen.
-
-$NEWPAGE
-
-Redigeringssammendrag: $PAGESUMMARY $PAGEMINOREDIT
-
-Kontakt brukeren:
-e-post: $PAGEEDITOR_EMAIL
-wiki: $PAGEEDITOR_WIKI
-
-Det vil ikke komme flere varsler om endringer på denne siden med mindre du besøker den.
-Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslisten din.
-
-             Ditt vennlige varslingssystem for {{SITENAME}}
-
---
-For å endre innstillingene for e-postvarsler, se
-{{canonicalurl:{{#special:Preferences}}}}
-
-For å endre innstillingene for overvåkningslisten, se
-{{canonicalurl:{{#special:EditWatchlist}}}}
-
-For å slette en side fra overvåkningssiden, se
-$UNWATCHURL
-
-Tilbakemelding og videre assistanse:
-{{canonicalurl:{{MediaWiki:Helppage}}}}',
-
-# Delete
-'deletepage' => 'Slett side',
-'confirm' => 'Bekreft',
-'excontent' => 'Innholdet var: «$1»',
-'excontentauthor' => 'innholdet var «$1» (og eneste bidragsyter var [[Special:Contributions/$2|$2]])',
-'exbeforeblank' => 'innholdet før siden ble tømt var: «$1»',
-'exblank' => 'siden var tom',
-'delete-confirm' => 'Slett «$1»',
-'delete-legend' => 'Slett',
-'historywarning' => 'Advarsel: Siden du er i ferd med å slette har en historikk med omtrent {{PLURAL:$1|én revisjon|$1 revisjoner}}:',
-'confirmdeletetext' => 'Du holder på å slette en side sammen med historikken.
-Bekreft at du virkelig vil slette denne siden, at du forstår konsekvensene og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].',
-'actioncomplete' => 'Gjennomført',
-'actionfailed' => 'Handling mislyktes',
-'deletedtext' => '«$1» er slettet.
-Se $2 for en oversikt over de siste slettingene.',
-'dellogpage' => 'Slettingslogg',
-'dellogpagetext' => 'Under er ei liste over nylige slettinger.',
-'deletionlog' => 'slettingslogg',
-'reverted' => 'Gjenopprettet en tidligere versjon',
-'deletecomment' => 'Årsak:',
-'deleteotherreason' => 'Annen/utdypende grunn:',
-'deletereasonotherlist' => 'Annen grunn',
-'deletereason-dropdown' => '* Vanlige grunner for sletting
-** På forfatters forespørsel
-** Opphavsrettsbrudd
-** Vandalisme',
-'delete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
-'delete-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Muligheten til å slette slike sider er begrenset for å unngå utilsiktet forstyrring av {{SITENAME}}.',
-'delete-warning-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.',
-
-# Rollback
-'rollback' => 'Fjern redigeringer',
-'rollback_short' => 'Tilbakestill',
-'rollbacklink' => 'tilbakestill',
-'rollbackfailed' => 'Kunne ikke tilbakestille',
-'cantrollback' => 'Kan ikke fjerne redigering; den siste brukeren er den eneste forfatteren.',
-'alreadyrolled' => 'Kan ikke fjerne den siste redigeringen på [[$1]] av [[User:$2|$2]] ([[User talk:$2|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); en annen har allerede redigert siden eller fjernet redigeringen.
-
-Den siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Redigeringskommentaren var: «''$1''»",
-'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]',
-'revertpage-nouser' => 'Tilbakestilte endringer av (fjernet brukernavn) til siste versjon av [[User:$1|$1]]',
-'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
-
-# Edit tokens
-'sessionfailure-title' => 'Sesjonsfeil',
-'sessionfailure' => "Det ser ut til å være et problem med innloggingen din, og den ble avbrutt av sikkerhetshensyn. Trykk ''Tilbake'' i nettleseren din, oppdater siden og prøv igjen.",
-
-# Protect
-'protectlogpage' => 'Beskyttelseslogg',
-'protectlogtext' => 'Nedenfor er en liste over endringer av sidebeskyttelser.
-Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over gjeldende sidebeskyttelser.',
-'protectedarticle' => 'beskyttet «[[$1]]»',
-'modifiedarticleprotection' => 'endret beskyttelsesnivå for «[[$1]]»',
-'unprotectedarticle' => 'fjernet beskyttelse av «[[$1]]»',
-'movedarticleprotection' => 'flyttet beskyttelsesinnstillinger fra «[[$2]]» til «[[$1]]»',
-'protect-title' => 'Låser «$1»',
-'prot_1movedto2' => '[[$1]] flyttet til [[$2]]',
-'protect-legend' => 'Bekreft låsing',
-'protectcomment' => 'Årsak:',
-'protectexpiry' => 'Utløper:',
-'protect_expiry_invalid' => 'Utløpstiden er ugyldig.',
-'protect_expiry_old' => 'Utløpstiden har allerede vært.',
-'protect-unchain-permissions' => 'Lås opp flere beskyttelsesinnstillinger',
-'protect-text' => "Du kan se og endre beskyttelsesnivået for siden '''$1''' her.",
-'protect-locked-blocked' => "Du kan ikke endre beskyttelsesnivåer mens du er blokkert. Dette er de nåværende innstillingene for siden '''$1''':",
-'protect-locked-dblock' => "Beskyttelsesnivåer kan ikke endres under en aktiv databasebeskyttelse. Dette er de nåværende innstillingene for siden '''$1''':",
-'protect-locked-access' => "Kontoen din har ikke tillatelse til å endre sidebeskyttelsesnivå.
-Dette er de nåværende innstillingene for siden '''$1''':",
-'protect-cascadeon' => 'Denne siden er for tiden beskyttet fordi den er inkludert på følgende {{PLURAL:$1|side|sider}} som har dypbeskyttelse slått på.
-Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen.',
-'protect-default' => 'Tillat alle brukere',
-'protect-fallback' => 'Må ha «$1»-tillatelse',
-'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
-'protect-level-sysop' => 'Kun administratorer',
-'protect-summary-cascade' => 'dypbeskyttelse',
-'protect-expiring' => 'utløper $1 (UTC)',
-'protect-expiry-indefinite' => 'ubestemt',
-'protect-cascade' => 'Beskytt sider som er inkludert på denne siden (dypbeskyttelse)',
-'protect-cantedit' => 'Du kan ikke endre beskyttelsesnivået til denne siden fordi du ikke har tillatelse til å redigere den.',
-'protect-othertime' => 'Annen tid:',
-'protect-othertime-op' => 'annen tid',
-'protect-existing-expiry' => 'Gjeldende utløpstid: $3 $2',
-'protect-otherreason' => 'Annen/utdypende grunn:',
-'protect-otherreason-op' => 'Annen grunn',
-'protect-dropdown' => '*Vanlige låsingsårsaker
-** Gjentatt hærverk
-** Gjentatt spam
-** Redigeringskrig
-** Side med mange besøkende',
-'protect-edit-reasonlist' => 'Rediger låsingsgrunner',
-'protect-expiry-options' => '1 time:1 hour,1 dag:1 day,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite',
-'restriction-type' => 'Tillatelse:',
-'restriction-level' => 'Restriksjonsnivå:',
-'minimum-size' => 'Minimumstørrelse',
-'maximum-size' => 'Maksimumstørrelse:',
-'pagesize' => '(byte)',
-
-# Restrictions (nouns)
-'restriction-edit' => 'Redigering',
-'restriction-move' => 'Flytting',
-'restriction-create' => 'Opprett',
-'restriction-upload' => 'Last opp',
-
-# Restriction levels
-'restriction-level-sysop' => 'fullstendig låst',
-'restriction-level-autoconfirmed' => 'halvlåst',
-'restriction-level-all' => 'alle nivåer',
-
-# Undelete
-'undelete' => 'Vis slettede sider',
-'undeletepage' => 'Se og gjenopprett slettede sider',
-'undeletepagetitle' => "'''Følgende innhold er slettede revisjoner av [[:$1]].'''",
-'viewdeletedpage' => 'Vis slettede sider',
-'undeletepagetext' => 'Følgende {{PLURAL:$1|side|sider}} er slettet, men finnes fortsatt i arkivet og kan gjenopprettes. Arkivet blir periodevis slettet.',
-'undelete-fieldset-title' => 'Gjenopprett revisjoner',
-'undeleteextrahelp' => "For å gjenopprette hele sidens historikk, la alle boksene være tomme og klikk '''''{{int:undeletebtn}}'''''.
-For å gjenopprette kun deler, kryss av boksene for revisjonene du vil gjenopprette og klikk '''''{{int:undeletebtn}}'''''.",
-'undeleterevisions' => '{{PLURAL:$1|Én versjon arkivert|$1 versjoner arkiverte}}',
-'undeletehistory' => 'Om du gjenoppretter siden vil alle revisjoner gjenopprettes i historikken.
-Dersom en ny side ved samme navn har blitt oprettet etter slettingen, vil de gjenopprettede revisjonene dukke opp før denne i redigeringshistorikken.',
-'undeleterevdel' => 'Gjenoppretting kan ikke utføres dersom det resulterer i at den øverste revisjonen blir delvis slettet. I slike tilfeller må du fjerne merkingen av den nyeste slettede revisjonen.',
-'undeletehistorynoadmin' => 'Denne artikkelen har blitt slettet. Grunnen for slettingen vises i oppsummeringen nedenfor, sammen med detaljer om brukerne som redigerte siden før den ble slettet. Teksten i disse slettede revisjonene er kun tilgjengelig for administratorer.',
-'undelete-revision' => 'Slettet revisjon av $1 (per $4 $5) av $3:',
-'undeleterevision-missing' => 'Ugyldig eller manglende revisjon. Du kan ha en ødelagt lenke, eller revisjonen har blitt fjernet fra arkivet.',
-'undelete-nodiff' => 'Ingen tidligere revisjoner funnet.',
-'undeletebtn' => 'Gjenopprett',
-'undeletelink' => 'vis/gjenopprett',
-'undeleteviewlink' => 'vis',
-'undeletereset' => 'Nullstill',
-'undeleteinvert' => 'Inverter valg',
-'undeletecomment' => 'Årsak:',
-'undeletedrevisions' => '{{PLURAL:$1|Én revisjon|$1 revisjoner}} gjenopprettet',
-'undeletedrevisions-files' => '{{PLURAL:$1|Én revisjon|$1 revisjoner}} og {{PLURAL:$2|én fil|$2 filer}} gjenopprettet',
-'undeletedfiles' => '{{PLURAL:$1|Én fil|$1 filer}} gjenopprettet',
-'cannotundelete' => 'Kunne ikke gjenopprette siden (den kan være gjenopprettet av noen andre).',
-'undeletedpage' => "'''$1 ble gjenopprettet'''
-
-Sjekk [[Special:Log/delete|slettingsloggen]] for en liste over nylige slettinger og gjenopprettelser.",
-'undelete-header' => 'Se [[Special:Log/delete|slettingsloggen]] for nylig slettede sider.',
-'undelete-search-box' => 'Søk i slettede sider',
-'undelete-search-prefix' => 'Vis sider som starter med:',
-'undelete-search-submit' => 'Søk',
-'undelete-no-results' => 'Ingen passende sider funnet i slettingsarkivet.',
-'undelete-filename-mismatch' => 'Kan ikke gjenopprette filrevisjon med tidstrykk $1: ikke samsvarende filnavn',
-'undelete-bad-store-key' => 'Kan ikke gjenopprette filrevisjon med tidstrykk $1: fil manglet før sletting',
-'undelete-cleanup-error' => 'Feil i sletting av ubrukt arkivfil «$1».',
-'undelete-missing-filearchive' => 'Klarte ikke å gjenopprette filarkivet med ID $1 fordi det ikke er i databasen. Det kan ha blitt gjenopprettet tidligere.',
-'undelete-error-short' => 'Feil under filgjenoppretting: $1',
-'undelete-error-long' => 'Feil oppsto under filgjenoppretting:
-
-$1',
-'undelete-show-file-confirm' => 'Er du sikker på at du vil vise en slettet versjon av filen «<nowiki>$1</nowiki>» fra den $2 klokken $3?',
-'undelete-show-file-submit' => 'Ja',
-
-# Namespace form on various pages
-'namespace' => 'Navnerom:',
-'invert' => 'Inverter valg',
-'tooltip-invert' => 'Kryss av denne boksen for å skjule endringer på sider i det valgte navnerommet (og tilhørende navnerom hvis de er avkrysset også)',
-'namespace_association' => 'Tilknyttet navnerom',
-'tooltip-namespace_association' => 'Kryss av denne boksen for å også inkludere diskusjons- eller emnenavnerommet som er tilknyttet det valgte navnerommet',
-'blanknamespace' => '(Hoved)',
-
-# Contributions
-'contributions' => 'Brukerbidrag',
-'contributions-title' => 'Brukerbidrag av $1',
-'mycontris' => 'Egne bidrag',
-'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Ingen endringer er funnet som passer disse kriteriene.',
-'uctop' => '(siste)',
-'month' => 'Fra måned (og tidligere):',
-'year' => 'Fra år (og tidligere):',
-
-'sp-contributions-newbies' => 'Vis kun bidrag fra nye kontoer',
-'sp-contributions-newbies-sub' => 'For nybegynnere',
-'sp-contributions-newbies-title' => 'Bidrag av nye kontoer',
-'sp-contributions-blocklog' => 'blokkeringslogg',
-'sp-contributions-deleted' => 'slettede brukerbidrag',
-'sp-contributions-uploads' => 'opplastinger',
-'sp-contributions-logs' => 'logger',
-'sp-contributions-talk' => 'diskusjon',
-'sp-contributions-userrights' => 'brukerrettighetskontroll',
-'sp-contributions-blocked-notice' => 'Denne brukeren er for tiden blokkert.
-Siste blokkeringsloggelement kan sees nedenfor.',
-'sp-contributions-blocked-notice-anon' => 'Denne IP-adressen er for tiden blokkert.
-Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
-'sp-contributions-search' => 'Søk etter bidrag',
-'sp-contributions-username' => 'IP-adresse eller brukernavn:',
-'sp-contributions-toponly' => 'Vis kun endringer som er gjeldende revisjoner',
-'sp-contributions-submit' => 'Søk',
-
-# What links here
-'whatlinkshere' => 'Lenker hit',
-'whatlinkshere-title' => 'Sider som lenker til «$1»',
-'whatlinkshere-page' => 'Side:',
-'linkshere' => "Følgende sider lenker til '''[[:$1]]''':",
-'nolinkshere' => "Ingen sider lenker til '''[[:$1]]'''.",
-'nolinkshere-ns' => "Ingen sider lenker til '''[[:$1]]''' i valgte navnerom.",
-'isredirect' => 'omdirigeringsside',
-'istemplate' => 'transklusjon',
-'isimage' => 'fillenke',
-'whatlinkshere-prev' => '{{PLURAL:$1|forrige|forrige $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|neste|neste $1}}',
-'whatlinkshere-links' => '← lenker',
-'whatlinkshere-hideredirs' => '$1 omdirigeringer',
-'whatlinkshere-hidetrans' => '$1 transkluderinger',
-'whatlinkshere-hidelinks' => '$1 lenker',
-'whatlinkshere-hideimages' => '$1 fillenker',
-'whatlinkshere-filters' => 'Filtre',
-
-# Block/unblock
-'autoblockid' => 'Autoblokker #$1',
-'block' => 'Blokker bruker',
-'unblock' => 'Fjern blokkering av bruker',
-'blockip' => 'Blokker bruker',
-'blockip-title' => 'Blokker bruker',
-'blockip-legend' => 'Blokker bruker',
-'blockiptext' => 'Bruk skjemaet under for å blokkere en IP-adresses tilgang til å redigere artikler. Dette må kun gjøres for å forhindre hærverk, og i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjene]]. Fyll ut en spesiell begrunnelse under.',
-'ipadressorusername' => 'IP-adresse eller brukernavn',
-'ipbexpiry' => 'Varighet:',
-'ipbreason' => 'Årsak:',
-'ipbreasonotherlist' => 'Annen grunn',
-'ipbreason-dropdown' => '*Vanlige blokkeringsgrunner
-** Legger inn feilinformasjon
-** Fjerner innhold fra sider
-** Lenkespam
-** Legger inn vås
-** Truende oppførsel
-** Misbruk av flere kontoer
-** Uakseptabelt brukernavn',
-'ipb-hardblock' => 'Hindre innloggede brukere i å redigere fra denne IP-adressen',
-'ipbcreateaccount' => 'Hindre kontoopprettelse',
-'ipbemailban' => 'Forhindre brukeren fra å sende e-post',
-'ipbenableautoblock' => 'Blokker forrige IP-adresse brukt av denne brukeren automatisk, samt alle IP-adresser brukeren forsøker å redigere med i framtiden',
-'ipbsubmit' => 'Blokker denne brukeren',
-'ipbother' => 'Annen tid',
-'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dager:3 days,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite',
-'ipbotheroption' => 'annet',
-'ipbotherreason' => 'Annen/utdypende grunn:',
-'ipbhidename' => 'Skjul brukernavn fra endringer og lister',
-'ipbwatchuser' => 'Overvåk brukerens brukerside og diskusjonsside',
-'ipb-disableusertalk' => 'Hindre denne brukeren i å redigere sin egen diskusjonsside mens han/hun er blokkert',
-'ipb-change-block' => 'Blokker brukeren på nytt med disse innstillingene',
-'ipb-confirm' => 'Bekreft blokkering',
-'badipaddress' => 'Ugyldig IP-adresse.',
-'blockipsuccesssub' => 'Blokkering utført',
-'blockipsuccesstext' => '­«[[Special:Contributions/$1|$1]]» har blitt blokkert.<br />
-Se [[Special:IPBlockList|blokkeringslisten]] for alle blokkeringer.',
-'ipb-blockingself' => 'Du er i ferd med å blokkere deg selv! Er du sikker på at du vil gjøre det?',
-'ipb-confirmhideuser' => 'Du er i ferd med å blokkere en bruker med «skjul bruker» aktivert. Dette vil skjule brukerens navn i alle lister og loggoppføringer. Er du sikker på at du vil gjøre dette?',
-'ipb-edit-dropdown' => 'Rediger blokkeringsgrunner',
-'ipb-unblock-addr' => 'Avblokker $1',
-'ipb-unblock' => 'Avblokker et brukernavn eller en IP-adresse',
-'ipb-blocklist' => 'Vis gjeldende blokkeringer',
-'ipb-blocklist-contribs' => 'Bidrag fra $1',
-'unblockip' => 'Opphev blokkering',
-'unblockiptext' => 'Bruk skjemaet under for å gjenopprette skriveadgangen for en tidligere blokkert adresse eller bruker.',
-'ipusubmit' => 'Opphev blokkering',
-'unblocked' => '[[User:$1|$1]] ble avblokkert',
-'unblocked-range' => '$1 har fått løftet blokkeringen',
-'unblocked-id' => 'Blokkering $1 ble fjernet',
-'blocklist' => 'Blokkerte brukere',
-'ipblocklist' => 'Blokkerte IP-adresser og brukernavn',
-'ipblocklist-legend' => 'Finn en blokkert bruker',
-'blocklist-userblocks' => 'Skjul kontoblokkeringer',
-'blocklist-tempblocks' => 'Skjul midlertidige blokkeringer',
-'blocklist-addressblocks' => 'Skjul individuelle IP-blokkeringer',
-'blocklist-timestamp' => 'Tidsstempel',
-'blocklist-target' => 'Mål',
-'blocklist-expiry' => 'Utløper',
-'blocklist-by' => 'Blokkerende admin',
-'blocklist-params' => 'Blokkeringsparametre',
-'blocklist-reason' => 'Årsak',
-'ipblocklist-submit' => 'Søk',
-'ipblocklist-localblock' => 'Lokal blokkering',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
-'infiniteblock' => 'uendelig',
-'expiringblock' => 'utgår den $1 kl $2',
-'anononlyblock' => 'kun uregistrerte',
-'noautoblockblock' => 'autoblokkering slått av',
-'createaccountblock' => 'kontooppretting blokkert',
-'emailblock' => 'e-post blokkert',
-'blocklist-nousertalk' => 'kan ikke redigere sin egen diskusjonsside',
-'ipblocklist-empty' => 'Blokkeringslisten er tom.',
-'ipblocklist-no-results' => 'Den angitte IP-adressen eller brukeren er ikke blokkert.',
-'blocklink' => 'blokker',
-'unblocklink' => 'opphev blokkering',
-'change-blocklink' => 'endre blokkering',
-'contribslink' => 'bidrag',
-'autoblocker' => 'Du ble automatisk blokkert fordi du deler IP-adresse med «[[User:$1|$1]]». Grunnen som ble gitt til at «$1» ble blokkert var: «$2».',
-'blocklogpage' => 'Blokkeringslogg',
-'blocklog-showlog' => 'Denne brukeren har blitt blokkert før.
-Blokkeringsloggen vises nedenfor.',
-'blocklog-showsuppresslog' => 'Denne brukeren har tidligere blitt blokkert og skjult.
-Skjulingsloggen vises nedenfor.',
-'blocklogentry' => 'blokkerte [[$1]] med en varighet på $2 $3',
-'reblock-logentry' => 'endret blokkeringsinnstillinger for [[$1]] med en varighet på $2 $3',
-'blocklogtext' => 'Dette er en logg som viser hvilke brukere som har blitt blokkert og avblokkert. Automatisk blokkerte IP-adresser vises ikke. Se [[Special:BlockList|blokkeringslisten]] for en liste over IP-adresser som er blokkert akkurat nå.',
-'unblocklogentry' => 'opphevet blokkeringen av $1',
-'block-log-flags-anononly' => 'kun uregistrerte brukere',
-'block-log-flags-nocreate' => 'kontooppretting deaktivert',
-'block-log-flags-noautoblock' => 'autoblokkering slått av',
-'block-log-flags-noemail' => 'e-post blokkert',
-'block-log-flags-nousertalk' => 'kan ikke redigere egen diskusjonsside',
-'block-log-flags-angry-autoblock' => 'utvidet autoblokkering aktivert',
-'block-log-flags-hiddenname' => 'brukernavn skjult',
-'range_block_disabled' => 'Muligheten til å blokkere flere IP-adresser om gangen er slått av.',
-'ipb_expiry_invalid' => 'Ugyldig utløpstid.',
-'ipb_expiry_temp' => 'For å skjule brukernavnet må blokkeringen være permanent.',
-'ipb_hide_invalid' => 'Kan ikke skjule denne kontoen. Den kan ha for mange redigeringer.',
-'ipb_already_blocked' => '«$1» er allerede blokkert',
-'ipb-needreblock' => '$1 er blokkert fra før. Vil du endre innstillingene?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
-'unblock-hideuser' => 'Du kan ikke løfte blokkeringen av denne brukeren siden dens brukernavn har blitt skjult.',
-'ipb_cant_unblock' => 'Feil: Blokk-ID $1 ikke funnet. Kan ha blitt avblokkert allerede.',
-'ipb_blocked_as_range' => 'Feil: IP-en $1 er ikke blokkert direkte, og kan ikke avblokkeres. Den er imidlertid blokkert som del av blokkeringa av IP-rangen $2, som kan avblokkeres.',
-'ip_range_invalid' => 'Ugyldig IP-rad.',
-'ip_range_toolarge' => 'Blokkering av IP-serier større enn /$1 er ikke tillatt.',
-'blockme' => 'Blokker meg',
-'proxyblocker' => 'Proxyblokker',
-'proxyblocker-disabled' => 'Denne funksjonen er slått av.',
-'proxyblockreason' => 'IP-adressen din ble blokkert fordi den er en åpen proxy. Kontakt internettleverandøren din eller teknisk støtte og informer dem om dette alvorlige sikkerhetsproblemet.',
-'proxyblocksuccess' => 'Utført.',
-'sorbsreason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}.',
-'sorbs_create_account_reason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}. Du kan ikke opprette en konto',
-'cant-block-while-blocked' => 'Du kan ikke blokkere andre mens du selv er blokkert.',
-'cant-see-hidden-user' => 'Brukeren du prøver å blokkere har allerede blitt blokkert og skjult. Ettersom du ikke har rett til å skjule brukere (hideuser), kan du ikke se eller endre brukerens blokkering.',
-'ipbblocked' => 'Du kan ikke blokkere eller avblokkere andre brukere, siden du selv er blokkert',
-'ipbnounblockself' => 'Du har ikke tillatelse til å avblokkere deg selv',
-
-# Developer tools
-'lockdb' => 'Lås database',
-'unlockdb' => 'Åpne database',
-'lockdbtext' => 'Å låse databasen vil avbryte alle brukere fra å kunne
-redigere sider, endre deres innstillinger, redigere deres
-overvåkningsliste, og andre ting som krever endringer i databasen.
-Bekreft at du har til hensikt å gjøre dette, og at du vil
-låse opp databasen når vedlikeholdet er utført.',
-'unlockdbtext' => 'Å låse opp databasen vil si at alle brukere igjen
-kan redigere sider, endre sine innstillinger, redigere sin
-overvåkningsliste, og andre ting som krever endringer i databasen.
-Bekreft at du har til hensikt å gjøre dette.',
-'lockconfirm' => 'Ja, jeg vil virkelig låse databasen.',
-'unlockconfirm' => 'Ja, jeg vil virkelig låse opp databasen.',
-'lockbtn' => 'Lås databasen',
-'unlockbtn' => 'Åpne databasen',
-'locknoconfirm' => 'Du har ikke bekreftet handlingen.',
-'lockdbsuccesssub' => 'Databasen er nå låst',
-'unlockdbsuccesssub' => 'Databasen er nå lås opp',
-'lockdbsuccesstext' => 'Databasen er låst.<br />Husk å [[Special:UnlockDB|låse den opp]] når du er ferdig med vedlikeholdet.',
-'unlockdbsuccesstext' => 'Databasen er låst opp.',
-'lockfilenotwritable' => 'Kan ikke skrive til databasen. For å låse eller åpne databasen, må denne kunne skrives til av tjeneren.',
-'databasenotlocked' => 'Databasen er ikke låst.',
-'lockedbyandtime' => '(av $1 den $2, kl $3)',
-
-# Move page
-'move-page' => 'Flytt $1',
-'move-page-legend' => 'Flytt side',
-'movepagetext' => "Når du bruker skjemaet nedenfor døper du om en side og flytter hele historikken til det nye navnet.
-Den gamle tittelen blir en omdirigeringsside til den nye tittelen.
-Du kan oppdatere omdirigeringer som peker til den opprinnelige tittelen automatisk.
-Om du velger å ikke gjøre det, sjekk at flyttingen ikke fører til [[Special:DoubleRedirects|doble]] eller [[Special:BrokenRedirects|ødelagte omdirigeringer]].
-Du er ansvarlig for at lenker fortsetter å peke til de sidene de er ment å peke til.
-
-Legg merke til at siden '''ikke''' kan flyttes hvis det allerede finnes en side med den nye tittelen, med mindre den er tom eller er en omdirigeringsside uten historikk.
-Det betyr at du kan flytte en side tilbake dit den kom fra hvis du gjør en feil, og du kan ikke overskrive eksisterende sider ved et uhell.
-
-'''Advarsel!'''
-Dette kan være en drastisk og uventet endring for en populær side;
-vær sikker på at du forstår konsekvensene av dette før du fortsetter.",
-'movepagetext-noredirectfixer' => "Skjemaet nedenfor vil gi en side ny tittel og flytte historikken dens til det nye navnet.
-Den gamle tittelen vil bli en omdirigering til den nye.
-Sjekk om det blir [[Special:DoubleRedirects|doble]] eller [[Special:BrokenRedirects|ødelagte omdirigeringer]].
-Du er ansvarlig for å sjekke at lenker fortsetter å gå dit de skal.
-
-Merk at sider '''ikke''' blir flyttet om det allerede finnes en side med den tittelen, med mindre siden er tom eller en omdirigering og ikke har noen redigeringshistorikk.
-Dette betyr at du kan endre tittelen til en tittel siden hadde tidligere, og at du ikke kan skrive over en eksisterende side.
-
-'''Advarsel!'''
-Dette kan være en drastisk og uventen endring for en populær side;
-vær sikker på at du forstår konsekvensene av dette før du fortsetter.",
-'movepagetalktext' => "Den tilhørende diskusjonssiden vil automatisk bli flyttet sammen med siden '''med mindre:'''
-*Det allerede finnes en diskusjonsside som ikke er tom under det nye navnet, eller
-*Du fjerner markeringen i boksen nedenfor.
-
-I disse tilfellene er du nødt til å flytte eller flette siden manuelt, om ønskelig.",
-'movearticle' => 'Flytt side:',
-'moveuserpage-warning' => "'''Advarsel:''' Du er i ferd med å flytte en brukerside. Merk at kun siden vil bli flyttet; brukernavnet vil ''ikke'' bli endret.",
-'movenologin' => 'Ikke logget inn',
-'movenologintext' => 'Du må være registrert bruker og være [[Special:UserLogin|logget på]] for å flytte en side.',
-'movenotallowed' => 'Du har ikke tillatelse til å flytte sider.',
-'movenotallowedfile' => 'Du har ikke tillatelse til å flytte filer.',
-'cant-move-user-page' => 'Du har ikke tillatelse til å flytte brukersider (bortsett fra undersider).',
-'cant-move-to-user-page' => 'Du har ikke tillatelse til å flytte brukersider (bortsett fra undersider).',
-'newtitle' => 'Til ny tittel:',
-'move-watch' => 'Overvåk kilde- og målsiden',
-'movepagebtn' => 'Flytt side',
-'pagemovedsub' => 'Flytting gjennomført',
-'movepage-moved' => "'''«$1» ble flyttet til «$2»'''",
-'movepage-moved-redirect' => 'En omdirigering har blitt opprettet.',
-'movepage-moved-noredirect' => 'Det ble ikke opprettet en omdirigering.',
-'articleexists' => 'En side med det navnet finnes allerede eller det valgte navn er ugyldig.
-Velg et annet navn.',
-'cantmove-titleprotected' => 'Du kan ikke flytte en side til dette navnet, fordi den nye tittelen er beskyttet fra opprettelse.',
-'talkexists' => "'''Siden ble flyttet korrekt, men den tilhørende diskusjonssiden kunne ikke flyttes fordi det allerede finnes en under den nye tittelen.
-Du er nødt til å flette dem manuelt.'''",
-'movedto' => 'flyttet til',
-'movetalk' => 'Flytt tilhørende diskusjonsside.',
-'move-subpages' => 'Flytt alle undersider (opp til $1)',
-'move-talk-subpages' => 'Flytt alle undersider av diskusjonssiden (opp til $1)',
-'movepage-page-exists' => 'Siden $1 finnes allerede og kan ikke overskrives automatisk.',
-'movepage-page-moved' => 'Siden $1 har blitt flyttet til $2.',
-'movepage-page-unmoved' => 'Siden $1 kunne ikke flyttes til $2.',
-'movepage-max-pages' => 'Grensen på {{PLURAL:$1|én side|$1 sider}} er nådd; ingen flere sider vil bli flyttet automatisk.',
-'movelogpage' => 'Flyttelogg',
-'movelogpagetext' => 'Her er ei liste over sider som har blitt flyttet.',
-'movesubpage' => '{{PLURAL:$1|Underside|Undersider}}',
-'movesubpagetext' => 'Denne siden har {{PLURAL:$1|én underside|$1 undersider}} som vises nedenfor.',
-'movenosubpage' => 'Denne siden har ingen undersider.',
-'movereason' => 'Årsak:',
-'revertmove' => 'tilbakestill',
-'delete_and_move' => 'Slett og flytt',
-'delete_and_move_text' => '==Sletting nødvendig==
-Målsiden «[[:$1]]» finnes allerede. Vil du slette den så denne siden kan flyttes dit?',
-'delete_and_move_confirm' => 'Ja, slett siden',
-'selfmove' => 'Kilde- og destinasjonstittel er den samme; kan ikke flytte siden.',
-'immobile-source-namespace' => 'Kan ikke flytte sider i navnerommet «$1»',
-'immobile-target-namespace' => 'Kan ikke flytte sider til navnerommet «$1»',
-'immobile-target-namespace-iw' => 'Du kan ikke flytte en side til et navn som er en interwikilenke.',
-'immobile-source-page' => 'Denne siden kan ikke flyttes.',
-'immobile-target-page' => 'Kan ikke flytte til det navnet.',
-'imagenocrossnamespace' => 'Kan ikke flytte filer til andre navnerom enn filnavnerommet',
-'nonfile-cannot-move-to-file' => 'Kan ikke flytte ikke-filer til filnavnerom',
-'imagetypemismatch' => 'Den nye filendelsen tilsvarer ikke filtypen',
-'imageinvalidfilename' => 'Målnavnet er ugyldig',
-'fix-double-redirects' => 'Oppdater omdirigeringer som fører til den gamle tittelen',
-'move-leave-redirect' => 'La det være igjen en omdirigering',
-'protectedpagemovewarning' => "'''Advarsel:''' Denne siden har blitt låst slik at kun brukere med administratorrettigheter kan flytte den.
-Det siste loggelementet er oppgitt under som referanse:",
-'semiprotectedpagemovewarning' => "'''Merk:''' Denne siden har blitt låst slik at kun registrerte brukere kan flytte den.
-Det siste loggelementet er oppgitt under som referanse:",
-'move-over-sharedrepo' => '== Filen finnes ==
-[[:$1]] finnes på en delt kilde. Dersom du flytter en fil til dette navnet, vil du overstyre den delte filen.',
-'file-exists-sharedrepo' => 'Det valgte filnavnet er allerede i bruk på en delt kilde.
-Vennligst velg et annet navn.',
-
-# Export
-'export' => 'Eksporter sider',
-'exporttext' => 'Du kan eksportere teksten og redigeringshistorikken for en bestemt side eller en gruppe sider i XML.
-Dette kan senere importeres til en annen wiki som bruker MediaWiki ved hjelp av [[Special:Import|importsiden]].
-
-For å eksportere sider, skriv inn titler i tekstboksen under, én tittel per linje, og velg om du vil ha kun nåværende versjon, eller alle versjoner i historikken.
-
-Dersom du bare vil ha nåværende versjon, kan du også bruke en lenke, for eksempel [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] for siden «[[{{MediaWiki:Mainpage}}]]».',
-'exportcuronly' => 'Ta bare med den nåværende versjonen, ikke hele historikken.',
-'exportnohistory' => "----
-'''Merk:''' Eksportering av hele historikken gjennom dette skjemaet har blitt slått av av ytelsesgrunner.",
-'export-submit' => 'Eksporter',
-'export-addcattext' => 'Legg til sider fra kategori:',
-'export-addcat' => 'Legg til',
-'export-addnstext' => 'Legg til sider fra navnerom:',
-'export-addns' => 'Legg til',
-'export-download' => 'Lagre som fil',
-'export-templates' => 'Ta med maler',
-'export-pagelinks' => 'Inkluder lenkede sider med en dybde på:',
-
-# Namespace 8 related
-'allmessages' => 'Systemmeldinger',
-'allmessagesname' => 'Navn',
-'allmessagesdefault' => 'Standardtekst',
-'allmessagescurrent' => 'Nåværende tekst',
-'allmessagestext' => 'Dette er en liste over tilgjengelige systemmeldinger i MediaWiki-navnerommet.
-Besøk [//translatewiki.net translatewiki.net] om du ønsker å bidra med oversettelse av MediaWiki.',
-'allmessagesnotsupportedDB' => "''{{ns:special}}:Allmessages'' kan ikke brukes fordi '''\$wgUseDatabaseMessages''' er slått av.",
-'allmessages-filter-legend' => 'Filtrér',
-'allmessages-filter' => 'Filtrér etter tilpassningsgrad',
-'allmessages-filter-unmodified' => 'Uendret',
-'allmessages-filter-all' => 'Alle',
-'allmessages-filter-modified' => 'Endret',
-'allmessages-prefix' => 'Filtrer etter prefiks:',
-'allmessages-language' => 'Språk:',
-'allmessages-filter-submit' => 'Gå',
-
-# Thumbnails
-'thumbnail-more' => 'Forstørr',
-'filemissing' => 'Filen mangler',
-'thumbnail_error' => 'Feil under oppretting av miniatyrbilde: $1',
-'djvu_page_error' => 'DjVu-side ute av rekkevidde',
-'djvu_no_xml' => 'Klarte ikke å hente XML for DjVu-fil',
-'thumbnail_invalid_params' => 'Ugyldige miniatyrparametere, eller PNG-fil med flere piksler enn 12,5 millioner.',
-'thumbnail_dest_directory' => 'Klarte ikke å opprette målmappe',
-'thumbnail_image-type' => 'Bildetypen støttes ikke',
-'thumbnail_gd-library' => 'Ufullstendig konfigurering av GD library: mangler funksjonen $1',
-'thumbnail_image-missing' => 'Filen ser ut til å mangle: $1',
-
-# Special:Import
-'import' => 'Importer sider',
-'importinterwiki' => 'Transwiki-importering',
-'import-interwiki-text' => 'Velg en wiki og en side å importere. Revisjonsdatoer og bidragsyteres navn blir bevart. Alle transwiki-importeringer listes i [[Special:Log/import|importloggen]].',
-'import-interwiki-source' => 'Kildewiki/side:',
-'import-interwiki-history' => 'Kopier all historikk for denne siden',
-'import-interwiki-templates' => 'Inkluder alle maler',
-'import-interwiki-submit' => 'Importer',
-'import-interwiki-namespace' => 'Målnavnerom:',
-'import-upload-filename' => 'Filnavn:',
-'import-comment' => 'Kommentar:',
-'importtext' => 'Importer filen fra kildewikien med [[Special:Export|eksporteringsverktøyet]].
-Lagre den på din egen datamaskin og last den opp her.',
-'importstart' => 'Importerer sider&nbsp;…',
-'import-revision-count' => '({{PLURAL:$1|Én revisjon|$1 revisjoner}})',
-'importnopages' => 'Ingen sider å importere.',
-'imported-log-entries' => 'Importerte $1 {{PLURAL:$1|loggoppføring|loggoppføringer}}.',
-'importfailed' => 'Importering mislyktes: $1',
-'importunknownsource' => 'Ukjent importkildetype',
-'importcantopen' => 'Kunne ikke åpne importfil',
-'importbadinterwiki' => 'Ugyldig interwikilenke',
-'importnotext' => 'Tom eller ingen tekst',
-'importsuccess' => 'Importering ferdig.',
-'importhistoryconflict' => 'Motstridende revisjoner finnes (siden kan ha blitt importert tidligere)',
-'importnosources' => 'Ingen transwikiimportkilder er angitt, og direkte historikkimporteringer er slått av.',
-'importnofile' => 'Ingen importfil opplastet.',
-'importuploaderrorsize' => 'Importfilopplasting mislyktes. Filen er større enn tillatt opplastingsstørrelse.',
-'importuploaderrorpartial' => 'Importfilopplasting mislyktes. Filen ble kun delvis opplastet.',
-'importuploaderrortemp' => 'Importfilopplasting mislyktes. En midlertidig mappe mangler.',
-'import-parse-failure' => 'Tolkningsfeil ved XML-import',
-'import-noarticle' => 'Ingen side å importere!',
-'import-nonewrevisions' => 'Alle revisjoner var importert fra før.',
-'xml-error-string' => '$1 på linje $2, kolonne $3 (byte: $4): $5',
-'import-upload' => 'Last opp XML-data',
-'import-token-mismatch' => 'Sesjonsdata mistet. Venligst prøv igjen.',
-'import-invalid-interwiki' => 'Kan ikke importere fra angitt wiki.',
-
-# Import log
-'importlogpage' => 'Importlogg',
-'importlogpagetext' => 'Administrativ import av sider med redigeringshistorikk fra andre wikier.',
-'import-logentry-upload' => 'importerte [[$1]] ved opplasting',
-'import-logentry-upload-detail' => 'Importerte {{PLURAL:$1|én revisjon|$1 revisjoner}}',
-'import-logentry-interwiki' => 'transwikiimporterte $1',
-'import-logentry-interwiki-detail' => '{{PLURAL:$1|Én revisjon|$1 revisjoner}} fra $2',
-
-# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Din brukerside',
-'tooltip-pt-anonuserpage' => 'Brukersiden for IP-adressen du redigerer fra',
-'tooltip-pt-mytalk' => 'Din diskusjonsside',
-'tooltip-pt-anontalk' => 'Diskusjon om redigeringer fra denne IP-adressen',
-'tooltip-pt-preferences' => 'Dine innstillinger',
-'tooltip-pt-watchlist' => 'Liste over sider du overvåker for endringer.',
-'tooltip-pt-mycontris' => 'Liste over dine bidrag',
-'tooltip-pt-login' => 'Du oppfordres til å logge inn, men det er ikke obligatorisk',
-'tooltip-pt-anonlogin' => 'Du oppfordres til å logge inn, men det er ikke obligatorisk.',
-'tooltip-pt-logout' => 'Logg ut',
-'tooltip-ca-talk' => 'Diskusjon om innholdssiden',
-'tooltip-ca-edit' => 'Du kan redigere denne siden. Vennligst bruk forhåndsvisningsknappen før du lagrer.',
-'tooltip-ca-addsection' => 'Start et nytt avsnitt',
-'tooltip-ca-viewsource' => 'Denne siden er beskyttet.
-Du kan se på kildeteksten',
-'tooltip-ca-history' => 'Tidligere revisjoner av denne siden',
-'tooltip-ca-protect' => 'Beskytt denne siden',
-'tooltip-ca-unprotect' => 'Endre beskyttelsen av denne siden',
-'tooltip-ca-delete' => 'Slett denne siden',
-'tooltip-ca-undelete' => 'Gjenopprett redigerenge som ble gjort på denne siden før den ble slettet.',
-'tooltip-ca-move' => 'Flytt denne siden',
-'tooltip-ca-watch' => 'Legg denne siden til overvåkningslisten din',
-'tooltip-ca-unwatch' => 'Fjern denne siden fra din overvåkningsliste',
-'tooltip-search' => 'Søk i {{SITENAME}}',
-'tooltip-search-go' => 'Gå til en side med dette navnet om den finnes',
-'tooltip-search-fulltext' => 'Søk etter sider som innholder denne teksten',
-'tooltip-p-logo' => 'Hovedside',
-'tooltip-n-mainpage' => 'Gå til hovedsiden',
-'tooltip-n-mainpage-description' => 'Gå til hovedsiden',
-'tooltip-n-portal' => 'Om prosjektet, hva du kan gjøre, hvor du kan finne ting',
-'tooltip-n-currentevents' => 'Finn bakgrunnsinformasjon om aktuelle hendelser',
-'tooltip-n-recentchanges' => 'Liste over siste endringer på wikien.',
-'tooltip-n-randompage' => 'Vis en tilfeldig side',
-'tooltip-n-help' => 'Stedet for å få hjelp',
-'tooltip-t-whatlinkshere' => 'Liste over alle wikisider som lenker hit',
-'tooltip-t-recentchangeslinked' => 'Siste endringer i sider som blir lenket fra denne siden',
-'tooltip-feed-rss' => 'RSS-mating for denne siden',
-'tooltip-feed-atom' => 'Atom-mating for denne siden',
-'tooltip-t-contributions' => 'Vis liste over bidrag fra denne brukeren',
-'tooltip-t-emailuser' => 'Send en e-post til denne brukeren',
-'tooltip-t-upload' => 'Last opp filer',
-'tooltip-t-specialpages' => 'Liste over alle spesialsider',
-'tooltip-t-print' => 'Utskriftsvennlig versjon av denne siden',
-'tooltip-t-permalink' => 'Permanent lenke til denne revisjonen av siden',
-'tooltip-ca-nstab-main' => 'Vis innholdssiden',
-'tooltip-ca-nstab-user' => 'Vis brukersiden',
-'tooltip-ca-nstab-media' => 'Vis mediasiden',
-'tooltip-ca-nstab-special' => 'Dette er en spesialside og kan ikke redigeres',
-'tooltip-ca-nstab-project' => 'Vis prosjektsiden',
-'tooltip-ca-nstab-image' => 'Vis filsiden',
-'tooltip-ca-nstab-mediawiki' => 'Vis systembeskjeden',
-'tooltip-ca-nstab-template' => 'Vis malen',
-'tooltip-ca-nstab-help' => 'Vis hjelpesiden',
-'tooltip-ca-nstab-category' => 'Vis kategorisiden',
-'tooltip-minoredit' => 'Merk dette som en mindre endring',
-'tooltip-save' => 'Lagre endringene dine',
-'tooltip-preview' => 'Forhåndsvis endringene dine, vennligst gjør dette før du lagrer!',
-'tooltip-diff' => 'Vis hvilke endringer du har gjort på teksten',
-'tooltip-compareselectedversions' => 'Se forskjellen mellom de to valgte revisjonene av denne siden',
-'tooltip-watch' => 'Legg denne siden til overvåkningslisten din',
-'tooltip-recreate' => 'Gjenopprett siden til tross for at den har blitt slettet',
-'tooltip-upload' => 'Start opplasting',
-'tooltip-rollback' => '«Tilbakestill»-knappen tilbakestiller den siste bidragsyterens endring(er) på denne siden med ett klikk',
-'tooltip-undo' => '«Angre» tilbakestiller denne endringen og åpner redigeringsskjemaet i forhåndsvisningsmodus. Det tillater en å legge til en begrunnelse i redigeringsforklaringen.',
-'tooltip-preferences-save' => 'Lagre innstillinger',
-'tooltip-summary' => 'Skriv et kort sammendrag',
-
-# Stylesheets
-'common.css' => '/* CSS plassert i denne fila vil gjelde for alle utseender. */',
-'standard.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Standard */',
-'nostalgia.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Nostalgia */',
-'cologneblue.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Kølnerblå */',
-'monobook.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Monobook */',
-'myskin.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta MySkin */',
-'chick.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Chick */',
-'simple.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Simple */',
-'modern.css' => '/* CSS i denne fila vil gjelde alle som bruker drakta Modern */',
-
-# Scripts
-'common.js' => '/* Javascript i denne fila vil gjelde for alle drakter. */',
-'standard.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Standard */',
-'nostalgia.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Nostalgia */',
-'cologneblue.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Kølnerblå */',
-'monobook.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Monobook */',
-'myskin.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta MySkin */',
-'chick.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Chick */',
-'simple.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Simple */',
-'modern.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Modern */',
-
-# Metadata
-'notacceptable' => 'Tjeneren har ingen mulige måter å vise data i din nettleser.',
-
-# Attribution
-'anonymous' => '{{PLURAL:$1|Anonym bruker|Anonyme brukere}} av {{SITENAME}}',
-'siteuser' => '{{SITENAME}}-bruker $1',
-'anonuser' => '{{SITENAME}}s anonyme bruker $1',
-'lastmodifiedatby' => 'Denne siden ble sist redigert $1 kl. $2 av $3.',
-'othercontribs' => 'Basert på arbeid av $1.',
-'others' => 'andre',
-'siteusers' => '{{SITENAME}}-{{PLURAL:$2|bruker|brukere}} $1',
-'anonusers' => '{{SITENAME}}s {{PLURAL:$2|anonyme bruker|anonyme brukere}} $1',
-'creditspage' => 'Sidekrediteringer',
-'nocredits' => 'Ingen krediteringer er tilgjengelig for denne siden.',
-
-# Spam protection
-'spamprotectiontitle' => 'Søppelpostfilter',
-'spamprotectiontext' => 'Siden du ønsket å lagre ble blokkert av spamfilteret.
-Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nettsted.',
-'spamprotectionmatch' => 'Følgende tekst er det som aktiverte spamfilteret: $1',
-'spambot_username' => 'MediaWikis spamopprydning',
-'spam_reverting' => 'Tilbakestiller til siste versjon uten lenke til $1',
-'spam_blanking' => 'Alle revisjoner inneholdt lenke til $1, tømmer siden',
-
-# Info page
-'pageinfo-title' => 'Informasjon om «$1»',
-'pageinfo-header-edits' => 'Redigeringer',
-'pageinfo-header-watchlist' => 'Overvåkningsliste',
-'pageinfo-header-views' => 'Visninger',
-'pageinfo-subjectpage' => 'Side',
-'pageinfo-talkpage' => 'Diskusjonsside',
-'pageinfo-watchers' => 'Antall overvåkere',
-'pageinfo-edits' => 'Antall redigeringer',
-'pageinfo-authors' => 'Antall forskjellige forfattere',
-'pageinfo-views' => 'Antall visninger',
-'pageinfo-viewsperedit' => 'Visninger per redigering',
-
-# Skin names
-'skinname-standard' => 'Standard',
-'skinname-nostalgia' => 'Nostalgi',
-'skinname-cologneblue' => 'Kølnerblå',
-'skinname-monobook' => 'Monobook',
-'skinname-myskin' => 'Eget utseende',
-'skinname-simple' => 'Enkel',
-'skinname-modern' => 'Moderne',
-
-# Patrolling
-'markaspatrolleddiff' => 'Godkjenn endringen',
-'markaspatrolledtext' => 'Godkjenn denne siden',
-'markedaspatrolled' => 'Merket som godkjent',
-'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt markert som patruljert.',
-'rcpatroldisabled' => 'Siste endringer-patruljering er slått av',
-'rcpatroldisabledtext' => 'Siste endringer-patruljeringsfunksjonen er slått av.',
-'markedaspatrollederror' => 'Kan ikke merke som godkjent',
-'markedaspatrollederrortext' => 'Du må spesifisere en versjon å merke som godkjent.',
-'markedaspatrollederror-noautopatrol' => 'Du kan ikke merke dine egne endringer som godkjente.',
-
-# Patrol log
-'patrol-log-page' => 'Godkjenningslogg',
-'patrol-log-header' => 'Dette er en logg over patruljerte sideversjoner.',
-'log-show-hide-patrol' => '$1 patruljeringslogg',
-
-# Image deletion
-'deletedrevision' => 'Slettet gammel revisjon $1.',
-'filedeleteerror-short' => 'Feil under filsletting: $1',
-'filedeleteerror-long' => 'Feil oppsto under filsletting:
-
-$1',
-'filedelete-missing' => 'Filen «$1» kan ikke slettes fordi den ikke finnes.',
-'filedelete-old-unregistered' => 'Filrevisjonen «$1» finnes ikke i databasen.',
-'filedelete-current-unregistered' => 'Filen «$1» finnes ikke i databasen.',
-'filedelete-archive-read-only' => 'Arkivmappa «$1» kan ikke skrives av tjeneren.',
-
-# Browsing diffs
-'previousdiff' => '← Forrige endring',
-'nextdiff' => 'Neste endring →',
-
-# Media information
-'mediawarning' => "'''Advarsel''': Denne filen kan inneholde farlig kode.
-Ved å åpne den kan systemet ditt kompromitteres.",
-'imagemaxsize' => "Bildestørrelsesgrense:<br />''(for filbeskrivelsessider)''",
-'thumbsize' => 'Miniatyrbildestørrelse:',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|én side|$3 sider}}',
-'file-info' => 'filstørrelse: $1, MIME-type: $2',
-'file-info-size' => '$1 × $2 piksler, filstørrelse: $3, MIME-type: $4',
-'file-info-size-pages' => '$1 × $2 piksler, filstørrelse: $3, MIME-type: $4, $5 {{PLURAL:$5|side|sider}}',
-'svg-long-desc' => 'SVG-fil, standardoppløsning $1 × $2 piksler, filstørrelse: $3',
-'show-big-image' => 'Full oppløsning',
-'show-big-image-size' => '$1 × $2 piksler',
-'file-info-gif-looped' => 'gjentas',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|ramme|rammer}}',
-'file-info-png-looped' => 'loopet',
-'file-info-png-repeat' => 'avspilt $1 {{PLURAL:$1|gang|ganger}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|bilde|bilder}}',
-
-# Special:NewFiles
-'newimages' => 'Galleri over nye filer',
-'imagelisttext' => "Dete er en liste med '''$1''' {{PLURAL:$1|fil|filer}} sortert $2.",
-'newimages-summary' => 'Denne spesialsiden viser de sist opplastede filene.',
-'newimages-legend' => 'Filnavn',
-'newimages-label' => 'Filnavn (helt eller delvis):',
-'showhidebots' => '($1 roboter)',
-'noimages' => 'Ingenting å se.',
-'ilsubmit' => 'Søk',
-'bydate' => 'etter dato',
-'sp-newimages-showfrom' => 'Vis nye filer fra og med $2 $1',
-
-# Bad image list
-'bad_image_list' => 'Formatet er som følger:
-
-Kun listeelementer (linjer som starter med *) tas med.
-Den første lenken på en linje må være en lenke til en dårlig fil.
-Alle andre lenker på samme linje anses for å være unntak, altså sider der filen kan opptre.',
-
-# Metadata
-'metadata' => 'Metadata',
-'metadata-help' => 'Denne filen inneholder tilleggsinformasjon, antagligvis lagt til av digitalkameraet eller skanneren brukt til å lage eller digitalisere det.
-Hvis filen har blitt forandret fra utgangspunktet, kan enkelte detaljer være unøyaktige.',
-'metadata-expand' => 'Vis utvidede detaljer',
-'metadata-collapse' => 'Skjul utvidede detaljer',
-'metadata-fields' => 'Bildemetadatafelt listet i denne meldingen inkluderes på bildesiden når metadatatabellen er slått sammen.
-Andre vil skjules som standard.
-* make
-* model
-* datetimeoriginal
-* exposuretime
-* fnumber
-* isospeedratings
-* focallength
-* artist
-* copyright
-* imagedescription
-* gpslatitude
-* gpslongitude
-* gpsaltitude',
-
-# EXIF tags
-'exif-imagewidth' => 'Bredde',
-'exif-imagelength' => 'Høyde',
-'exif-bitspersample' => 'Bits per komponent',
-'exif-compression' => 'Kompresjonsskjema',
-'exif-photometricinterpretation' => 'Pixelsammensetning',
-'exif-orientation' => 'Retning',
-'exif-samplesperpixel' => 'Antall komponenter',
-'exif-planarconfiguration' => 'Dataarrangement',
-'exif-ycbcrsubsampling' => 'Subsamplingsforhold mellom Y og C',
-'exif-ycbcrpositioning' => 'Y- og C-posisjonering',
-'exif-xresolution' => 'Horisontal oppløsning',
-'exif-yresolution' => 'Vertikal oppløsning',
-'exif-stripoffsets' => 'Plassering for bildedata',
-'exif-rowsperstrip' => 'Antall rader per stripe',
-'exif-stripbytecounts' => 'Antall byte per kompresserte stripe',
-'exif-jpeginterchangeformat' => 'Offset til JPEG SOI',
-'exif-jpeginterchangeformatlength' => 'Byte med JPEG-data',
-'exif-whitepoint' => 'Hvitpunktkromatisitet',
-'exif-primarychromaticities' => 'Primærfargenes renhet',
-'exif-ycbcrcoefficients' => 'Koeffisienter fr fargeromstransformasjonsmatrise',
-'exif-referenceblackwhite' => 'Par av svarte og hvite referanseverdier',
-'exif-datetime' => 'Dato og tid for filendring',
-'exif-imagedescription' => 'Bildetittel',
-'exif-make' => 'Kameraprodusent',
-'exif-model' => 'Kameramodell',
-'exif-software' => 'Programvare brukt',
-'exif-artist' => 'Skaper',
-'exif-copyright' => 'Opphavsbeskyttelse tilhører',
-'exif-exifversion' => 'Exif-versjon',
-'exif-flashpixversion' => 'Støttet Flashpix-versjon',
-'exif-colorspace' => 'Fargerom',
-'exif-componentsconfiguration' => 'Betydning av hver komponent',
-'exif-compressedbitsperpixel' => 'Bildekompresjonsmodus',
-'exif-pixelydimension' => 'Bildebredde',
-'exif-pixelxdimension' => 'Bildehøyde',
-'exif-usercomment' => 'Brukerkommentarer',
-'exif-relatedsoundfile' => 'Relatert lydfil',
-'exif-datetimeoriginal' => 'Dato og tid for datagenerering',
-'exif-datetimedigitized' => 'Dato og tid for digitalisering',
-'exif-subsectime' => 'Endringstidspunkt, sekunddeler',
-'exif-subsectimeoriginal' => 'Eksponeringstidspunkt, sekunddeler',
-'exif-subsectimedigitized' => 'Digitaliseringstidspunkt, sekunddeler',
-'exif-exposuretime' => 'Eksponeringstid',
-'exif-exposuretime-format' => '$1 sek ($2)',
-'exif-fnumber' => 'F-nummer',
-'exif-exposureprogram' => 'Eksponeringsprogram',
-'exif-spectralsensitivity' => 'Spektralsensitivitet',
-'exif-isospeedratings' => 'Filmhastighet (ISO)',
-'exif-shutterspeedvalue' => 'APEX lukkerhastighet',
-'exif-aperturevalue' => 'APEX blenderåpning',
-'exif-brightnessvalue' => 'APEX lysstyrke',
-'exif-exposurebiasvalue' => 'Eksponeringsbias',
-'exif-maxaperturevalue' => 'Maksimal blender',
-'exif-subjectdistance' => 'Avstand til subjekt',
-'exif-meteringmode' => 'Målingsmodus',
-'exif-lightsource' => 'Lyskilde',
-'exif-flash' => 'Blits',
-'exif-focallength' => 'Linsens brennvidde',
-'exif-subjectarea' => 'Motivområde',
-'exif-flashenergy' => 'Blitsenergi',
-'exif-focalplanexresolution' => 'Oppløsning i fokalplan X',
-'exif-focalplaneyresolution' => 'Oppløsning i fokalplan Y',
-'exif-focalplaneresolutionunit' => 'Enhet for oppløsning i fokalplan',
-'exif-subjectlocation' => 'Motivets beliggenhet',
-'exif-exposureindex' => 'Eksponeringsindeks',
-'exif-sensingmethod' => 'Avkjenningsmetode',
-'exif-filesource' => 'Filkilde',
-'exif-scenetype' => 'Scenetype',
-'exif-customrendered' => 'Tilpasset bildebehandling',
-'exif-exposuremode' => 'Eksponeringsmodus',
-'exif-whitebalance' => 'Hvit balanse',
-'exif-digitalzoomratio' => 'Digitalt zoomomfang',
-'exif-focallengthin35mmfilm' => 'Brennvidde på 35 mm-film',
-'exif-scenecapturetype' => 'Motivprogram',
-'exif-gaincontrol' => 'Scenekontroll',
-'exif-contrast' => 'Kontrast',
-'exif-saturation' => 'Metning',
-'exif-sharpness' => 'Skarphet',
-'exif-devicesettingdescription' => 'Beskrivelse av apparatets innstilling',
-'exif-subjectdistancerange' => 'Avstandsintervall til motiv',
-'exif-imageuniqueid' => 'Unik bilde-ID',
-'exif-gpsversionid' => 'Versjon for GPS-tagger',
-'exif-gpslatituderef' => 'nordlig eller sørlig breddegrad',
-'exif-gpslatitude' => 'Breddegrad',
-'exif-gpslongituderef' => 'Østlig eller vestlig breddegrad',
-'exif-gpslongitude' => 'Lengdegrad',
-'exif-gpsaltituderef' => 'Høydereferanse',
-'exif-gpsaltitude' => 'Høyde',
-'exif-gpstimestamp' => 'GPS-tid (atomklokke)',
-'exif-gpssatellites' => 'Satelitter brukt i måling',
-'exif-gpsstatus' => 'Mottakerstatus',
-'exif-gpsmeasuremode' => 'Målingsmodus',
-'exif-gpsdop' => 'Målingspresisjon',
-'exif-gpsspeedref' => 'Fartsenhet',
-'exif-gpsspeed' => 'GPS-mottakerens hastighet',
-'exif-gpstrackref' => 'Referanse for bevegelsesretning',
-'exif-gpstrack' => 'Bevegelsesretning',
-'exif-gpsimgdirectionref' => 'Referanse for bilderetning',
-'exif-gpsimgdirection' => 'Bilderetning',
-'exif-gpsmapdatum' => 'Brukt geodetisk data',
-'exif-gpsdestlatituderef' => 'Referanse for målbreddegrad',
-'exif-gpsdestlatitude' => 'Målbreddegrad',
-'exif-gpsdestlongituderef' => 'Referanse for mållengdegrad',
-'exif-gpsdestlongitude' => 'Mållengdegrad',
-'exif-gpsdestbearingref' => 'Referanse for retning mot målet',
-'exif-gpsdestbearing' => 'Retning mot målet',
-'exif-gpsdestdistanceref' => 'Referanse for lengde til mål',
-'exif-gpsdestdistance' => 'Lengde til mål',
-'exif-gpsprocessingmethod' => 'Navn på GPS-prosesseringsmetode',
-'exif-gpsareainformation' => 'Navn på GPS-område',
-'exif-gpsdatestamp' => 'GPS-dato',
-'exif-gpsdifferential' => 'Differentiell GPS-korreksjon',
-'exif-jpegfilecomment' => 'JPEG-filkommentar',
-'exif-keywords' => 'Nøkkelord',
-'exif-worldregioncreated' => 'Verdensregionen som bildet ble tatt i',
-'exif-countrycreated' => 'Landet som bildet ble tatt i',
-'exif-countrycodecreated' => 'Landskoden som bildet ble tatt i',
-'exif-provinceorstatecreated' => 'Provinsen eller delstaten som bildet ble tatt i',
-'exif-citycreated' => 'Byen som bildet ble tatt i',
-'exif-sublocationcreated' => 'Bydelen som bildet ble tatt i',
-'exif-worldregiondest' => 'Verdensregionen vises',
-'exif-countrydest' => 'Landet vises',
-'exif-countrycodedest' => 'Landskoden vises',
-'exif-provinceorstatedest' => 'Provinsen eller delstaten vises',
-'exif-citydest' => 'Byen vises',
-'exif-sublocationdest' => 'Bydelen vises',
-'exif-objectname' => 'Kort tittel',
-'exif-specialinstructions' => 'Spesielle instruksjoner',
-'exif-headline' => 'Overskrift',
-'exif-credit' => 'Kreditt/Leverandør',
-'exif-source' => 'Kilde',
-'exif-editstatus' => 'Bildets redaksjonelle status',
-'exif-urgency' => 'Prioritet',
-'exif-fixtureidentifier' => 'Fiksturnavn',
-'exif-locationdest' => 'Avbildet plass',
-'exif-locationdestcode' => 'Avbildet plasseringskode',
-'exif-objectcycle' => 'Tid på dagen mediet er ment for',
-'exif-contact' => 'Kontaktinformasjon',
-'exif-writer' => 'Forfatter',
-'exif-languagecode' => 'Språk',
-'exif-iimversion' => 'IIM-versjon',
-'exif-iimcategory' => 'Kategori',
-'exif-iimsupplementalcategory' => 'Tilleggskategorier',
-'exif-datetimeexpires' => 'Ikke bruk etter',
-'exif-datetimereleased' => 'Utgitt den',
-'exif-originaltransmissionref' => 'Opprinnelig lokasjonskode for transmisjon',
-'exif-identifier' => 'Identifikator',
-'exif-lens' => 'Objektiv',
-'exif-serialnumber' => 'Kameraets serienummer',
-'exif-cameraownername' => 'Kameraets eier',
-'exif-label' => 'Etikett',
-'exif-datetimemetadata' => 'Dato metadata sist ble endret',
-'exif-nickname' => 'Bildets uformelle navn',
-'exif-rating' => 'Vurdering (av 5)',
-'exif-rightscertificate' => 'Rettighetsforvaltningssertifikat',
-'exif-copyrighted' => 'Opphavsrettsstatus',
-'exif-copyrightowner' => 'Opphavsrettsinnehaver',
-'exif-usageterms' => 'Bruksvilkår',
-'exif-webstatement' => 'Opphavsrettserklæring på internett',
-'exif-originaldocumentid' => 'Unik ID for originaldokumentet',
-'exif-licenseurl' => 'URL for opphavsrettslisens',
-'exif-morepermissionsurl' => 'Alternativ lisensieringsinformasjon',
-'exif-attributionurl' => 'Ved gjenbruk av dette arbeidet, vennligst inkluder en lenke til',
-'exif-preferredattributionname' => 'Ved gjenbruk av dette arbeidet, vennligst gi kreditt til',
-'exif-pngfilecomment' => 'PNG-filkommentar',
-'exif-disclaimer' => 'Ansvarsfraskrivelse',
-'exif-contentwarning' => 'Innholdsadvarsel',
-'exif-giffilecomment' => 'GIF-filkommentar',
-'exif-intellectualgenre' => 'Elementtype',
-'exif-subjectnewscode' => 'Emnekode',
-'exif-scenecode' => 'IPTC-scenekode',
-'exif-event' => 'Avbildet hendelse',
-'exif-organisationinimage' => 'Avbildet organisasjon',
-'exif-personinimage' => 'Avbildet person',
-'exif-originalimageheight' => 'Høyde på bildet før det ble beskåret',
-'exif-originalimagewidth' => 'Bredde på bildet før det ble beskåret',
-
-# EXIF attributes
-'exif-compression-1' => 'Ukomprimert',
-'exif-compression-2' => 'CCITT Gruppe 3 1-dimensjonal modifisert Huffman-kjørelengdekoding',
-'exif-compression-3' => 'CCITT Gruppe 3 faks-koding',
-'exif-compression-4' => 'CCITT Gruppe 4 faks-koding',
-
-'exif-copyrighted-true' => 'Opphavsrettsbeskyttet',
-'exif-copyrighted-false' => 'Ikke beskyttet av opphavsrett',
-
-'exif-unknowndate' => 'Ukjent dato',
-
-'exif-orientation-1' => 'Normal',
-'exif-orientation-2' => 'Snudd horisontalt',
-'exif-orientation-3' => 'Rotert 180°',
-'exif-orientation-4' => 'Snudd vertikalt',
-'exif-orientation-5' => 'Rotated 90° CCW and flipped vertically
-
-Rotert 90° mot klokka og vridd vertikalt',
-'exif-orientation-6' => 'Rotert 90° mot klokka',
-'exif-orientation-7' => 'Rotert 90° med klokka og vridd vertikalt',
-'exif-orientation-8' => 'Rotert 90° med klokka',
-
-'exif-planarconfiguration-1' => 'chunkformat',
-'exif-planarconfiguration-2' => 'planærformat',
-
-'exif-colorspace-65535' => 'Ukalibrert',
-
-'exif-componentsconfiguration-0' => 'finnes ikke',
-
-'exif-exposureprogram-0' => 'Ikke angitt',
-'exif-exposureprogram-1' => 'Manuell',
-'exif-exposureprogram-2' => 'Normalt program',
-'exif-exposureprogram-3' => 'Blenderprioritet',
-'exif-exposureprogram-4' => 'Slutterprioritet',
-'exif-exposureprogram-5' => 'Kunstnerlig program (prioriterer skarphetsdyp)',
-'exif-exposureprogram-6' => 'Bevegelsesprogram (prioriterer kortere sluttertid)',
-'exif-exposureprogram-7' => 'Portrettmodus (for nærbilder med ufokusert bakgrunn)',
-'exif-exposureprogram-8' => 'Landskapsmodus (for landskapsbilder med fokusert bakgrunn)',
-
-'exif-subjectdistance-value' => '$1 meter',
-
-'exif-meteringmode-0' => 'Ukjent',
-'exif-meteringmode-1' => 'Gjennomsnitt',
-'exif-meteringmode-2' => 'Sentrumsveid gjennomsnitt',
-'exif-meteringmode-3' => 'Spot',
-'exif-meteringmode-4' => 'Multispot',
-'exif-meteringmode-5' => 'Mønster',
-'exif-meteringmode-6' => 'Delvis',
-'exif-meteringmode-255' => 'Annet',
-
-'exif-lightsource-0' => 'Ukjent',
-'exif-lightsource-1' => 'Dagslys',
-'exif-lightsource-2' => 'Lysrør',
-'exif-lightsource-3' => 'Glødelampe',
-'exif-lightsource-4' => 'Blits',
-'exif-lightsource-9' => 'Fint vær',
-'exif-lightsource-10' => 'Overskyet',
-'exif-lightsource-11' => 'Skygge',
-'exif-lightsource-12' => 'Dagslyslysrør (D 5700 – 7100K)',
-'exif-lightsource-13' => 'Dagshvitt lysrør (N 4600 – 5400K)',
-'exif-lightsource-14' => 'Kaldhvitt lysrør (W 3900 – 4500K)',
-'exif-lightsource-15' => 'Hvitt lysrør (WW 3200 – 3700K)',
-'exif-lightsource-17' => 'Standardlys A',
-'exif-lightsource-18' => 'Standardlys B',
-'exif-lightsource-19' => 'Standardlys C',
-'exif-lightsource-24' => 'ISO studiobelysning',
-'exif-lightsource-255' => 'Annen lyskilde',
-
-# Flash modes
-'exif-flash-fired-0' => 'Blitz ikke utløst',
-'exif-flash-fired-1' => 'Blitz utløst',
-'exif-flash-return-0' => 'ingen funksjon for oppdaing av strobelys',
-'exif-flash-return-2' => 'strobelys ikke oppdaget',
-'exif-flash-return-3' => 'strobelys oppdaget',
-'exif-flash-mode-1' => 'tvunget blitzutløsning',
-'exif-flash-mode-2' => 'tvunget blitzløs',
-'exif-flash-mode-3' => 'automatisk modus',
-'exif-flash-function-1' => 'Ingen blitzfunksjon',
-'exif-flash-redeye-1' => 'røde-øyne-redusering',
-
-'exif-focalplaneresolutionunit-2' => 'tommer',
-
-'exif-sensingmethod-1' => 'Ikke angitt',
-'exif-sensingmethod-2' => 'Énchipsfargesensor',
-'exif-sensingmethod-3' => 'Tochipsfargesensor',
-'exif-sensingmethod-4' => 'Trechipsfargesensor',
-'exif-sensingmethod-5' => 'Fargesekvensiell områdesensor',
-'exif-sensingmethod-7' => 'Trilineær sensor',
-'exif-sensingmethod-8' => 'Fargesekvensiell linær sensor',
-
-'exif-filesource-3' => 'Digitalt stillbildekamera',
-
-'exif-scenetype-1' => 'Direktefotografert bilde',
-
-'exif-customrendered-0' => 'Normal prosess',
-'exif-customrendered-1' => 'Tilpasset prosess',
-
-'exif-exposuremode-0' => 'Automatisk eksponering',
-'exif-exposuremode-1' => 'Manuell eksponering',
-'exif-exposuremode-2' => 'Automatisk alternativeksponering',
-
-'exif-whitebalance-0' => 'Automatisk hvitbalanse',
-'exif-whitebalance-1' => 'Manuell hvitbalanse',
-
-'exif-scenecapturetype-0' => 'Standard',
-'exif-scenecapturetype-1' => 'Landskap',
-'exif-scenecapturetype-2' => 'Portrett',
-'exif-scenecapturetype-3' => 'Nattscene',
-
-'exif-gaincontrol-0' => 'Ingen',
-'exif-gaincontrol-1' => 'Økning av lavnivåforsterkning',
-'exif-gaincontrol-2' => 'Økning av høynivåforsterkning',
-'exif-gaincontrol-3' => 'Senkning av lavnivåforsterkning',
-'exif-gaincontrol-4' => 'Senkning av høynivåforsterkning',
-
-'exif-contrast-0' => 'Normal',
-'exif-contrast-1' => 'Myk',
-'exif-contrast-2' => 'Hard',
-
-'exif-saturation-0' => 'Normal',
-'exif-saturation-1' => 'Lav metningsgrad',
-'exif-saturation-2' => 'Høy metningsgrad',
-
-'exif-sharpness-0' => 'Normal',
-'exif-sharpness-1' => 'Myk',
-'exif-sharpness-2' => 'Hard',
-
-'exif-subjectdistancerange-0' => 'Ukjent',
-'exif-subjectdistancerange-1' => 'Makro',
-'exif-subjectdistancerange-2' => 'Nærbilde',
-'exif-subjectdistancerange-3' => 'Fjernbilde',
-
-# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
-'exif-gpslatitude-n' => 'Nordlig breddegrad',
-'exif-gpslatitude-s' => 'Sørlig breddegrad',
-
-# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
-'exif-gpslongitude-e' => 'Østlig lengdegrad',
-'exif-gpslongitude-w' => 'Vestlig lengdegrad',
-
-# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1|Én|$1}} meter over havet',
-'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1|Én|$1}} meter under havet',
-
-'exif-gpsstatus-a' => 'Måling pågår',
-'exif-gpsstatus-v' => 'Målingsinteroperabilitet',
-
-'exif-gpsmeasuremode-2' => 'todimensjonell måling',
-'exif-gpsmeasuremode-3' => 'tredimensjonell måling',
-
-# Pseudotags used for GPSSpeedRef
-'exif-gpsspeed-k' => 'Kilometer per time',
-'exif-gpsspeed-m' => 'Miles per time',
-'exif-gpsspeed-n' => 'Knop',
-
-# Pseudotags used for GPSDestDistanceRef
-'exif-gpsdestdistance-k' => 'Kilometer',
-'exif-gpsdestdistance-m' => 'Miles',
-'exif-gpsdestdistance-n' => 'Nautiske mil',
-
-'exif-gpsdop-excellent' => 'Utmerket ($1)',
-'exif-gpsdop-good' => 'God ($1)',
-'exif-gpsdop-moderate' => 'Moderat ($1)',
-'exif-gpsdop-fair' => 'Middelmådig ($1)',
-'exif-gpsdop-poor' => 'Dårlig ($1)',
-
-'exif-objectcycle-a' => 'Kun morgen',
-'exif-objectcycle-p' => 'Kun kveld',
-'exif-objectcycle-b' => 'Både morgen og kveld',
-
-# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
-'exif-gpsdirection-t' => 'Sann retning',
-'exif-gpsdirection-m' => 'Magnetisk retning',
-
-'exif-ycbcrpositioning-1' => 'Sentrert',
-'exif-ycbcrpositioning-2' => 'Co-lokalisert',
-
-'exif-dc-contributor' => 'Bidragsytere',
-'exif-dc-coverage' => 'Romlig eller timelig omfang av mediet',
-'exif-dc-date' => 'Dato(er)',
-'exif-dc-publisher' => 'Utgiver',
-'exif-dc-relation' => 'Relaterte media',
-'exif-dc-rights' => 'Rettigheter',
-'exif-dc-source' => 'Mediakilde',
-'exif-dc-type' => 'Mediatype',
-
-'exif-rating-rejected' => 'Avvist',
-
-'exif-isospeedratings-overflow' => 'Større enn 65535',
-
-'exif-iimcategory-ace' => 'Kunst, kultur og underholdning',
-'exif-iimcategory-clj' => 'Kriminalitet og jura',
-'exif-iimcategory-dis' => 'Katastrofer og ulykker',
-'exif-iimcategory-fin' => 'Økonomi og næringsliv',
-'exif-iimcategory-edu' => 'Utdanning',
-'exif-iimcategory-evn' => 'Miljø',
-'exif-iimcategory-hth' => 'Helse',
-'exif-iimcategory-hum' => 'Menneskelig interesse',
-'exif-iimcategory-lab' => 'Arbeidskraft',
-'exif-iimcategory-lif' => 'Livsstil og fritid',
-'exif-iimcategory-pol' => 'Politikk',
-'exif-iimcategory-rel' => 'Religion og livssyn',
-'exif-iimcategory-sci' => 'Vitenskap og teknologi',
-'exif-iimcategory-soi' => 'Sosiale problemer',
-'exif-iimcategory-spo' => 'Sport',
-'exif-iimcategory-war' => 'Krig, konflikt og uro',
-'exif-iimcategory-wea' => 'Vær',
-
-'exif-urgency-normal' => 'Normal ($1)',
-'exif-urgency-low' => 'Lav ($1)',
-'exif-urgency-high' => 'Høy ($1)',
-'exif-urgency-other' => 'Brukerdefinert prioritet ($1)',
-
-# External editor support
-'edit-externally' => 'Rediger denne filen med et eksternt program',
-'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
-
-# 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
-
-# E-mail address confirmation
-'confirmemail' => 'Bekreft e-postadresse',
-'confirmemail_noemail' => 'Du har ikke oppgitt en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]].',
-'confirmemail_text' => 'Du må bekrefte e-postadressen din før du kan benytte deg av e-posttjenester på {{SITENAME}}. Trykk på knappen under for å sende en bekreftelsesmelding til e-postadressen din. Meldingen vil inneholde en lenke med en kode; følg lenken for å bekrefte at e-postadressen er gyldig.',
-'confirmemail_pending' => 'En bekreftelseskode har allerede blitt sendt til deg på e-post; om du nylig opprettet kontoen din, kan du ønske å vente noen minutter før du spør om ny kode.',
-'confirmemail_send' => 'Send en bekreftelseskode.',
-'confirmemail_sent' => 'Bekreftelsesmelding sendt.',
-'confirmemail_oncreate' => 'En bekreftelseskode ble sendt til din e-postadresse. Denne koden er ikke nødvendig for å logge inn, men er nødvendig for å slå på e-postbaserte tjenester i denne wikien.',
-'confirmemail_sendfailed' => '{{SITENAME}} klarte ikke å sende bekreftelseskode.
-Sjekk e-postadressen for ugyldige tegn.
-
-E-postsenderen ga følgende melding: $1',
-'confirmemail_invalid' => 'Ugyldig bekreftelseskode. Koden kan ha utløpt.',
-'confirmemail_needlogin' => 'Du må $1 for å bekrefte e-postadressen din.',
-'confirmemail_success' => 'Din e-postadresse er nå bekreftet. Du kan nå logge inn og nyte wikien.',
-'confirmemail_loggedin' => 'E-postadressen din er bekreftet.',
-'confirmemail_error' => 'Noe gikk galt under lagringen av din bekreftelse.',
-'confirmemail_subject' => 'Bekreftelsesmelding fra {{SITENAME}}',
-'confirmemail_body' => 'Noen, antageligvis deg, har registrert kontoen «$2» på {{SITENAME}}, fra IP-adressen $1.
-
-For å bekrefte at denne kontoen tilhører deg og for å aktivere e-posttjenester på {{SITENAME}}, åpne følgende lenke i nettleseren din:
-
-$3
-
-Om du *ikke* registrerte kontoen, følg denne lenken for å avbryte bekreftelse av e-postadresse:
-
-$5
-
-Denne bekreftelseskoden utgår $4.',
-'confirmemail_body_changed' => 'Noen, antageligvis deg, fra IP-adresse $1,
-har endret e-postadressen til kontoen «$2» til denne adressen på {{SITENAME}}.
-
-For å bekrefte at denne kontoen virkelig er din og for å reaktivere e-postegenskaper på {{SITENAME}}, åpne denne lenken i nettleseren din:
-
-$3
-
-Dersom denne kontoen *ikke* tilhører deg, følg denne lenken
-for å avbryte e-postbekreftelsen:
-
-$5
-
-Denne bekreftelseskoden vil løpe ut $4.',
-'confirmemail_body_set' => 'Noen, trolig deg, har satt e-postadressen for kontoen «$2» til denne adressen på {{SITENAME}}, fra IP-adressen $1.
-
-For å bekrefte at denne kontoen tilhører deg og for å slå på e-posttjenestene på {{SITENAME}}, åpne denne lenka i nettleseren din:
-
-$3
-
-Om kontoen *ikke* tilhører deg, følg denne lenka for å avbryte bekreftelsen:
-
-$5
-
-Denne bekreftelseskoden går ut på dato $4.',
-'confirmemail_invalidated' => 'Bekreftelse av e-postadresse avbrutt',
-'invalidateemail' => 'Avbryt bekreftelse av e-postadresse',
-
-# Scary transclusion
-'scarytranscludedisabled' => '[Interwiki-transkludering er slått av]',
-'scarytranscludefailed' => '[Malen kunne ikke hentes for $1]',
-'scarytranscludetoolong' => '[URL-en er for lang]',
-
-# Delete conflict
-'deletedwhileediting' => "'''Advarsel:''' Denne siden har blitt slettet etter at du begynte å redigere den!",
-'confirmrecreate' => '«[[User:$1|$1]]» ([[User talk:$1|diskusjon]]) slettet siden etter at du begynte å redigere den, med begrunnelsen «$2». Vennligst bekreft at du vil gjenopprette siden.',
-'confirmrecreate-noreason' => 'Brukeren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) slettet denne siden etter at du begynte å redigere. Bekreft at du virkelig ønsker å gjenopprette denne siden.',
-'recreate' => 'Gjenopprett',
-
-# action=purge
-'confirm_purge_button' => 'OK',
-'confirm-purge-top' => "Vil du slette tjenerens mellomlagrede versjon (''cache'') av denne siden?",
-'confirm-purge-bottom' => 'Rensing av en side sletter mellomlageret og tvinger frem den nyeste versjonen.',
-
-# action=watch/unwatch
-'confirm-watch-button' => 'OK',
-'confirm-watch-top' => 'Legg denne siden til overvåkningslisten din?',
-'confirm-unwatch-button' => 'OK',
-'confirm-unwatch-top' => 'Fjern denne siden fra overvåkningslisten din?',
-
-# Multipage image navigation
-'imgmultipageprev' => '← forrige side',
-'imgmultipagenext' => 'neste side &rarr;',
-'imgmultigo' => 'Gå!',
-'imgmultigoto' => 'Gå til siden $1',
-
-# Table pager
-'ascending_abbrev' => 'stig.',
-'descending_abbrev' => 'synk.',
-'table_pager_next' => 'Neste side',
-'table_pager_prev' => 'Forrige side',
-'table_pager_first' => 'Første side',
-'table_pager_last' => 'Siste side',
-'table_pager_limit' => 'Vis $1 elementer per side',
-'table_pager_limit_label' => 'Element per side:',
-'table_pager_limit_submit' => 'Gå',
-'table_pager_empty' => 'Ingen resultater',
-
-# Auto-summaries
-'autosumm-blank' => 'Tømmer siden',
-'autosumm-replace' => 'Erstatter siden med «$1»',
-'autoredircomment' => 'Omdirigerer til [[$1]]',
-'autosumm-new' => 'Ny side: $1',
-
-# Live preview
-'livepreview-loading' => 'Laster…',
-'livepreview-ready' => 'Laster&nbsp;… Klar!',
-'livepreview-failed' => 'Levende forhåndsvisning mislyktes. Prøv vanlig forhåndsvisning.',
-'livepreview-error' => 'Tilkobling mislyktes: $1 «$2»
-Prøv vanlig forhåndsvisning.',
-
-# Friendlier slave lag warnings
-'lag-warn-normal' => 'Endringer nyere enn $1 {{PLURAL:$1|sekund|sekunder}} vises muligens ikke i denne listen.',
-'lag-warn-high' => 'På grunn av stor databaseforsinkelse, vil ikke endringer som er nyere enn $1 {{PLURAL:$1|sekund|sekunder}} vises i denne listen.',
-
-# Watchlist editor
-'watchlistedit-numitems' => 'Overvåkningslisten din inneholder {{PLURAL:$1|én tittel|$1 titler}}, ikke inkludert diskusjonssider.',
-'watchlistedit-noitems' => 'Overvåkningslisten din inneholder ingen titler.',
-'watchlistedit-normal-title' => 'Rediger overvåkningsliste',
-'watchlistedit-normal-legend' => 'Fjern titler fra overvåkninglisten',
-'watchlistedit-normal-explain' => 'Titler på overvåkningslisten din vises nedenfor.
-For å fjerne en tittel, merk av boksen ved siden av den og klikk på «{{int:Watchlistedit-normal-submit}}».
-Du kan også [[Special:EditWatchlist/raw|redigere den rå overvåkningslisten]].',
-'watchlistedit-normal-submit' => 'Fjern titler',
-'watchlistedit-normal-done' => '{{PLURAL:$1|Én tittel|$1 titler}} ble fjernet fra overvåkningslisten din:',
-'watchlistedit-raw-title' => 'Rediger rå overvåkningsliste',
-'watchlistedit-raw-legend' => 'Rediger rå overvåkningsliste',
-'watchlistedit-raw-explain' => 'Titler på overvåkningslisten din vises nedenunder, og kan redigeres ved å legge til eller fjerne fra listen;
-én tittel per linje.
-Når du er ferdig, trykk «{{int:Watchlistedit-raw-submit}}».
-Du kan også [[Special:EditWatchlist|bruke standardverktøyet]].',
-'watchlistedit-raw-titles' => 'Titler:',
-'watchlistedit-raw-submit' => 'Oppdater overvåkningsliste',
-'watchlistedit-raw-done' => 'Overvåkningslisten din er oppdatert.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|Én tittel|$1 titler}} ble lagt til:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Én tittel|$1 titler}} ble fjernet:',
-
-# Watchlist editing tools
-'watchlisttools-view' => 'Vis relevante endringer',
-'watchlisttools-edit' => 'Vis og rediger overvåkningsliste',
-'watchlisttools-raw' => 'Rediger rå overvåkningsliste',
-
-# Hebrew month names
-'hebrew-calendar-m1' => 'Tisjri',
-'hebrew-calendar-m2' => 'Hesjván',
-'hebrew-calendar-m3' => 'Kislév',
-'hebrew-calendar-m4' => 'Tebét',
-'hebrew-calendar-m5' => 'Sjebát',
-'hebrew-calendar-m6' => 'Adár',
-'hebrew-calendar-m6a' => 'Adár I',
-'hebrew-calendar-m6b' => 'Adár II',
-'hebrew-calendar-m7' => 'Nisán',
-'hebrew-calendar-m8' => 'Ijár',
-'hebrew-calendar-m9' => 'Siván',
-'hebrew-calendar-m10' => 'Tammúz',
-'hebrew-calendar-m11' => 'Ab',
-'hebrew-calendar-m12' => 'Elúl',
-'hebrew-calendar-m1-gen' => 'Tisjri',
-'hebrew-calendar-m2-gen' => 'Hesjván',
-'hebrew-calendar-m3-gen' => 'Kislév',
-'hebrew-calendar-m4-gen' => 'Tebét',
-'hebrew-calendar-m5-gen' => 'Sjebát',
-'hebrew-calendar-m6-gen' => 'Adár',
-'hebrew-calendar-m6a-gen' => 'Adár I',
-'hebrew-calendar-m6b-gen' => 'Adár II',
-'hebrew-calendar-m7-gen' => 'Nisán',
-'hebrew-calendar-m8-gen' => 'Ijár',
-'hebrew-calendar-m9-gen' => 'Siván',
-'hebrew-calendar-m10-gen' => 'Tammúz',
-'hebrew-calendar-m11-gen' => 'Ab',
-'hebrew-calendar-m12-gen' => 'Elúl',
-
-# Core parser functions
-'unknown_extension_tag' => 'Ukjent tilleggsmerking «$1»',
-'duplicate-defaultsort' => 'Advarsel: Standardsorteringen «$2» tar over for den tidligere sorteringen «$1».',
-
-# Special:Version
-'version' => 'Versjon',
-'version-extensions' => 'Installerte utvidelser',
-'version-specialpages' => 'Spesialsider',
-'version-parserhooks' => 'Parsertillegg',
-'version-variables' => 'Variabler',
-'version-antispam' => 'Søppelpostforebygging',
-'version-skins' => 'Drakter',
-'version-other' => 'Annet',
-'version-mediahandlers' => 'Mediahåndterere',
-'version-hooks' => 'Haker',
-'version-extension-functions' => 'Tilleggsfunksjoner',
-'version-parser-extensiontags' => 'Tilleggstagger',
-'version-parser-function-hooks' => 'Parserfunksjoner',
-'version-hook-name' => 'Navn',
-'version-hook-subscribedby' => 'Brukes av',
-'version-version' => '(versjon $1)',
-'version-license' => 'Lisens',
-'version-poweredby-credits' => "Denne wikien er drevet av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'andre',
-'version-license-info' => 'MediaWiki er fri programvare; du kan redistribuere det og/eller modifisere det under betingelsene i GNU General Public License som publisert av Free Software Foundation; enten versjon 2 av lisensen, eller (etter eget valg) enhver senere versjon.
-
-MediaWiki er distribuert i håp om at det vil være nyttig, men UTEN NOEN GARANTI; ikke engang implisitt garanti av SALGBARHET eller EGNETHET FOR ET BESTEMT FORMÅL. Se GNU General Public License for flere detaljer.
-
-Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Public License] sammen med dette programmet; hvis ikke, skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA eller [//www.gnu.org/licenses/old-licenses/gpl-2.0.html les det på nettet].',
-'version-software' => 'Installert programvare',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Versjon',
-
-# Special:FilePath
-'filepath' => 'Filsti',
-'filepath-page' => 'Fil:',
-'filepath-submit' => 'Gå',
-'filepath-summary' => 'Denne spesialsiden returnerer den fullstendige stien for en fil.
-Bilder vises med full oppløsning, mens andre filtyper startes direkte gjennom sine tilknyttede programmer.',
-
-# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Søk etter duplikatfiler',
-'fileduplicatesearch-summary' => 'Søk etter duplikatfiler basert på dets hash-verdi.',
-'fileduplicatesearch-legend' => 'Søk etter en duplikatfil',
-'fileduplicatesearch-filename' => 'Filnavn:',
-'fileduplicatesearch-submit' => 'Søk',
-'fileduplicatesearch-info' => '$1 × $2 piksler<br />Filstørrelse: $3<br />MIME-type: $4',
-'fileduplicatesearch-result-1' => 'Det er ingen duplikater av «$1».',
-'fileduplicatesearch-result-n' => 'Det er {{PLURAL:$2|ett duplikat|$2 duplikater}} av «$1».',
-'fileduplicatesearch-noresults' => 'Ingen ved navn «$1» funnet.',
-
-# Special:SpecialPages
-'specialpages' => 'Spesialsider',
-'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
-'specialpages-group-other' => 'Andre spesialsider',
-'specialpages-group-login' => 'Innlogging / registrering',
-'specialpages-group-changes' => 'Siste endringer og logger',
-'specialpages-group-media' => 'Mediarapporter og opplastinger',
-'specialpages-group-users' => 'Brukere og rettigheter',
-'specialpages-group-highuse' => 'Ofte brukte sider',
-'specialpages-group-pages' => 'Sidelister',
-'specialpages-group-pagetools' => 'Sideverktøy',
-'specialpages-group-wiki' => 'Informasjon og verktøy for wikien',
-'specialpages-group-redirects' => 'Omdirigerende spesialsider',
-'specialpages-group-spam' => 'Spamverktøy',
-
-# Special:BlankPage
-'blankpage' => 'Tom side',
-'intentionallyblankpage' => 'Denne siden er tom med vilje',
-
-# External image whitelist
-'external_image_whitelist' => '#La denne linja være som den er<pre>
-#Skriv fragmenter av regulære uttrykk (delen som går mellom //) nedenfor
-#Disse vil sjekkes mot adresser til bilder fra eksterne sider
-#De som blir godkjent vil vises, ellers vil det gis en lenke til bildet
-#Linjer som begynner med # anses som kommentarer
-#Det skilles ikke mellom store og små bokstaver
-
-#Skriv alle fragmenter av regulære uttrykk over denne lina. La denne linja være som den er</pre>',
-
-# Special:Tags
-'tags' => 'Gyldige endringstagger',
-'tag-filter' => 'Filter for [[Special:Tags|tagger]]:',
-'tag-filter-submit' => 'Filtrer',
-'tags-title' => 'Tagger',
-'tags-intro' => 'Denne siden lister opp taggene programvaren kan merke en endring med, og hva de betyr.',
-'tags-tag' => 'Taggnavn',
-'tags-display-header' => 'Utseende på endringslister',
-'tags-description-header' => 'Fullstendig betydning',
-'tags-hitcount-header' => 'Taggede endringer',
-'tags-edit' => 'rediger',
-'tags-hitcount' => '{{PLURAL:$1|én endring|$1 endringer}}',
-
-# Special:ComparePages
-'comparepages' => 'Sammenlign sider',
-'compare-selector' => 'Sammenlign siderevisjoner',
-'compare-page1' => 'Side 1',
-'compare-page2' => 'Side 2',
-'compare-rev1' => 'Revisjon 1',
-'compare-rev2' => 'Revisjon 2',
-'compare-submit' => 'Sammenlign',
-
-# Database error messages
-'dberr-header' => 'Wikien har et problem',
-'dberr-problems' => 'Siden har tekniske problemer.',
-'dberr-again' => 'Prøv å oppdatere siden om noen minutter.',
-'dberr-info' => '(Kan ikke kontakte databasetjeneren: $1)',
-'dberr-usegoogle' => 'Du kan prøve å søke via Google imens.',
-'dberr-outofdate' => 'Merk at deres indeks over våre sider kan være utdatert.',
-'dberr-cachederror' => 'Følgende er en mellomlagret kopi av den etterspurte siden, og kan være foreldet.',
-
-# HTML forms
-'htmlform-invalid-input' => 'Det er problemer med noen av inndatene dine',
-'htmlform-select-badoption' => 'Verdien du valgte er ikke et gyldig alternativ.',
-'htmlform-int-invalid' => 'Verdien du valgte er ikke et heltall.',
-'htmlform-float-invalid' => 'Verdien du valgte er ikke et tall.',
-'htmlform-int-toolow' => 'Verdien du valgte er mindre enn minimum på $1',
-'htmlform-int-toohigh' => 'Verdien du valgte er over det mulige $1',
-'htmlform-required' => 'Denne verdien er påkrevd',
-'htmlform-submit' => 'Lagre',
-'htmlform-reset' => 'Omgjør endringer',
-'htmlform-selectorother-other' => 'Andre',
-
-# SQLite database support
-'sqlite-has-fts' => '$1 med støtte for fulltekstsøk',
-'sqlite-no-fts' => '$1 uten støtte for fulltekstsøk',
-
-# New logging system
-'revdelete-restricted' => 'begrensninger gjelder også administratorer',
-'revdelete-unrestricted' => 'fjernet begrensninger for administratorer',
-'newuserlog-byemail' => 'passord sendt på e-post',
-
-);
index c677229..3e7b519 100644 (file)
@@ -1473,11 +1473,13 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'right-sendemail' => 'Mandar un corrièl als autres utilizaires',
 'right-passwordreset' => 'Tòrna inicializar lo senhal d’un utilizaire ([[Special:PasswordReset|pagina especiala]])',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Istoric de las creacions de comptes',
+'newuserlogpagetext' => "Jornal de las creacions de comptes d'utilizaires.",
+
 # User rights log
 'rightslog' => "Istoric de las modificacions d'estatut",
 'rightslogtext' => "Aquò es un jornal dels cambiaments d'estatut d’utilizaire.",
-'rightslogentry' => 'a modificat los dreches de l’utilizaire « $1 » de $2 a $3',
-'rightsnone' => '(cap)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'legir aquesta pagina',
@@ -2026,10 +2028,6 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
 'activeusers-hidesysops' => 'Amagar los administrators',
 'activeusers-noresult' => "Cap d'utilizaire pas trobat.",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Istoric de las creacions de comptes',
-'newuserlogpagetext' => "Jornal de las creacions de comptes d'utilizaires.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Dreches dels gropes d'utilizaires",
 'listgrouprights-summary' => "Aquesta pagina conten una tièra de gropes definits sus aqueste wiki e mai los dreches d'accès qu'i son associats.
@@ -2152,6 +2150,8 @@ $UNWATCHURL
 
 Retorn e assisténcia :
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'modificada',
 
 # Delete
 'deletepage' => 'Suprimir la pagina',
@@ -3437,6 +3437,7 @@ Picatz lo nom del fichièr sens lo prefix « {{ns:file}}: »",
 'revdelete-restricted' => 'aplicar las restriccions als administrators',
 'revdelete-unrestricted' => 'restriccions levadas pels administrators',
 'newuserlog-byemail' => 'senhal mandat per corrièr electronic',
+'rightsnone' => '(cap)',
 
 # Search suggestions
 'searchsuggest-search' => 'Recercar',
index 89cb9af..6e9b9cb 100644 (file)
@@ -389,6 +389,7 @@ $messages = array(
 'newwindow' => '(ଏହା ନୂଆ ଉଇଣ୍ଡୋରେ ଖୋଲିବ)',
 'cancel' => 'ନାକଚ',
 'moredotdotdot' => 'ଅଧିକ...',
+'morenotlisted' => 'ଆଉ ଅଧିକ ତାଲିକାଭୁକ୍ତ ହୋଇନାହିଁ...',
 'mypage' => 'ପୃଷ୍ଠା',
 'mytalk' => 'ଆଲୋଚନା',
 'anontalk' => 'ଏହି ଆଇ.ପି. ଠିକଣା ଉପରେ ଆଲୋଚନା',
@@ -771,6 +772,7 @@ continue using your old password.',
 # E-mail sending
 'php-mail-error-unknown' => 'PHP ର ମେଲ() କାମରେ ଅଜଣା ଅସୁବିଧା ।',
 'user-mail-no-addy' => 'ଏକ ଇ-ମେଲ ଠିକଣା ବିନା ଇ-ମେଲ ପଠାଇବାକୁ ଚେଷ୍ଟା କଲୁଁ ।',
+'user-mail-no-body' => 'ଏକ ଖାଲି କିମ୍ବା ଅଦରକାରୀ ଛୋଟ ଲେଖା ଥିବା ମେଲ ପଠେଇବାକୁ ଚେଷ୍ଟା କରିଥିଲେ',
 
 # Change password dialog
 'resetpass' => 'ପାସୱାର୍ଡ଼ ବଦଳାନ୍ତୁ',
@@ -1048,6 +1050,7 @@ $1 ଦ୍ଵାରା ପ୍ରତିରୋଧ କରାଯାଇଛି
 'edit-already-exists' => 'ନୂଆ ପୃଷ୍ଠାଟିଏ ତିଆରି କରିପାରିଲୁଁ ନାହିଁ ।
 ଏହା ଅଗରୁ ଅଛି ।',
 'defaultmessagetext' => 'ଡିଫଲ୍ଟ ମେସେଜ ଲେଖାଗୁଡିକ',
+'content-failed-to-parse' => '$1 ପ୍ରକାର ପାଇଁ $2 ଲେଖାକୁ ବର୍ଣ୍ଣନା କରିପାରିଲା ନାହିଁ: $3',
 'invalid-content-data' => 'ଅବୈଧ ଆଧାର ତଥ୍ୟ',
 'content-not-allowed-here' => '"$1" ବିଷୟଗୁଡିକ [[$2]]ପୃଷ୍ଠାରେ ରହିପାରିବ ନାହିଁ',
 
@@ -1267,6 +1270,10 @@ $1",
 'editundo' => 'ପଛକୁ ଫେରିବା',
 'diff-multi' => '({{PLURAL:$2|ଜଣେ ବ୍ୟବହାରକାରୀ|$2 ଜଣ ବ୍ୟବହାରକାରୀ}}ଙ୍କ ଦେଇ ହୋଇଥିବା {{PLURAL:$1|ଗୋଟିଏ ମଝି ସଙ୍କଳନ|$1ଟି ମଝି ସଙ୍କଳନ}} ଦେଖାଯାଉନାହିଁ)',
 'diff-multi-manyusers' => '($2 {{PLURAL:$2|ଜଣ|ଜଣ}} ସଭ୍ୟଙ୍କ ଦେଇ କରାଯାଇଥିବା {{PLURAL:$1|ଗୋଟିଏ ମଝି ସଂସ୍କରଣ|$1 ଗୋଟି ମଝି ସଂସ୍କରଣମାନ}} ଦେଖାଯାଉ ନାହିଁ)',
+'difference-missing-revision' => '($1) {{PLURAL:$2|was|were}}ର ଭିନ୍ନତା {{PLURAL:$2|One revision|$2 revisions}} ମିଳିଲା ନାହିଁ ।
+
+ପୁରୁଣା ହୋଇଯାଇଥିବା ଇତିହାସ ଲିଙ୍କ ଯାହା ଏକ ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାକୁ ଦିଆଯାଇଥିବାରୁ ଏହା ସାଧାରଣତଃ ହୋଇଥାଏ ।
+ଅଧିକ ବିବରଣୀ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log]ରେ ମିଳିପାରିବ ।',
 
 # Search results
 'searchresults' => 'ଖୋଜା ଫଳାଫଳ',
@@ -1537,6 +1544,7 @@ HTML ଟାଗ ପରଖିନିଅନ୍ତୁ ।',
 'right-writeapi' => 'API ଲେଖାର ବ୍ୟବହାର',
 'right-delete' => 'ପୃଷ୍ଠାଟି ଲିଭାଇଦେବେ',
 'right-bigdelete' => 'ବଡ଼ ଇତିହାସ ନଥିବା ପୃଷ୍ଠାସବୁକୁ ଲିଭାଇଦେବେ',
+'right-deletelogentry' => 'କୌଣସି ଏକ ତାଲିକା ବିବରଣୀକୁ ଲିଭାଇବେ ଏବଂ ଏବଂ ଲିଭାଇବାରୁ ବାରଣ କରିବେ',
 'right-deleterevision' => 'ଏକ ପୃଷ୍ଠାର ନିର୍ଦ୍ଦିଷ୍ଟ ସଙ୍କଳନମାନ ଲିଭାଇବେ ଓ ଲିଭାଇବାରୁ ରୋକିବେ',
 'right-deletedhistory' => 'ଯୋଡ଼ାଯାଇଥିବା ଲେଖାକୁ ବାଦ ଦେଇ ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାର ଇତିହାସ ଦେଖିବେ',
 'right-deletedtext' => 'ଲିଭାଇ ଦିଆଯାଇଥିବା ଲେଖା ଓ ଲିଭାଇ ଦିଆଯାଇଥିବା ଲେଖା ଭିତରର ସଙ୍କଳନର ବଦଳ ଦେଖିବେ',
@@ -1573,13 +1581,13 @@ HTML ଟାଗ ପରଖିନିଅନ୍ତୁ ।',
 'right-sendemail' => 'ବାକି ସଭ୍ୟ ମାନଙ୍କୁ ଇ-ମେଲ ପଠାଇବେ',
 'right-passwordreset' => 'ପାସୱାର୍ଡ଼ ପୁନସ୍ଥାପନ ଇମେଲ କରିବେ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ବ୍ୟବହାରକାରୀ ତିଆରି ଲଗ',
+'newuserlogpagetext' => 'ସଭ୍ୟଙ୍କର ଖାତା ଗଠନ ପାଇଁ ଏକ ଇତିହାସ ଅଛି ।',
+
 # User rights log
 'rightslog' => 'ସଭ୍ୟଙ୍କ ଅଧିକାରର ଲଗ',
 'rightslogtext' => 'ସଭ୍ୟଙ୍କ ଅଧିକାର ବଦଳର ଏହା ଏକ ଇତିହାସ ।',
-'rightslogentry' => '$1 ପାଇଁ ଗୋଠ ସଭ୍ୟପଦର ଅବସ୍ଥା $2 ରୁ $3କୁ ବଦଳାଇଦିଆଗଲା',
-'rightslogentry-autopromote' => '$2 ରୁ $3କୁ ଆପେଆପେ ଉନ୍ନୀତ କରାଗଲା',
-'logentry-rights-rights-legacy' => '$1, $3 ପାଇଁ ଗୋଷ୍ଠୀ ସଭ୍ୟପଦ ବଦଳାଇଛି',
-'rightsnone' => '(କିଛି ନାହିଁ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ଏହି ପୃଷ୍ଠାଟି ପଢ଼ିବେ',
@@ -1826,7 +1834,18 @@ $1',
 'backend-fail-closetemp' => 'ଅସ୍ଥାୟୀ ଫାଇଲ ବନ୍ଦ କରିହେଲା ନାହିଁ ।',
 'backend-fail-read' => '$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" ସହ ଯୋଗାଯୋଗ ହୋଇ ପାରିଲା ନାହିଁ ।',
+'backend-fail-internal' => 'ସାଇତା ଧାରକ "$1" କିଛି ଅଜଣା ଅସୁବିଧା ଉପୁଜିଲା ।',
 'backend-fail-contenttype' => '"$1"ରେ ଥିବା ସାଇତା ପାଇଁ ଥିବା ଫାଇଲର ବିଷୟବସ୍ତୁର ପ୍ରକାର ଗୁଡିକ ଜଣାପଡୁନି ।',
+'backend-fail-batchsize' => 'ସାଇତା ଧାରକକୁ  $1 ଫାଇଲର {{PLURAL:$1|operation|operations}} ଏକ ଗୋଛା ଦିଆଯାଇଥିଲା; ସୀମା ହେଉଛି $2 {{PLURAL:$2|operation|operations}} ।',
+'backend-fail-usable' => 'ଅନୁମତି ନଥିବାରୁ କିମ୍ବା ଧାରକ/ସୂଚୀ ନଥିବାରୁ"$1" ଫାଇଲଟିକୁ ପଢି କିମ୍ବା ଲେଖି ହେଲାନି ।',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'ସାଇତା ଧାରକ "$1" ପାଇଁ ପାଠ୍ୟ ଡାଟାବେସକୁ ସଂଯୋଗ କରିହେଲାନି ।',
+'filejournal-fail-dbquery' => 'ସାଇତା ଧାରକ "$1" ପାଇଁ ପାଠ୍ୟ ଡାଟାବେସକୁ ଅପଡେଟ କରିହେଲାନି ।',
 
 # Lock manager
 'lockmanager-notlocked' => 'କିଳାଯାଇଥିବା "$1"କୁ ଖୋଲିପାରିଲୁ ନାହିଁ; ଏହା ପ୍ରକୃତରେ କିଳାଯାଇନାହିଁ ।',
@@ -1837,6 +1856,7 @@ $1',
 'lockmanager-fail-releaselock' => '"$1" ଚାବି ପାଇଁ ତାଲା ମିଳିଲା ନାହିଁ ।',
 'lockmanager-fail-db-bucket' => '$1 ଝୁଡ଼ିରେ ଥିବା ସବୁ କିଳାଯାଇଥିବା ଡାଟାବେସ ସହ ଯୋଗାଯୋଗ କରାଯାଇପାରିଲା ନାହିଁ ।',
 'lockmanager-fail-db-release' => '$1 ଡାଟାବେସରେ ଲାଗିଥିବା ତାଲା ଖୋଲାଯାଇପାରିଲା ନାହିଁ ।',
+'lockmanager-fail-svr-acquire' => '$1 ସର୍ଭରରେ ଲାଗିଥିବା ତାଲା ଖୋଲାଯାଇପାରିଲା ନାହିଁ ।',
 'lockmanager-fail-svr-release' => '$1 ସର୍ଭରରେ ଲାଗିଥିବା ତାଲା ଖୋଲାଯାଇପାରିଲା ନାହିଁ ।',
 
 # ZipDirectoryReader
@@ -1947,11 +1967,16 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 ଅଧିକ ଜାଣିବା ନିମନ୍ତେ ଦୟାକରି [$2 ଫାଇଲ ବିବରଣୀ ପୃଷ୍ଠା ଦେଖନ୍ତୁ] ।',
 'sharedupload-desc-here' => 'ଏହି ଫାଇଲଟି $1 ଠାରୁ ଓ ଏହା ଅନ୍ୟ ପ୍ରକଳ୍ପରେ ବ୍ୟବହାର କରାଯାଇପାରିବ ।
 ଏହାର ବିବରଣୀ [$2 ଫାଇଲ ବିବରଣୀ ପୃଷ୍ଠାରେ] ତଳେ ରହିଅଛି ।',
+'sharedupload-desc-edit' => 'ଏହି ଫାଇଲଟି $1ରୁ ଆସିଛି ଏବଂ ଏହା ଅନ୍ୟ ପ୍ରକଳ୍ପଗୁଡିକରେ ବ୍ୟବହୃତ ହୋଇଥାଇ ପାରେ ।
+ଆପଣ ଏହାର ବର୍ଣ୍ଣନାଟିକୁ ଏହାର [$2 file description page]ରେ ବଦଳାଇ ପାରନ୍ତି ।',
+'sharedupload-desc-create' => 'ଏହି ଫାଇଲଟି $1ରୁ ଆସିଛି ଏବଂ ଏହା ଅନ୍ୟ ପ୍ରକଳ୍ପଗୁଡିକରେ ବ୍ୟବହୃତ ହୋଇଥାଇ ପାରେ ।
+ଆପଣ ଏହାର ବର୍ଣ୍ଣନାଟିକୁ ଏହାର [$2 file description page]ରେ ବଦଳାଇ ପାରନ୍ତି ।',
 'filepage-nofile' => 'ଏହି ନାମରେ କୌଣସିଟି ଫାଇଲ ନାହିଁ ।',
 'filepage-nofile-link' => 'ଏହି ନାମରେ କିଛି ବି ଫାଇଲ ନାହିଁ, କିନ୍ତୁ ଆପଣ ଏହା [$1 ଅପଲୋଡ଼] କରିପାରିବେ ।',
 'uploadnewversion-linktext' => 'ଏହି ଫାଇଲର ନୂଆ ସଙ୍କଳନଟିଏ ଅପଲୋଡ଼ କରିବେ',
 'shared-repo-from' => '$1 ଠାରୁ',
 'shared-repo' => 'ଏକ ବଣ୍ଟା ଭଣ୍ଡାର',
+'upload-disallowed-here' => 'ଆପଣ ଏହି ଫାଇଲଟିକୁ ବଦଳାଇପାରିବେ ନାହିଁ ।',
 
 # File reversion
 'filerevert' => '$1କୁ ଫେରାଇଦେବା',
@@ -2061,6 +2086,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|ବାଇଟ}}',
 'ncategories' => '$1 {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}',
+'ninterwikis' => '{{PLURAL:$1|interwiki|interwikis}} $1',
 'nlinks' => '$1 ଟି {{PLURAL:$1|ଲିଙ୍କ|ଲିଙ୍କ}}',
 'nmembers' => '$1 {{PLURAL:$1|member|ସଭ୍ୟ}}',
 'nrevisions' => '$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
@@ -2081,12 +2107,15 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'wantedpages' => 'ଦରକାରି ପୃଷ୍ଠା',
 'wantedpages-badtitle' => '$1 ଉତ୍ତରସବୁରେ ଥିବା ଭୁଲ ଟାଇଟଲ',
 'wantedfiles' => 'ଦରକାରି ଫାଇଲ',
+'wantedfiletext-cat' => 'ନିମ୍ନଲିଖିତ ଫାଇଲଗୁଡିକ ବ୍ୟବହୃତ ହେଇଛି ହଲେ ନାହିଁ । ରହିଥିବା ଫାଇଲ ବଦଳରେ ବାହାରେ ଥିବା ଫାଇଲଗୁଡିକ ତାଲିକାଭୁକ୍ତ ହେଇଛି । ଏହିଭଳି ଭୁଲ ସତ୍ୟଗୁଡିକ <del>struck out</del> ହେଇଯିବ । ଅଧିକନ୍ତୁ, ପ୍ରକୃତରେ ନଥିବା ଫାଇଲଗୁଡିକର ପୃଷ୍ଠାଗୁଡିକ [[:$1]]ରେ ତାଲିକାଭୁକ୍ତ ହୋଇଛି ।',
+'wantedfiletext-nocat' => 'ନିମ୍ନଲିଖିତ ଫାଇଲଗୁଡିକ ବ୍ୟବହୃତ ହେଇଛି ହଲେ ନାହିଁ । ରହିଥିବା ଫାଇଲ ବଦଳରେ ବାହାରେ ଥିବା ଫାଇଲଗୁଡିକ ତାଲିକାଭୁକ୍ତ ହେଇଛି । ଏହିଭଳି ଭୁଲ ସତ୍ୟଗୁଡିକ <del>struck out</del> ହେଇଯିବ ।',
 'wantedtemplates' => 'ଦରକାରୀ ଛାଞ୍ଚ',
 'mostlinked' => 'ଅଧିକ ଯୋଡ଼ାଯାଇଥିବା ପୃଷ୍ଠା',
 'mostlinkedcategories' => 'ବେଶି ଯୋଡ଼ାଯାଇଥିବା ଶ୍ରେଣୀ',
 'mostlinkedtemplates' => 'ବେଶୀ ଯୋଡ଼ାଯାଇଥିବା ଛାଞ୍ଚ',
 'mostcategories' => 'ଅଧିକ ଶ୍ରେଣୀ ଥିବା ପୃଷ୍ଠା',
 'mostimages' => 'ଫାଇଲରେ ବେଶି ଯୋଡ଼ାଯାଇଥିବା ଥିବା',
+'mostinterwikis' => 'ସବୁଠାରୁ ଅଧିକ ଉଇକିଥିବା ପୃଷ୍ଠାଗୁଡିକ',
 'mostrevisions' => 'ସବୁଠାରୁ ଅଧିକ ସଙ୍କଳନ ଥିବା ପୃଷ୍ଠାସମୂହ',
 'prefixindex' => 'ଆଗରୁ କିଛି ଯୋଡ଼ା ସହ ଥିବା ସବୁ ଫରଦସବୁ',
 'prefixindex-namespace' => 'ଉପସର୍ଗ ଲାଗିଥିବା ସବୁଯାକ ପୃଷ୍ଠା ($1 ଗୋଟି ନେମସ୍ପେସ)',
@@ -2140,6 +2169,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 ଆପଣ ଲଗର ପ୍ରକାର ଅନୁସାରେ ବି ସେସବୁକୁ ବାଛି ପାରିବେ । ଇଉଜରନାଆଁଟି ଛୋଟ ଓ ବଡ଼ ଅକ୍ଷର ଅନୁସାରେ ଅଲଗା ହୋଇଥାଏ, ପୃଷ୍ଠାର ନାଆଁ ସବୁ ବି ଛୋଟ ଓ ବଡ଼ ଇଂରାଜି ଅକ୍ଷର ଅନୁସାରେ ଅଲଗା ହୋଇଥାଏ ।',
 'logempty' => 'ଲଗରେ ଥିବା ଲେଖା ସହ ମେଳଖାଉ ନାହିଁ ।',
 'log-title-wildcard' => 'ଏହି ଲେଖାରେ ଆରମ୍ଭ ହୋଇଥିବା ଶିରୋନାମାସବୁ ଖୋଜିବେ',
+'showhideselectedlogentries' => 'ବାଛିଥିବା ତାଲିକାକୁ ଦେଖାଇବେ/ଲୁଚାଇବେ',
 
 # Special:AllPages
 'allpages' => 'ସବୁ ପୃଷ୍ଠା',
@@ -2161,6 +2191,8 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'allpages-hide-redirects' => 'ପୁନଃପ୍ରେରଣସମୂହକୁ ଲୁଚାଇବେ',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'ଆପଣ ଏହି ପୃଷ୍ଠାର ଏକ ପୁରୁଣା ସଂସ୍କରଣ ଦେଖୁଛନ୍ତି, ଯାହାକି $1 ପୁରୁଣା ହୋଇଥାଇପାରେ ।',
+'cachedspecial-viewing-cached-ts' => 'ଆପଣ ଏହି ପୃଷ୍ଠାର ଏକ ପୁରୁଣା ସଂସ୍କରଣ ଦେଖୁଛନ୍ତି, ଯାହାକି ପ୍ରକୃତରେ ସଂପୂର୍ଣ ନ ହୋଇଥାଇପାରେ ।',
 'cachedspecial-refresh-now' => 'ନୂତନତମ ଦେଖନ୍ତୁ ।',
 
 # Special:Categories
@@ -2184,7 +2216,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'linksearch-ok' => 'ଖୋଜିବା',
 'linksearch-text' => '"*.wikipedia.org" ପରି ୱାଇଲ୍ଡକାର୍ଡ଼ର ବ୍ୟବହାର କରାଯାଇଥାଇ ପାରେ ।
 ଏକ ଉଚ୍ଚକୋଟୀର ଡୋମେନ ଲୋଡ଼ା, ଯଥା "*.org".<br />
-ଅନୁମୋଦିତ ପ୍ରଟୋକଲ: <code>$1</code> (ଯଦି କୌଣସି ପ୍ରୋଟୋକଲ ଦିଆଯାଇନଥାଏ ତେବେ ଆପେ ଆପେ http:// ହୋଇଯାଇଥାଏ) ।',
+ଅନୁମୋଦିତ {{PLURAL:$2|protocol|protocols}}: <code>$1</code> (ଯଦି କୌଣସି ପ୍ରୋଟୋକଲ ଦିଆଯାଇନଥାଏ ତେବେ ଆପେ ଆପେ http:// ହୋଇଯାଇଥାଏ) ।',
 'linksearch-line' => '$1 ଟି $2ରୁ ଯୋଡ଼ାଯାଇଅଛି ।',
 'linksearch-error' => 'କେବଳ ହୋଷ୍ଟ ନାମର ଆରମ୍ଭରେ ୱାଇଲ୍ଡକାର୍ଡ଼ ଦେଖାଯିବ ।',
 
@@ -2203,10 +2235,6 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'activeusers-hidesysops' => 'ପରିଚାଳକମାନଙ୍କୁ ଲୁଚାଇବେ',
 'activeusers-noresult' => 'ଜଣେ ବି ସଭ୍ୟ ମିଳିଲେ ନାହିଁ ।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ବ୍ୟବହାରକାରୀ ତିଆରି ଲଗ',
-'newuserlogpagetext' => 'ସଭ୍ୟଙ୍କର ଖାତା ଗଠନ ପାଇଁ ଏକ ଇତିହାସ ଅଛି ।',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ସଭ୍ୟ ଗୋଠ ଅଧିକାରସମୂହ',
 'listgrouprights-summary' => 'ତଳେ ଉଇକି ସ୍ଥିର କରାଯାଇଥିବା ଏକ ଏକ ବ୍ୟବହାରକାରୀ ଗୋଠର ତାଲିକା ଦିଆଯାଇଛି, ସେଥିରେ ସେମାନଙ୍କ ବ୍ୟବହାର ଅଧିକାର ବାବଦରେ ମଧ୍ୟ ଦିଆଯାଇଛି ।
@@ -2302,6 +2330,16 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'enotif_mailer' => '{{SITENAME}} ସୂଚନା ମେଲ ପ୍ରେରକ',
 'enotif_reset' => 'ସବୁଯାକ ଦେଖାଯାଇଥିବା ପୃଷ୍ଠାକୁ ଚିହ୍ନିତ କରିବେ',
 'enotif_impersonal_salutation' => '{{SITENAME}} ବ୍ୟବହାରକାରୀ',
+'enotif_subject_deleted' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା ଲିଭାଯାଇଛି',
+'enotif_subject_created' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା ତିଆରି କରାଯାଇଛି',
+'enotif_subject_moved' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା ଘୁଞ୍ଚାଯାଇଛି',
+'enotif_subject_restored' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା ପୁନଃସ୍ଥାପନ କରାଯାଇଛି',
+'enotif_subject_changed' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା ବଦଳାଯାଇଛି',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା $PAGEEDITDATEରେ ଲିଭାଯାଇଛି, $3 ଦେଖନ୍ତୁ ।',
+'enotif_body_intro_created' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା $PAGEEDITDATEରେ ତିଆରି କରାଯାଇଛି, ପୁନରାବୃତି ପାଇଁ $3 ଦେଖନ୍ତୁ ।',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା $PAGEEDITDATEରେ ଘୁଞ୍ଚାଯାଇଛି, ଏବେକାର ପୁନରାବୃତି ପାଇଁ $3 ଦେଖନ୍ତୁ ।',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା $PAGEEDITDATEରେ ପୁନଃସ୍ଥାପନ କରାଯାଇଛି, ଏବେକାର ପୁନରାବୃତି ପାଇଁ $3 ଦେଖନ୍ତୁ ।',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 ପୃଷ୍ଠାଟି {{gender:$2|$2}}ଦ୍ଵାରା $PAGEEDITDATEରେ ବଦଳାଯାଇଛି, ଏବେକାର ପୁନରାବୃତି ପାଇଁ $3 ଦେଖନ୍ତୁ ।',
 'enotif_lastvisited' => 'ଆପଣଙ୍କ ଶେଷ ଦେଖଣା ପରେ ହୋଇଥିବା ବଦଳସବୁକୁ  ଦେଖିବା ନିମନ୍ତେ $1 ଦେଖନ୍ତୁ ।',
 'enotif_lastdiff' => 'ଏହି ବଦଳ ଦେଖିବା ପାଇଁ $1 ଦେଖନ୍ତୁ ।',
 'enotif_anon_editor' => 'ବେନାମି ସଭ୍ୟ $1',
@@ -2326,6 +2364,8 @@ wiki: $PAGEEDITOR_WIKI
 --
 ଆପଣା ଇ-ମେଲ ସୂଚନା ସଜାଣି ଦେଖିବା ନିମନ୍ତେ
 {{canonicalurl:{{#special:Preferences}}}} ଦେଖନ୍ତୁ',
+'created' => 'ତିଆରି କରାଗଲା',
+'changed' => 'ବଦଳାଗଲା',
 
 # Delete
 'deletepage' => 'ପୃଷ୍ଠାଟି ଲିଭାଇଦେବେ',
@@ -2365,6 +2405,8 @@ wiki: $PAGEEDITOR_WIKI
 'rollback' => 'ପୁରାପୁରି ପଛକୁ ଫେରିବା ବଦଳ',
 'rollback_short' => 'ପୁରାପୁରି ପଛକୁ ଫେରିଯିବେ',
 'rollbacklink' => 'ପୁରାପୁରି ପଛକୁ ଫେରିଯିବେ',
+'rollbacklinkcount' => '{{PLURAL:$1|edit|edits}} $1 ପଛକୁ ଫେରାଇବେ',
+'rollbacklinkcount-morethan' => '{{PLURAL:$1|edit|edits}} $1ରୁ ଅଧିକ ପଛକୁ ଫେରାଇବେ',
 'rollbackfailed' => 'ପୁରାପୁରି ପଛକୁ ଫେରିବା ବିଫଳ ହେଲା',
 'cantrollback' => 'ବଦଳକୁ ପଛକୁ ଫେରାଇ ପାରିବେ ନାହିଁ;
 ଶେଷ ଦାତାଜଣଙ୍କ ଏହି ପୃଷ୍ଠାର ଜଣେମାତ୍ର ଦାତା ।',
@@ -2397,6 +2439,8 @@ $2ଙ୍କ ଦେଇ ଶେଷଥର ହୋଇଥିବା ସଂସ୍କର
 'prot_1movedto2' => '[[$1]] ପୃଷ୍ଠାଟି [[$2]] କୁ ଘୁଞ୍ଚାଇ ଦିଆଗଲା',
 'protect-badnamespace-title' => 'କିଳାହୋଇନଥିବା ନେମସ୍ପେସ',
 'protect-badnamespace-text' => 'ଏହି ନେମସ୍ପେସଥିବା ପୃଷ୍ଠାସବୁକୁ ସାଇତାଯାଇପାରିବ ନାହିଁ ।',
+'protect-norestrictiontypes-text' => 'ଏହି ପୃଷ୍ଠାଟିକୁ କିଳାଯାଇପାରିବ ନାହିଁ କାରଣ ଏହାର କୌଣସି ସୁରକ୍ଷା ପ୍ରକାର ନାହିଁ ।',
+'protect-norestrictiontypes-title' => 'କିଳାଯାଇପାରୁନଥିବା ପୃଷ୍ଠା',
 'protect-legend' => 'କିଳଣାକୁ ଥୟ କରିବେ',
 'protectcomment' => 'କାରଣ:',
 'protectexpiry' => 'ଅଚଳ ହେବ:',
@@ -2794,6 +2838,7 @@ $1ର ଅଟକ ପାଇଁ ଦିଆଯାଇଥିବା କାରଣଟି 
 'immobile-target-namespace-iw' => 'ଇଣ୍ଟରଉଇକି ଲିଙ୍କ ପୃଷ୍ଠା ଘୁଞ୍ଚାଇବା ନିମନ୍ତେ ଏକ ବୈଧ ଲକ୍ଷସ୍ଥଳ ନୁହେଁ ।',
 'immobile-source-page' => 'ଏହି ପୃଷ୍ଠାଟି ଘୁଞ୍ଚାଯୋଗ୍ୟ ନୁହେଁ ।',
 'immobile-target-page' => 'ଦେହି ମୁକାମ ନାମକୁ ଘୁଞ୍ଚାଇହେବ ନାହିଁ ।',
+'bad-target-model' => 'ଆଶାକରାଯାଇଥିବା ଲକ୍ଷସ୍ଥଳୀଟି ଅଲଗା ପ୍ରକାର ଶୈଳୀ ବ୍ୟବହାର କରୁଛି । $1ରୁ $2କୁ ବଦଳାଇ ପାରିବ ନାହିଁ ।',
 'imagenocrossnamespace' => 'ଫାଇଲଟିକୁ ଅଣ-ଫାଇଲ ନେମସ୍ପେସକୁ ଘୁଞ୍ଚାଇହେବ ନାହିଁ',
 'nonfile-cannot-move-to-file' => 'ଅଣ-ଫାଇଲଟିକୁ ଫାଇଲ ନେମସ୍ପେସକୁ ଘୁଞ୍ଚାଇହେବ ନାହିଁ',
 'imagetypemismatch' => 'ନୂଆ ଫାଇଲ ଏକ୍ସଟେନସନ ଏହାର ପ୍ରକାର ସାଙ୍ଗରେ ମେଳ ଖାଉନାହିଁ',
@@ -2817,6 +2862,7 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 ପୃଷ୍ଠା ରପ୍ତାନି କରିବା ନିମନ୍ତେ ତଳେ ଥିବା ଟେକ୍ସଟ ଘରେ ନାମ ଦିଅନ୍ତୁ, ଧାଡ଼ିପ୍ରତି ଗୋଟିଏ ଲେଖାଏଁ ନାମ, ଆଉ ଆପଣ ଏବେକାର ସଂସ୍କରଣ ଚାହୁଁଛନ୍ତି ବା ପୁରୁଣା ସଂସ୍କରଣମାନ ଚାହୁଁଛନ୍ତି, ପୃଷ୍ଠାର ଇତିହାସ ସହ, କିମ୍ବା ଶେଷ ବଦଳ ବାବଦରେ ଏକ ବିବରଣୀ ସହ ଏବେକାର ସଂସ୍କରଣ ଦିଅନ୍ତୁ ।
 
 ଶେଷ କ୍ଷେତ୍ରରେ ଆପଣ ଏକ ଲିଙ୍କ ବ୍ୟବହାର କରିପାରିବେ, ଯଥା ଏକ ପୃଷ୍ଠା ପାଇଁ [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] "[[{{MediaWiki:Mainpage}}]]" ।',
+'exportall' => 'ସମସ୍ତ ପୃଷ୍ଠାଗୁଡିକୁ ରପ୍ତାନି କରିବେ',
 'exportcuronly' => 'କେବଳ ଏବେକର ସଂସ୍କରଣରେ ଭରିଥାଏ, ପୁରା ଇତିହାସରେ ନୁହେଁ',
 'exportnohistory' => "----
 '''ସୂଚନା:''' ଦେଖଣାରେ ଅସୁବିଧା ହେବା କାରଣରୁ ପୃଷ୍ଠାର ପୁରା ଇତିହାସ ରପ୍ତାନି କରିବା ଅଚଳ କରାଯାଇଛି ।",
@@ -2872,6 +2918,7 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-interwiki-templates' => 'ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ',
 'import-interwiki-submit' => 'ଆମଦାନୀ',
 'import-interwiki-namespace' => 'ଲକ୍ଷ ନେମସ୍ପେସ:',
+'import-interwiki-rootpage' => 'ଲକ୍ଷସ୍ଥଳୀର ମୂଳ ପୃଷ୍ଠା(ଇଛାଧୀନ):',
 'import-upload-filename' => 'ଫାଇଲ ନାମ:',
 'import-comment' => 'ମତାମତ:',
 'importtext' => '[[Special:Export|ରପ୍ତାନି ସୁବିଧା]] ବ୍ୟବହାର କରି ମୂଳ ଉଇକିରୁ ଫାଇଲଟି ରପ୍ତାନି କରନ୍ତୁ ।
@@ -2905,6 +2952,13 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-invalid-interwiki' => 'ଦିଆଯାଇଥିବା ଉଇକିରୁ ଆହରଣ କରାଯାଇପାରିବ ନାହିଁ ।',
 'import-error-edit' => '"$1" ପୃଷ୍ଠାଟି ଅଣାଯାଇନାହିଁ କାରଣ ଆପଣଙ୍କର ଏହାକୁ ବଦଳାଇବା ଅଧିକାର ନାହିଁ ।',
 'import-error-create' => '"$1" ପୃଷ୍ଠାଟି ଅଣାଯାଇନାହିଁ କାରଣ ଆପଣଙ୍କର ଏହାକୁ ତିଆରିକରିବା ଅଧିକାର ନାହିଁ ।',
+'import-error-interwiki' => '"$1"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହାର ନାମ ବାହାରଲିଙ୍କରେ ଆଗରୁ ଅଛି(ଉଇକିଗୁଡିକ ମଧ୍ୟରେ) ।',
+'import-error-special' => '"$1"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହା ଏକ ବିଶେଷ ନେମସ୍ପେସରେ ଅଛି ଯାହା ପୃଷ୍ଠାଗୁଡିକୁ ଅନୁମତି ଦିଏ ନାହିଁ ।',
+'import-error-invalid' => '"$1"ପୃଷ୍ଠାକୁ ଆମଦାନୀ କରିହେଲାନି କାରଣ ଏହାର ନାମଟି ଅବୈଧ ।',
+'import-error-unserialize' => '"$1"ପୃଷ୍ଠାର $2 ପୁନରାବୃତିଟି ଅଣତାଲିକାଭୁକ୍ତ କରାଯାଇପାରିବ ନାହିଁ । ପୁନରାବୃତିଟି $3 ପ୍ରକାର ବ୍ୟବାହର କରିବା ପାଇଁ $4ରେ ତାଲିକାଭୁକ୍ତ ହୋଇଛି ।',
+'import-options-wrong' => 'ଭୁଲ {{PLURAL:$2|option|options}}: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'ଦିଆଯାଇଥିବା ମୂଳ ପୃଷ୍ଠାର ଶୀର୍ଷକଟି ଅବୈଧ ଅଟେ ।',
+'import-rootpage-nosubpage' => 'ମୂଳ ପୃଷ୍ଠାର "$1" ନେମସ୍ପେସ ଉପପୃଷ୍ଠାର ଅନୁମତି ଦିଏନାହିଁ ।',
 
 # Import log
 'importlogpage' => 'ଇତିହାସ ଆହରଣ',
@@ -2914,6 +2968,16 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-logentry-interwiki' => '$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା',
 'import-logentry-interwiki-detail' => '$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
 
+# JavaScriptTest
+'javascripttest' => 'ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ',
+'javascripttest-title' => 'ଚାଲୁଥିବା $1 ପରଖଗୁଡିକ',
+'javascripttest-pagetext-noframework' => 'ଏହି ପୃଷ୍ଠାଟି ଜାଭାସ୍କ୍ରିପ୍ଟ ପରଖ ପାଇଁ ସଂରକ୍ଷଣ କରି ରଖାଯାଇଛି ।',
+'javascripttest-pagetext-unknownframework' => '"$1" ଅଜଣା ପରଖ ଗତିବିଧି ।',
+'javascripttest-pagetext-frameworks' => 'ଦୟାକରି ନିମ୍ନରେ ଥିବା ଏକ ପରଖ ପ୍ରକ୍ରିୟାକୁ ବାଛନ୍ତୁ :$1',
+'javascripttest-pagetext-skins' => 'ଏହି ପରଖକୁ ଚାଲୁ କରିବା ପାଇଁ ଏକ ଆବରଣ ବାଛନ୍ତୁ ।',
+'javascripttest-qunit-intro' => 'mediawiki.orgରେ [$1 testing documentation]କୁ ଦେଖନ୍ତୁ ।',
+'javascripttest-qunit-heading' => 'ମେଡିଆଉଇକି ଜାଭାସ୍କ୍ରିପ୍ଟ Qunit ପରଖ ପ୍ରକ୍ରିୟା',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠା',
 'tooltip-pt-anonuserpage' => 'ଆପଣ ଯେଉଁ IP ଠିକଣାର ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାଟି ବଦଳାଇବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି',
@@ -3007,9 +3071,11 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'spambot_username' => 'ମିଡ଼ିଆଉଇକି ସ୍ପାମ ସଫାକରିବା',
 'spam_reverting' => '$1 ସହ ଯୋଡ଼ା ନଥିବା ଶେଷ ସଂସ୍କରଣକୁ ଲେଉଟାଇ ଦେଉଅଛୁଁ',
 'spam_blanking' => '$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା',
+'spam_deleting' => '$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା',
 
 # Info page
 'pageinfo-title' => '"$1"ର ବିବରଣୀ',
+'pageinfo-not-current' => 'ଦୁଖିତଃ, ପୁରୁଣା ସଂସ୍କରଣଗୁଡିକର ଏହି ତଥ୍ୟ ଦେବା ସମ୍ଭବ ନୁହେଁ ।',
 'pageinfo-header-basic' => 'ସାଧାରଣ ଜାଣିବା କଥା',
 'pageinfo-header-edits' => 'ବଦଳ ଇତିହାସ',
 'pageinfo-header-restrictions' => 'ପୃଷ୍ଠା ସୁରକ୍ଷା',
@@ -3020,10 +3086,13 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'pageinfo-article-id' => 'ପୃଷ୍ଠା ଆଇଡ଼ି',
 'pageinfo-language' => 'ପୃଷ୍ଠା ବିଷୟବସ୍ତୁର ଭାଷା',
 'pageinfo-robot-policy' => 'ଖୋଜିବା ଇଞ୍ଜିନ ସ୍ଥିତି',
+'pageinfo-robot-index' => 'ସୂଚୀପତ୍ର କରିହେଉଥିବା',
+'pageinfo-robot-noindex' => 'ସୂଚୀପତ୍ର କରିହେଉନଥିବା',
 'pageinfo-views' => 'ଦେଖଣା ସଂଖ୍ୟା',
 'pageinfo-watchers' => 'ପୃଷ୍ଠା ଦେଖଣାହାରି ସଂଖ୍ୟା',
 'pageinfo-redirects-name' => 'ଏହି ପୃଷ୍ଠାକୁ ଲେଉଟାଣି ଅଛି',
 'pageinfo-subpages-name' => 'ଏହି ପୃଷ୍ଠାରେ ଥିବା ଉପପୃଷ୍ଠା',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
 'pageinfo-firstuser' => 'ପୃଷ୍ଠା ତିଆରିକରିଛନ୍ତି',
 'pageinfo-firsttime' => 'ପୃଷ୍ଠା ତିଆରି କରିବା ତାରିଖ',
 'pageinfo-lastuser' => 'ନୂତନତମ ବଦଳକାରୀ',
@@ -3031,12 +3100,23 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'pageinfo-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା',
 'pageinfo-authors' => 'ନିଆରା ଲେଖକଙ୍କ ମୋଟସଂଖ୍ୟା',
 'pageinfo-recent-edits' => 'ନଗଦବଦଳ ସଂଖ୍ୟା($1 ମଧ୍ୟରେ)',
+'pageinfo-recent-authors' => 'ନିଆରା ଲେଖକଙ୍କ ମୋଟସଂଖ୍ୟା',
+'pageinfo-magic-words' => 'ଚମତ୍କାର {{PLURAL:$1|word|words}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|category|categories}} ($1) ଲୁଚାଗଲା',
+'pageinfo-templates' => '{{PLURAL:$1|template|templates}} ($1) ଯୋଡିହେଇଥିବା',
+'pageinfo-transclusions' => '{{PLURAL:$1|Page|Pages}} ($1)ରେ ଯୋଡାଗଲା',
 'pageinfo-toolboxlink' => 'ପୃଷ୍ଠା ସୂଚନା',
 'pageinfo-redirectsto' => 'କୁ ଲେଉଟାଣି',
 'pageinfo-redirectsto-info' => 'ସୂଚନା',
 'pageinfo-contentpage' => 'ବିଷୟବସ୍ତୁ ପୃଷ୍ଠାଭାବେ ଗଣା ହେଲା',
 'pageinfo-contentpage-yes' => 'ହଁ',
+'pageinfo-protect-cascading' => 'ସୁରକ୍ଷାଗୁଡିକ ଏଠାରୁ ଲାଗିଲାଗି ଅଛି',
 'pageinfo-protect-cascading-yes' => 'ହଁ',
+'pageinfo-protect-cascading-from' => 'ରୁ ସୁରକ୍ଷାଗୁଡିକ ଲାଗିଲାଗି ଅଛି',
+'pageinfo-category-info' => 'ଶ୍ରେଣୀସମ୍ପର୍କୀୟ ତଥ୍ୟ',
+'pageinfo-category-pages' => 'ପୃଷ୍ଠା ସଂଖ୍ୟା',
+'pageinfo-category-subcats' => 'ଉପବିଭାଗଗୁଡିକର ସଂଖ୍ୟା',
+'pageinfo-category-files' => 'ଫାଇଲ ସଂଖ୍ୟା',
 
 # Patrolling
 'markaspatrolleddiff' => 'ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ କରାଗଲା',
@@ -3048,6 +3128,8 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'markedaspatrollederror' => 'ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ କରିପାରୁଲୁଁ ନାହିଁ',
 'markedaspatrollederrortext' => 'ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ କରିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଏକ ସଂସ୍କରଣ ଦେବାକୁ ପଡ଼ିବ ।',
 'markedaspatrollederror-noautopatrol' => 'ଆପଣ ନିଜର ସମ୍ପାଦନାସବୁକୁ ଜଗାଯାଇଅଛି ବୋଲି ଚିହ୍ନିତ କରିପାରିବେ ନାହିଁ ।',
+'markedaspatrollednotify' => '$1 ପାଇଁ ଏହି ବଦଳଟିକୁ ଶ୍ରେଣୀଗତ ବୋଲି ଚିହ୍ନଟ କରାଯାଇଛି ।',
+'markedaspatrollederrornotify' => 'ଶ୍ରେଣୀବିଭାଗ କରିହେଲାନି ।',
 
 # Patrol log
 'patrol-log-page' => 'ଜଗିବା ଇତିହାସ',
@@ -3091,6 +3173,8 @@ $1',
 'file-info-png-looped' => 'ଲୁପ ଥିବା',
 'file-info-png-repeat' => '$1 {{PLURAL:$1|ଥରେ|ଥର}} ଖେଳିଲେ',
 'file-info-png-frames' => '$1 ଗୋଟି {{PLURAL:$1|ଫ୍ରେମ|ଫ୍ରେମ}}',
+'file-no-thumb-animation' => "'''ଟୀକା:ଯାନ୍ତ୍ରିକ ସୀମାରେଖା ଯୋଗୁ, ଏହି ଫାଇଲର ଛୋଟଛବିଗୁଡିକ ଦୋଳାୟମାନ ହେବନାହିଁ ।'''",
+'file-no-thumb-animation-gif' => "'''ଟୀକା:ଯାନ୍ତ୍ରିକ ସୀମାରେଖା ଯୋଗୁ, ଏହି ଫାଇଲଭଳି ଅଧିକ ଆକାରଥିବା GIF ଛବିଗୁଡିକର ଛୋଟଛବିଗୁଡିକ ଦୋଳାୟମାନ ହେବନାହିଁ ।'''",
 
 # Special:NewFiles
 'newimages' => 'ନୁତନ ଫାଇଲଗୁଡିକର ଗ୍ୟାଲେରୀ',
@@ -3109,6 +3193,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 ମିନିଟ|$1 ମିନିଟ}}',
 'hours' => '{{PLURAL:$1|$1 ଘଣ୍ଟା|$1 ଘଣ୍ଟା}}',
 'days' => '{{PLURAL:$1|$1 ଦିନ|$1 ଦିନ}}',
+'months' => '{{PLURAL:$1|$1 month|$1 months}}',
+'years' => '{{PLURAL:$1|$1 year|$1 years}}',
 'ago' => '$1 ଆଗରୁ',
 'just-now' => 'ଏବେ ଏବେ',
 
@@ -3606,6 +3692,7 @@ $5
 # Scary transclusion
 'scarytranscludedisabled' => '[ଉଇକି-ଉଇକି ଭିତରେ ଟ୍ରାନ୍ସକ୍ଲୁଡ଼ିଙ୍ଗ ଅଚଳ କରାଯାଇଛି]',
 'scarytranscludefailed' => '[$1 ପାଇଁ ଛାଞ୍ଚକୁ ପାଇବା ସମ୍ଭବ ହେଲାନାହିଁ]',
+'scarytranscludefailed-httpstatus' => '[Template fetch failed for $1: HTTP $2]',
 'scarytranscludetoolong' => '[URLଟି ଖୁବ ଲମ୍ବା]',
 
 # Delete conflict
@@ -3634,7 +3721,7 @@ $5
 'imgmultigoto' => '$1 ପୃଷ୍ଠାକୁ ଯିବେ',
 
 # Table pager
-'ascending_abbrev' => 'asc',
+'ascending_abbrev' => 'ସାନରୁ ବଡ କ୍ରମରେ',
 'descending_abbrev' => 'ବଖାଣ',
 'table_pager_next' => 'ପର ପୃଷ୍ଠା',
 'table_pager_prev' => 'ଆଗ ପୃଷ୍ଠା',
@@ -3717,6 +3804,7 @@ $5
 'version-license' => 'ଲାଇସେନ୍ସ',
 'version-poweredby-credits' => "ଏହି ଉଇକିଟି '''[//www.mediawiki.org/ ମିଡ଼ିଆଉଇକି]''' ଦେଇ ପରିଚାଳିତ, ସତ୍ଵାଧିକାର © ୨୦୦୧-$1 $2 ।",
 'version-poweredby-others' => 'ବାକିସବୁ',
+'version-credits-summary' => 'ଆମେ ଏହି ଲୋକମାନଙ୍କୁ [[Special:Version|MediaWiki]]ରେ ସେମାନକର ଅବଦାନ ପାଇଁ ଚିହ୍ନିବାକୁ ଚାହୁଁଛୁ ।',
 'version-license-info' => 'MediaWiki ଏକ ମାଗଣା ସଫ୍ଟୱାର; ଆପଣ ଏହାକୁ ପୁନବଣ୍ଟନ କରିପାରିବେ ବା GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସ ଅଧିନରେ ବଦଳାଇପାରିବେ ଯାହା ଫ୍ରି ସଫ୍ଟୱାର ଫାଉଣ୍ଡେସନ ଦେଇ ପ୍ରକାଶିତ ହୋଇଥିବ।
 
 MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯାଇଥାଏ, କିନ୍ତୁ ଏହା କୌଣସି ଲିଖିତ ପଟା ସହ ଆସିନଥାଏ; ଏହା ବିକ୍ରୟଯୋଗ୍ୟତା ବା ଏକ ନିର୍ଦିଷ୍ଟ କାମପାଇଁ ବାଧ୍ୟତାମୂଳକ ପଟା ସହ ଆସିନଥାଏ । ଅଧିକ ଜାଣିବା ନିମନ୍ତେ ଦୟାକରି GNU ଜେନେରାଲ ପବ୍ଲିକ ଲାଇସେନ୍ସ ଦେଖନ୍ତୁ ।
@@ -3725,6 +3813,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'version-software' => 'ଇନଷ୍ଟଲ ହୋଇଥିବା ସଫ୍ଟୱାର',
 'version-software-product' => 'ଉତ୍ପାଦ',
 'version-software-version' => 'ସଂସ୍କରଣ',
+'version-entrypoints' => 'ନିବେଶ ହେଉଥିବା ସ୍ଥାନର URLଗୁଡିକ',
 'version-entrypoints-header-entrypoint' => 'ପ୍ରବେଶ ବିନ୍ଦୁ',
 'version-entrypoints-header-url' => 'ଇଉଆରଏଲ',
 
@@ -3860,6 +3949,10 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'logentry-newusers-create2' => 'ସଭ୍ୟ ଖାତା $3ଟି $1 ଦ୍ଵାରା ତିଆରି କରାଗଲା',
 'logentry-newusers-autocreate' => '$1 ଖାତାଟି ଆପେଆପେ ତିଆରିହେଲା',
 'newuserlog-byemail' => 'ଇ-ମେଲରେ ପାସୱାର୍ଡ଼ ପଠାଇଦିଆଗଲା',
+'logentry-rights-rights' => '$1, $3 ପାଇଁ $4ରୁ $5କୁ ସଭ୍ୟପଦ ବଦଳାଇଲେ',
+'logentry-rights-rights-legacy' => '$1, $3 ପାଇଁ ଗୋଷ୍ଠୀ ସଭ୍ୟପଦ ବଦଳାଇଛି',
+'logentry-rights-autopromote' => '$1 ଆପେ ଆପେ $4ରୁ $5କୁ ଗଲେ',
+'rightsnone' => '(କିଛି ନାହିଁ)',
 
 # Feedback
 'feedback-bugornote' => 'ଦୟାକରି ଆପଣ ଏକ କାରିଗରି ଅସୁବିଧାଟିଏ ଜଣାଇବା ପାଇଁ ଚାହୁଁଥିଲେ ଦୟାକରି [$1 ଏଠାରେ ଅସୁବିଧାଟି ଜଣାନ୍ତୁ] । 
@@ -3893,10 +3986,12 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 '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' => 'ଏହି ପ୍ରକାରର ଫାଇଲ ବାରଣ କରାଯାଇଅଛି ।',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|ଏକ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହେଁ|ମାନ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହଁନ୍ତି}} । ଅନୁମୋଦିତ {{PLURAL:$3|ଫାଇଲ ପ୍ରକାର ହେଲା|ଫାଇଲ ପ୍ରକାର ହେଲା}} $2 ।',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|ଏକ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହେଁ|ମାନ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହଁନ୍ତି}} ।
+ଅନୁମୋଦିତ {{PLURAL:$3|ଫାଇଲ ପ୍ରକାର ହେଲା|ଫାଇଲଗୁଡିକର ପ୍ରକାର ହେଲା}} $2 ।',
 'api-error-filetype-missing' => 'ଫାଇଲଟିର ଏକ୍ସଟେନସନ ନାହିଁ ।',
 'api-error-hookaborted' => 'ଏକ ଏକ୍ସଟେନସନ ହୁକ ଦେଇ ଆପଣ କରୁଥିବା ବଦଳଟି ବନ୍ଦ କରିଦିଆଗଲା ।',
 'api-error-http' => 'ଭିତର ଅସୁବିଧା: ସର୍ଭର ସହ ଯୋଡ଼ି ହେଉନାହିଁ ।',
index 9441629..e89ba24 100644 (file)
@@ -1040,8 +1040,8 @@ $2
 'right-delete' => 'Фæрстæ хафын',
 'right-bigdelete' => 'Стыр историимæ фæрстæ хафын',
 
-# User rights log
-'rightsnone' => '(нæй)',
+# Special:Log/newusers
+'newuserlogpage' => 'Архайджыты фæзындты лог',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ацы фарс кæсын',
@@ -1266,9 +1266,6 @@ $3',
 # Special:ListUsers
 'listusers-submit' => 'Равдисын',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Архайджыты фæзындты лог',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Къорд',
 'listgrouprights-rights' => 'Бартæ',
@@ -1302,6 +1299,7 @@ $3',
 'unwatching' => 'Цæстдард фæрсты номхыгъдæй аиуварс кæнын...',
 
 'enotif_anon_editor' => 'сусæг архайæг $1',
+'changed' => 'ивд æрцыд',
 
 # Delete
 'deletepage' => 'Схаф фарс',
@@ -1698,6 +1696,7 @@ $3',
 # New logging system
 'logentry-delete-delete' => '$1 схафта фарс $3',
 'logentry-delete-restore' => '$1 рацарæзта фарс $3',
+'rightsnone' => '(нæй)',
 
 # Feedback
 'feedback-subject' => 'Сæр:',
index 645fbb5..ae0a53d 100644 (file)
@@ -1153,11 +1153,13 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'right-siteadmin' => 'ਡੈਟਾਬੇਸ ਨੂੰ ਤਾਲਾ ਲਾਉਣਾ ਤੇ ਖੋਲ੍ਹਣਾ',
 'right-sendemail' => 'ਦੂਜੇ ਮੈਂਬਰਾਂ ਨੂੰ ਈ-ਮੇਲ ਭੇਜਣਾ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ਬਣਾਏ ਖਾਤਿਆਂ ਦਾ ਚਿੱਠਾ',
+'newuserlogpagetext' => 'ਇਹ ਬਣੇ ਮੈਂਬਰਾਂ ਦਾ ਚਿੱਠਾ ਹੈ।',
+
 # User rights log
 'rightslog' => 'ਮੈਂਬਰ ਹੱਕਾਂ ਦਾ ਚਿੱਠਾ',
 'rightslogtext' => 'ਇਹ ਮੈਂਬਰ ਹੱਕਾਂ ਵਿਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਦਾ ਚਿੱਠਾ ਹੈ।',
-'rightslogentry-autopromote' => '$2 ਤੋਂ ਆਪਣੇ ਆਪ $3 ਤੱਕ ਤਰੱਕੀ ਕਰੀ',
-'rightsnone' => '(ਕੋਈ ਨਹੀਂ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ਇਹ ਸਫ਼ਾ ਪੜ੍ਹਨ',
@@ -1521,10 +1523,6 @@ to upload files.',
 'activeusers-hidesysops' => 'ਐਡਮਨਿਸਟ੍ਰੇਟਰ ਲੁਕਾਓ',
 'activeusers-noresult' => 'ਕੋਈ ਮੈਂਬਰ ਨਹੀਂ ਲੱਭਿਆ।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ਬਣਾਏ ਖਾਤਿਆਂ ਦਾ ਚਿੱਠਾ',
-'newuserlogpagetext' => 'ਇਹ ਬਣੇ ਮੈਂਬਰਾਂ ਦਾ ਚਿੱਠਾ ਹੈ।',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'ਗਰੁੱਪ',
 'listgrouprights-rights' => 'ਹੱਕ',
@@ -1595,6 +1593,8 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'enotif_lastvisited' => 'ਤੁਹਾਡੀ ਆਖ਼ਰੀ ਆਮਦ ਤੋਂ ਲੈ ਕੇ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਵੇਖਣ ਲਈ $1 ਵੇਖੋ।',
 'enotif_lastdiff' => 'ਇਸ ਤਬਦੀਲੀ ਨੂੰ ਵੇਖਣ ਲਈ $1 ਵੇਖੋ।',
 'enotif_anon_editor' => 'ਅਗਿਆਤ ਯੂਜ਼ਰ $1',
+'created' => 'ਬਣਾਇਆ',
+'changed' => 'ਬਦਲਿਆ',
 
 # Delete
 'deletepage' => 'ਪੇਜ ਹਟਾਓ',
@@ -2122,6 +2122,9 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'htmlform-reset' => 'ਬਦਲਾਅ ਵਾਪਸ ਲਵੋ',
 'htmlform-selectorother-other' => 'ਹੋਰ',
 
+# New logging system
+'rightsnone' => '(ਕੋਈ ਨਹੀਂ)',
+
 # Search suggestions
 'searchsuggest-search' => 'ਖੋਜ',
 
index 1216acf..b644558 100644 (file)
@@ -950,11 +950,12 @@ Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
 'right-userrights-interwiki' => 'I-edit la reng katulirang talagamit (user rights) da reng talagamit kareng aliwang karinan a wiki',
 'right-siteadmin' => 'Isara ya ampong ibusni ing database',
 
+# Special:Log/newusers
+'newuserlogpage' => "Tala ning pamaglalang talagamit (''User creation log'')",
+
 # User rights log
 'rightslog' => 'Tala da reng katulirang talagamit (user rights log)',
 'rightslogtext' => 'Ini tala de reng miyalilan king katulirang talagamit (user rights).',
-'rightslogentry' => 'miyalilan ya ing grupu nung nu ya kayanib i $1 manibat king $2 paras king $3',
-'rightsnone' => '(ala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'i-edit/alilan ya ing bulung a ini',
@@ -1322,9 +1323,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Pakit',
 'listusers-noresult' => 'Alang meyakit a talagamit.',
 
-# Special:Log/newusers
-'newuserlogpage' => "Tala ning pamaglalang talagamit (''User creation log'')",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Katuliran da reng grupung talagamit (user group rights)',
 'listgrouprights-summary' => 'Ing makatuki tala (list) de reng grupung talagamit a mituldu kening wiki, ampo reng karelang katuliran king pamaglub (access rights). Ating karagdagang impormasiun tungkul king katuliran ning balang metung [[{{MediaWiki:Listgrouprights-helppage}}|keni]].',
@@ -1418,6 +1416,8 @@ Ba mong ayalilan deng pakatuldu king kekang tala ring babanten (watchlist settin
 
 Keni ka magparalang puna/komentu at maniad karagdagang saup:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'melalang',
+'changed' => 'miyalilan',
 
 # Delete
 'deletepage' => 'Buran ya ing bulung',
@@ -2345,5 +2345,6 @@ Mayari/mapasu ya ining confirmation code keng $4.',
 # New logging system
 'revdelete-restricted' => 'ipairal la reng limitasiun kareng sysop',
 'revdelete-unrestricted' => 'ilako la reng makabawal kareng sysops',
+'rightsnone' => '(ala)',
 
 );
index 022a592..e22c428 100644 (file)
@@ -551,6 +551,9 @@ Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
 
 'grouppage-sysop' => '{{ns:project}}:Aménistrateus',
 
+# Special:Log/newusers
+'newuserlogpage' => "Jornal éd chés créachons d'comptes d'uzeu",
+
 # User rights log
 'rightslog' => "Jornal d'chés droés dechl uzeu",
 
@@ -743,9 +746,6 @@ Vir apré ([$2 pache]).",
 # Special:ActiveUsers
 'activeusers' => 'Lisse des ouvreus uzeus',
 
-# Special:Log/newusers
-'newuserlogpage' => "Jornal éd chés créachons d'comptes d'uzeu",
-
 # Special:ListGroupRights
 'listgrouprights-summary' => "L'pache-lo ch'est ène lisse d'chés groupes d'uzeus définis édseur ech wiki aveuc chés drouots d'intrèe achuchonnés.<br />I put y avoèr ichi d'eutes [[MediaWiki:Listgrouprights-helppage|informacions]] édseur chés drouots individuèls. ([[{{MediaWiki:Listgrouprights-helppage}}|vir]])",
 'listgrouprights-members' => '(lisse éd chés mimbes)',
index 6f3ef7c..19f32e9 100644 (file)
@@ -18,11 +18,12 @@ $fallback = 'de';
 
 $messages = array(
 # User preference toggles
-'tog-showtoolbar' => "Werkzaich zum Bearwaide zaische (dodezu braucht's JavaScript)",
+'tog-showtoolbar' => "Werkzaich zum Bearwaide zaische (dodezu brauchd's JavaScript)",
+'tog-showhiddencats' => 'Zaisch vaschdeglde Kadegorije',
 
 'underline-always' => 'Immer',
 'underline-never' => 'Garnet',
-'underline-default' => 'Des nemme, was em Broweser gsaacht hoscht.',
+'underline-default' => 'Des nemme, was em Browser gsaachd hoschd.',
 
 # Dates
 'sunday' => 'Sundaach',
@@ -49,7 +50,7 @@ $messages = array(
 'august' => 'Auguschd',
 'september' => 'Sebdember',
 'october' => 'Ogdower',
-'november' => 'November',
+'november' => 'Nowember',
 'december' => 'Dezember',
 'january-gen' => 'Jänner',
 'february-gen' => 'Fewwer',
@@ -58,10 +59,10 @@ $messages = array(
 'may-gen' => 'Mai',
 'june-gen' => 'Juni',
 'july-gen' => 'Juli',
-'august-gen' => 'Auguscht',
+'august-gen' => 'Auguschd',
 'september-gen' => 'Sebdember',
 'october-gen' => 'Ogdower',
-'november-gen' => 'November',
+'november-gen' => 'Nowember',
 'december-gen' => 'Dezember',
 'jan' => 'Jän',
 'feb' => 'Few',
@@ -82,6 +83,7 @@ $messages = array(
 'subcategories' => 'Unnerkadegorie',
 'category-media-header' => 'Medie in de Kadegorie „$1“',
 'hidden-categories' => '{{PLURAL:$1|Verschdegelde Kadegorie|Verschdegelde Kadegorije}}',
+'hidden-category-category' => 'Verschdegelde Kadegorije',
 'category-subcat-count' => '{{PLURAL:$2|Die Kategorie hot die Unnerkategorie:|{{PLURAL:$1|Die Unnerkategori isch eni vun insgsamt $2 Unnerkategorie in derre Kategorie:|S werre $1 vun insgsamt $2 Unnerkategorie in derre Kategorie aagezeicht:}}}}',
 'category-article-count' => "{{PLURAL:$2|In derre Kadegorie hot's numme die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gebbt's in derre Kadegorie, vun insgsamt $2.}}",
 'listingcontinuesabbrev' => '(Forts.)',
@@ -89,6 +91,7 @@ $messages = array(
 'about' => 'Iwwer',
 'newwindow' => '(werd im e naie Fenschter uffgmacht)',
 'cancel' => 'Abbreche',
+'mypage' => 'Said',
 'mytalk' => 'Dischbediere',
 'navigation' => 'Nawigadzion',
 
@@ -106,6 +109,7 @@ $messages = array(
 'vector-view-history' => 'Dadaigschischd',
 'vector-view-view' => 'Lese',
 'actions' => 'Agzione',
+'namespaces' => 'Nomensreem',
 
 'errorpagetitle' => 'Fehler',
 'returnto' => 'Zrick zu $1.',
@@ -117,16 +121,18 @@ $messages = array(
 'searcharticle' => 'Suche',
 'history' => 'Gschichd vun de Said',
 'history_short' => 'Versione',
-'printableversion' => 'Druck-Aasicht',
+'printableversion' => 'Drugg-Aasicht',
 'permalink' => 'Permanentlink',
 'print' => 'Ausdrugge',
+'view' => 'Lese',
 'edit' => 'Bearwaide',
 'create' => 'Aaleche',
 'editthispage' => 'Die Said bearwaide',
 'delete' => 'Lesche',
 'undelete_short' => '{{PLURAL:$1|ä Ännerung|$1 Ännerunge}} widderherschdelle',
-'protect' => 'schitze',
+'protect' => 'schidze',
 'protect_change' => 'ännere',
+'protectthispage' => 'Die Said schidze',
 'unprotect' => 'Saideschudz änare',
 'newpage' => 'Naie Said',
 'talkpage' => 'Iwwer die Said dischbediere',
@@ -163,20 +169,21 @@ $messages = array(
 'privacy' => 'Dadeschuds',
 'privacypage' => 'Project:Daadeschutz',
 
-'badaccess' => 'Kää ausraichende Recht',
+'badaccess' => 'Kää ausraichende Reschd',
 
 'retrievedfrom' => 'Vun "$1"',
 'youhavenewmessages' => 'Du hoscht $1 ($2).',
-'newmessageslink' => 'naie Nochrichte',
-'newmessagesdifflink' => 'letschte Ännerung',
+'newmessageslink' => 'naie Nochrischde',
+'newmessagesdifflink' => 'ledschde Ännerung',
 'editsection' => 'bearwaide',
 'editold' => 'bearwaide',
+'viewsourceold' => 'Quelltegschd ogugge',
 'editlink' => 'bearwaide',
-'viewsourcelink' => 'Quell aagucke',
+'viewsourcelink' => 'Quell aagugge',
 'editsectionhint' => 'Abschnidd ännere: $1',
 'toc' => 'Inhald',
-'showtoc' => 'zaiche',
-'hidetoc' => 'versteggeln',
+'showtoc' => 'zaische',
+'hidetoc' => 'versteggle',
 'site-rss-feed' => '$1 RSS Feed',
 'site-atom-feed' => '$1 Atom Feed',
 'page-rss-feed' => '"$1" RSS Feed',
@@ -189,10 +196,10 @@ $messages = array(
 'nstab-media' => 'Media',
 'nstab-special' => 'Spezialsaid',
 'nstab-project' => 'Bordal',
-'nstab-image' => 'Datei',
+'nstab-image' => 'Dadei',
 'nstab-mediawiki' => 'Mitdeelung',
 'nstab-template' => 'Vorlaach',
-'nstab-help' => 'Hilfe',
+'nstab-help' => 'Hilf',
 'nstab-category' => 'Kadegorie',
 
 # General errors
@@ -210,37 +217,38 @@ S kann sai, dass es ää odder meh Zaiche drin hot, wu im Titel vun de Said nid
 
 # Login and logout pages
 'yourname' => 'Benutzername:',
-'yourpassword' => 'Passwort:',
+'yourpassword' => 'Password:',
+'yourpasswordagain' => 'Password nomol oigewe:',
 'remembermypassword' => 'Mai Passwort uff dem Computer merke (hechschtens fer $1 {{PLURAL:$1|Dach|Dach}})',
 'login' => 'Omelde',
-'nav-login-createaccount' => 'Aamelde / Benutzerkonto aaleche',
+'nav-login-createaccount' => 'Aamelde / Benudzerkondo aaleche',
 'userlogin' => 'Omelde / Benutzerkonto anleche',
 'logout' => 'Abmelde',
 'userlogout' => 'Abmelde',
-'nologinlink' => 'E Benutzerkonto aaleche',
+'nologinlink' => 'E Benutzerkondo aaleche',
 'mailmypassword' => 'Nais Passwort per E-Mail schicke',
 
 # Edit page toolbar
-'bold_sample' => 'Fette Schrift',
-'bold_tip' => 'Fette Schrift',
-'italic_sample' => 'Kursive Schrift',
-'italic_tip' => 'Kursive Schrift',
-'link_sample' => 'Stichwort',
+'bold_sample' => 'Fedde Schrifd',
+'bold_tip' => 'Fedde Schrifd',
+'italic_sample' => 'Kursive Schrifd',
+'italic_tip' => 'Kursive Schrifd',
+'link_sample' => 'Schdischword',
 'link_tip' => 'Interner Link',
-'extlink_sample' => 'http://www.example.com Linktext',
+'extlink_sample' => "http://www.example.com Ling'gtegschd",
 'extlink_tip' => 'Externer Link (uff http:// Acht gewwe)',
 'headline_sample' => 'Abschnitts-Iwwerschrift',
 'headline_tip' => 'Iwwerschrift Ewene 2',
 'nowiki_sample' => 'Gebb do en Text ai, wu nit formatiert wird',
 'nowiki_tip' => 'Wiki-Formatierunge ignoriere',
 'image_tip' => 'Bildverwais',
-'media_tip' => 'Dateilink',
+'media_tip' => 'Dadeilink',
 'sig_tip' => 'Dai Unnerschrifd mid ener Zaidaagab',
 'hr_tip' => 'Horizontale Linie (sparsam verwenne)',
 
 # Edit pages
 'summary' => 'Zammefassung:',
-'subject' => 'Betreff:',
+'subject' => 'Bedreff:',
 'minoredit' => 'Des isch e klänni Bearwaidung',
 'watchthis' => 'Die Said beowachde',
 'savearticle' => 'Said schbeichere',
@@ -261,46 +269,48 @@ Doi Ännerunge sinn no nid gschbaichert worre!",
 'editing' => 'Am $1 bearwaide',
 'editingsection' => '$1 bearwaide (Abschnitt)',
 'yourtext' => 'Doin Tegschd',
+'storedversion' => 'Gschbaischerdi Version',
 'yourdiff' => 'Unaschied',
-'copyrightwarning' => "Bitte gebb acht, dass alle Baidräch zu {{SITENAME}} unner $2 vereffentlicht werre (guck $1 fer mehr Details).
-Wenn du nit willhsct, dass deswu du gschriwwe hoscht, gänneret un kopiert werre kann, dann duu s do nit naischraiwe.<br />
-du gebbscht do au zu, dass Du des selwerscht gschriwwe hoscht orrer vun ere effentliche, fraie Quell ('''public domain''')orrer vun ere ähnliche fraie Quell her hoscht.
-'''SCHRAIB DO NIX NAI, WAS URHEWERRECHTKLICH GSCHITZT ISCH!'''",
-'templatesused' => '{{PLURAL:$1|Vorlach wu uff derre Said gebraucht werd|Vorlache wu uff derre Said gebraucht werre}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Vorlach wu in derre Vorschau gebraucht werd|Vorlache wu in derre Vorschau gebraucht werre}}:',
-'template-protected' => '(gschitzt)',
-'template-semiprotected' => '(halb-gschitzt)',
+'copyrightwarning' => "Bidde gebb achd, dass alle Baidräch zu {{SITENAME}} unner $2 vereffentlischd werre (guck $1 fer mehr Details).
+Wenn du nit willschd, dass deswu du gschriwwe hoschd, gänneret un kopierd werre kann, dann duu s do nit naischraiwe.<br />
+du gebbschd do au zu, dass Du des selwerschd gschriwwe hoschd orrer vun ere effendliche, fraie Quell ('''public domain''') orrer vun ere ähnliche fraie Quell her hoschd.
+'''SCHRAIB DO NIX NAI, WAS URHEWERRECHDLICH GSCHIZD ISCH!'''",
+'templatesused' => '{{PLURAL:$1|Vorlach wu uff derre Said gbrauchd werd|Vorlache wu uff derre Said gbrauchd werre}}:',
+'templatesusedpreview' => '{{PLURAL:$1|Vorlach wu in derre Vorschau gbrauchd werd|Vorlache wu in derre Vorschau gbrauchd werre}}:',
+'template-protected' => '(gschizd)',
+'template-semiprotected' => '(halb-gschizd)',
 'hiddencategories' => 'Die Said ghert zu {{PLURAL:$1|1 versteckelte Kategorie|$1 versteckelte Kategorie}}:',
 'permissionserrorstext-withaction' => 'Du därfscht nid $2, aus {{PLURAL:$1|dem Grund|denne Grind}}:',
 'moveddeleted-notice' => 'Die Said isch gleschd worre.
 De Leschaidrach fa die Said isch do unne als Kwell aagewwe.',
 
 # History pages
-'viewpagelogs' => 'Lochbicher fer die Said aagucke',
-'currentrev-asof' => 'Aktuelle Version vun $1',
+'viewpagelogs' => 'Lochbischer fer die Said aagucke',
+'currentrev' => 'Ledschdi Änarung',
+'currentrev-asof' => 'Agduell Version vun $1',
 'revisionasof' => 'Version vun $1',
 'previousrevision' => '← Äldere Versione',
-'nextrevision' => 'Naier Version →',
-'currentrevisionlink' => 'Aktuell Version',
+'nextrevision' => 'Naiere Versione →',
+'currentrevisionlink' => 'Agduell Version',
 'cur' => 'jetzert',
-'next' => 'Negschte',
+'next' => 'Negschde',
 'last' => 'vorich',
 'histlegend' => "Du kannscht zwää Versione auswähle un verglaiche.<br />
 Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 '''({{int:last}})''' = Unnerschied zu de voriche Version, '''{{int:minoreditletter}}''' = klenni Ännerung.",
 'history-fieldset-title' => 'In de Versionsgschichd gugge',
-'histfirst' => 'Ältschte',
-'histlast' => 'Naischte',
+'histfirst' => 'Ältschde',
+'histlast' => 'Naischde',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 om $2',
 
 # Revision deletion
-'rev-delundel' => 'zaich/versteckel',
+'rev-delundel' => 'zaisch/verschdeggle',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-radio-set' => 'Ja',
 'revdelete-radio-unset' => 'Nä',
-'revdelete-submit' => 'Uff die aussgewählt {{PLURAL:$1|Version|Versione}} owende',
+'revdelete-submit' => 'Uff die gewehld {{PLURAL:$1|Version|Versione}} owende',
 'revdel-restore' => 'Sischdbakaid ännere',
 'revdel-restore-deleted' => 'gleschdi Änarunge',
 'revdel-restore-visible' => 'sischdbari Änarunge',
@@ -312,7 +322,7 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'history-title' => 'Änarungsgschischd vun "$1"',
 'lineno' => 'Zail $1:',
 'compareselectedversions' => 'Die Versione mitenonner vergleiche',
-'editundo' => 'zerick',
+'editundo' => 'zerigg',
 
 # Search results
 'searchresults' => 'Ergebnis suche',
@@ -326,6 +336,7 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'nextn' => 'negschte {{PLURAL:$1|$1}}',
 'prevn-title' => 'Frijari $1 {{PLURAL:$1|result|Ergewnis}}',
 'nextn-title' => 'Negschdi $1 {{PLURAL:$1|result|Ergewnis}}',
+'shown-title' => 'Zaisch $1 {{PLURAL:$1|Ergewnis}} vunde Said',
 'viewprevnext' => 'Gugg ($1 {{int:pipe-separator}} $2) ($3)',
 'searchprofile-everything' => 'Alles',
 'searchprofile-articles-tooltip' => 'In $1 gugge',
@@ -339,7 +350,9 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'search-interwiki-caption' => 'Schweschterprojekt',
 'search-interwiki-default' => '$1 Ergebnis:',
 'search-interwiki-more' => '(meh)',
+'searchall' => 'alle',
 'nonefound' => "'''Hiiwais:''' S werre standardmäßich numme e Dail Namensraim durchsucht. Setz ''all:'' vor Dai Suchbegriff zum alle Saide (mit Dischbediersaide, Voalaache usw.) durchsuche odder direkt de Name vum Namensraum, wu durchsucht werre sell.",
+'search-nonefound' => 'Fa die Such hods kä Ergewnis.',
 'powersearch' => 'Erwaiterte Such',
 'powersearch-legend' => 'Erwaiterte Such',
 'powersearch-ns' => 'In de Namensraim suche:',
@@ -372,16 +385,18 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 
 'grouppage-sysop' => '{{ns:project}}:Adminischtratore',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Naiaameldungs-Logbuch',
+
 # User rights log
 'rightslog' => 'Benutzerrecht-Logbuch',
-'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'die Said bearwaide',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|Ännerung|Ännerunge}}',
-'recentchanges' => 'Was zuletschd gemachd worre isch',
+'recentchanges' => 'Was zuledschd gemachd worre isch',
 'recentchanges-legend' => 'Optione vun de Aazaich',
 'recentchanges-feed-description' => 'Di letschte Ännerunge vun {{SITENAME}} in des Feed aigewwe.',
 'recentchanges-label-minor' => "S'ische glänni Beawaidung",
@@ -429,6 +444,9 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
 'lockmanager-fail-openlock' => 'Die gschberd Dadai „$1“ komma ned uffmache.',
 'lockmanager-fail-releaselock' => '„$1“ konn ned fraigewe werre.',
 
+# Special:ListFiles
+'listfiles_count' => 'Versione',
+
 # File description page
 'file-anchor-link' => 'Datei',
 'filehist' => 'Dateigschischd',
@@ -438,11 +456,11 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
 'filehist-datetime' => 'Zaidpungd',
 'filehist-thumb' => 'Vorschaubild',
 'filehist-thumbtext' => 'Vorschaubild fer Version vum $1',
-'filehist-user' => 'Benutzer',
+'filehist-user' => 'Benudzer',
 'filehist-dimensions' => 'Moß',
 'filehist-comment' => 'Kommentar',
 'imagelinks' => 'Dadaivawendung',
-'linkstoimage' => 'Die {{PLURAL:$1|Said verwaist|$1 Saire verwaise}} uff die Datei:',
+'linkstoimage' => 'Die {{PLURAL:$1|Said verwaisd|$1 Saide verwaise}} uff die Datei:',
 'sharedupload' => 'Die Datei isch vun $1 un s kann sai, dass se ach vun annere Projekt gebraucht werd.',
 'uploadnewversion-linktext' => 'E naiere Version vun derre Datei hochlade',
 
@@ -490,9 +508,6 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
 # Special:LinkSearch
 'linksearch' => 'Externe Links',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Naiaameldungs-Logbuch',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(Midgliederlischd)',
 
@@ -534,11 +549,11 @@ Guck $2 fer e Lischt vun de letschte Leschunge.',
 'deletereasonotherlist' => 'Annere Grund',
 
 # Rollback
-'rollbacklink' => 'Zericksetze',
+'rollbacklink' => 'Zeriggsetze',
 
 # Protect
 'protectlogpage' => 'Saideschutz-Logbuch',
-'protectedarticle' => 'hot "[[$1]]" gschitzt',
+'protectedarticle' => 'hot "[[$1]]" gschizd',
 'modifiedarticleprotection' => 'hot de Schutzstatus vun "[[$1]]" gännert',
 'protectcomment' => 'Grund:',
 'protectexpiry' => 'Bis:',
@@ -547,7 +562,7 @@ Guck $2 fer e Lischt vun de letschte Leschunge.',
 'protect-text' => "Du kannscht de Schutzstatus vun de Said '''$1''' aagucke un ännere.",
 'protect-locked-access' => "Dai Benutzerkonto hot ken Recht zum de Schutzstatus vun ener Said ze ännere.
 Do hot s di aktuelle Aistellunge vun de Said '''$1''':",
-'protect-cascadeon' => 'Die Said isch gschitzt, wail se {{PLURAL:$1|zu derre Said ghert|zu denne Saide ghert}}, wu e Kaskadesperrung gelt.
+'protect-cascadeon' => 'Die Said isch gschizd, wail se {{PLURAL:$1|zu derre Said ghert|zu denne Saide ghert}}, wu e Kaskadesperrung gelt.
 Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uff d Kaskadesperrung.',
 'protect-default' => 'Alle Benutzer erlääwe',
 'protect-fallback' => '«$1»-Berechdichung nedich',
@@ -555,7 +570,7 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 'protect-level-sysop' => 'Numme Adminischtratore',
 'protect-summary-cascade' => 'Kaskade',
 'protect-expiring' => 'bis $1 (UTC)',
-'protect-cascade' => 'Kaskadesperrung – alle aigebunnene Vorlache sinn midgsperrt.',
+'protect-cascade' => 'Kaskadesperrung – alle aigebunnene Vorlache sinn midgsperrd.',
 'protect-cantedit' => 'Du kannscht de Schutzstatus vun derre Said nit ännere, wail Du nid d Berechdichung dezu hoscht.',
 'restriction-type' => 'Berechdichung:',
 'restriction-level' => 'Schutzewene:',
@@ -662,7 +677,7 @@ Bitte duu se vun Hand zammefiehre.'''",
 'movetalk' => 'Dischbediersaid, wu dezu ghert, verschiewe',
 'movelogpage' => 'Verschiewungs-Logbuch',
 'movereason' => 'Grund:',
-'revertmove' => 'Zerick verschiewe',
+'revertmove' => 'Zerigg verschiewe',
 'delete_and_move' => 'Lesche un Verschiewe',
 'delete_and_move_confirm' => 'Ja, Said lesche',
 
@@ -677,7 +692,7 @@ Bitte duu se vun Hand zammefiehre.'''",
 'import-interwiki-submit' => 'Impordiere',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Dai Benutzersaid',
+'tooltip-pt-userpage' => 'Dai Benudzersaid',
 'tooltip-pt-mytalk' => 'Dai Dischbedier-Said',
 'tooltip-pt-preferences' => 'Dai Aistellunge',
 'tooltip-pt-watchlist' => 'D Lischt vun Saide, die wu du beowachde dusch',
@@ -688,10 +703,10 @@ Bitte duu se vun Hand zammefiehre.'''",
 'tooltip-ca-edit' => 'Du kannschd die Said bearwaide.
 Bidde nemmde Vorschau-Knobb vorm Schbaischere',
 'tooltip-ca-addsection' => 'E naie Abschnitt aaleche',
-'tooltip-ca-viewsource' => 'Die Said isch gschitzt.
-Du kannscht awwer de Quelltext aagucke',
+'tooltip-ca-viewsource' => 'Die Said isch gschizd.
+Du kannscht awwer de Quelltegschd aagucke',
 'tooltip-ca-history' => 'Ledschde Versione vun derre Said',
-'tooltip-ca-protect' => 'Die Said schitze',
+'tooltip-ca-protect' => 'Die Said schidze',
 'tooltip-ca-delete' => 'Die Said lesche',
 'tooltip-ca-move' => 'Die Said verschiewe',
 'tooltip-ca-watch' => 'Die Said zu Dainere Beowachdungslischt zufieche',
@@ -705,9 +720,9 @@ Du kannscht awwer de Quelltext aagucke',
 'tooltip-n-portal' => 'Iwwers Brojegd, wude duu kannschd, wu ebbes finne duschd',
 'tooltip-n-currentevents' => 'hinnergundsinformatione finne iwwer naie Eraichnis',
 'tooltip-n-recentchanges' => 'D Lischd vun de ledschde Ännerunge in dem Wiki',
-'tooltip-n-randompage' => 'E zufälliche Said lade',
+'tooltip-n-randompage' => 'E zufällisch Said lade',
 'tooltip-n-help' => 'De Ort zum rausfinne',
-'tooltip-t-whatlinkshere' => 'Lischt vun alle Wikisaide, wu do her verlinkt sinn',
+'tooltip-t-whatlinkshere' => 'Lischd vun alle Wikisaide, wu do her verlingd sinn',
 'tooltip-t-recentchangeslinked' => 'Letschde Ännerunge in Saide, wu vun do verlinkt sin',
 'tooltip-feed-rss' => 'RSS feed fer die Said',
 'tooltip-feed-atom' => 'Atom feed fer die Said',
@@ -730,9 +745,9 @@ Du kannscht awwer de Quelltext aagucke',
 'tooltip-diff' => 'Guck, welle Ännerunge Du im Text gmacht hoscht',
 'tooltip-compareselectedversions' => 'D Unnerschied zwische denne zwai ausgwehlte Versione aagucke',
 'tooltip-watch' => 'Die Said zu Dainer Beowachdunglischd zufieche',
-'tooltip-rollback' => '„Zericksetze“ machd alle Bearwaidunge vum ledschde Bearwaider rickgängich',
-'tooltip-undo' => '„Zerick“ macht numme die Ännerung rickgängich un zaicht d Vorschau aa.
-Du kannschd e Grund in dr Zammfassung aagewwe',
+'tooltip-rollback' => "„Zeriggsetze“ machd alle Bearwaidunge vum ledschde Bearwaider rigg'gängisch",
+'tooltip-undo' => "„Zerigg“ machd numme die Ännerung rigg'gängich un zaichd d Vorschau aa.
+Du kannschd e Grund in dr Zammfassung aagewwe",
 
 # Browsing diffs
 'previousdiff' => '← Ältere Bearwaidung',
@@ -799,6 +814,9 @@ Annere Medadaade sinn noamalawais verschdegld.
 # Special:Tags
 'tags-edit' => 'bearwaide',
 
+# New logging system
+'rightsnone' => '(-)',
+
 # Feedback
 'feedback-close' => 'Erledischd',
 
index 32b496c..ef07b1b 100644 (file)
@@ -809,6 +809,7 @@ Odczekaj chwilę zanim ponowisz próbę.',
 # E-mail sending
 'php-mail-error-unknown' => 'Wystąpił nieznany błąd w funkcji PHP mail()',
 'user-mail-no-addy' => 'Próba wysłania e‐maila bez adresu odbiorcy',
+'user-mail-no-body' => 'Próbowano wysłać e-mail o psutej lub krótkiej treści.',
 
 # Change password dialog
 'resetpass' => 'Zmień hasło',
@@ -1600,15 +1601,13 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'right-sendemail' => 'Wysyłanie e‐maili do innych użytkowników',
 'right-passwordreset' => 'Sprawdzanie treści e‐maila o resetowaniu hasła',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nowi użytkownicy',
+'newuserlogpagetext' => 'To jest rejestr ostatnio utworzonych kont użytkowników',
+
 # User rights log
 'rightslog' => 'Uprawnienia',
 'rightslogtext' => 'Rejestr zmian uprawnień użytkowników.',
-'rightslogentry' => 'zmienił przynależność $1 do grup ($2 → $3)',
-'rightslogentry-autopromote' => 'automatycznie zmienił przynależność ($2 → $3)',
-'logentry-rights-rights' => '$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup',
-'logentry-rights-autopromote' => '$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)',
-'rightsnone' => 'brak',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'przeglądania tej strony',
@@ -2004,6 +2003,7 @@ Być może zechcesz zmienić opis na tej [$2 stronie opisu pliku].',
 'uploadnewversion-linktext' => 'Załaduj nowszą wersję tego pliku',
 'shared-repo-from' => 'z $1',
 'shared-repo' => 'współdzielone zasoby',
+'filepage.css' => '/* Styl CSS tutaj zamieszczony jest dołączany do strony pliku, także na innych wiki */',
 'upload-disallowed-here' => 'Nie możesz nadpisać tego pliku.',
 
 # File reversion
@@ -2261,10 +2261,6 @@ Obsługiwane protokoły: <code>$1</code> (jeśli nie podano, domyślny to http:/
 'activeusers-hidesysops' => 'Ukryj administratorów',
 'activeusers-noresult' => 'Nie odnaleziono żadnego użytkownika.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nowi użytkownicy',
-'newuserlogpagetext' => 'To jest rejestr ostatnio utworzonych kont użytkowników',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Uprawnienia grup użytkowników',
 'listgrouprights-summary' => 'Poniżej znajduje się spis zdefiniowanych na tej wiki grup użytkowników, z wyszczególnieniem przydzielonych im uprawnień.
@@ -2396,6 +2392,8 @@ $UNWATCHURL
 
 Pomoc
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'utworzona',
+'changed' => 'zmieniona',
 
 # Delete
 'deletepage' => 'Usuń stronę',
@@ -2467,6 +2465,7 @@ Wszystkie aktywne zabezpieczenia odnajdziesz na liście [[Special:ProtectedPages
 'prot_1movedto2' => 'stronę [[$1]] przeniósł do [[$2]]',
 'protect-badnamespace-title' => 'Przestrzeń nazw, w której nie można zabezpieczać stron',
 'protect-badnamespace-text' => 'Stron w tej przestrzeni nazw nie można zabezpieczać.',
+'protect-norestrictiontypes-title' => 'Nieblokowalna strona',
 'protect-legend' => 'Potwierdź zabezpieczenie',
 'protectcomment' => 'Powód',
 'protectexpiry' => 'Czas wygaśnięcia',
@@ -2970,6 +2969,7 @@ Brak katalogu dla plików tymczasowych.',
 'import-error-interwiki' => 'Strona „$1” nie została zaimportowana, ponieważ jej nazwa jest zarezerwowana do linków zewnętrznych (interwiki).',
 'import-error-special' => 'Strona „$1” nie została zaimportowana, ponieważ należy do specjalnej przestrzeni nazw, która nie zezwala na strony.',
 'import-error-invalid' => 'Strona „$1” nie została zaimportowana, ponieważ jej nazwa jest nieprawidłowa.',
+'import-error-unserialize' => 'Wersja $2 strony "$1" nie może zostać odserializowana. Wersja używa modelu treści $3 zserializowanego jako $4',
 'import-options-wrong' => '{{PLURAL:$2|Niepoprawna opcja|Niepoprawne opcje}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Wskazana strona główna jest niepoprawna.',
 'import-rootpage-nosubpage' => 'Przestrzeń nazw "$1" strony głównej nie dopuszcza stron podrzędnych.',
@@ -3076,6 +3076,8 @@ Pozwala na wpisanie powodu w opisie zmian.',
 'print.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd wydruku */',
 'handheld.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd na urządzeniach kieszonkowych skórki ustawionej w zmiennej $wgHandheldStyle */',
 'noscript.css' => '/* Umieszczony tu arkusz stylów CSS będzie wykorzystywany dla użytkowników z wyłączoną obsługą JavaScript */',
+'group-autoconfirmed.css' => '/* CSS tutaj umieszczony będzie dotyczyć tylko samoczynnie potwierdzonych użytkowników */',
+'group-bot.css' => '/* CSS tutaj umieszczony będzie obowiązywał tylko dla botów */',
 
 # Scripts
 'common.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony. */',
@@ -4054,6 +4056,10 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'logentry-newusers-create2' => 'Konto użytkownika $3 zostało utworzone przez użytkownika $1',
 'logentry-newusers-autocreate' => '$1 automatycznie tworzy konto użytkownika',
 'newuserlog-byemail' => 'hasło zostało wysłane e‐mailem',
+'logentry-rights-rights' => '$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup',
+'logentry-rights-autopromote' => '$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)',
+'rightsnone' => 'brak',
 
 # Feedback
 'feedback-bugornote' => 'Jeśli jesteś {{GENDER:|gotów|gotowa}} szczegółowo opisać problem techniczny proszę [$1 zgłoś błąd].
index 0be7214..9805791 100644 (file)
@@ -74,7 +74,7 @@ $messages = array(
 'tog-externaleditor' => "Dovré coma stàndard n'editor estern (mach për espert, a-i é dabzògn d'ampostassion speciaj dzora a sò ordinator. [//www.mediawiki.org/wiki/Manual:External_editors Për savèjne ëd pi.])",
 'tog-externaldiff' => "Dovré për stàndard un programa comparator estern (mach për espert, a-i é dabzògn d'ampostassion speciaj ansima a sò ordinator [//www.mediawiki.org/wiki/Manual:External_editors Për savèjne ëd pi.])",
 'tog-showjumplinks' => 'Dovré j\'anliure d\'acessibilità dla sòrt "Va a"',
-'tog-uselivepreview' => "Dovré la fonsion ''Preuva dal viv'' (a-i va JavaScript e a l'é mach sperimental)",
+'tog-uselivepreview' => "Dovré la fonsion ''Preuva dal viv'' (a-i va JavaScript) (sperimental)",
 'tog-forceeditsummary' => "Ciama conferma se ël somari dla modìfica a l'é veujd",
 'tog-watchlisthideown' => 'Stërma mie modìfiche ant la ròba che im ten-o sot euj',
 'tog-watchlisthidebots' => 'Stërma le modìfiche fàite daj trigomiro ant la lista dle ròbe che im ten-o sot euj',
@@ -175,6 +175,7 @@ $messages = array(
 'newwindow' => '(as deurb ant na fnestra neuva)',
 'cancel' => 'Scancela',
 'moredotdotdot' => 'Dë pì...',
+'morenotlisted' => 'Autr pa listà...',
 'mypage' => 'Pàgina',
 'mytalk' => 'Ciaciarade',
 'anontalk' => "Ciaciarade për st'adrëssa IP-sì",
@@ -547,6 +548,7 @@ Për piasì speta prima ëd prové torna.",
 # E-mail sending
 'php-mail-error-unknown' => 'Eror pa conossù ant la funsion PHP mail()',
 'user-mail-no-addy' => 'Provà a spedì un mëssagi sensa adrëssa ëd pòsta eletrònica.',
+'user-mail-no-body' => 'Preuva a mandé un corel con un còrp veuid o motobin curt.',
 
 # Change password dialog
 'resetpass' => 'Cambia la ciav',
@@ -1333,15 +1335,13 @@ Costa anformassion a sarà pùblica.",
 'right-sendemail' => "Mandé un mëssagi an pòsta eletrònica a j'àutri utent",
 'right-passwordreset' => 'Vëdde ij mëssagi ëd pòsta eletrònica ëd riampostassion dle ciav',
 
+# Special:Log/newusers
+'newuserlogpage' => "Registr dla creassion dj'utent",
+'newuserlogpagetext' => "Sossì a l'é un registr andova ch'as marco le creassion dj'utent.",
+
 # User rights log
 'rightslog' => "Argistr dij drit ëd j'utent",
 'rightslogtext' => "Costa a l'é na lista dij cambiament aj drit ëd j'utent.",
-'rightslogentry' => "a l'ha tramudà $1 da 'nt la partìa $2 a la partìa $3",
-'rightslogentry-autopromote' => "a l'é stàit automaticament promovù da $2 a $3",
-'logentry-rights-rights' => "$1 a l'ha tramudà l'apartenesa a la partìa për $3 da $4 a $5",
-'logentry-rights-rights-legacy' => "$1 a l'ha tramudà l'apartenensa a la partìa për $3",
-'logentry-rights-autopromote' => "$1 a l'é stàit automaticament promovù da $4 a $5",
-'rightsnone' => '(gnun)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lese sta pàgina-sì',
@@ -1473,7 +1473,7 @@ Beiché la [[Special:NewFiles|galarìa dj'archivi neuv]] për na presentassion p
 'filetype-unwanted-type' => "'''\".\$1\"''' a l'é na sòrt d'archivi ch'as pija nen ëd bon-a veuja.
 {{PLURAL:\$3|La sòrt preferìa a l'é|Le sòrt preferìe a son}} \$2.",
 'filetype-banned-type' => "'''\".\$1\"''' {{PLURAL:\$4|a l'é na sòrt d'archivi proibìa|a son ëd sòrt d'archivi proibìe}}.
-{{PLURAL:\$3|Sòrt d'archivi consentìa a l'é|Sòrt d'archivi consentìe a son}} \$2.",
+{{PLURAL:\$3|La sòrt d'archivi consentìa a l'é|Le sòrt d'archivi consentìe a son}} \$2.",
 'filetype-missing' => "A l'archivi a-j manca l'estension (pr'esempi \".jpg\").",
 'empty-file' => "L'archivi ch'a l'ha mandà a l'era veuid.",
 'file-too-large' => "L'archivi ch'a l'ha mandà a l'era tròp gròss.",
@@ -1570,7 +1570,7 @@ $1",
 Për piasì, ch'as butà an comunicassion con n'[[Special:ListUsers/sysop|aministrator]].",
 'upload-misc-error' => "Eror nen identificà antramentr ch'as cariava",
 'upload-misc-error-text' => "A l'é staie n'eror nen identificà dëmentrè ch'as cariava chèich-còs.
-Për piasì, ch'a varda che soa anliura a sia bon-a e che a l'arsponda e peuj ch'a preuva torna.
+Për piasì, ch'a varda che soa anliura a sia bon-a e che a sponda e peuj ch'a preuva torna.
 Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:ListUsers/sysop|aministrator]].",
 'upload-too-many-redirects' => "L'adrëssa dl'aragnà a l'avìa tròpe ridiression",
 'upload-unknown-size' => 'Dimension pa conossùa',
@@ -1668,10 +1668,10 @@ Për na sicurëssa otimal, img_auth.php a l'é disabilità.",
 'http-bad-status' => "A l'é staje un problema durant l'arcesta HTTP: $1 $2",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => "L'anliura a l'arspond pa",
+'upload-curl-error6' => "L'anliura a spond pa",
 'upload-curl-error6-text' => "L'anliura che a l'ha butà a marcia pa. Për piasì, ch'a contròla che st'anliura a sia scrita giusta e che ël sit a marcia.",
 'upload-curl-error28' => "A l'é finìje ël temp ch'as peul dovresse për carié",
-'upload-curl-error28-text' => "Ël sit a-i buta tròp temp a arsponde. Për piasì, ch'a contròla che a l'é an pé, ch'a speta na minuta e peuj che a torna a prové. A peul esse che a-j ven-a a taj serne un moment che ës sit a sia nen tant carià ëd tràfich.",
+'upload-curl-error28-text' => "Ël sit a-i buta tròp temp a sponde. Për piasì, ch'a contròla che a l'é an pé, ch'a speta na minuta e peuj che a torna a prové. A peul esse che a-j ven-a a taj serne un moment che ës sit a sia nen tant carià ëd tràfich.",
 
 'license' => 'Licensa:',
 'license-header' => 'Licensa',
@@ -1992,10 +1992,6 @@ A-i é dabzògn almanch d\'un domini a livel pi àut, për esempi "*.org".<br />
 'activeusers-hidesysops' => "Stërmé j'aministrator",
 'activeusers-noresult' => 'Pa gnun utent trovà.',
 
-# Special:Log/newusers
-'newuserlogpage' => "Registr dla creassion dj'utent",
-'newuserlogpagetext' => "Sossì a l'é un registr andova ch'as marco le creassion dj'utent.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Drit dël grup d'utent",
 'listgrouprights-summary' => "Ambelessì a-i é na lista dle partìe d'utent definìe ansima a costa wiki, con ij sò drit d'acess associà.
@@ -2132,6 +2128,8 @@ $UNWATCHURL
 
 Comunicassion ëd servissi e pì d\'agiut:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creà',
+'changed' => 'modificà',
 
 # Delete
 'deletepage' => 'Scancelé la pàgina',
@@ -2201,6 +2199,8 @@ Ch'a varda la [[Special:ProtectedPages|Lista dle pàgine protegiùe]] për la li
 'prot_1movedto2' => '[[$1]] tramudà a [[$2]]',
 'protect-badnamespace-title' => 'Spassi nominal pa protegìbil',
 'protect-badnamespace-text' => 'Le pàgine an cost ëspassi nominal-sì a peulo pa esse protegiùe.',
+'protect-norestrictiontypes-text' => 'Sta pagina a peul pa esse protegiùa përchè a-i son gnun-e sòrt ëd restrission disponìbij.',
+'protect-norestrictiontypes-title' => 'Pagina pa protegìbila',
 'protect-legend' => 'Che an conferma la protession',
 'protectcomment' => 'Rason:',
 'protectexpiry' => 'Scadensa:',
@@ -2863,6 +2863,7 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
 'pageinfo-magic-words' => '{{PLURAL:$1|Paròla màgica|Paròle màgiche}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categorìa|Categorìe}} stërmà ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|stamp contnù|stamp contnù}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pagina|Pagine}} transcludùe dzor ($1)',
 'pageinfo-toolboxlink' => 'Anformassion an sla pàgina',
 'pageinfo-redirectsto' => 'Ridiression-a a',
 'pageinfo-redirectsto-info' => 'anformassion',
@@ -2871,6 +2872,10 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
 'pageinfo-protect-cascading' => 'Le protession a son a cascada da sì',
 'pageinfo-protect-cascading-yes' => 'É!',
 'pageinfo-protect-cascading-from' => 'Le protession a son a cascada da',
+'pageinfo-category-info' => 'Anformassion ëd categorìa',
+'pageinfo-category-pages' => 'Nùmer ëd pàgine',
+'pageinfo-category-subcats' => 'Nùmer ëd sotcategorìe',
+'pageinfo-category-files' => "Nùmer d'archivi",
 
 # Patrolling
 'markaspatrolleddiff' => 'Marché coma verificà',
@@ -2947,6 +2952,8 @@ An fasend-lo marcé ansima a sò ordinator chiel a podrìa porteje ëd dann a s
 'minutes' => '{{PLURAL:$1|$1 minuta|$1 minute}}',
 'hours' => '{{PLURAL:$1|$1 ora|$1 ore}}',
 'days' => '{{PLURAL:$1|$1 di|$1 di}}',
+'months' => '{{PLURAL:$1|$1 mèis}}',
+'years' => '{{PLURAL:$1|$1 ann|$1 agn}}',
 'ago' => '$1 fa',
 'just-now' => 'pròpi adess',
 
@@ -3518,8 +3525,7 @@ Ch'a preuva an manera sòlita.",
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Le modìfiche pì neuve ëd $1 {{PLURAL:$1|second}} a podrìo nen ess-ie ant sta lista-sì.',
-'lag-warn-high' => "Për via che la màchina serventa a tarda a dene d'arspòsta, le modìfiche fàite men che $1 {{PLURAL:$1|second}} fa
-a podrìo ëdcò nen ess-ie ant sta lista-sì.",
+'lag-warn-high' => "Për via che la màchina serventa a tarda a dene 'd rispòste, le modìfiche fàite men che $1 {{PLURAL:$1|second}} fa a podrìo ëdcò nen ess-ie ant sta lista-sì.",
 
 # Watchlist editor
 'watchlistedit-numitems' => "A l'é antramentr ch'a ten sot-euj {{PLURAL:$1|1 tìtol|$1 tìtoj}}, nen contand le pàgine ëd discussion.",
@@ -3734,6 +3740,10 @@ Le figure a së smon-o a amzura pijn-a, j'àotre sòrt d'archivi a ven-o fàite
 'logentry-newusers-create2' => "Ël cont utent $3 a l'é stàit creà da $1",
 'logentry-newusers-autocreate' => "Ël cont $1 a l'é stàit creà an automàtich",
 'newuserlog-byemail' => 'ciav spedìa për pòsta eletrònica',
+'logentry-rights-rights' => "$1 a l'ha tramudà l'apartenesa a la partìa për $3 da $4 a $5",
+'logentry-rights-rights-legacy' => "$1 a l'ha tramudà l'apartenensa a la partìa për $3",
+'logentry-rights-autopromote' => "$1 a l'é stàit automaticament promovù da $4 a $5",
+'rightsnone' => '(gnun)',
 
 # Feedback
 'feedback-bugornote' => "S'a l'é pront a descrive un problema técnich an detaj, për piasì ch'a [$1 signala un bigat]. 
@@ -3767,32 +3777,32 @@ Dësnò, a peul dovré ël formolari semplificà sì-sota. Sò coment a sarà gi
 'api-error-emptypage' => "La creassion ëd pàgine neuve veujde a l'é nen përmëttùa.",
 'api-error-fetchfileerror' => "Eror antern: quaicòs a l'é andàit mal antramentre ch'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-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.",
-'api-error-filetype-banned-type' => "$1 {{PLURAL:$4|a l'é na sòrt d'archivi proibìa|a son ëd sòrt d'archivi proibìe}}. {{PLURAL:$3|Sòrt d'archivi consentìa a l'é|Sòrt d'archivi consentìe a son}} $2.",
+'api-error-filetype-banned-type' => "$1 {{PLURAL:$4|a l'é na sòrt d'archivi proibìa|a son ëd sòrt d'archivi proibìe}}. {{PLURAL:$3|La sòrt d'archivi consentìa a l'é|Le sòrt d'archivi consentìe a son}} $2.",
 'api-error-filetype-missing' => "L'archivi a l'é sensa estension.",
 'api-error-hookaborted' => "La modìfica ch'a l'ha provà a fé a l'é stàita blocà dal gancio ëd n'estension.",
-'api-error-http' => 'Eror antern: as peul pa coleghesse al sërvent.',
+'api-error-http' => 'Eror antern: As peul pa coleghesse al servent.',
 'api-error-illegal-filename' => "Ël nòm dl'archivi a l'é nen consentì.",
-'api-error-internal-error' => "Eror antern: quaicòs a l'é andàit mal con ël tratament ëd tò cariagi an sla wiki.",
+'api-error-internal-error' => "Eror antern: Cheicòs a l'é andàit mal con ël tratament ëd soa amportassion an sla wiki.",
 'api-error-invalid-file-key' => 'Eror antern: archivi pa trovà ant la memòria a temp.',
 'api-error-missingparam' => "Eror antern: paràmetr mancant ant l'arcesta.",
 'api-error-missingresult' => "Eror antern: as peul pa determiné se la còpia a l'é andàita bin.",
 'api-error-mustbeloggedin' => "A dev esse intrà ant ël sistema për carié dj'archivi.",
 'api-error-mustbeposted' => "Eror antern: L'arcesta a l'ha da manca d'HTTP POST.",
-'api-error-noimageinfo' => "Ël càrigh a l'é andàit bin, ma ël sërvent a l'ha dane gnun-e anformassion an sl'archivi.",
-'api-error-nomodule' => 'Eror antern: Gnun mòdoj ëd cariagi ampostà.',
-'api-error-ok-but-empty' => 'Eror antern: Gnun-a arspòste dal sërvent.',
+'api-error-noimageinfo' => "Ël cariament a l'é andàit bin, ma ël servent a l'ha dane gnun-e anformassion an sl'archivi.",
+'api-error-nomodule' => 'Eror antern: gnun mòdoj ëd caria ampostà.',
+'api-error-ok-but-empty' => 'Eror antern: Gnun-a rispòsta dal servent.',
 'api-error-overwrite' => "Dzorascrive ansima a n'archivi esistent a l'é nen përmëttù.",
-'api-error-stashfailed' => "Eror antern: ël sërvent a l'ha pa podù memorisé l'archivi a temp.",
-'api-error-timeout' => "Ël sërvent a l'ha pa arspondù ant ël temp spetà.",
+'api-error-stashfailed' => "Eror antern: ël servent a l'ha pa podù memorisé l'archivi a temp.",
+'api-error-timeout' => "Ël servent a l'ha pa rëspondù ant ël temp ëspetà.",
 'api-error-unclassified' => "A l'é capitaje n'eror nen conossù.",
-'api-error-unknown-code' => 'Eror sconossù: "$1"',
-'api-error-unknown-error' => "Eror antern: quaicòs a l'é andàit mal quand a l'é provasse a carié tò archivi.",
+'api-error-unknown-code' => 'Eror sconossù: «$1».',
+'api-error-unknown-error' => "Eror antern: Cheicòs a l'é andàit mal quand a l'é provasse a carié sò archivi.",
 'api-error-unknown-warning' => 'Avis pa conossù: $1',
-'api-error-unknownerror' => 'Eror sconossù: "$1".',
+'api-error-unknownerror' => 'Eror sconossù: «$1».',
 'api-error-uploaddisabled' => "Ël cariagi a l'é disabilità su sta wiki.",
 'api-error-verification-error' => "Cost archivi a peul esse danegià, o avèj l'estension sbalià.",
 
index 7bc53af..5ed26d0 100644 (file)
@@ -1261,12 +1261,13 @@ $1",
 'right-sendemail' => 'دوجے ورتن والیاں نوں ای-میل کرو',
 'right-passwordreset' => 'کنجی بدلی ای-میلاں نوں وکھاؤ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ورتاوا بنان آلی لاگ',
+'newuserlogpagetext' => 'اے ورتن والا بنان دی لاگ اے۔',
+
 # User rights log
 'rightslog' => 'ورتن والے دے حقاں دی لاگ',
 'rightslogtext' => 'ورتن حقاں چ تبدیلیاں دی اے لاگ اے۔',
-'rightslogentry' => 'ٹولی ممرشپ $1 لئی $2 توں $3 تک بدلو۔',
-'rightslogentry-autopromote' => '$2 توں اپنے آپ $3 تک ودایا گیا۔',
-'rightsnone' => '(کوئی وی نئیں)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'اس صفحے نوں پڑھو',
@@ -1889,10 +1890,6 @@ $1",
 'activeusers-hidesysops' => 'مکھۓ لکاؤ',
 'activeusers-noresult' => 'کوئی ورتن والا نئیں لبیا۔',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ورتاوا بنان آلی لاگ',
-'newuserlogpagetext' => 'اے ورتن والا بنان دی لاگ اے۔',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ورتن ٹرلی حق',
 'listgrouprights-summary' => 'تھلے اک لسٹ اے ورتن ٹولیاں دی ای وکی تے، اپنے رلدے حقاں نال۔ 
@@ -2022,6 +2019,8 @@ $UNWATCHURL
 
 فیڈبیک تے ہور مدد لئی:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'بن گیا',
+'changed' => 'بدلیا',
 
 # Delete
 'deletepage' => 'صفہ مٹاؤ',
@@ -3533,6 +3532,7 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 'logentry-newusers-create2' => '$1 {{جنس:$2|بنایا}} {{جنس:$4|اک ورتن کھاتہ}} $3',
 'logentry-newusers-autocreate' => 'کھاتہ $1 اپنے آپ ای {{جنس:$2|بنایا گیا}} بنایا گیا۔',
 'newuserlog-byemail' => 'کنجی ای-میل راہ پیج دتی گئی۔',
+'rightsnone' => '(کوئی وی نئیں)',
 
 # Feedback
 'feedback-bugornote' => 'اگر تسیں اک تکنیکی مسلے نوں  پوری طراں دسن لئی تیار او تے فیر مہربانی کرکے [$1 بگ بارے دسو]۔  ںئیں تے تسیں تھلے دتا گیا فارم ورتو۔ تواڈی گل صفہ "[$3 $2]" تے جڑے گی،  تواڈے ورتن والے ناں تے براؤزر جیہڑا تسیں ورت رۓ او۔',
index f9f5cd3..e81e4fa 100644 (file)
@@ -1040,11 +1040,13 @@ Tū mazzi dīgi etrīnktun dātun kitēimans drāugautwei sen tin pra tērpautaj
 'right-override-export-depth' => 'Ekspōrtis pāusans ēmpiri sen pāusans prei kawīdans tenēi autenginna, ērgi gilluwan stēisan 5 autengīnsenin',
 'right-sendemail' => 'Tenginnais e-mailin kitēimans tērpautajans',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nāunai tērpautajai',
+'newuserlogpagetext' => 'Sta ast registerin stēisan nāunai teīkatan rekkenan stēisan tērpautajan',
+
 # User rights log
 'rightslog' => 'Registerin stēisan tērpautajan enwarīnsenin',
 'rightslogtext' => 'Sta ast registerin stēisan tērpautajan ewarīnsenin kitawīdinsnan.',
-'rightslogentry' => 'ast kitawīdinuns(si) $1 perlānksnan prei gruppins ($2 → $3)',
-'rightsnone' => '(nisātausna)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'skaitātun šin pāusan',
@@ -1525,10 +1527,6 @@ Ebšlūzitai prōtokulai: <code>$1</code>',
 'activeusers-hidesysops' => 'Kliptinais perwaldītajans',
 'activeusers-noresult' => 'Ni aupalā di tērpautajans',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nāunai tērpautajai',
-'newuserlogpagetext' => 'Sta ast registerin stēisan nāunai teīkatan rekkenan stēisan tērpautajan',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Tērpautajan gruppin enwarīnsenei',
 'listgrouprights-summary' => 'Zemmais ast listi stēisan tērpautajan gruppin definītan en šissei wiki sen enwarīnsenins preipeisātan tenēimans.
@@ -1609,6 +1607,8 @@ Eraīna šisse pāusas ēnturas kitawīdinsna anga diskusiōnis pāusas sēitan
 'enotif_lastvisited' => 'Wīdais en $1 wissans kitawīdinsnans ezze Twajjai panzdauman kāimalukisenin.',
 'enotif_lastdiff' => 'Wīdais en $1 šan kitawīdisnan.',
 'enotif_anon_editor' => 'anōnims tērpautajs $1',
+'created' => 'teīktan',
+'changed' => 'kitawīdintan',
 
 # Delete
 'deletepage' => 'Āupausinais pāusan',
@@ -2708,5 +2708,6 @@ Enpeisāis zūrbrukes pabilīsnan šlāit "{{ns:file}}:" prefiksan.',
 'revdelete-restricted' => 'ensadinnais arāikinsenins per perwaldītajans',
 'revdelete-unrestricted' => 'āupausinais arāikinsenins per perwaldītajans',
 'newuserlog-byemail' => 'kliptaswīrds tengīntan pra e-mail',
+'rightsnone' => '(nisātausna)',
 
 );
index 8172c6f..33ab6f8 100644 (file)
@@ -1167,10 +1167,13 @@ $1',
 'right-userrights-interwiki' => 'په نورو ويکي ګانو د نورو کارنانو  کارن-رښتې سمول',
 'right-sendemail' => 'نورو کارنانو ته برېښليک لېږل',
 
+# Special:Log/newusers
+'newuserlogpage' => 'د کارن-نوم د جوړېدو يادښت',
+'newuserlogpagetext' => 'دا د کارن-نوم د جوړېدو يادښت دی',
+
 # User rights log
 'rightslog' => 'د کارن د رښتو يادښت',
 'rightslogtext' => 'دا د کارن رښتو د بدلونونو يو يادښت دی',
-'rightsnone' => '(هېڅ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'همدا مخ لوستل',
@@ -1583,10 +1586,6 @@ $1',
 'activeusers-hidesysops' => 'پازوالان پټول',
 'activeusers-noresult' => 'کارن و نه موندل شو.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'د کارن-نوم د جوړېدو يادښت',
-'newuserlogpagetext' => 'دا د کارن-نوم د جوړېدو يادښت دی',
-
 # Special:ListGroupRights
 'listgrouprights' => 'د کارن ډلو رښتې',
 'listgrouprights-group' => 'ډله',
@@ -1709,6 +1708,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 انګېرنې او نورې مرستې:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'جوړ شو',
+'changed' => 'بدلېدلی',
 
 # Delete
 'deletepage' => 'مخ ړنګول',
@@ -2675,6 +2676,7 @@ $5
 'logentry-newusers-create' => 'د $1 کارن ګڼون جوړ شو',
 'logentry-newusers-autocreate' => 'د $1 ګڼون په اتوماتيک ډول جوړ شو',
 'newuserlog-byemail' => 'پټنوم مو برېښليک ته درولېږه',
+'rightsnone' => '(هېڅ)',
 
 # Feedback
 'feedback-subject' => 'سکالو:',
index 461a688..98d541b 100644 (file)
@@ -34,6 +34,7 @@
  * @author MetalBrasil
  * @author Minh Nguyen
  * @author Nuno Tavares
+ * @author Opraco
  * @author Paulo Juntas
  * @author Pedroca cerebral
  * @author Rafael Vargas
@@ -1089,8 +1090,10 @@ Ela parece ter sido eliminada.',
 'edit-already-exists' => 'Não foi possível criar uma página nova.
 Ela já existia.',
 'defaultmessagetext' => 'Texto da mensagem padrão',
+'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
 
 # Content models
+'content-model-wikitext' => 'wikitexto',
 'content-model-text' => 'texto simples',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
@@ -1467,9 +1470,9 @@ Esta operação não pode ser desfeita.',
 'prefs-emailconfirm-label' => 'Confirmação do endereço:',
 'prefs-textboxsize' => 'Tamanho da janela de edição',
 'youremail' => 'Correio electrónico:',
-'username' => 'Nome de utilizador:',
+'username' => 'Nome de {{GENDER:$1|utilizador|utilizadora}}:',
 'uid' => 'Número de identificação:',
-'prefs-memberingroups' => 'Membro {{PLURAL:$1|do grupo|dos grupos}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:',
 'prefs-registration' => 'Hora de registo:',
 'yourrealname' => 'Nome verdadeiro:',
 'yourlanguage' => 'Língua:',
@@ -1618,13 +1621,13 @@ Esta informação será pública.',
 'right-sendemail' => 'Enviar correio electrónico a outros utilizadores',
 'right-passwordreset' => 'Ver emails de reposição de palavras-chave',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registo de criação de utilizadores',
+'newuserlogpagetext' => 'Este é um registo de novas contas de utilizador',
+
 # User rights log
 'rightslog' => 'Registo de privilégios de utilizador',
 'rightslogtext' => 'Este é um registo de mudanças nos privilégios dos utilizadores.',
-'rightslogentry' => 'alterou grupos de $1 (de $2 para $3)',
-'rightslogentry-autopromote' => 'foi automaticamente promovido de $2 para $3',
-'logentry-rights-rights' => '$1 modificou os privilégios do utilizador  $3  de  $4  para $5',
-'rightsnone' => '(nenhum)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ler esta página',
@@ -1806,7 +1809,7 @@ Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envi
 'uploadwarning-text' => 'Modifique a descrição do ficheiro abaixo e tente novamente, por favor.',
 'savefile' => 'Gravar ficheiro',
 'uploadedimage' => 'carregou "[[$1]]"',
-'overwroteimage' => 'foi enviada uma nova versão de "[[$1]]"',
+'overwroteimage' => 'enviou uma nova versão de "[[$1]]"',
 'uploaddisabled' => 'Carregamentos impossibilitados',
 'copyuploaddisabled' => 'Upload por URL impossibilitado.',
 'uploadfromurl-queued' => 'O seu upload foi adicionado à fila.',
@@ -2279,10 +2282,6 @@ Protocolos suportados: <code>$1</code> (não adicione nenhum destes na sua pesqu
 'activeusers-hidesysops' => 'Esconder administradores',
 'activeusers-noresult' => 'Nenhum utilizador encontrado.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registo de criação de utilizadores',
-'newuserlogpagetext' => 'Este é um registo de novas contas de utilizador',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Privilégios dos grupos de utilizadores',
 'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
@@ -2381,12 +2380,9 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efectuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Consulte $1 para ver esta alteração.',
 'enotif_anon_editor' => 'utilizador anónimo $1',
-'enotif_body' => 'Caro(a) $WATCHINGUSERNAME,
-
-
-A página $PAGETITLE da {{SITENAME}} foi $CHANGEDORCREATED a $PAGEEDITDATE por $PAGEEDITOR; consulte $PAGETITLE_URL para ver a versão actual.
+'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}},
 
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2411,6 +2407,8 @@ $UNWATCHURL
 
 Para comentários e pedidos de ajuda:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'criada',
+'changed' => 'alterada',
 
 # Delete
 'deletepage' => 'Eliminar página',
@@ -2564,7 +2562,8 @@ Pode ter usado um link incorrecto ou talvez a revisão tenha sido restaurada ou
 'undeletedrevisions' => '$1 {{PLURAL:$1|edição restaurada|edições restauradas}}',
 'undeletedrevisions-files' => '$1 {{PLURAL:$2|edição restaurada|edições restauradas}} e $2 {{PLURAL:$2|ficheiro restaurado|ficheiros restaurados}}',
 'undeletedfiles' => '{{PLURAL:$1|ficheiro restaurado|$1 ficheiros restaurados}}',
-'cannotundelete' => 'Restauração falhada; alguém talvez já restaurou a página.',
+'cannotundelete' => 'Restauração falhada:
+$1',
 'undeletedpage' => "'''$1 foi restaurada'''
 
 Consulte o [[Special:Log/delete|registo de eliminações]] para um registo das eliminações e restaurações mais recentes.",
@@ -2867,6 +2866,7 @@ não é possível mover uma página para ela mesma.',
 'immobile-target-namespace-iw' => 'Um link interwikis não é um destino válido para uma movimentação de página.',
 'immobile-source-page' => 'Esta página não pode ser movida.',
 'immobile-target-page' => 'Não é possível mover para esse título de destino.',
+'bad-target-model' => 'O destino pretendido usa um modelo de conteúdo diferente. Não é possível converter de $1 para $2.',
 'imagenocrossnamespace' => 'Não é possível mover imagem para espaço nominal que não de imagens',
 'nonfile-cannot-move-to-file' => 'Não é possível mover algo que não é um ficheiro para o espaço nominal de ficheiros',
 'imagetypemismatch' => 'A extensão do novo ficheiro não corresponde ao seu tipo',
@@ -3132,6 +3132,7 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'pageinfo-display-title' => 'Exibir título',
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
+'pageinfo-language' => 'Idioma do conteúdo da página',
 'pageinfo-robot-policy' => 'Status do mecanismo de pesquisa',
 'pageinfo-robot-index' => 'Indexável',
 'pageinfo-robot-noindex' => 'Não indexável',
@@ -3241,6 +3242,8 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
 'minutes' => '{{PLURAL:$1|um minuto|$1 minutos}}',
 'hours' => '{{PLURAL:$1|uma hora|$1 horas}}',
 'days' => '{{PLURAL:$1|um dia|$1 dias}}',
+'months' => '{{PLURAL:$1|1 mês|$1 meses}}',
+'years' => '{{PLURAL:$1|1 ano|$1 anos}}',
 'ago' => '$1 atrás',
 'just-now' => 'agora mesmo',
 
@@ -3990,8 +3993,8 @@ Imagens serão apresentadas pelo browser na resolução máxima; ficheiros de ou
 'revdelete-uname-unhid' => 'utilizador não oculto',
 'revdelete-restricted' => 'restrições a administradores aplicadas',
 'revdelete-unrestricted' => 'restrições a administradores removidas',
-'logentry-move-move' => '$1 moveu página $3 para $4',
-'logentry-move-move-noredirect' => '$1 moveu página $3 para $4 sem deixar um redireccionamento',
+'logentry-move-move' => '$1 moveu página $3 para $4',
+'logentry-move-move-noredirect' => '$1 moveu página $3 para $4 sem deixar um redireccionamento',
 'logentry-move-move_redir' => '$1 moveu a página $3 para $4 através de um redireccionamento',
 'logentry-move-move_redir-noredirect' => '$1 moveu a página $3 para $4 sem um redireccionamento',
 'logentry-patrol-patrol' => '$1 marcou a revisão $4 da página $3 como patrulhada',
@@ -4001,6 +4004,8 @@ Imagens serão apresentadas pelo browser na resolução máxima; ficheiros de ou
 'logentry-newusers-create2' => 'A conta de utilizador $3 foi criada por $1',
 'logentry-newusers-autocreate' => 'A conta $1 foi criada automaticamente',
 'newuserlog-byemail' => 'palavra-chave enviada por correio-electrónico',
+'logentry-rights-rights' => '$1 modificou os privilégios do utilizador  $3  de  $4  para $5',
+'rightsnone' => '(nenhum)',
 
 # Feedback
 'feedback-bugornote' => 'Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].
index 718b687..4a798f5 100644 (file)
@@ -41,6 +41,7 @@
  * @author ManoDbo
  * @author McDutchie
  * @author MetalBrasil
+ * @author Opraco
  * @author Pedroca cerebral
  * @author Ppena
  * @author Rafael Vargas
@@ -577,7 +578,7 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
 'youhavenewmessages' => 'Você tem $1 ($2).',
 'newmessageslink' => 'novas mensagens',
 'newmessagesdifflink' => 'última alteração',
-'youhavenewmessagesfromusers' => 'Você tem $1 de {{PLURAL:$3|outro usuário|outros usuários}} ($2)',
+'youhavenewmessagesfromusers' => 'Você tem $1 de {{PLURAL:$3|outro usuário|$3 usuários}} ($2)',
 'youhavenewmessagesmanyusers' => 'Você tem $1 de muitos usuários ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|mensagens novas}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|última alteração|últimas alterações}}',
@@ -743,7 +744,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'userlogin' => 'Entrar / criar conta',
 'userloginnocreate' => 'Entrar',
 'logout' => 'Sair',
-'userlogout' => 'Desconectar',
+'userlogout' => 'Sair',
 'notloggedin' => 'Não autenticado',
 'nologin' => 'Não possui uma conta? $1.',
 'nologinlink' => 'Criar uma conta',
@@ -1615,15 +1616,13 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'right-sendemail' => 'Enviar email a outros usuários',
 'right-passwordreset' => 'Ver todos os e-mails de reposição de senhas',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registro de criação de usuários',
+'newuserlogpagetext' => 'Este é um registro de novas contas de usuário',
+
 # User rights log
 'rightslog' => 'Registro de privilégios de usuário',
 'rightslogtext' => 'Este é um registro de mudanças nos privilégios de usuários.',
-'rightslogentry' => 'alterou os grupos de privilégios {{GENDER:$1|do usuário|da usuária|de usuário para}} $1 (de $2 para $3)',
-'rightslogentry-autopromote' => 'foi automaticamente promovido de $2 para $3',
-'logentry-rights-rights' => '$1 alterou os grupos de usuário de $3 de $4 para $5',
-'logentry-rights-rights-legacy' => '$1 alterou os grupos de $3',
-'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 a $5',
-'rightsnone' => '(nenhum)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ler esta página',
@@ -2282,10 +2281,6 @@ Protocolos suportados: <code>$1</code> (o padrão é http://).',
 'activeusers-hidesysops' => 'Esconder administradores',
 'activeusers-noresult' => 'Nenhum usuário encontrado.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registro de criação de usuários',
-'newuserlogpagetext' => 'Este é um registro de novas contas de usuário',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Privilégios de grupo de usuários',
 'listgrouprights-summary' => 'O que segue é uma lista dos grupos de usuários definidos neste wiki, com os seus privilégios de acessos associados.
@@ -2394,7 +2389,7 @@ Futuras modificações em tal página e páginas de discussão relacionadas ser
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efetuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Acesse $1 para ver esta alteração.',
 'enotif_anon_editor' => 'usuário anônimo $1',
-'enotif_body' => 'Caro(a) $WATCHINGUSERNAME,
+'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}},
 
 $PAGEINTRO $NEWPAGE
 
@@ -2421,6 +2416,8 @@ $UNWATCHURL
 
 Para comentários e pedidos de ajuda:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'criada',
+'changed' => 'alterada',
 
 # Delete
 'deletepage' => 'Eliminar página',
@@ -3987,17 +3984,21 @@ As imagens serão exibidas em sua resolução máxima, outros tipos de arquivos
 'revdelete-uname-unhid' => 'nome de usuário não oculto',
 'revdelete-restricted' => 'restrições a administradores aplicadas',
 'revdelete-unrestricted' => 'restrições a administradores removidas',
-'logentry-move-move' => '$1 moveu página $3 para $4',
-'logentry-move-move-noredirect' => '$1 moveu página $3 para $4 sem deixar um redirecionamento',
+'logentry-move-move' => '$1 moveu página $3 para $4',
+'logentry-move-move-noredirect' => '$1 moveu página $3 para $4 sem deixar um redirecionamento',
 'logentry-move-move_redir' => '$1 moveu a página $3 para $4 através de um redirecionamento',
 'logentry-move-move_redir-noredirect' => '$1 moveu a página $3 para $4 sem um redirecionamento',
 'logentry-patrol-patrol' => '$1 marcou a revisão $4 da página $3 como patrulhada',
 'logentry-patrol-patrol-auto' => '$1 marcou automaticamente a revisão $4 da página $3 como patrulhada',
 'logentry-newusers-newusers' => 'A conta de usuário $1 foi criada',
 'logentry-newusers-create' => 'A conta de usuário $1 foi criada',
-'logentry-newusers-create2' => 'A conta de usuário $1 foi criada por $3',
+'logentry-newusers-create2' => 'A conta de usuário $3 foi criada por $1',
 'logentry-newusers-autocreate' => 'A conta $1 foi criada automaticamente',
 'newuserlog-byemail' => 'senha enviada por correio-eletrônico',
+'logentry-rights-rights' => '$1 alterou os grupos de usuário de $3 de $4 para $5',
+'logentry-rights-rights-legacy' => '$1 alterou os grupos de $3',
+'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 a $5',
+'rightsnone' => '(nenhum)',
 
 # Feedback
 'feedback-bugornote' => 'Se você está preparado para descrever detalhadamente um problema técnico, [$1 relate um bug].
index c1fb575..36ef6a2 100644 (file)
@@ -76,6 +76,7 @@
  * @author Meno25
  * @author Metalhead64
  * @author MichaelFrey
+ * @author Mido
  * @author Mihai
  * @author Minh Nguyen
  * @author Mormegil
@@ -294,7 +295,8 @@ This option means "underline links as in your user skin or your browser", there
 'feb' => 'Abbreviation of February, the second month of the Gregorian calendar',
 'mar' => 'Abbreviation of March, the third month of the Gregorian calendar',
 'apr' => 'Abbreviation of April, the fourth month of the Gregorian calendar',
-'may' => 'Abbreviation of May, the fifth month of the Gregorian calendar',
+'may' => 'Abbreviation of May, the fifth month of the Gregorian calendar.
+{{Identical|May}}',
 'jun' => 'Abbreviation of June, the sixth month of the Gregorian calendar',
 'jul' => 'Abbreviation of July, the seventh month of the Gregorian calendar',
 'aug' => 'Abbreviation of August, the eighth month of the Gregorian calendar',
@@ -331,7 +333,8 @@ See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for
 'index-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [//www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
 'noindex-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [//www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
 'broken-file-category' => 'Name of [[mw:Help:Tracking categories|tracking category]] where pages that embed files that do not exist ("broken images") are listed.',
-'categoryviewer-pagedlinks' => 'The pagination links in category viewer. Parameters:
+'categoryviewer-pagedlinks' => '{{Optional}}
+The pagination links in category viewer. Parameters:
 * $1 is the previous link,
 * $2 is the next link',
 
@@ -344,11 +347,13 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
 
 {{Identical|Content page}}",
 '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.
-
+'cancel' => '{{doc-actionlink}}
+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}}',
 'moredotdotdot' => '{{Identical|More...}}',
-'mypage' => "A text for the link to the user's user page in the links at the top of the page.",
+'morenotlisted' => 'An indication that more of a certain list is not shown.',
+'mypage' => "A text for the link to the user's user page in the links at the top of the page.
+{{Identical|Page}}",
 'mytalk' => 'In the personal URLs page section - right upper corner.
 
 Used as link title in your personal toolbox.
@@ -481,7 +486,7 @@ See also:
 
 {{Identical|Create}}',
 'editthispage' => 'This is the "edit" link as used in the skins Classic/Standard, Cologne Blue and Nostalgia. See {{msg|create-this-page}} for when the page does not exist.',
-'create-this-page' => 'In the skins Classic/Standard, Cologne Blue and Nostalgia this is the text for the link leading to the edit form on pages that have not yet been created. See {{msg|editthispage}} for when the page already exists.
+'create-this-page' => 'In the skins Classic/Standard, Cologne Blue and Nostalgia this is the text for the link leading to the edit form on pages that have not yet been created. See {{msg-mw|editthispage}} for when the page already exists.
 {{Identical|Createpage}}',
 'delete' => 'Name of the Delete tab shown for admins. Should be in the infinitive mood.
 
@@ -559,8 +564,7 @@ See also [[MediaWiki:Lastmodifiedatby/{{SUBPAGENAME}}]].',
 'viewcount' => 'Used as page-view counter.',
 'protectedpage' => "This message is displayed when trying to edit a page you can't edit because it has been protected.
 
-*{{msg-mw|protectedpage}}
-*{{msg-mw|protectedpagetext}}",
+This message is the title for the message {{msg-mw|protectedpagetext}}.",
 'jumpto' => '"Jump to" navigation links. Hidden by default in monobook skin. The format is: {{int:jumpto}} [[MediaWiki:Jumptonavigation/{{SUBPAGENAME}}|{{int:jumptonavigation}}]], [[MediaWiki:Jumptosearch/{{SUBPAGENAME}}|{{int:jumptosearch}}]].',
 'jumptonavigation' => 'Part of the "jump to" navigation links. Hidden by default in monobook skin. The format is: [[MediaWiki:Jumpto/{{SUBPAGENAME}}|{{int:jumpto}}]] {{int:jumptonavigation}}, [[MediaWiki:Jumptosearch/{{SUBPAGENAME}}|{{int:jumptosearch}}]].
 
@@ -599,7 +603,7 @@ See also:
 * {{msg-mw|Currentevents-url}}
 * {{msg-mw|Accesskey-n-currentevents}}
 * {{msg-mw|Tooltip-n-currentevents}}',
-'currentevents-url' => "Target page of ''{{Mediawiki:currentevents}}'' in the sidebar. See also {{msg|currentevents}}.
+'currentevents-url' => "Target page of ''CurrentEvents'' in the sidebar. See also {{msg-mw|currentevents}}.
 {{doc-important|Do not translate the \"<tt>Project:</tt>\" part.}}",
 'disclaimers' => 'Used as display name for the link to [[{{MediaWiki:Disclaimerpage}}]] shown at the bottom of every page on the wiki. Example [[{{MediaWiki:Disclaimerpage}}|{{MediaWiki:Disclaimers}}]].',
 'disclaimerpage' => 'Used as page for that contains the site disclaimer. Used at the bottom of every page on the wiki. Example: [[{{MediaWiki:Disclaimerpage}}|{{MediaWiki:Disclaimers}}]].
@@ -607,7 +611,7 @@ See also:
 'edithelp' => 'This is the text that appears on the editing help link that is near the bottom of the editing page',
 'edithelppage' => 'The help page displayed when a user clicks on editing help link which is present on the right of Show changes button.
 {{doc-important|Do not change the "<tt>Help:</tt>" part.}}',
-'helppage' => 'The link destination used by default in the sidebar, and in {{msg|noarticletext}}.
+'helppage' => 'The link destination used by default in the sidebar, and in {{msg-mw|noarticletext}}.
 {{doc-important|Do not change the "<tt>Help:</tt>" part.}}
 {{Identical|HelpContent}}',
 'mainpage' => 'Defines the link and display name of the main page of the wiki. Shown as the top link in the navigation part of the interface. Please do not change it too often, that could break things!
@@ -622,7 +626,8 @@ See also:
 See also:
 * {{msg-mw|Mainpage-description}}
 * {{msg-mw|Accesskey-n-mainpage-description}}
-* {{msg-mw|Tooltip-n-mainpage-description}}',
+* {{msg-mw|Tooltip-n-mainpage-description}}
+{{Identical|Main page}}',
 'policy-url' => 'Description: The URL of the project page describing the policies of the wiki. This is shown below every page (the left link).
 {{doc-important|Do not change the "<tt>Project:</tt>" part.}}',
 'portal' => "Display name for the 'Community portal', shown in the sidebar menu of all pages. The target page is meant to be a portal for users where useful links are to be found about the wiki's operation.
@@ -655,8 +660,8 @@ See also:
 'versionrequiredtext' => 'This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions. See also {{msg|versionrequired}}.',
 
 'ok' => '{{Identical|OK}}',
-'pagetitle' => "{{doc-important|You most probably do not need to translate this message.}}
-
+'pagetitle' => "{{Optional}}
+{{doc-important|You most probably do not need to translate this message.}}
 Do '''not''' replace SITENAME with a translation of Wikipedia or some encycopedic additions. The message has to be neutral for all projects.",
 'pagetitle-view-mainpage' => '{{optional}}',
 'backlinksubtitle' => '{{optional}}
@@ -708,8 +713,19 @@ The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUB
 'hidetoc' => 'This is the link used to hide the table of contents
 
 {{Identical|Hide}}',
-'collapsible-collapse' => 'This is the link used to collapse a collapsible element. (used as plaintext. No wikitext or html is parsed.)',
-'collapsible-expand' => 'This is the link used to expand a collapsible element (used as plaintext. No wikitext or html is parsed.)',
+'collapsible-collapse' => '{{Doc-actionlink}}
+This is the link used to collapse a collapsible element. (used as plaintext. No wikitext or html is parsed.)
+
+See also:
+* {{msg-mw|Collapsible-expand}}',
+'collapsible-expand' => '{{Doc-actionlink}}
+This is the link used to expand a collapsible element (used as plaintext. No wikitext or html is parsed.)
+
+See also:
+* {{msg-mw|Collapsible-collapse}}
+
+See the following example:
+{{Identical|Expand}}',
 'thisisdeleted' => 'Message shown on a deleted page when the user has the undelete right. $1 is a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text. See also {{msg-mw|viewdeleted}}.',
 'viewdeleted' => 'Message shown on a deleted page when the user does not have the undelete right (but has the deletedhistory right). $1 is a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text. See also {{msg-mw|thisisdeleted}}.',
 'restorelink' => "This text is always displayed in conjunction with the {{msg-mw|thisisdeleted}} message (View or restore $1?). The user will see
@@ -849,12 +865,12 @@ This error is shown when trying to open a special page which does not exist, e.g
 * $2: Content of
 *# {{msg-mw|Missingarticle-rev}} - Permalink with invalid revision#
 *# {{msg-mw|Missingarticle-diff}} - Diff with invalid revision#",
-'missingarticle-rev' => 'Parameter $2 of {{msg|Missing-article}}: It is shown after the articlename.
+'missingarticle-rev' => 'Parameter $2 of {{msg-mw|Missing-article}}: It is shown after the articlename.
 
 * $1: revision# of the requested id
 
 [http://translatewiki.net/w/i.php?title=Translating:Tasks&oldid=371789000 Click here] to see an example of such an error message.',
-'missingarticle-diff' => 'Parameter $2 of {{msg|Missing-article}}: It is shown after the articlename.
+'missingarticle-diff' => 'Parameter $2 of {{msg-mw|Missing-article}}: It is shown after the articlename.
 
 * $1: revision# of the old id
 * $2: revision# of the id build the diff with.
@@ -922,8 +938,7 @@ See also:
 'actionthrottledtext' => 'Used as error message. Read it in combination with {{msg-mw|actionthrottled}}.',
 'protectedpagetext' => "This message is displayed when trying to edit a page you can't edit because it has been protected.
 
-*{{msg-mw|protectedpage}}
-*{{msg-mw|protectedpagetext}}",
+The title for this message is {{msg-mw|protectedpage}}.",
 'viewsourcetext' => 'The text shown when displaying the source of a page that the user has no permission to edit',
 'viewyourtext' => 'Same as {{msg-mw|viewsourcetext}} but when showing the text submitted by the user, this happens e.g. when the user was blocked while he is editing the page',
 'protectedinterface' => 'Message shown if a user without the "editinterface" right tries to edit a page in the MediaWiki namespace.
@@ -952,7 +967,8 @@ See also {{msg-mw|protectedinterface}}.',
 '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' => 'Generic page title used on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.
+{{Identical|Not logged in}}',
 'exception-nologin-text' => 'Generic reason displayed on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
 
 # Virus scanner
@@ -982,14 +998,14 @@ See also {{msg-mw|protectedinterface}}.',
 'yourdomainname' => 'Used as label for listbox.',
 'password-change-forbidden' => 'Error message shown when an external authentication source does not allow the password to be changed.',
 'externaldberror' => 'This message is thrown when a valid attempt to change the wiki password for a user fails because of a database error or an error from an external system.',
-'login' => "Shown as the caption of the button at [[Special:UserLogin]], and also to anonymous users in the upper right corner of the page when they can't create an account (otherwise the message {{msg|nav-login-createaccount}} is shown there).
+'login' => "Shown as the caption of the button at [[Special:UserLogin]], and also to anonymous users in the upper right corner of the page when they can't create an account (otherwise the message {{msg-mw|nav-login-createaccount}} is shown there).
 
 See also:
 * {{msg-mw|Login}}
 * {{msg-mw|Accesskey-pt-anonlogin}}
 * {{msg-mw|Tooltip-pt-anonlogin}}
 {{Identical|Log in}}",
-'nav-login-createaccount' => "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg|login}} is shown.
+'nav-login-createaccount' => "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.
 {{identical|Log in / create account}}",
 'loginprompt' => 'A small notice in the log in form.',
 'userlogin' => 'Name of special page [[Special:UserLogin]] where a user can log in or click to create a user account.
@@ -1004,7 +1020,8 @@ See also:
 * {{msg-mw|Accesskey-pt-logout}}
 * {{msg-mw|Tooltip-pt-logout}}
 {{Identical|Log out}}',
-'userlogout' => '{{Identical|Log out}}',
+'userlogout' => '{{Doc-actionlink}}
+{{Identical|Log out}}',
 'notloggedin' => 'This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.
 
 {{Identical|Not logged in}}',
@@ -1040,8 +1057,8 @@ Defaults to '''nocookieslogin''' ({{int:nocookieslogin}})",
 'loginsuccess' => 'The content of the page saying that you are logged in. The title of the page is "[[MediaWiki:Loginsuccesstitle/{{SUBPAGENAME}}|{{int:loginsuccesstitle}}]]". $1 is the name of the logged in user.
 
 <nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
-'nosuchuser' => 'Displayed when trying to log in with an unexisting username. When you are not allowed to create an account, the message {{msg|nosuchusershort}} is displayed.',
-'nosuchusershort' => "Displayed when trying to log in with a non-existant username. This message is only shown when you can't create an account, otherwise the message {{msg|nosuchusershort}} is displayed.",
+'nosuchuser' => 'Displayed when trying to log in with an unexisting username. When you are not allowed to create an account, the message {{msg-mw|nosuchusershort}} is displayed.',
+'nosuchusershort' => "Displayed when trying to log in with a non-existant username. This message is only shown when you can't create an account, otherwise the message {{msg-mw|nosuchusershort}} is displayed.",
 'nouserspecified' => 'Used as error message when username to fetch is not specified.',
 'login-userblocked' => 'This message supports GENDER, username is available in $1.',
 'wrongpassword' => 'Used as error message when the provided password is wrong.',
@@ -1112,6 +1129,7 @@ See also:
 # E-mail sending
 'php-mail-error-unknown' => 'Used as error message when <code>mail()</code> returned empty error message.',
 'user-mail-no-addy' => 'This is the error message in case an e-mail could not be sent because there was no e-mail address to send it to.',
+'user-mail-no-body' => 'This is the error message in case an e-mail has an empty or unreasonably short body',
 
 # Change password dialog
 'resetpass' => 'The caption of [[Special:ChangePassword]]
@@ -1173,21 +1191,18 @@ Parameters:
 'passwordreset-emailsent' => 'Used in [[Special:PasswordReset]].
 
 See also:
-* {{msg-mw|Passwordreset-emailsent}}
 * {{msg-mw|Passwordreset-emailsent-capture}}
 * {{msg-mw|Passwordreset-emailerror-capture}}',
 'passwordreset-emailsent-capture' => 'Used in [[Special:PasswordReset]].
 
 See also:
 * {{msg-mw|Passwordreset-emailsent}}
-* {{msg-mw|Passwordreset-emailsent-capture}}
 * {{msg-mw|Passwordreset-emailerror-capture}}',
 'passwordreset-emailerror-capture' => 'Error message displayed in [[Special:PasswordReset]] when sending an e-mail fails. Parameters:
 * $1 - the name of a user who was supposed to get the e-mail
 See also:
 * {{msg-mw|Passwordreset-emailsent}}
-* {{msg-mw|Passwordreset-emailsent-capture}}
-* {{msg-mw|Passwordreset-emailerror-capture}}',
+* {{msg-mw|Passwordreset-emailsent-capture}}',
 
 # Special:ChangeEmail
 'changeemail' => 'Title of [[Special:ChangeEmail|special page]].',
@@ -1267,7 +1282,7 @@ See also:
 * {{msg-mw|Accesskey-watch}}
 * {{msg-mw|Tooltip-watch}}
 {{Identical|Watch this page}}',
-'savearticle' => 'Text on the Save page button. See also {{msg|showpreview}} and {{msg|showdiff}} for the other buttons.
+'savearticle' => 'Text on the Save page button. See also {{msg-mw|showpreview}} and {{msg-mw|showdiff}} for the other buttons.
 
 See also:
 * {{msg-mw|Savearticle}}
@@ -1276,7 +1291,7 @@ See also:
 'preview' => 'The title of the Preview page shown after clicking the "Show preview" button in the edit page. Since this is a heading, it should probably be translated as a noun and not as a verb.
 
 {{Identical|Preview}}',
-'showpreview' => 'The text of the button to preview the page you are editing. See also {{msg|showdiff}} and {{msg|savearticle}} for the other buttons.
+'showpreview' => 'The text of the button to preview the page you are editing. See also {{msg-mw|showdiff}} and {{msg-mw|savearticle}} for the other buttons.
 
 See also:
 * {{msg-mw|Showpreview}}
@@ -1291,11 +1306,12 @@ See also:
 * {{msg-mw|Tooltip-diff}}',
 'anoneditwarning' => 'Shown when editing a page anonymously.
 See also:
-* {{msg-mw|Anoneditwarning}}
+* {{msg-mw|Sf autoedit anoneditwarning}}
+* {{msg-mw|Wikibase-anonymouseditwarning-property}}
+* {{msg-mw|Wikibase-anonymouseditwarning-item}}
 * {{msg-mw|Anonpreviewwarning}}',
 'anonpreviewwarning' => 'See also:
-* {{msg-mw|Anoneditwarning}}
-* {{msg-mw|Anonpreviewwarning}}',
+* {{msg-mw|Anoneditwarning}}',
 'missingsummary' => 'The text "edit summary" is in {{msg-mw|summary}}.
 The text "Save" is in {{msg-mw|savearticle}}.',
 'missingcommenttext' => 'This message is shown, when the textbox by a new-section is empty.',
@@ -1340,8 +1356,9 @@ See also:
 'confirmedittext' => 'Used as error message.',
 'nosuchsectiontitle' => 'Used as error message when the user has attempted to edit a nonexistent section.',
 'nosuchsectiontext' => 'This message is displayed when a user tries to edit a section that does not exist.',
-'loginreqtitle' => 'Used as title of error message. See also:
-* {{msg-mw|loginreqtitle}}
+'loginreqtitle' => 'Used as title of error message.
+
+See also:
 * {{msg-mw|permissionserrors}}',
 'loginreqlink' => 'Take a look on inflection. Used as parameter in {{msg-mw|loginreqpagetext}}, {{msg-mw|whitelistedittext}}, {{msg-mw|watchlistanontext‎}} and {{msg-mw|Confirmemail needlogin}}.
 
@@ -1384,7 +1401,10 @@ Example: [http://translatewiki.net/w/i.php?title=Project:News&oldid=9999999 Perm
 'userinvalidcssjstitle' => '* $1 - skin name',
 'updated' => '{{Identical|Updated}}',
 'previewnote' => 'Note displayed when clicking on Show preview',
-'continue-editing' => 'A link to the beginning of the editing textarea on the same page. Displayed after {{msg-mw|previewnote}}.',
+'continue-editing' => '{{doc-actionlink}}
+A link to the beginning of the editing textarea on the same page.
+
+Displayed after {{msg-mw|previewnote}}.',
 'previewconflict' => 'Used in Preview page.',
 'session_fail_preview' => 'Error message in Preview page.
 
@@ -1411,20 +1431,18 @@ See also:
 'editingsection' => 'This message displays at the top of the page when a user is editing a page section. Parameters:
 * $1 - page name
 See also:
-* {{msg-mw|Editingsection}}
 * {{msg-mw|Editingcomment}}',
 'editingcomment' => 'This message displays at the top of the page when a user is creating a new section. Parameters:
 * $1 - page name
 See also:
-* {{msg-mw|Editingsection}}
-* {{msg-mw|Editingcomment}}',
+* {{msg-mw|Editingsection}}',
 'editconflict' => 'Used as title of error message. Parameters:
 * $1 - page title',
 'explainconflict' => 'Appears at the top of a page when there is an edit conflict.',
 'yourtext' => 'Used in Diff Preview page. The diff is between {{msg-mw|currentrev}} and {{msg-mw|yourtext}}.
 
 Also used in Edit Conflict page; the diff between {{msg-mw|yourtext}} and {{msg-mw|storedversion}}.',
-'storedversion' => 'This is used in an edit conflict as the label for the top revision that has been stored, as opposed to your version that has not been stored which is shown at the bottom of the page.',
+'storedversion' => 'This is used in an edit conflict as the label for the top revision that has been stored, as opposed to your version {{msg-mw|yourtext}} that has not been stored which is shown at the bottom of the page.',
 'nonunicodebrowser' => 'Used as warning when editing page.',
 'editingold' => 'Used as warning when editing page.',
 'yourdiff' => '',
@@ -1462,9 +1480,10 @@ See also:
 * {{msg-mw|Nocreatetext}}',
 'sectioneditnotsupported-title' => 'Page title of special page, which presumably appears when someone tries to edit a section, and section editing is disabled. Explanation of section editing on [http://meta.wikimedia.org/wiki/Help:Section_editing#Section_editing meta].',
 'sectioneditnotsupported-text' => 'I think this is the text of an error message, which presumably appears when someone tries to edit a section, and section editing is disabled. Explanation of section editing on [http://meta.wikimedia.org/wiki/Help:Section_editing#Section_editing meta].',
-'permissionserrors' => 'Used as title of error message. See also:
-* {{msg-mw|loginreqtitle}}
-* {{msg-mw|permissionserrors}}',
+'permissionserrors' => 'Used as title of error message.
+
+See also:
+* {{msg-mw|loginreqtitle}}',
 'permissionserrorstext' => "This message is \"without action\" version of {{msg-mw|Permissionserrorstext-withaction}}.
 * \$1 is the number of reasons that were found why ''the action'' cannot be performed.",
 'permissionserrorstext-withaction' => 'This message is "with action" version of {{msg-mw|Permissionserrorstext}}.
@@ -1479,7 +1498,6 @@ Please report at [[Support]] if you are unable to properly translate this messag
 'edit-hook-aborted' => 'Used as error message.
 
 See also:
-* {{msg-mw|edit-hook-aborted}}
 * {{msg-mw|edit-gone-missing}}
 * {{msg-mw|edit-conflict}}
 * {{msg-mw|edit-no-change}}
@@ -1488,7 +1506,6 @@ See also:
 
 See also:
 * {{msg-mw|edit-hook-aborted}}
-* {{msg-mw|edit-gone-missing}}
 * {{msg-mw|edit-conflict}}
 * {{msg-mw|edit-no-change}}
 * {{msg-mw|edit-already-exists}}',
@@ -1497,7 +1514,6 @@ See also:
 See also:
 * {{msg-mw|edit-hook-aborted}}
 * {{msg-mw|edit-gone-missing}}
-* {{msg-mw|edit-conflict}}
 * {{msg-mw|edit-no-change}}
 * {{msg-mw|edit-already-exists}}",
 'edit-no-change' => 'Used as error message.
@@ -1506,7 +1522,6 @@ See also:
 * {{msg-mw|edit-hook-aborted}}
 * {{msg-mw|edit-gone-missing}}
 * {{msg-mw|edit-conflict}}
-* {{msg-mw|edit-no-change}}
 * {{msg-mw|edit-already-exists}}',
 'edit-already-exists' => 'Used as error message.
 
@@ -1514,8 +1529,7 @@ See also:
 * {{msg-mw|edit-hook-aborted}}
 * {{msg-mw|edit-gone-missing}}
 * {{msg-mw|edit-conflict}}
-* {{msg-mw|edit-no-change}}
-* {{msg-mw|edit-already-exists}}',
+* {{msg-mw|edit-no-change}}',
 'defaultmessagetext' => 'Caption above the default message text shown on the left-hand side of a diff displayed after clicking “Show changes” when creating a new page in the MediaWiki: namespace',
 'content-failed-to-parse' => "Error message indicating that the page's content can not be saved because it is syntactically invalid. This may occurr for content types using serialization or a strict markup syntax.
 *$1 – content model ({{msg-mw|Content-model-wikitext}}, {{msg-mw|Content-model-javascript}}, {{msg-mw|Content-model-css}} or {{msg-mw|Content-model-text}})
@@ -1555,35 +1569,29 @@ This message is substituted in:
 See also [[:mw:Manual:$wgExpensiveParserFunctionLimit|$wgExpensiveParserFunctionLimit in the MediaWiki manual]].
 
 See also:
-* {{msg-mw|Expensive-parserfunction-warning}}
 * {{msg-mw|Expensive-parserfunction-category}}',
 'expensive-parserfunction-category' => 'This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if they contain too many calls to expensive parser functions.
 
 See also:
-* {{msg-mw|Expensive-parserfunction-warning}}
-* {{msg-mw|Expensive-parserfunction-category}}',
+* {{msg-mw|Expensive-parserfunction-warning}}',
 'post-expand-template-inclusion-warning' => 'When templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.
 
 
 See also:
-* {{msg-mw|Post-expand-template-inclusion-warning}}
 * {{msg-mw|Post-expand-template-inclusion-category}}',
 'post-expand-template-inclusion-category' => 'This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if the expanded size of the templates they contain exceeds the limit.
 When templates are expanded, there is a size limit for the number of bytes yielded. Usually that occurs from excessively nested templates, recursive templates, or ones having x-zillion of #if #case or similar contructs in them. When the wikicode parser detects this, it outputs a red warning message to the page.
 
 See also:
-* {{msg-mw|Post-expand-template-inclusion-warning}}
-* {{msg-mw|Post-expand-template-inclusion-category}}',
+* {{msg-mw|Post-expand-template-inclusion-warning}}',
 'post-expand-template-argument-warning' => 'Used as warning in parser limitation.
 
 See also:
-* {{msg-mw|Post-expand-template-argument-warning}}
 * {{msg-mw|Post-expand-template-argument-category}}',
 'post-expand-template-argument-category' => 'This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if they contain omitted template arguments.
 
 See also:
-* {{msg-mw|Post-expand-template-argument-warning}}
-* {{msg-mw|Post-expand-template-argument-category}}',
+* {{msg-mw|Post-expand-template-argument-warning}}',
 'parser-template-loop-warning' => '* $1 - page title',
 'parser-template-recursion-depth-warning' => '* $1 - limit value of recursion depth',
 'language-converter-depth-warning' => 'Error message shown when a page uses too deeply nested language conversion syntax
@@ -1640,7 +1648,8 @@ Also used as title of error message when the feed is empty. See [{{canonicalurl:
 
 See the error message:
 * {{msg-mw|history-feed-empty}}',
-'currentrev' => '{{Identical|Current revision}}',
+'currentrev' => 'Used in Diff Preview page. The diff is between {{msg-mw|currentrev}} and {{msg-mw|yourtext}}.
+{{Identical|Current revision}}',
 'currentrev-asof' => 'Used on a difference page when comparing the current versions of a page with each other. See {{msg-mw|Revisionasof}} for the message for non-current version.
 * $1 is a date and time
 * $2 is a date (optional)
@@ -1658,11 +1667,9 @@ See the error message:
 * (optional) $5: time of revision
 * (optional) $6: author of revision, for GENDER use',
 'previousrevision' => 'See also:
-* {{msg-mw|Previousrevision}}
 * {{msg-mw|Nextrevision}}',
 'nextrevision' => 'See also:
-* {{msg-mw|Previousrevision}}
-* {{msg-mw|Nextrevision}}',
+* {{msg-mw|Previousrevision}}',
 'currentrevisionlink' => '{{Identical|Current revision}}',
 'cur' => 'Link in page history',
 'next' => 'Link in page history
@@ -1707,63 +1714,31 @@ See [{{canonicalurl:x|feed=atom&action=history}} example].',
 'rev-deleted-comment' => 'Apparently this can also be about the reason of a log action, not only an edit summary. See also:
 *{{msg-mw|revdelete-hide-comment}}',
 'rev-deleted-user' => 'See also:
-* {{msg-mw|Rev-deleted-user}}
 * {{msg-mw|Rev-deleted-event}}',
 'rev-deleted-event' => 'See also:
-* {{msg-mw|Rev-deleted-user}}
-* {{msg-mw|Rev-deleted-event}}',
+* {{msg-mw|Rev-deleted-user}}',
 'rev-deleted-user-contribs' => 'Part of revision deletion.',
-'rev-deleted-text-permission' => 'See also:
-* {{msg-mw|Rev-deleted-text-permission}}
-* {{msg-mw|Rev-deleted-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-view}}',
-'rev-deleted-text-unhide' => '* $1 - a HTML link to the revision
-See also:
-* {{msg-mw|Rev-deleted-text-permission}}
-* {{msg-mw|Rev-deleted-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-view}}',
-'rev-suppressed-text-unhide' => '* $1 - a HTML link to the revision
-See also:
-* {{msg-mw|Rev-deleted-text-permission}}
-* {{msg-mw|Rev-deleted-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-view}}',
+'rev-deleted-text-permission' => '{{Related|Rev-deleted-text}}',
+'rev-deleted-text-unhide' => 'Parameters:
+* $1 - a HTML link to the revision
+{{Related|Rev-deleted-text}}',
+'rev-suppressed-text-unhide' => 'Parameters:
+* $1 - a HTML link to the revision
+{{Related|Rev-deleted-text}}',
 '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-text-view' => 'See also:
-* {{msg-mw|Rev-deleted-text-permission}}
-* {{msg-mw|Rev-deleted-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-unhide}}
-* {{msg-mw|Rev-suppressed-text-view}}',
+'rev-suppressed-text-view' => '{{Related|Rev-deleted-text}}',
 'rev-deleted-no-diff' => 'See also:
-* {{msg-mw|Rev-deleted-no-diff}}
 * {{msg-mw|Rev-suppressed-no-diff}}',
 'rev-suppressed-no-diff' => 'See also:
-* {{msg-mw|Rev-deleted-no-diff}}
-* {{msg-mw|Rev-suppressed-no-diff}}',
-'rev-deleted-unhide-diff' => '* $1 - a HTML link to the diff
-See also:
-* {{msg-mw|Rev-suppressed-unhide-diff}}
-* {{msg-mw|Rev-deleted-unhide-diff}}
-* {{msg-mw|Rev-suppressed-diff-view}}
-* {{msg-mw|Rev-deleted-diff-view}}',
-'rev-suppressed-unhide-diff' => '* $1 - a HTML link to the diff
-See also:
-* {{msg-mw|Rev-suppressed-unhide-diff}}
-* {{msg-mw|Rev-deleted-unhide-diff}}
-* {{msg-mw|Rev-suppressed-diff-view}}
-* {{msg-mw|Rev-deleted-diff-view}}',
-'rev-deleted-diff-view' => 'See also:
-* {{msg-mw|Rev-suppressed-unhide-diff}}
-* {{msg-mw|Rev-deleted-unhide-diff}}
-* {{msg-mw|Rev-suppressed-diff-view}}
-* {{msg-mw|Rev-deleted-diff-view}}',
-'rev-suppressed-diff-view' => 'See also:
-* {{msg-mw|Rev-suppressed-unhide-diff}}
-* {{msg-mw|Rev-deleted-unhide-diff}}
-* {{msg-mw|Rev-suppressed-diff-view}}
-* {{msg-mw|Rev-deleted-diff-view}}',
+* {{msg-mw|Rev-deleted-no-diff}}',
+'rev-deleted-unhide-diff' => 'Parameters:
+* $1 - a HTML link to the diff
+{{Related|Rev-deleted-diff}}',
+'rev-suppressed-unhide-diff' => 'Parameters:
+* $1 - a HTML link to the diff
+{{Related|Rev-deleted-diff}}',
+'rev-deleted-diff-view' => '{{Related|Rev-deleted-diff}}',
+'rev-suppressed-diff-view' => '{{Related|Rev-deleted-diff}}',
 'rev-delundel' => 'Link in page history for oversight (see also {{msg-mw|rev-showdeleted}})',
 'rev-showdeleted' => 'Link in page history for oversight (see also {{msg-mw|rev-delundel}})
 {{Identical|Show}}',
@@ -1772,17 +1747,13 @@ It is the page title of [[Special:RevisionDelete]].',
 'revdelete-nooldid-title' => '{{RevisionDelete}}',
 'revdelete-nooldid-text' => '{{RevisionDelete}}',
 'revdelete-nologtype-title' => 'See also:
-* {{msg-mw|Revdelete-nologtype-title}}
 * {{msg-mw|Revdelete-nologtype-text}}',
 'revdelete-nologtype-text' => 'See also:
-* {{msg-mw|Revdelete-nologtype-title}}
-* {{msg-mw|Revdelete-nologtype-text}}',
+* {{msg-mw|Revdelete-nologtype-title}}',
 'revdelete-nologid-title' => 'See also:
-* {{msg-mw|Revdelete-nologid-title}}
 * {{msg-mw|Revdelete-nologid-text}}',
 'revdelete-nologid-text' => 'See also:
-* {{msg-mw|Revdelete-nologid-title}}
-* {{msg-mw|Revdelete-nologid-text}}',
+* {{msg-mw|Revdelete-nologid-title}}',
 'revdelete-no-file' => 'Used as error message in [[Special:RevisionDelete]].',
 'revdelete-show-file-confirm' => 'A confirmation message shown on Special:Revisiondelete when the request does not contain a valid token (e.g. when a user clicks a link received in mail).
 
@@ -1804,13 +1775,11 @@ This is the introduction explaining the feature.',
 
 See also:
 * {{msg-mw|Revdelete-suppress}}
-* {{msg-mw|Revdelete-suppress-text}}
-* {{msg-mw|Revdelete-confirm}}',
+* {{msg-mw|Revdelete-suppress-text}}',
 'revdelete-suppress-text' => 'Used as usage text in [[Special:RevisionDelete]].
 
 See also:
 * {{msg-mw|Revdelete-suppress}}
-* {{msg-mw|Revdelete-suppress-text}}
 * {{msg-mw|Revdelete-confirm}}',
 'revdelete-legend' => '{{RevisionDelete}}
 Used as legend for the form.
@@ -1833,21 +1802,27 @@ See also:
 'revdelete-hide-restricted' => 'Option for oversight.',
 'revdelete-radio-same' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
-There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.',
+There are three radio buttons in each row, and the captions above each column read:
+* {{msg-mw|Revdelete-radio-same}}
+* {{msg-mw|Revdelete-radio-set}}
+* {{msg-mw|Revdelete-radio-unset}}',
 'revdelete-radio-set' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
-There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.
-
+There are three radio buttons in each row, and the captions above each column read:
+* {{msg-mw|Revdelete-radio-same}}
+* {{msg-mw|Revdelete-radio-set}}
+* {{msg-mw|Revdelete-radio-unset}}
 {{Identical|Yes}}',
 'revdelete-radio-unset' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
-There are three radio buttons in each row, and the captions above each column read {{msg-mw|Revdelete-radio-same}}, {{msg-mw|Revdelete-radio-set}}, and {{msg-mw|Revdelete-radio-unset}}.
-
+There are three radio buttons in each row, and the captions above each column read:
+* {{msg-mw|Revdelete-radio-same}}
+* {{msg-mw|Revdelete-radio-set}}
+* {{msg-mw|Revdelete-radio-unset}}
 {{Identical|No}}',
 'revdelete-suppress' => 'Option for oversight; used in [[Special:RevisionDelete]].
 
 See also:
-* {{msg-mw|Revdelete-suppress}}
 * {{msg-mw|Revdelete-suppress-text}}
 * {{msg-mw|Revdelete-confirm}}',
 'revdelete-unsuppress' => '{{RevisionDelete}}',
@@ -1965,7 +1940,6 @@ Title of the suppression log. Shown in the drop down menu at [[Special:log]] and
 'mergehistory-header' => 'Used as header for Merge form in [[Special:MergeHistory]].
 
 See also:
-* {{msg-mw|mergehistory-header}}
 * {{msg-mw|mergehistory-box}}
 * {{msg-mw|mergehistory-from}}
 * {{msg-mw|mergehistory-into}}
@@ -1974,7 +1948,6 @@ See also:
 
 See also:
 * {{msg-mw|mergehistory-header}}
-* {{msg-mw|mergehistory-box}}
 * {{msg-mw|mergehistory-from}}
 * {{msg-mw|mergehistory-into}}
 * {{msg-mw|mergehistory-go}}',
@@ -1983,7 +1956,6 @@ See also:
 See also:
 * {{msg-mw|mergehistory-header}}
 * {{msg-mw|mergehistory-box}}
-* {{msg-mw|mergehistory-from}}
 * {{msg-mw|mergehistory-into}}
 * {{msg-mw|mergehistory-go}}',
 'mergehistory-into' => 'Used as label for the Merge form in [[Special:MergeHistory]].
@@ -1992,7 +1964,6 @@ See also:
 * {{msg-mw|mergehistory-header}}
 * {{msg-mw|mergehistory-box}}
 * {{msg-mw|mergehistory-from}}
-* {{msg-mw|mergehistory-into}}
 * {{msg-mw|mergehistory-go}}',
 'mergehistory-list' => 'Used as section header in [[Special:MergeHistory]].',
 'mergehistory-merge' => 'Used in [[Special:MergeHistory]].
@@ -2004,8 +1975,7 @@ See also:
 * {{msg-mw|mergehistory-header}}
 * {{msg-mw|mergehistory-box}}
 * {{msg-mw|mergehistory-from}}
-* {{msg-mw|mergehistory-into}}
-* {{msg-mw|mergehistory-go}}',
+* {{msg-mw|mergehistory-into}}',
 'mergehistory-submit' => 'Used as label for Submit button in [[Special:MergeHistory]].',
 'mergehistory-empty' => 'Used in [[Special:MergeHistory]].',
 'mergehistory-success' => 'Used in [[Special:MergeHistory]].
@@ -2017,7 +1987,6 @@ See also:
 * $1 - source page title
 See also:
 * {{msg-mw|mergehistory-invalid-source}}
-* {{msg-mw|mergehistory-no-source}}
 * {{msg-mw|mergehistory-invalid-destination}}
 * {{msg-mw|mergehistory-no-destination}}
 * {{msg-mw|mergehistory-same-destination}}',
@@ -2027,12 +1996,10 @@ See also:
 * {{msg-mw|mergehistory-invalid-source}}
 * {{msg-mw|mergehistory-no-source}}
 * {{msg-mw|mergehistory-invalid-destination}}
-* {{msg-mw|mergehistory-no-destination}}
 * {{msg-mw|mergehistory-same-destination}}',
 'mergehistory-invalid-source' => 'Used as error message in [[Special:MergeHistory]].
 
 See also:
-* {{msg-mw|mergehistory-invalid-source}}
 * {{msg-mw|mergehistory-no-source}}
 * {{msg-mw|mergehistory-invalid-destination}}
 * {{msg-mw|mergehistory-no-destination}}
@@ -2042,7 +2009,6 @@ See also:
 See also:
 * {{msg-mw|mergehistory-invalid-source}}
 * {{msg-mw|mergehistory-no-source}}
-* {{msg-mw|mergehistory-invalid-destination}}
 * {{msg-mw|mergehistory-no-destination}}
 * {{msg-mw|mergehistory-same-destination}}',
 'mergehistory-autocomment' => 'This message is used as an edit summary when a redirect is automatically created after an entire page history is merged into another page history, and the user who did the merge wrote no comment.
@@ -2060,10 +2026,10 @@ See also:
 * {{msg-mw|mergehistory-invalid-source}}
 * {{msg-mw|mergehistory-no-source}}
 * {{msg-mw|mergehistory-invalid-destination}}
-* {{msg-mw|mergehistory-no-destination}}
-* {{msg-mw|mergehistory-same-destination}}',
+* {{msg-mw|mergehistory-no-destination}}',
 'mergehistory-reason' => '{{Identical|Reason}}',
-'mergehistory-revisionrow' => 'A revision row in the merge history page. Parameters:
+'mergehistory-revisionrow' => '{{Optional}}
+A revision row in the merge history page. Parameters:
 * $1 is a radio button to indicate a merge point,
 * $2 is a link to the last revision of a page ({{msg-mw|last}}),
 * $3 is a page link,
@@ -2167,9 +2133,9 @@ Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|
 'searchmenu-legend' => '{{Identical|Search options}}',
 'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).',
 'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).',
-'searchhelp-url' => '{{Identical|HelpContent}}
-Description: The URL of the search help page.
-{{doc-important|Do not change the "<tt>Help:</tt>" part.}}',
+'searchhelp-url' => 'Description: The URL of the search help page.
+{{doc-important|Do not change the "<tt>Help:</tt>" part.}}
+{{Identical|HelpContent}}',
 'searchmenu-prefix' => '{{doc-important|Do not translate "Special:PrefixIndex"}}
 Parameters:
 * $1 - prefix string',
@@ -2245,26 +2211,23 @@ $1 is the relevance of this result in per cent.
 'search-interwiki-caption' => 'Used in [[Special:Search]], when showing search results from other wikis.',
 'search-interwiki-default' => '* $1 is the hostname of the remote wiki from where the additional results listed below are returned',
 'search-interwiki-more' => '{{Identical|More}}',
-'search-relatedarticle' => '{{Identical|Related}}
-
-This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]',
+'search-relatedarticle' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
+{{Identical|Related}}',
 'mwsuggest-disable' => "The text of an option on the 'search options' tab of a user's Preferences.",
 'searcheverything-enable' => 'Used in [[Special:Preferences]], tab “Search”.',
-'searchrelated' => '{{Identical|Related}}
-
-This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]',
+'searchrelated' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
+{{Identical|Related}}',
 'searchall' => '{{Identical|All}}',
-'showingresults' => 'This message is used on some special pages such as [[Special:WantedCategories]].
+'showingresults' => 'This message is used on some special pages such as [[Special:WantedCategories]]. Parameters:
 *$1 is the total number of results in the batch shown.
 *$2 is the number of the first item listed.
 See also:
-* {{msg-mw|Showingresults}}
 * {{msg-mw|Showingresultsnum}}',
-'showingresultsnum' => '* $2 - the first number in the batch of results
+'showingresultsnum' => 'Parameters:
+* $2 - the first number in the batch of results
 * $3 - the number of results on the page
 See also:
-* {{msg-mw|Showingresults}}
-* {{msg-mw|Showingresultsnum}}',
+* {{msg-mw|Showingresults}}',
 'showingresultsheader' => 'Used in search results of [[Special:Search]].',
 'nonefound' => 'This message appears on the search results page if no results are found.
 {{doc-important|Do not translate "all:".}}',
@@ -2284,7 +2247,10 @@ See also:
 'powersearch-togglenone' => '"None" refers to namespaces. It is used in Advanced search: http://translatewiki.net/w/i.php?title=Special:Search&advanced=1
 {{Identical|None}}',
 'search-external' => 'Legend of the fieldset for the input form when the internal search is disabled. Inside the fieldset [[MediaWiki:Searchdisabled]] and [[MediaWiki:Googlesearch]] is shown.',
-'searchdisabled' => 'Shown on [[Special:Search]] when the internal search is disabled.',
+'searchdisabled' => '{{doc-singularthey}}
+In this sentence, "their indexes" refers to "Google\'s indexes".
+
+Shown on [[Special:Search]] when the internal search is disabled.',
 
 # Quickbar
 'qbsettings' => 'The title of the section in [[Special:Preferences]], only shown when using the skins "Standard/Classic" or "Cologne Blue". The quicbar is the same as the sidebar.',
@@ -2305,7 +2271,7 @@ See also:
 * {{msg-mw|Mypreferences}}
 * {{msg-mw|Accesskey-pt-preferences}}
 * {{msg-mw|Tooltip-pt-preferences}}
-{{Identical|My preferences}}',
+{{Identical|Preferences}}',
 'prefs-edits' => 'In user preferences.',
 'prefsnologin' => '{{Identical|Not logged in}}',
 'prefsnologintext' => '* $1 - URI for "returnto" argument',
@@ -2313,8 +2279,8 @@ See also:
 {{Identical|Change password}}",
 'prefs-skin' => 'Used in user preferences.
 {{Identical|Skin}}',
-'skin-preview' => 'The link beside each skin name in [[Special:Preferences|your user preferences]], tab "skin".
-
+'skin-preview' => '{{doc-actionlink}}
+The link beside each skin name in [[Special:Preferences|your user preferences]], tab "skin".
 {{Identical|Preview}}',
 'datedefault' => 'Used as checkbox label in [[Special:Preferences#mw-prefsection-datetime|user preferences]], {{msg-mw|prefs-datetime}} tab.
 
@@ -2327,7 +2293,8 @@ This message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).
 'prefs-rc' => 'Used in user preferences.
 
 {{Identical|Recent changes}}',
-'prefs-watchlist' => 'Used in user preferences.',
+'prefs-watchlist' => 'Used in user preferences.
+{{Identical|My watchlist}}',
 'prefs-watchlist-days' => 'Used in [[Special:Preferences]], tab "Watchlist".',
 'prefs-watchlist-days-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
 'prefs-watchlist-edits' => 'Used in [[Special:Preferences]], tab "Watchlist".',
@@ -2388,118 +2355,28 @@ This option lets your time zone setting use the one that is used on the wiki (of
 'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
 'servertime' => 'Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].',
 'guesstimezone' => 'Option to fill in the timezone from the browser setting',
-'timezoneregion-africa' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-america' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-antarctica' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-arctic' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-asia' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-atlantic' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-australia' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-europe' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-indian' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
-'timezoneregion-pacific' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab. See also:
-* {{msg-mw|Timezoneregion-africa}}
-* {{msg-mw|Timezoneregion-america}}
-* {{msg-mw|Timezoneregion-antarctica}}
-* {{msg-mw|Timezoneregion-arctic}}
-* {{msg-mw|Timezoneregion-asia}}
-* {{msg-mw|Timezoneregion-atlantic}}
-* {{msg-mw|Timezoneregion-australia}}
-* {{msg-mw|Timezoneregion-europe}}
-* {{msg-mw|Timezoneregion-indian}}
-* {{msg-mw|Timezoneregion-pacific}}',
+'timezoneregion-africa' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-america' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-antarctica' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-arctic' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-asia' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-atlantic' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-australia' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-europe' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-indian' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
+'timezoneregion-pacific' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
+{{Related|Timezoneregion}}',
 'allowemail' => 'Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
-'prefs-searchoptions' => '{{Identical|Search options}}',
+'prefs-searchoptions' => '{{Identical|Search}}',
 'prefs-namespaces' => "{{Identical|Namespaces}}
 Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]",
 'defaultns' => 'Used in [[Special:Preferences]], tab "Search".',
@@ -2545,10 +2422,10 @@ Used in [[Special:Preferences]]. Parameters are:
 'badsiglength' => 'Warning message that is displayed on [[Special:Preferences]] when trying to save a signature that is too long. Parameter $1 is the maximum number of characters that is allowed in a signature (multi-byte characters are counted as one character).',
 'yourgender' => 'Used in [[Special:Preferences]], first tab.
 {{Identical|Gender}}',
-'gender-unknown' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name is not to be made public, cannot be determined, or matches none of the other choices preset in the select.',
-'gender-male' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "male" for those languages having a "normal" male grammatical gender.
+'gender-unknown' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt. Choosing it indicates that the grammatical gender of the user name is not to be made public, cannot be determined, or matches none of the other choices preset in the select.',
+'gender-male' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "male" for those languages having a "normal" male grammatical gender.
 {{Identical|Male}}',
-'gender-female' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|gender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "female" for those languages having a "normal" female grammatical gender.
+'gender-female' => 'Used in [[Special:Preferences]], first tab, as one of the selectable options of the {{msg-mw|Yourgender}} prompt. Choosing it indicates that the grammatical gender of the user name should be "female" for those languages having a "normal" female grammatical gender.
 {{Identical|Female}}',
 'prefs-help-gender' => 'Used as additional description for {{msg-mw|yourgender}} field in [[Special:Preferences]], section {{msg-mw|prefs-info}}.',
 'email' => '{{Identical|E-mail}}',
@@ -2620,8 +2497,9 @@ Used in [[Special:Preferences]], tab "Watchlist". The display options refer to:
 'editinguser' => 'Appears on [[Special:UserRights]]. Parameters:
 * $1 is a username
 * $2 are user tool links. Example: "(Talk | contribs | block | send e-mail)".',
-'userrights-editusergroup' => '{{Identical|Edit user groups}}. Parameter:
-* $1 is a username - optional, can be used for GENDER',
+'userrights-editusergroup' => 'Parameter:
+* $1 is a username - optional, can be used for GENDER
+{{Identical|Edit user groups}}',
 'saveusergroups' => 'Button text when editing user groups',
 'userrights-groupsmember' => 'Used when editing user groups in [[Special:Userrights]]. The message is followed by a list of group names.
 
@@ -2699,15 +2577,16 @@ Basic right to read any page.',
 'right-edit' => '{{doc-right|edit}}
 Basic right to edit pages that are not protected.',
 'right-createpage' => '{{doc-right|createpage}}
-Basic right to create pages. The right to edit discussion/talk pages is {{msg|right-createtalk|pl=yes}}.',
+Basic right to create pages. The right to edit discussion/talk pages is {{msg-mw|right-createtalk|pl=yes}}.',
 'right-createtalk' => '{{doc-right|createtalk}}
-Basic right to create discussion/talk pages. The right to edit other pages is {{msg|right-createpage|pl=yes}}.',
+Basic right to create discussion/talk pages. The right to edit other pages is {{msg-mw|right-createpage|pl=yes}}.',
 'right-createaccount' => '{{doc-right|createaccount}}
 The right to [[Special:CreateAccount|create a user account]].',
 'right-minoredit' => '{{doc-right|minoredit}}
-The right to use the "This is a minor edit" checkbox. See {{msg|minoredit|pl=yes}} for the message used for that checkbox.',
+The right to use the "This is a minor edit" checkbox. See {{msg-mw|minoredit|pl=yes}} for the message used for that checkbox.',
 'right-move' => '{{doc-right|move}}
-The right to move any page that is not protected from moving.',
+The right to move any page that is not protected from moving.
+{{Identical|Move page}}',
 'right-move-subpages' => '{{doc-right|move-subpages}}',
 'right-move-rootuserpages' => '{{doc-right|move-rootuserpages}}',
 'right-movefile' => '{{doc-right|movefile}}',
@@ -2715,11 +2594,24 @@ The right to move any page that is not protected from moving.',
 'right-upload' => '{{doc-right|upload}}
 The right to [[Special:Upload|upload]] a file (this includes images, media, audio, ...).',
 'right-reupload' => '{{doc-right|reupload}}
-The right to upload a file under a file name that already exists. Related messages: {{msg|right-upload|pl=yes}}, {{msg|right-reupload-own|pl=yes}} and {{msg|right-reupload-shared|pl=yes}}.',
+The right to upload a file under a file name that already exists.
+
+Related messages:
+* {{msg-mw|right-upload}}
+* {{msg-mw|right-reupload-own}}
+* {{msg-mw|right-reupload-shared}}',
 'right-reupload-own' => '{{doc-right|reupload-own}}
-Right to upload a file under a file name that already exists, and that the same user has uploaded. Related messages: {{msg|right-upload|pl=yes}} and {{msg|right-reupload|pl=yes}}.',
+Right to upload a file under a file name that already exists, and that the same user has uploaded.
+
+Related messages:
+* {{msg-mw|right-upload}}
+* {{msg-mw|right-reupload}}',
 'right-reupload-shared' => '{{doc-right|reupload-shared}}
-The right to upload a file locally under a file name that already exists in a shared database (for example Commons). Related messages: {{msg|right-upload|pl=yes}} and {{msg|right-reupload|pl=yes}}.',
+The right to upload a file locally under a file name that already exists in a shared database (for example Commons).
+
+Related messages:
+* {{msg-mw|right-upload}}
+* {{msg-mw|right-reupload}}',
 'right-upload_by_url' => '{{doc-right|upload by url}}',
 'right-purge' => '{{doc-right|purge}}
 The right to use <tt>&action=purge</tt> in the URL, without needing to confirm it (by default, anonymous users need to confirm it).',
@@ -2728,66 +2620,67 @@ If your account is older than [[mw:Manual:\$wgAutoConfirmAge|wgAutoConfirmAge]]
 If you are in that group, you have (by default) the '''right \"autoconfirmed\"'''. With this right, you can for example <!-- I think this right includes more things --> edit semi-protected pages.",
 'right-bot' => '{{doc-right|bot}}',
 'right-nominornewtalk' => '{{doc-right|nominornewtalk}}
-If someone with this right (bots by default) edits a user talk page and marks it as minor (requires {{msg|right-minoredit|pl=yes}}), the user will not get a notification "You have new messages".',
+If someone with this right (bots by default) edits a user talk page and marks it as minor (requires {{msg-mw|right-minoredit}}), the user will not get a notification "You have new messages".',
 'right-apihighlimits' => '{{doc-right|apihighlimits}}',
 'right-writeapi' => '{{doc-right|writeapi}}',
 'right-delete' => '{{doc-right|delete}}',
 'right-bigdelete' => '{{doc-right|bigdelete}}',
 'right-deletelogentry' => '{{doc-right|deletelogentry}}
 This user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-It can be given to the group {{msg|group-sysop|pl=yes}}, although this right is disabled by default.
+It can be given to the group {{msg-mw|group-sysop}}, although this right is disabled by default.
 
-See also
-* {{msg|right-suppressionlog|pl=yes}}
-* {{msg|right-hideuser|pl=yes}}
-* {{msg|right-suppressrevision|pl=yes}}
-* {{msg|right-deleterevision|pl=yes}}',
+See also:
+* {{msg-mw|right-suppressionlog}}
+* {{msg-mw|right-hideuser}}
+* {{msg-mw|right-suppressrevision}}
+* {{msg-mw|right-deleterevision}}',
 'right-deleterevision' => '{{doc-right|deleterevision}}
 This user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-It can be given to the group {{msg|group-sysop|pl=yes}}, although this right is disabled by default.
+It can be given to the group {{msg-mw|group-sysop}}, although this right is disabled by default.
 
 See also
-* {{msg|right-suppressionlog|pl=yes}}
-* {{msg|right-hideuser|pl=yes}}
-* {{msg|right-suppressrevision|pl=yes}}
-* {{msg|right-deletelogentry|pl=yes}}',
+* {{msg-mw|right-suppressionlog}}
+* {{msg-mw|right-hideuser}}
+* {{msg-mw|right-suppressrevision}}
+* {{msg-mw|right-deletelogentry}}',
 'right-deletedhistory' => '{{doc-right|deletedhistory}}',
 'right-deletedtext' => '{{doc-right|deletedtext}}',
 'right-browsearchive' => '{{doc-right|browsearchive}}',
 'right-undelete' => '{{doc-right|undelete}}',
 'right-suppressrevision' => '{{doc-right|suppressrevision}}
 This user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-It can be given to the group {{msg|group-suppress|pl=yes}}, although that group is disabled by default.
+It can be given to the group {{msg-mw|group-suppress|pl=yes}}, although that group is disabled by default.
 
-See also
-* {{msg|right-suppressionlog|pl=yes}}
-* {{msg|right-hideuser|pl=yes}}
-* {{msg|right-deletelogentry|pl=yes}}
-* {{msg|right-deleterevision|pl=yes}}',
+See also:
+* {{msg-mw|right-suppressionlog|pl=yes}}
+* {{msg-mw|right-hideuser|pl=yes}}
+* {{msg-mw|right-deletelogentry|pl=yes}}
+* {{msg-mw|right-deleterevision|pl=yes}}',
 'right-suppressionlog' => '{{doc-right|suppressionlog}}
 This user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-It can be given to the group {{msg|group-suppress|pl=yes}}, although that group is disabled by default.
+It can be given to the group {{msg-mw|group-suppress}}, although that group is disabled by default.
 
 See also
-* {{msg|right-suppressrevision|pl=yes}}
-* {{msg|right-hideuser|pl=yes}}
-* {{msg|right-deletelogentry|pl=yes}}
-* {{msg|right-deleterevision|pl=yes}}',
+* {{msg-mw|right-suppressrevision}}
+* {{msg-mw|right-hideuser}}
+* {{msg-mw|right-deletelogentry}}
+* {{msg-mw|right-deleterevision}}',
 'right-block' => '{{doc-right|block}}',
 'right-blockemail' => '{{doc-right|blockemail}}',
 'right-hideuser' => '{{doc-right|hideuser}}
 This user right is part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-It can be given to the group {{msg|group-suppress|pl=yes}}, although that group is disabled by default.
+It can be given to the group {{msg-mw|group-suppress}}, although that group is disabled by default.
 
 See also
-* {{msg|right-suppressionlog|pl=yes}}
-* {{msg|right-suppressrevision|pl=yes}}
-* {{msg|right-deletelogentry|pl=yes}}
-* {{msg|right-deleterevision|pl=yes}}',
+* {{msg-mw|right-suppressionlog}}
+* {{msg-mw|right-suppressrevision}}
+* {{msg-mw|right-deletelogentry}}
+* {{msg-mw|right-deleterevision}}',
 'right-ipblock-exempt' => '{{doc-right|ipblock-exempt}}
 This user automatically bypasses IP blocks, auto-blocks and range blocks - so I presume - but I am uncertain',
 'right-proxyunbannable' => '{{doc-right|proxyunbannable}}',
-'right-unblockself' => '{{doc-right|unblockself}}',
+'right-unblockself' => '{{doc-right|unblockself}}
+{{doc-singularthey}}',
 'right-protect' => '{{doc-right|protect}}',
 'right-editprotected' => '{{doc-right|editprotected}}',
 'right-editinterface' => '{{doc-right|editinterface}}',
@@ -2814,45 +2707,16 @@ The rate limits have no effect on the groups that have this right. Rate limits i
 'right-sendemail' => '{{doc-right|sendemail}}',
 'right-passwordreset' => '{{doc-right|passwordreset}}',
 
+# Special:Log/newusers
+'newuserlogpage' => '{{doc-logpage}}
+
+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]].',
+
 # User rights log
 'rightslog' => '{{doc-logpage}}
 In [[Special:Log]]',
 'rightslogtext' => 'Text in [[Special:Log/rights]].',
-'rightslogentry' => 'This message is displayed in the [[Special:Log/rights|User Rights Log]] when a bureaucrat changes the user groups for a user.
-
-* Parameter $1 is the username
-* Parameters $2 and $3 are lists of user groups or {{msg-mw|Rightsnone}}
-
-The name of the bureaucrat who did this task appears before this message.
-
-Similar to {{msg-mw|Gur-rightslog-entry}}',
-'rightslogentry-autopromote' => 'This message is displayed in the [[Special:Log/rights|User Rights Log]] when a user is automatically promoted to a user group.
-
-Parameters:
-* $2 is a comma separated list of old user groups or {{msg-mw|Rightsnone}}
-* $3 is a comma separated list of new user groups',
-'logentry-rights-rights' => '*$1 - username
-*$2 - (see below)
-*$3 - username
-*$4 - list of user groups or {{msg-mw|Rightsnone}}
-*$5 - list of user groups or {{msg-mw|Rightsnone}}
-----
-{{Logentry}}',
-'logentry-rights-rights-legacy' => '*$1 - username
-*$2 - (see below)
-*$3 - username
-----
-{{Logentry}}',
-'logentry-rights-autopromote' => '*$1 - username
-*$2 - (see below)
-*$3 - (see below)
-*$4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}
-*$5 - comma separated list of new user groups
-----
-{{Logentry}}',
-'rightsnone' => 'Default rights for registered users.
-
-{{Identical|None}}',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '{{Doc-action|read}}',
@@ -2947,10 +2811,18 @@ Similar to {{msg-mw|wlnote}} which is used on [[Special:Watchlist]].
 List elements are separated by {{msg-mw|pipe-separator}} each. Each list element is, or contains, a link.",
 'diff' => 'Short form of "differences". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
 'hist' => 'Short form of "history". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...',
-'hide' => 'Option text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]]
+'hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].
 
+See also:
+* {{msg-mw|Show}}
 {{Identical|Hide}}',
-'show' => '{{Identical|Show}}',
+'show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].
+
+See also:
+* {{msg-mw|Hide}}
+{{Identical|Show}}',
 'minoreditletter' => "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
 'newpageletter' => "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
 'boteditletter' => 'Abbreviation of "bot". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].',
@@ -2970,11 +2842,9 @@ Does not work under $wgMiserMode ([[mwr:48986|r48986]]).',
 'rc-change-size-new' => 'Tooltip when hovering a change list diff size. The tooltip shows the resulting new size in bytes.',
 'newsectionsummary' => 'Default summary when adding a new section to a page.',
 'rc-enhanced-expand' => 'See also:
-* {{msg-mw|Rc-enhanced-expand}}
 * {{msg-mw|Rc-enhanced-hide}}',
 'rc-enhanced-hide' => 'See also:
-* {{msg-mw|Rc-enhanced-expand}}
-* {{msg-mw|Rc-enhanced-hide}}',
+* {{msg-mw|Rc-enhanced-expand}}',
 'rc-old-title' => 'Text that shows the original title of a page, $1 is the original title text',
 
 # Recent changes linked
@@ -3343,16 +3213,15 @@ See also:
 'filewasdeleted' => 'This warning is shown when trying to upload a file that does not exist, but has previously been deleted.
 Parameters:
 * $1 is a link to the deletion log, with the text from {{msg|deletionlog}}.',
-'filename-bad-prefix' => "Used as warning in [[Special:Upload]]. Parameters:
+'filename-bad-prefix' => 'Used as warning in [[Special:Upload]]. Parameters:
 * $1 - prefix
 See also:
 * {{msg-mw|fileexists}}
 * {{msg-mw|filepageexists}}
 * {{msg-mw|fileexists-extension}}
-* {{msg-mw|fileexists-thumbnail-yes',}}
+* {{msg-mw|fileexists-thumbnail-yes}}
 * {{msg-mw|file-thumbnail-no}}
-* {{msg-mw|filename-bad-prefix}}
-* {{msg-mw|filewasdeleted}}",
+* {{msg-mw|filewasdeleted}}',
 'filename-prefix-blacklist' => "{{optional}}
 Do not translate the file name prefixes before the hash mark (#). Leave all the wiki markup, including the spaces, as is. You can translate the text, including 'Leave this line exactly as it is'. The first line of this messages has one (1) leading space.",
 'upload-success-subj' => 'Used as message subject which is posted on the user talk page.
@@ -3461,33 +3330,14 @@ See also:
 * $1 is a file path
 * $2 is a file path.',
 'backend-fail-opentemp' => 'Used as error message.
-
-See also:
-* {{msg-mw|Backend-fail-opentemp}}
-* {{msg-mw|Backend-fail-writetemp}}
-* {{msg-mw|Backend-fail-closetemp}}
-* {{msg-mw|Backend-fail-read}}',
+{{Related|Backend-fail}}',
 'backend-fail-writetemp' => 'Used as error message.
-
-See also:
-* {{msg-mw|Backend-fail-opentemp}}
-* {{msg-mw|Backend-fail-writetemp}}
-* {{msg-mw|Backend-fail-closetemp}}
-* {{msg-mw|Backend-fail-read}}',
+{{Related|Backend-fail}}',
 'backend-fail-closetemp' => 'Used as error message.
-
-See also:
-* {{msg-mw|Backend-fail-opentemp}}
-* {{msg-mw|Backend-fail-writetemp}}
-* {{msg-mw|Backend-fail-closetemp}}
-* {{msg-mw|Backend-fail-read}}',
+{{Related|Backend-fail}}',
 'backend-fail-read' => 'Used as error message. Parameters:
 * $1 - filename
-See also:
-* {{msg-mw|Backend-fail-opentemp}}
-* {{msg-mw|Backend-fail-writetemp}}
-* {{msg-mw|Backend-fail-closetemp}}
-* {{msg-mw|Backend-fail-read}}',
+{{Related|Backend-fail}}',
 'backend-fail-create' => 'Parameters:
 * $1 is a filename.',
 'backend-fail-maxsize' => '* $1 - destination storage path
@@ -3543,7 +3393,6 @@ A "[http://en.wikipedia.org/wiki/File_locking#Lock_files lock file]" signals by
 'zip-file-open-error' => 'Used as ZIP error message.
 
 See also:
-* {{msg-mw|Zip-file-open-error}}
 * {{msg-mw|Zip-wrong-format}}
 * {{msg-mw|Zip-bad}}
 * {{msg-mw|Zip-unsupported}}',
@@ -3551,7 +3400,6 @@ See also:
 
 See also:
 * {{msg-mw|Zip-file-open-error}}
-* {{msg-mw|Zip-wrong-format}}
 * {{msg-mw|Zip-bad}}
 * {{msg-mw|Zip-unsupported}}',
 'zip-bad' => 'Used as ZIP error message.
@@ -3559,7 +3407,6 @@ See also:
 See also:
 * {{msg-mw|Zip-file-open-error}}
 * {{msg-mw|Zip-wrong-format}}
-* {{msg-mw|Zip-bad}}
 * {{msg-mw|Zip-unsupported}}',
 'zip-unsupported' => "Used as ZIP error message.
 
@@ -3568,8 +3415,7 @@ Perhaps translations of 'software' can be used instead of 'features' and 'unders
 See also:
 * {{msg-mw|Zip-file-open-error}}
 * {{msg-mw|Zip-wrong-format}}
-* {{msg-mw|Zip-bad}}
-* {{msg-mw|Zip-unsupported}}",
+* {{msg-mw|Zip-bad}}",
 
 # Special:UploadStash
 'uploadstash' => 'Used as page title in [[Special:UploadStash]].',
@@ -3611,7 +3457,6 @@ If \'scheme\' is difficult to translate, then you could use \'prefix\' instead.'
 'http-request-error' => 'Used as error message when executing HTTP request.
 
 See also:
-* {{msg-mw|Http-request-error}}
 * {{msg-mw|Http-read-error}}
 * {{msg-mw|Http-host-unreachable|6}}
 * {{msg-mw|Http-timed-out|28}}',
@@ -3619,7 +3464,6 @@ See also:
 
 See also:
 * {{msg-mw|Http-request-error}}
-* {{msg-mw|Http-read-error}}
 * {{msg-mw|Http-host-unreachable|6}}
 * {{msg-mw|Http-timed-out|28}}',
 'http-timed-out' => 'Used as error message when executing HTTP request.
@@ -3627,8 +3471,7 @@ See also:
 See also:
 * {{msg-mw|Http-request-error}}
 * {{msg-mw|Http-read-error}}
-* {{msg-mw|Http-host-unreachable|6}}
-* {{msg-mw|Http-timed-out|28}}',
+* {{msg-mw|Http-host-unreachable|6}}',
 'http-curl-error' => 'Used as curl error message when the error is other than known messages.
 * $1 - error code; not URL
 Known messages are:
@@ -3639,7 +3482,6 @@ Known messages are:
 See also:
 * {{msg-mw|Http-request-error}}
 * {{msg-mw|Http-read-error}}
-* {{msg-mw|Http-host-unreachable|6}}
 * {{msg-mw|Http-timed-out|28}}',
 'http-bad-status' => '$1 is an HTTP error code (e.g. 404), $2 is the HTTP error message (e.g. File Not Found)',
 
@@ -3950,7 +3792,7 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
 'doubleredirects' => 'Name of [[Special:DoubleRedirects]] displayed in [[Special:SpecialPages]]',
 'doubleredirectstext' => 'Shown on top of [[Special:Doubleredirects]]',
 'double-redirect-fixed-move' => 'This is the message in the log when the software (under the username {{msg|double-redirect-fixer}}) updates the redirects after a page move. See also {{msg|fix-double-redirects}}.',
-'double-redirect-fixed-maintenance' => 'This is the message in the log when the software (under the username {{msg|double-redirect-fixer}}) updates the redirects after running maintenance/fixDoubleRedirects.php. Compare with {{msg|double-redirect-fixed-move}}.',
+'double-redirect-fixed-maintenance' => 'This is the message in the log when the software (under the username {{msg-mw|double-redirect-fixer}}) updates the redirects after running maintenance/fixDoubleRedirects.php. Compare with {{msg-mw|double-redirect-fixed-move}}.',
 'double-redirect-fixer' => "This is the '''username''' of the user who updates the double redirects after a page move. A user is created with this username, so it is perhaps better to not change this message too often. See also {{msg|double-redirect-fixed-move}} and {{msg|fix-double-redirects}}.",
 
 'brokenredirects' => 'Name of [[Special:BrokenRedirects]] displayed in [[Special:SpecialPages]]',
@@ -4064,7 +3906,8 @@ The title is {{msg-mw|nopagetitle}}.
 See also:
 * {{msg-mw|Nopagetitle|title}}
 * {{msg-mw|Nopagetext|text}}',
-'pager-newer-n' => "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the second argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.",
+'pager-newer-n' => "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the second argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.
+{{Identical|Newer}}",
 'pager-older-n' => "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the first argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.",
 'suppress' => '{{Identical|Oversight}}',
 'querypage-disabled' => "On special pages that use expensive database queries but are not cacheable, this message is displayed when 'miser mode' is on (i.e. no expensive queries allowed).",
@@ -4137,7 +3980,7 @@ Title of [[Special:Log]].',
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Message notifying they are watching a cached page. $1 is a duration (ie "1 hour and 30 minutes")',
-'cachedspecial-viewing-cached-ts' => 'Message notifying they are watching a cached page.',
+'cachedspecial-viewing-cached-ts' => 'Message notifying they are watching a cached page. This is a message displayed on special pages (contaning lists of pages with certain properties) that are served from the cache, as opposed to having been compiled run-time. This means that the displayed data may differ from the current situation.',
 'cachedspecial-refresh-now' => 'Link text pointing to the most recent version of the page.',
 
 # Special:Categories
@@ -4217,12 +4060,6 @@ See also:
 * {{msg-mw|activeusers-hidebots|label for checkbox}}',
 'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
 
-# Special:Log/newusers
-'newuserlogpage' => '{{doc-logpage}}
-
-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
 'listgrouprights' => 'The name of the special page [[Special:ListGroupRights]].',
 'listgrouprights-summary' => 'The description used on [[Special:ListGroupRights]].',
@@ -4249,35 +4086,19 @@ See also {{msg|listgrouprights-removegroup}}.',
 * $2 is the number of group names in $1.
 See also {{msg|listgrouprights-addgroup}}.',
 'listgrouprights-addgroup-all' => 'Used on [[Special:ListGroupRights]].
-
-See also:
-* {{msg-mw|Listgrouprights-addgroup-all}}
-* {{msg-mw|Listgrouprights-removegroup-all}}
-* {{msg-mw|Listgrouprights-addgroup-self-all}}
-* {{msg-mw|Listgrouprights-removegroup-self-all}}',
+{{Related|Listgrouprights}}',
 'listgrouprights-removegroup-all' => 'Used on [[Special:ListGroupRights]].
-
-See also:
-* {{msg-mw|Listgrouprights-addgroup-all}}
-* {{msg-mw|Listgrouprights-removegroup-all}}
-* {{msg-mw|Listgrouprights-addgroup-self-all}}
-* {{msg-mw|Listgrouprights-removegroup-self-all}}',
+{{Related|Listgrouprights}}',
 'listgrouprights-addgroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
 * $1 are the group names.
 * $2 is the number of group names in $1.',
 'listgrouprights-removegroup-self' => 'This is an individual right for groups, used on [[Special:ListGroupRights]].
 * $1 are the group names.
 * $2 is the number of group names in $1.',
-'listgrouprights-addgroup-self-all' => 'See also:
-* {{msg-mw|Listgrouprights-addgroup-all}}
-* {{msg-mw|Listgrouprights-removegroup-all}}
-* {{msg-mw|Listgrouprights-addgroup-self-all}}
-* {{msg-mw|Listgrouprights-removegroup-self-all}}',
-'listgrouprights-removegroup-self-all' => 'See also:
-* {{msg-mw|Listgrouprights-addgroup-all}}
-* {{msg-mw|Listgrouprights-removegroup-all}}
-* {{msg-mw|Listgrouprights-addgroup-self-all}}
-* {{msg-mw|Listgrouprights-removegroup-self-all}}',
+'listgrouprights-addgroup-self-all' => 'Used on [[Special:ListGroupRights]].
+{{Related|Listgrouprights}}',
+'listgrouprights-removegroup-self-all' => 'Used on [[Special:ListGroupRights]].
+{{Related|Listgrouprights}}',
 
 # E-mail user
 'mailnologin' => 'Used in [[Special:EmailUser]].
@@ -4362,9 +4183,12 @@ See also:
 'watchlistanontext' => '* $1 is a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 'watchnologin' => '{{Identical|Not logged in}}',
 'addwatch' => 'Link to a dialog box, displayed at the end of the list of categories at the foot of each page.',
-'addedwatchtext' => 'Explanation shown when clicking on the {{msg|watch}} tab. See also {{msg|addedwatch}}.',
+'addedwatchtext' => 'Explanation shown when clicking on the {{msg-mw|watch}} tab.
+
+See also {{msg-mw|addedwatch}}.',
 'removedwatchtext' => "After a page has been removed from a user's watchlist by clicking the {{msg|unwatch}} tab at the top of an article, this message appears just below the title of the article. $1 is the title of the article. See also {{msg|removedwatch}} and {{msg|addedwatchtext}}.",
-'watch' => 'Name of the Watch tab. Should be in the imperative mood.
+'watch' => '{{doc-actionlink}}
+Name of the Watch tab. Should be in the imperative mood.
 
 See also:
 * {{msg-mw|Watch}}
@@ -4376,7 +4200,8 @@ See also:
 * {{msg-mw|Unwatchthispage|link text}}
 * {{msg-mw|Notanarticle|error message}}
 {{Identical|Watch this page}}',
-'unwatch' => 'Label of "Unwatch" tab.
+'unwatch' => '{{doc-actionlink}}
+Label of "Unwatch" tab.
 
 See also:
 * {{msg-mw|Unwatch}}
@@ -4385,7 +4210,6 @@ See also:
 'unwatchthispage' => 'Used as link text.
 
 See also:
-* {{msg-mw|Unatchthispage|link text}}
 * {{msg-mw|Watchthispage|link text}}
 * {{msg-mw|Notanarticle|error message}}',
 'notanarticle' => "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [//www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
@@ -4414,11 +4238,9 @@ See also:
 * {{msg-mw|enotif reset|Submit button text}}',
 'wlheader-showupdated' => 'This message shows up near top of users watchlist page.',
 'watchmethod-recent' => 'See also:
-* {{msg-mw|Watchmethod-recent}}
 * {{msg-mw|Watchmethod-list}}',
 'watchmethod-list' => 'See also:
-* {{msg-mw|Watchmethod-recent}}
-* {{msg-mw|Watchmethod-list}}',
+* {{msg-mw|Watchmethod-recent}}',
 'watchlistcontains' => '* $1 - number of pages in your watchlist',
 'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
 Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
@@ -4441,7 +4263,13 @@ See also:
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Text displayed when clicked on the watch tab: [[MediaWiki:Watch/{{SUBPAGENAME}}|{{int:watch}}]]. It means the wiki is adding that page to your watchlist.',
 'unwatching' => 'Text displayed when clicked on the unwatch tab: [[MediaWiki:Unwatch/{{SUBPAGENAME}}|{{int:unwatch}}]]. It means the wiki is removing that page from your watchlist.',
-'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed. See also {{msg|addedwatchtext}}. and {{msg|addedwatchtext}}. This message is used raw and should not contain wikitext.',
+'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed.
+
+This message is used raw and should not contain wikitext.
+
+See also:
+* {{msg-mw|addedwatchtext}}
+* {{msg-mw|addedwatchtext}}',
 
 'enotif_reset' => "Used in [[Special:Watchlist]].
 
@@ -4505,6 +4333,7 @@ See also:
 ***a newline
 ***{{msg-mw|enotif lastvisited}}
 *$PAGEEDITOR_EMAIL and $PAGEEDITOR_WIKI are links respectively to the e-mail user special page and user page for the user who performed the action.
+*$PAGEEDITOR is the username of the user who performed the action.
 
 The subject of the e-mail is one of the following messages:
 *{{msg-mw|enotif subject deleted}}
@@ -4512,6 +4341,14 @@ The subject of the e-mail is one of the following messages:
 *{{msg-mw|enotif subject moved}}
 *{{msg-mw|enotif subject restored}}
 *{{msg-mw|enotif subject changed}}',
+'created' => '{{Optional}}
+Possible value for $CHANGEDORCREATED in the following messages:
+* {{msg-mw|enotif_subject}}
+* {{msg-mw|enotif_body}}',
+'changed' => '{{Optional}}
+Possible value for $CHANGEDORCREATED in the following messages:
+* {{msg|enotif_subject}}
+* {{msg|enotif_body}}',
 
 # Delete
 'confirm' => 'Submit button text for protection confirmation
@@ -4543,8 +4380,10 @@ The name of the deletion log. Used as heading on [[Special:Log/delete]] and in t
 
 {{Identical|Deletion log}}',
 'dellogpagetext' => 'Text in [[Special:Log/delete]].',
-'deletionlog' => 'This message is used to link to the deletion log as parameter $1 of {{msg|Filewasdeleted}}, as parameter $2 of {{msg|deletedtext}}, and in log lines on [[Special:DeletedContributions]].
-
+'deletionlog' => 'This message is used to link to the deletion log:
+* Used as parameter $1 of {{msg-mw|Filewasdeleted}}
+* Used as parameter $2 of {{msg-mw|deletedtext}}
+* Used in log lines on [[Special:DeletedContributions]].
 {{Identical|Deletion log}}',
 'reverted' => '{{Identical|Revert}}',
 'deletecomment' => '{{Identical|Reason}}',
@@ -4554,31 +4393,40 @@ The name of the deletion log. Used as heading on [[Special:Log/delete]] and in t
 <pre>* Group
 ** Common delete reason
 ** ...</pre>',
-'delete-edit-reasonlist' => 'Shown beneath the page deletion form on the right side. It is a link to [[MediaWiki:Deletereason-dropdown]]. See also {{msg|Ipb-edit-dropdown}} and {{msg|Protect-edit-reasonlist}}.
+'delete-edit-reasonlist' => 'Shown beneath the page deletion form on the right side. It is a link to {{msg-mw|Deletereason-dropdown|notext=1}}.
 
+See also:
+* {{msg-mw|Ipb-edit-dropdown}}
+* {{msg-mw|Protect-edit-reasonlist}}.
 {{Identical|Edit delete reasons}}',
-'delete-toobig' => '* $1 - the upper limit of number of revisions
+'delete-toobig' => 'Parameters:
+* $1 - the upper limit of number of revisions
 See also:
-* {{msg-mw|Delete-toobig}}
 * {{msg-mw|Delete-warning-toobig}}',
-'delete-warning-toobig' => '* $1 - the upper limit of number of revisions
+'delete-warning-toobig' => 'Parameters:
+* $1 - the upper limit of number of revisions
 See also:
-* {{msg-mw|Delete-toobig}}
-* {{msg-mw|Delete-warning-toobig}}',
+* {{msg-mw|Delete-toobig}}',
 
 # Rollback
 'rollback' => '{{Identical|Rollback}}',
 'rollback_short' => '{{Identical|Rollback}}',
 'rollbacklink' => '{{Identical|Rollback}}
-This link text appears on the recent changes page to users who have the "rollback" right.  It is also effectively a submit button; when clicked it performs the rollback without going to a dialog box first.
-This message has a tooltip {{msg-mw|tooltip-rollback}}',
-'rollbacklinkcount' => 'Text of the rollback link showing the number of edits to be rolled back. This link is also effectively a submit button; when clicked it performs the rollback without going to a dialog box first.  See also {{msg-mw|rollbacklink}}.
+This link text appears on the recent changes page to users who have the "rollback" right.  
+This message has a tooltip {{msg-mw|tooltip-rollback}}
+
+{{Doc-actionlink}}',
+'rollbacklinkcount' => 'Text of the rollback link showing the number of edits to be rolled back. See also {{msg-mw|rollbacklink}}.
 * $1: the number of edits that will be rollbacked. If $1 is over the value of $wgShowRollbackEditCount (default: 10) {{msg-mw|rollbacklinkcount-morethan}} is used.
 
-The rollback link is displayed with a tooltip {{msg-mw|Tooltip-rollback}}',
+The rollback link is displayed with a tooltip {{msg-mw|Tooltip-rollback}}
+
+{{Doc-actionlink}}',
 'rollbacklinkcount-morethan' => 'Text of the rollback link when a greater number of edits is to be rolled back. See also {{msg-mw|rollbacklink}}.
 
-When the number of edits rolled back is smaller than [[mw:Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.',
+When the number of edits rolled back is smaller than [[mw:Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.
+
+{{Doc-actionlink}}',
 'rollbackfailed' => '{{Identical|Rollback}}',
 'cantrollback' => 'Used as error message when rolling back.
 
@@ -4627,6 +4475,8 @@ Example:
 'prot_1movedto2' => 'Message description: [[mw:Manual:Interface/1movedto2]]',
 'protect-badnamespace-title' => 'Title of error page when trying to access action=protect on a non-protectable namespace (currently this only for the MediaWiki: namespace).',
 'protect-badnamespace-text' => 'Content of the error page that goes with {{msg-mw|protect-badnamespace-title}}.',
+'protect-norestrictiontypes-text' => "Content of the error page in case there aren't any restriction types (like edit or create) available.",
+'protect-norestrictiontypes-title' => "Page title in case there aren't any restriction types (like edit or create) available ($1 represents the page title).",
 'protect-legend' => 'Legend of the fieldset around the input form of the protection form.',
 'protectcomment' => '{{Identical|Reason}}',
 'protectexpiry' => '{{Identical|Expires}}',
@@ -4654,6 +4504,11 @@ See example: [http://translatewiki.net/w/i.php?title=Main_Page&action=info]',
 'protect-level-sysop' => 'Used as protect level.
 
 See example: [http://translatewiki.net/w/i.php?title=Main_Page&action=info]',
+'protect-summary-desc' => '{{Optional}}
+Used in edit summary for description of a protecting restriction.
+* $1 is action, taken from restriction-*
+* $2 is restriction, taken from protect-level-*
+* $3 is {{msg-mw|protect-expiring}} or {{msg-mw|protect-expiry-indefinite}}',
 'protect-summary-cascade' => 'Used in edit summary when cascade protecting a page. Appears in protection log. See [[Special:Log]] and [[m:Special:Log]].
 
 Also used in [[Special:ProtectedPages]] when a page is cascade protected. See example: [[m:Special:ProtectedPages]].<br />
@@ -4685,7 +4540,11 @@ See also:
 
 <tt><nowiki>* Groupname</nowiki></tt> - defines a new group<br />
 <tt><nowiki>** Reason</nowiki></tt> - defines a reason in this group',
-'protect-edit-reasonlist' => 'Shown beneath the page protection form on the right side. It is a link to [[MediaWiki:Protect-dropdown]]. See also {{msg|Delete-edit-reasonlist}} and {{msg|Ipb-edit-dropdown}}.',
+'protect-edit-reasonlist' => 'Shown beneath the page protection form on the right side. It is a link to {{msg-mw|Protect-dropdown|notext=1}}.
+
+See also:
+* {{msg-mw|Delete-edit-reasonlist}}
+* {{msg-mw|Ipb-edit-dropdown}}',
 'protect-expiry-options' => "{{Identical|Infinite}}{{doc-important|Be careful: '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.}}
 
 Options for the duration of the page protection. Example: See e.g. [[MediaWiki:Protect-expiry-options/nl]] if you still don't know how to do it.",
@@ -4710,19 +4569,19 @@ Options for the duration of the page protection. Example: See e.g. [[MediaWiki:P
 # Restriction levels
 'restriction-level-sysop' => "Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. An option in the drop-down box 'Restriction level' and in brackets after each page name entry. 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.
 
-*{{msg-mw|Restriction-level-sysop}}
+See also:
 *{{msg-mw|Restriction-level-autoconfirmed}}
 *{{msg-mw|Restriction-level-all}}",
 'restriction-level-autoconfirmed' => "Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. An option in the drop-down box 'Restriction level', and in brackets after each page name entry. 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.
 
+See also:
 *{{msg-mw|Restriction-level-sysop}}
-*{{msg-mw|Restriction-level-autoconfirmed}}
 *{{msg-mw|Restriction-level-all}}",
 'restriction-level-all' => "Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. An option in the drop-down box 'Restriction level'. 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.
 
+See also:
 *{{msg-mw|Restriction-level-sysop}}
-*{{msg-mw|Restriction-level-autoconfirmed}}
-*{{msg-mw|Restriction-level-all}}",
+*{{msg-mw|Restriction-level-autoconfirmed}}",
 
 # Undelete
 'undelete' => 'Name of special page for admins as displayed in [[Special:SpecialPages]].
@@ -4745,21 +4604,18 @@ See also:
 'undeletehistory' => 'Used in [[Special:Undelete]].
 
 See also:
-* {{msg-mw|Undeletehistory}}
 * {{msg-mw|Undeleterevdel}}
 * {{msg-mw|Undeletehistorynoadmin}}',
 'undeleterevdel' => 'Used in [[Special:Undelete]].
 
 See also:
 * {{msg-mw|Undeletehistory}}
-* {{msg-mw|Undeleterevdel}}
 * {{msg-mw|Undeletehistorynoadmin}}',
 'undeletehistorynoadmin' => 'Used in [[Special:Undelete]].
 
 See also:
 * {{msg-mw|Undeletehistory}}
-* {{msg-mw|Undeleterevdel}}
-* {{msg-mw|Undeletehistorynoadmin}}',
+* {{msg-mw|Undeleterevdel}}',
 'undelete-revision' => 'Shown in "View and restore deleted pages" ([[Special:Undelete/$1]]).
 
 * $1: deleted page name
@@ -4785,21 +4641,18 @@ See also:
 * $1 - number of revisions
 See also:
 * {{msg-mw|Undeletedrevisions-files}}
-* {{msg-mw|Undeletedrevisions}}
 * {{msg-mw|Undeletedfiles}}',
 'undeletedrevisions-files' => 'Used as reason in the log entry. Parameters:
 * $1 - number of revisions
 * $2 - number of files
 See also:
-* {{msg-mw|Undeletedrevisions-files}}
 * {{msg-mw|Undeletedrevisions}}
 * {{msg-mw|Undeletedfiles}}',
 'undeletedfiles' => 'Used as reason in the log entry. Parameters:
 * $1 - number of files
 See also:
 * {{msg-mw|Undeletedrevisions-files}}
-* {{msg-mw|Undeletedrevisions}}
-* {{msg-mw|Undeletedfiles}}',
+* {{msg-mw|Undeletedrevisions}}',
 'cannotundelete' => 'Message shown when undeletion failed for some reason.
 * <code>$1</code> is the combined wikitext of messages for all errors that caused the failure.',
 'undeletedpage' => '* $1 - page title',
@@ -4807,7 +4660,6 @@ See also:
 'undelete-search-title' => 'Page title when showing the search form in [[Special:Undelete]].
 
 See also:
-* {{msg-mw|undelete-search-title}}
 * {{msg-mw|undelete-search-box}}
 * {{msg-mw|undelete-search-prefix}}
 * {{msg-mw|undelete-search-submit}}',
@@ -4815,7 +4667,6 @@ See also:
 
 See also:
 * {{msg-mw|undelete-search-title}}
-* {{msg-mw|undelete-search-box}}
 * {{msg-mw|undelete-search-prefix}}
 * {{msg-mw|undelete-search-submit}}',
 'undelete-search-prefix' => 'Used as label for the input box in [[Special:Undelete]].
@@ -4823,7 +4674,6 @@ See also:
 See also:
 * {{msg-mw|undelete-search-title}}
 * {{msg-mw|undelete-search-box}}
-* {{msg-mw|undelete-search-prefix}}
 * {{msg-mw|undelete-search-submit}}',
 'undelete-search-submit' => 'Used as Submit button text in Search form on [[Special:Undelete]].
 
@@ -4831,7 +4681,6 @@ See also:
 * {{msg-mw|undelete-search-title}}
 * {{msg-mw|undelete-search-box}}
 * {{msg-mw|undelete-search-prefix}}
-* {{msg-mw|undelete-search-submit}}
 {{Identical|Search}}',
 'undelete-no-results' => 'Used as Search result in [[Special:Undelete]].',
 'undelete-filename-mismatch' => '* $1 - date and time',
@@ -4852,7 +4701,8 @@ See also:
 
 {{identical|Are you sure you want to view the deleted revision of the file...}}',
 'undelete-show-file-submit' => '{{Identical|Yes}}',
-'undelete-revisionrow' => "A revision row in the undelete page. Parameters:
+'undelete-revisionrow' => "{{Optional}}
+A revision row in the undelete page. Parameters:
 * $1 is a checkBox to indicate whether to restore this specific revision
 * $2 is a link to the revision
 * $3 is a link to the last revision of a page ({{msg-mw|last}})
@@ -4862,7 +4712,8 @@ See also:
 * $7 is the revision comment",
 
 # Namespace form on various pages
-'namespace' => 'This message is located at [[Special:Contributions]].',
+'namespace' => 'This message is located at [[Special:Contributions]].
+{{Identical|Namespace}}',
 'invert' => 'Displayed in [[Special:RecentChanges|RecentChanges]], [[Special:RecentChangesLinked|RecentChangesLinked]] and [[Special:Watchlist|Watchlist]].
 
 This message means "Invert selection of namespace".
@@ -4892,11 +4743,12 @@ See also:
 * {{msg-mw|Mycontris}}
 * {{msg-mw|Accesskey-pt-mycontris}}
 * {{msg-mw|Tooltip-pt-mycontris}}',
-'contribsub2' => 'Contributions for "user" (links)',
+'contribsub2' => 'Contributions for "user" (links)
+{{Identical|For $1}}',
 'nocontribs' => 'Optional parameter: $1 is the user name',
 'uctop' => 'This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagename‎ (edit summary) (top)',
-'month' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg|year}}.',
-'year' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a inputbox to select a specific year to view the edits made in that year, and the earlier years. See also {{msg|month}}.',
+'month' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg-mw|year}}.',
+'year' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a inputbox to select a specific year to view the edits made in that year, and the earlier years. See also {{msg-mw|month}}.',
 
 'sp-contributions-newbies' => 'Text of radio button on special page [[Special:Contributions]].',
 'sp-contributions-newbies-sub' => "Note at the top of the page of results for a search on [[Special:Contributions]] where 'Show contributions for new accounts only' has been selected.",
@@ -4988,8 +4840,7 @@ Anon version: {{msg-mw|Sp-contributions-blocked-notice-anon}}',
 'sp-contributions-blocked-notice-anon' => 'Same as {{msg-mw|Sp-contributions-blocked-notice}} but for anonymous users.',
 'sp-contributions-search' => 'Used on [[Special:Contributions]]',
 'sp-contributions-username' => 'This message appears whenever someone requests [[Special:Contributions]].
-
-{{Identical/IP address or username}}',
+{{Identical|IP address or username}}',
 'sp-contributions-toponly' => '"top revision" means the "latest revision"',
 'sp-contributions-submit' => '{{Identical|Search}}',
 'sp-contributions-explain' => '{{optional}}',
@@ -5057,7 +4908,7 @@ See also:
 'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:Block]].
 
 {{Identical|Block user}}',
-'ipadressorusername' => '{{Identical/IP address or username}}',
+'ipadressorusername' => '{{Identical|IP address or username}}',
 'ipbexpiry' => '{{Identical|Expiry}}',
 'ipbreason' => 'Label of the block reason dropdown in [[Special:BlockIP]] and the unblock reason textfield in [{{fullurl:Special:IPBlockList|action=unblock}} Special:IPBlockList?action=unblock].
 
@@ -5084,7 +4935,8 @@ See also:
 * {{msg-mw|ipbwatchuser}}
 * {{msg-mw|ipb-hardblock}}
 {{Identical|Prevent user from sending e-mail}}',
-'ipbenableautoblock' => 'Used as label for checkbox in [[Special:Block]].
+'ipbenableautoblock' => '{{doc-singularthey}}
+Used as label for checkbox in [[Special:Block]].
 
 See also:
 * {{msg-mw|ipbemailban}}
@@ -5125,7 +4977,7 @@ See also:
 * {{msg-mw|ipbhidename}}
 * {{msg-mw|ipbwatchuser}}
 * {{msg-mw|ipb-hardblock}}',
-'ipb-change-block' => 'Confirmation checkbox required for blocks that would override an earlier block. Appears together with {{msg|ipb-needreblock}}.',
+'ipb-change-block' => 'Confirmation checkbox required for blocks that would override an earlier block. Appears together with {{msg-mw|ipb-needreblock}}.',
 'ipb-confirm' => 'Used as hidden field in the form on [[Special:Block]].',
 'badipaddress' => 'An error message shown when one entered an invalid IP address in blocking page.',
 'blockipsuccesssub' => 'Used as page title in [[Special:Block]].
@@ -5137,7 +4989,11 @@ The title (subject) for this message is {{msg-mw|Blockipsuccesssub}}.
 
 Parameters:
 * $1 - username, can be used for GENDER',
-'ipb-edit-dropdown' => 'Shown beneath the user block form on the right side. It is a link to [[MediaWiki:Ipbreason-dropdown]]. See also {{msg|Delete-edit-reasonlist}} and {{msg|Protect-edit-reasonlist}}.',
+'ipb-edit-dropdown' => 'Shown beneath the user block form on the right side. It is a link to {{msg-mw|Ipbreason-dropdown|notext=1}}.
+
+See also:
+* {{msg-mw|Delete-edit-reasonlist}}
+* {{msg-mw|Protect-edit-reasonlist}}',
 'ipb-unblock-addr' => 'Used in [[Special:Block]].
 * $1 - target username',
 'ipb-blocklist-contribs' => 'Used in [[Special:Block]].
@@ -5149,23 +5005,21 @@ Parameters:
 * Click "unblock" for any block (but you can only see "unblock" if you have administrator rights)
 * It is now the button below the form',
 'unblocked' => '{{doc-important|Do not translate the namespace "User:".}}
+Parameters:
 * $1 - the IP address or username that was unblocked
 See also:
-* {{msg-mw|Unblocked}}
 * {{msg-mw|Unblocked-range}}
 * {{msg-mw|Unblocked-id}}',
-'unblocked-range' => 'Shown when successfully lifting a rangeblock, so do not link to contributions.
-* $1 - the range that was unblocked.
+'unblocked-range' => 'Shown when successfully lifting a rangeblock, so do not link to contributions. Parameters:
+* $1 - the range that was unblocked
 See also:
 * {{msg-mw|Unblocked}}
-* {{msg-mw|Unblocked-range}}
 * {{msg-mw|Unblocked-id}}',
-'unblocked-id' => 'Used in [[Special:Unblock]].
+'unblocked-id' => 'Used in [[Special:Unblock]]. Parameters:
 * $1 - autoblock ID
 See also:
 * {{msg-mw|Unblocked}}
-* {{msg-mw|Unblocked-range}}
-* {{msg-mw|Unblocked-id}}',
+* {{msg-mw|Unblocked-range}}',
 'ipblocklist' => 'Title of [[Special:Ipblocklist]].',
 'ipblocklist-legend' => 'Used as legend of the form in [[Special:BlockList]].
 
@@ -5173,35 +5027,15 @@ See also:
 * {{msg-mw|Ipblocklist-legend}}
 * {{msg-mw|Ipblocklist-submit}}',
 'blocklist-userblocks' => 'Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].
-
-See also:
-* {{msg-mw|Blocklist-userblocks}}
-* {{msg-mw|Blocklist-tempblocks}}
-* {{msg-mw|Blocklist-addressblocks}}
-* {{msg-mw|Blocklist-rangeblocks}}',
+{{Related|Blocklist-blocks}}',
 'blocklist-tempblocks' => 'Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].
-
-See also:
-* {{msg-mw|Blocklist-userblocks}}
-* {{msg-mw|Blocklist-tempblocks}}
-* {{msg-mw|Blocklist-addressblocks}}
-* {{msg-mw|Blocklist-rangeblocks}}',
+{{Related|Blocklist-blocks}}',
 'blocklist-addressblocks' => 'Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].
-
-See also:
-* {{msg-mw|Blocklist-userblocks}}
-* {{msg-mw|Blocklist-tempblocks}}
-* {{msg-mw|Blocklist-addressblocks}}
-* {{msg-mw|Blocklist-rangeblocks}}',
+{{Related|Blocklist-blocks}}',
 'blocklist-rangeblocks' => 'Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].
 
 For an explanation of "range blocks", see http://www.mediawiki.org/wiki/Help:Range_blocks
-
-See also:
-* {{msg-mw|Blocklist-userblocks}}
-* {{msg-mw|Blocklist-tempblocks}}
-* {{msg-mw|Blocklist-addressblocks}}
-* {{msg-mw|Blocklist-rangeblocks}}',
+{{Related|Blocklist-blocks}}',
 'blocklist-timestamp' => 'This is a column header for dates and times in the table on the page [[Special:BlockList]].
 {{Identical|Timestamp}}',
 'blocklist-target' => 'The table header for the column containing the block targets, that is user names or IP-addresses linked to their respective user pages, in the table on the page [[Special:BlockList]].',
@@ -5461,13 +5295,11 @@ See also:
 'lockconfirm' => 'Used as label for checkbox in the form on [[Special:LockDB]].
 
 See also:
-* {{msg-mw|Lockconfirm}}
 * {{msg-mw|Unlockconfirm}}',
 'unlockconfirm' => 'Used as label for checkbox in the form on [[Special:UnlockDB]].
 
 See also:
-* {{msg-mw|Lockconfirm}}
-* {{msg-mw|Unlockconfirm}}',
+* {{msg-mw|Lockconfirm}}',
 'lockbtn' => 'The submit button on the special page [[Special:LockDB]].
 
 See also:
@@ -5564,36 +5396,36 @@ See also:
 'movenologin' => '{{Identical|Not logged in}}',
 'movenologintext' => "Text of message on special page 'Permissions Errors', which appears when somebody tries to move a page without being logged in.
 
+See also:
 * {{msg-mw|cant-move-user-page}}
 * {{msg-mw|cant-move-to-user-page}}
 * {{msg-mw|movenotallowedfile}}
-* {{msg-mw|movenotallowed}}
-* {{msg-mw|movenologintext}}",
+* {{msg-mw|movenotallowed}}",
 'movenotallowed' => 'Used as error message.
 
+See also:
 * {{msg-mw|cant-move-user-page}}
 * {{msg-mw|cant-move-to-user-page}}
 * {{msg-mw|movenotallowedfile}}
-* {{msg-mw|movenotallowed}}
 * {{msg-mw|movenologintext}}',
 'movenotallowedfile' => 'Used as error message.
 
+See also:
 * {{msg-mw|cant-move-user-page}}
 * {{msg-mw|cant-move-to-user-page}}
-* {{msg-mw|movenotallowedfile}}
 * {{msg-mw|movenotallowed}}
 * {{msg-mw|movenologintext}}',
 'cant-move-user-page' => 'Used as error message.
 
-* {{msg-mw|cant-move-user-page}}
+See also:
 * {{msg-mw|cant-move-to-user-page}}
 * {{msg-mw|movenotallowedfile}}
 * {{msg-mw|movenotallowed}}
 * {{msg-mw|movenologintext}}',
 'cant-move-to-user-page' => 'Used as error message.
 
+See also:
 * {{msg-mw|cant-move-user-page}}
-* {{msg-mw|cant-move-to-user-page}}
 * {{msg-mw|movenotallowedfile}}
 * {{msg-mw|movenotallowed}}
 * {{msg-mw|movenologintext}}',
@@ -5887,7 +5719,7 @@ Tooltip shown when hovering over a little sign of a thumb image, to go to the im
 The reason $1 is one of the following messages:
 * {{msg-mw|Thumbnail-dest-create}}
 * {{msg-mw|Thumbnail dest directory}}
-* {{msg-mw|Thumbnai invalid params}}
+* {{msg-mw|Thumbnail invalid params}}
 * {{msg-mw|Djvu no xml}}
 * {{msg-mw|Djvu page error}}
 * {{msg-mw|Svg-long-error}}
@@ -5902,12 +5734,10 @@ See also:
 
 See also:
 * {{msg-mw|Thumbnail error}}
-* {{msg-mw|Djvu no xml}}
 * {{msg-mw|Djvu page error}}',
 'thumbnail-temp-create' => 'Used as thumbnail error message.
 
 See also:
-* {{msg-mw|Thumbnail-temp-create}}
 * {{msg-mw|Thumbnail-dest-create}}
 * {{msg-mw|Thumbnail invalid params}}
 * {{msg-mw|Thumbnail dest directory}}',
@@ -5916,7 +5746,6 @@ See also:
 See also:
 * {{msg-mw|Thumbnail error}}
 * {{msg-mw|Thumbnail-temp-create}}
-* {{msg-mw|Thumbnail-dest-create}}
 * {{msg-mw|Thumbnail invalid params}}
 * {{msg-mw|Thumbnail dest directory}}',
 'thumbnail_invalid_params' => 'Used as thumbnail error message.
@@ -5924,7 +5753,6 @@ See also:
 See also:
 * {{msg-mw|Thumbnail-temp-create}}
 * {{msg-mw|Thumbnail-dest-create}}
-* {{msg-mw|Thumbnail invalid params}}
 * {{msg-mw|Thumbnail dest directory}}',
 'thumbnail_dest_directory' => 'Used as thumbnail error message.
 
@@ -5932,8 +5760,7 @@ See also:
 * {{msg-mw|Thumbnail error}}
 * {{msg-mw|Thumbnail-temp-create}}
 * {{msg-mw|Thumbnail-dest-create}}
-* {{msg-mw|Thumbnail invalid params}}
-* {{msg-mw|Thumbnail dest directory}}',
+* {{msg-mw|Thumbnail invalid params}}',
 'thumbnail_image-type' => 'This is the parameter 1 of the message {{msg-mw|thumbnail error}}',
 'thumbnail_gd-library' => 'This is the parameter 1 of the message {{msg-mw|thumbnail error}}.
 *$1 is a function name of the GD library',
@@ -5948,7 +5775,6 @@ See also:
 'import-interwiki-history' => 'This is an option on [[Special:Import]]. Usually, when unchecked, only the first version of a page is imported. When you check the option, all versions are imported. This is important often to check for licensing reasons.
 
 See also:
-* {{msg-mw|Import-interwiki-history}}
 * {{msg-mw|Import-interwiki-templates}}
 * {{msg-mw|Import-interwiki-namespace}}
 * {{msg-mw|Import-comment}}
@@ -5958,7 +5784,6 @@ See also:
 
 See also:
 * {{msg-mw|Import-interwiki-history}}
-* {{msg-mw|Import-interwiki-templates}}
 * {{msg-mw|Import-interwiki-namespace}}
 * {{msg-mw|Import-comment}}
 * {{msg-mw|Import-interwiki-rootpage}}
@@ -5971,14 +5796,12 @@ See also:
 * {{msg-mw|Import-interwiki-namespace}}
 * {{msg-mw|Import-comment}}
 * {{msg-mw|Import-interwiki-rootpage}}
-* {{msg-mw|Import-interwiki-submit}}
 {{Identical|Import}}',
 'import-interwiki-namespace' => 'Used as label in Import form on [[Special:Import]].
 
 See also:
 * {{msg-mw|Import-interwiki-history}}
 * {{msg-mw|Import-interwiki-templates}}
-* {{msg-mw|Import-interwiki-namespace}}
 * {{msg-mw|Import-comment}}
 * {{msg-mw|Import-interwiki-rootpage}}
 * {{msg-mw|Import-interwiki-submit}}',
@@ -5989,7 +5812,6 @@ See also:
 * {{msg-mw|Import-interwiki-templates}}
 * {{msg-mw|Import-interwiki-namespace}}
 * {{msg-mw|Import-comment}}
-* {{msg-mw|Import-interwiki-rootpage}}
 * {{msg-mw|Import-interwiki-submit}}',
 'import-upload-filename' => 'Used on [[Special:Import]] as label for upload of an XML file containing the pages to import.',
 'import-comment' => 'Used as label for input box in [[Special:Import]].
@@ -5998,14 +5820,12 @@ See also:
 * {{msg-mw|Import-interwiki-history}}
 * {{msg-mw|Import-interwiki-templates}}
 * {{msg-mw|Import-interwiki-namespace}}
-* {{msg-mw|Import-comment}}
 * {{msg-mw|Import-interwiki-rootpage}}
 * {{msg-mw|Import-interwiki-submit}}',
 'importtext' => 'Used in the Import form on [[Special:Import]].',
 'importstart' => 'Used in [[Special:Import]].
 
 See also:
-* {{msg-mw|Importstart}}
 * {{msg-mw|Importsuccess}}
 * {{msg-mw|Importfailed}}',
 'import-revision-count' => '* $1 - number of revisions, success count',
@@ -6015,8 +5835,7 @@ See also:
 * $1 - import source
 See also:
 * {{msg-mw|Importstart}}
-* {{msg-mw|Importsuccess}}
-* {{msg-mw|Importfailed}}',
+* {{msg-mw|Importsuccess}}',
 'importunknownsource' => 'Used as error message in [[Special:Import]].
 
 See also:
@@ -6033,13 +5852,11 @@ See also:
 
 See also:
 * {{msg-mw|Importstart}}
-* {{msg-mw|Importsuccess}}
 * {{msg-mw|Importfailed}}',
 'importnosources' => 'Used in [[Special:Import]] instead of the Import form.',
 'importnofile' => 'Used as error message when importing from file.
 
 See also:
-* {{msg-mw|importnofile}}
 * {{msg-mw|importuploaderrorsize}}
 * {{msg-mw|importuploaderrorpartial}}
 * {{msg-mw|importuploaderrortemp}}',
@@ -6047,7 +5864,6 @@ See also:
 
 See also:
 * {{msg-mw|importnofile}}
-* {{msg-mw|importuploaderrorsize}}
 * {{msg-mw|importuploaderrorpartial}}
 * {{msg-mw|importuploaderrortemp}}',
 'importuploaderrorpartial' => 'Used as error message when importing from file.
@@ -6055,15 +5871,13 @@ See also:
 See also:
 * {{msg-mw|importnofile}}
 * {{msg-mw|importuploaderrorsize}}
-* {{msg-mw|importuploaderrorpartial}}
 * {{msg-mw|importuploaderrortemp}}',
 'importuploaderrortemp' => 'Used as error message when importing from file.
 
 See also:
 * {{msg-mw|importnofile}}
 * {{msg-mw|importuploaderrorsize}}
-* {{msg-mw|importuploaderrorpartial}}
-* {{msg-mw|importuploaderrortemp}}',
+* {{msg-mw|importuploaderrorpartial}}',
 'import-noarticle' => 'Used as error message when importing from interwiki.
 
 See also:
@@ -6080,7 +5894,7 @@ See also:
 Import failed: XML import parse failure at line 1, col 1 (byte 3; "- <mediawiki xml"): Empty document',
 'import-upload' => 'Used on [[Special:Import]].
 
-Related messages: {{msg|right-importupload|pl=yes}} (the user right for this).',
+Related messages: {{msg-mw|right-importupload|pl=yes}} (the user right for this).',
 'import-token-mismatch' => 'Used as error message in [[Special:Import]].
 
 See also:
@@ -6176,7 +5990,7 @@ See also:
 * {{msg-mw|Mypreferences}}
 * {{msg-mw|Accesskey-pt-preferences}}
 * {{msg-mw|Tooltip-pt-preferences}}
-{{Identical|My preferences}}',
+{{Identical|Preferences}}',
 'tooltip-pt-watchlist' => 'Tooltip shown when hovering over the {{msg-mw|Mywatchlist}} link in your personal toolbox (upper right side).
 
 See also:
@@ -6325,7 +6139,7 @@ See also:
 * {{msg-mw|Currentevents-url}}
 * {{msg-mw|Accesskey-n-currentevents}}
 * {{msg-mw|Tooltip-n-currentevents}}',
-'tooltip-n-recentchanges' => 'The tooltip when hovering over the {{msg-mw|Recehtchanges}} link in the sidebar going to the special page [[Special:RecentChanges]].
+'tooltip-n-recentchanges' => 'The tooltip when hovering over the {{msg-mw|Recentchanges}} link in the sidebar going to the special page [[Special:RecentChanges]].
 
 See also:
 * {{msg-mw|Recentchanges}}
@@ -6506,13 +6320,13 @@ See also:
 * {{msg-mw|Accesskey-watch}}
 * {{msg-mw|Tooltip-watch}}
 {{Identical|Add this page to your watchlist}}',
-'tooltip-watchlistedit-normal-submit' => 'Tooltip for {{msg|watchlistedit-normal-submit}} (used as button on [[Special:EditWatchlist]]).
+'tooltip-watchlistedit-normal-submit' => 'Tooltip for {{msg-mw|watchlistedit-normal-submit}} (used as button on [[Special:EditWatchlist]]).
 
 See also:
 * {{msg-mw|Watchlistedit-normal-submit}}
 * {{msg-mw|Accesskey-watchlistedit-normal-submit}}
 * {{msg-mw|Tooltip-watchlistedit-normal-submit}}',
-'tooltip-watchlistedit-raw-submit' => 'Tooltip for {{msg|watchlistedit-raw-submit}} (used as button on [[Special:EditWatchlist/raw]]).
+'tooltip-watchlistedit-raw-submit' => 'Tooltip for {{msg-mw|watchlistedit-raw-submit}} (used as button on [[Special:EditWatchlist/raw]]).
 
 See also:
 * {{msg-mw|Watchlistedit-raw-submit}}
@@ -6642,7 +6456,6 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
 'spamprotectiontitle' => 'Used as page title when the edit contains spam.
 
 See also:
-* {{msg-mw|Spamprotectiontitle|title}}
 * {{msg-mw|Spamprotectiontext|text}}
 * {{msg-mw|Spamprotectionmatch|if matched}}
 * {{msg-mw|Yourdiff}}
@@ -6651,7 +6464,6 @@ See also:
 
 See also:
 * {{msg-mw|Spamprotectiontitle|title}}
-* {{msg-mw|Spamprotectiontext|text}}
 * {{msg-mw|Spamprotectionmatch|if matched}}
 * {{msg-mw|Yourdiff}}
 * {{msg-mw|Yourtext}}',
@@ -6660,7 +6472,6 @@ See also:
 See also:
 * {{msg-mw|Spamprotectiontitle|title}}
 * {{msg-mw|Spamprotectiontext|text}}
-* {{msg-mw|Spamprotectionmatch|if matched}}
 * {{msg-mw|Yourdiff}}
 * {{msg-mw|Yourtext}}',
 'spam_reverting' => 'Edit summary for spam cleanup script. Used when a page is reverted because all later revisions contained a particular link. Parameters:
@@ -6686,15 +6497,16 @@ See also:
 'pageinfo-robot-policy' => 'The search engine status of the page.
 *{{msg-mw|Pageinfo-robot-index}}
 *{{msg-mw|Pageinfo-robot-noindex}}',
-'pageinfo-robot-index' => 'An indication that the page is indexable.',
-'pageinfo-robot-noindex' => 'An indication that the page is not indexable.',
+'pageinfo-robot-index' => 'An indication that the page is indexable by search engines, that is listed in their search results.',
+'pageinfo-robot-noindex' => 'An indication that the page is not indexable (that is, is not listed on the results page of a search engine).',
 'pageinfo-views' => 'The number of times the page has been viewed.',
 'pageinfo-watchers' => 'The number of users watching the page.',
 'pageinfo-redirects-name' => "The number of redirects to the page.
 
 Used as link text, linked to '{{int:Whatlinkshere-title}}' page ([[Special:WhatLinksHere]]).",
-'pageinfo-redirects-value' => 'Parameters:
-* $1 is the number of redirects to the page.',
+'pageinfo-redirects-value' => '{{Optional}}
+Parameters:
+* $1 - the number of redirects to the page',
 'pageinfo-subpages-name' => "The number of subpages of the page.
 
 Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]).",
@@ -6715,10 +6527,17 @@ Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]
 'pageinfo-hidden-categories' => 'The list of hidden categories on the page. Parameters:
 * $1 is the number of hidden categories on the page.',
 'pageinfo-templates' => 'The list of templates transcluded within the page. Parameters:
-* $1 is the number of templates transcluded within the page.',
+* $1 is the number of templates transcluded within the page.
+See also:
+* {{msg-mw|Pageinfo-transclusions}}',
+'pageinfo-transclusions' => 'The list of pages on which this page is transcluded. Parameters:
+* $1 is the number of pages the current page is transcluded on.
+See also:
+* {{msg-mw|Pageinfo-templates}}',
 'pageinfo-toolboxlink' => "Information link for the page (like 'What links here', but to action=info for the current page instead)",
-'pageinfo-redirectsto' => 'Key for the row shown if this page is a redirect.',
-'pageinfo-redirectsto-info' => 'Text to put in parentheses for the link to the action=info of the redirect target.',
+'pageinfo-redirectsto' => 'Key for the row shown if this page is a redirect. Verb. See [http://en.wikipedia.org/w/index.php?title=Main_page&action=info example].',
+'pageinfo-redirectsto-info' => 'Text to put in parentheses for the link to the action=info of the redirect target.
+{{Identical|Info}}',
 'pageinfo-contentpage' => 'Key for the row shown on [{{fullurl:News|action=info}} action=info] if this page is [[mw:Manual:Article count|counted as a content page]]',
 'pageinfo-contentpage-yes' => 'Yes, this page is a content page',
 'pageinfo-protect-cascading' => 'Key for the row which shows whether this page has cascading protection enabled
@@ -6728,6 +6547,16 @@ Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]
 *{{msg-mw|Pageinfo-protect-cascading}}
 *{{msg-mw|Pageinfo-protect-cascading-yes}}',
 'pageinfo-protect-cascading-from' => 'Key for a list of pages where protections are cascading from',
+'pageinfo-category-info' => 'Showed on the page displaying information about the current page (add "?action=info" to the URL)',
+'pageinfo-category-pages' => 'See also:
+* {{msg-mw|Pageinfo-category-subcats}}
+* {{msg-mw|Pageinfo-category-files}}',
+'pageinfo-category-subcats' => 'See also:
+* {{msg-mw|Pageinfo-category-pages}}
+* {{msg-mw|Pageinfo-category-files}}',
+'pageinfo-category-files' => 'See also:
+* {{msg-mw|Pageinfo-category-pages}}
+* {{msg-mw|Pageinfo-category-subcats}}',
 
 # Skin names
 'skinname-standard' => '{{optional}}
@@ -6742,53 +6571,50 @@ Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]
 'skinname-vector' => '{{optional}}',
 
 # Patrolling
-'markaspatrolleddiff' => 'See also:
-* {{msg-mw|Markaspatrolleddiff}}
-* {{msg-mw|Markaspatrolledtext}}',
-'markaspatrolledtext' => 'See also:
-* {{msg-mw|Markaspatrolleddiff}}
-* {{msg-mw|Markaspatrolledtext}}',
-'markedaspatrolled' => 'Used as page title.
-
-The text for this message is {{msg-mw|Markedaspatrolledtext}}.',
-'markedaspatrolledtext' => 'The page title for this message is {{msg-mw|Markedaspatrolled}}.
-
-{{Identical|Markedaspatrolled}}',
-'rcpatroldisabled' => 'Used as title of error message when marking RecentChange as patrolled.
-
-See also:
-* {{msg-mw|Rcpatroldisabled|title}}
-* {{msg-mw|Rcpatroldisabledtext|text}}
-* {{msg-mw|Markedaspatrollederror-noautopatrol}}',
-'rcpatroldisabledtext' => 'Used as error message when marking RecentChange as patrolled.
-
-See also:
-* {{msg-mw|Rcpatroldisabled|title}}
-* {{msg-mw|Rcpatroldisabledtext|text}}
-* {{msg-mw|Markedaspatrollederror-noautopatrol}}',
-'markedaspatrollederror' => 'Used as title of error message.
-
+'markaspatrolleddiff' => '{{doc-actionlink}}
 See also:
-* {{msg-mw|Markedaspatrollederror|title}}
-* {{msg-mw|Markedaspatrollederrortext|text}}',
-'markedaspatrollederrortext' => 'Used as error message.
-
+* {{msg-mw|Markaspatrolledtext}}',
+'markaspatrolledtext' => '{{doc-actionlink}}
+See also:
+* {{msg-mw|Markaspatrolleddiff}}',
+'markedaspatrolled' => 'Used as title of the message {{msg-mw|Markedaspatrolledtext}}, when marking a change as patrolled.
+{{Related|Markedaspatrolled}}',
+'markedaspatrolledtext' => 'Used when marking a change as patrolled.
+
+The title for this message is {{msg-mw|Markedaspatrolled}}.
+{{Related|Markedaspatrolled}}',
+'rcpatroldisabled' => 'Used as title of the error message {{msg-mw|Rcpatroldisabledtext}}, when marking a change as patrolled.
+{{Related|Markedaspatrolled}}',
+'rcpatroldisabledtext' => 'Used as the error message when marking a change as patrolled.
+
+The title for this error message is {{msg-mw|Rcpatroldisabled}}.
+{{Related|Markedaspatrolled}}',
+'markedaspatrollederror' => 'Used as title of the following error messages:
+* {{msg-mw|Markedaspatrollederrortext}}
+* {{msg-mw|Markedaspatrollederror-noautopatrol}}
+This message is used when marking a change as patrolled.
+{{Related|Markedaspatrolled}}',
+'markedaspatrollederrortext' => 'Used as the error message when marking a change as patrolled.
+
+The title for this error message is {{msg-mw|Markedaspatrollederror}}.
+{{Related|Markedaspatrolled}}',
+'markedaspatrollederror-noautopatrol' => 'Used as error message when marking a change as patrolled.
+
+The title for this error message is {{msg-mw|Markedaspatrollederror}}.
+{{Related|Markedaspatrolled}}',
+'markedaspatrollednotify' => 'Notification shown after the user has marked a change as patrolled successfully. Parameters:
+* $1 - the page title
 See also:
-* {{msg-mw|Markedaspatrollederror|title}}
-* {{msg-mw|Markedaspatrollederrortext|text}}',
-'markedaspatrollederror-noautopatrol' => 'Used as error message when marking RecentChange as patrolled.
+* {{msg-mw|Markedaspatrollederrornotify}} - error message on failure',
+'markedaspatrollederrornotify' => 'Notification shown after the user has failed to mark a change as patrolled.
 
 See also:
-* {{msg-mw|Rcpatroldisabled|title}}
-* {{msg-mw|Rcpatroldisabledtext|text}}
-* {{msg-mw|Markedaspatrollederror-noautopatrol}}',
-'markedaspatrollednotify' => 'Notification shown after a change has been marked as patrolled, $1 is the page title',
-'markedaspatrollederrornotify' => 'Notification shown after marking a change as patrolled failed',
+* {{msg-mw|Markedaspatrollednotify}} - notification on success',
 
 # Patrol log
 'patrol-log-page' => '{{doc-logpage}}',
 'patrol-log-header' => 'Text that appears above the log entries on the [[Special:log|patrol log]].',
-'log-show-hide-patrol' => '* $1 is one of {{msg|show}} or {{msg|hide}}',
+'log-show-hide-patrol' => '* $1 is one of {{msg-mw|show}} or {{msg-mw|hide}}',
 
 # Image deletion
 'deletedrevision' => '* $1 - archive name of old image',
@@ -6947,11 +6773,19 @@ See also {{msg-mw|Days-abbrev}}
 
 Part of variable $1 in {{msg-mw|Ago}}
 {{Identical|Day}}',
+'months' => 'Full word for "months". $1 is the number of months.
+
+Part of variable $1 in {{msg-mw|Ago}}',
+'years' => 'Full word for "years". $1 is the number of years.
+
+Part of variable $1 in {{msg-mw|Ago}}',
 'ago' => 'Phrase for indicating how long ago something happened. $1 is something like "3 days 10 hours", taken from these messages:
 *{{msg-mw|Seconds}}
 *{{msg-mw|Minutes}}
 *{{msg-mw|Hours}}
-*{{msg-mw|Days}}',
+*{{msg-mw|Days}}
+*{{msg-mw|Months}}
+*{{msg-mw|Years}}',
 'just-now' => 'Phrase for indicating something happened just now.',
 
 # Bad image list
@@ -7076,28 +6910,12 @@ Similar to "metadata-langitem" but for the case where a multilingual property ha
 'exif-compression' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 This field labels what the compression of the image is. It is commonly seen in Tiff images. It uses messages like {{msg-mw|exif-compression-1}} for the value. http://en.wikipedia.org/wiki/TIFF#TIFF_Compression_Tag has information about this field.
-
-See also:
-* {{msg-mw|Exif-compression}}
-* {{msg-mw|Exif-compression-1}}
-* {{msg-mw|Exif-compression-2}}
-* {{msg-mw|Exif-compression-3}}
-* {{msg-mw|Exif-compression-4}}',
+{{Related|Exif-compression}}',
 'exif-photometricinterpretation' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-orientation' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 For specific information on the orientation tag, see http://sylvana.net/jpegcrop/exif_orientation.html
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-samplesperpixel' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-planarconfiguration' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
@@ -7107,11 +6925,7 @@ See also:
 * {{msg-mw|Exif-planarconfiguration-2}}',
 'exif-ycbcrsubsampling' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-ycbcrpositioning' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
-
-See also:
-* {{msg-mw|Exif-ycbcrpositioning}}
-* {{msg-mw|Exif-ycbcrpositioning-1}}
-* {{msg-mw|Exif-ycbcrpositioning-2}}',
+{{Related|Exif-ycbcrpositioning}}',
 'exif-xresolution' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 This is the horizontal resolution in either dots/inch or dots/cm.',
@@ -7179,16 +6993,7 @@ See also:
 'exif-componentsconfiguration' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 This contains how the information in the picture is stored. This is most commonly Y, Cr, Cb to specify luma, red, blue. RGB is also possible to specify Red, Green, Blue.
-
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-compressedbitsperpixel' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-pixelydimension' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-pixelxdimension' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
@@ -7232,18 +7037,7 @@ Exif is a format for storing metadata in image files. See this [http://en.wikipe
 'exif-exposureprogram' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 How the camera figured out what exposure to use. (If it was manually set, if its optimizing for fast shutter speed, etc).
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}',
+{{Related|Exif-exposureprogram}}',
 'exif-spectralsensitivity' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 How sensitive each channel (colour) of the photo is to light. This tag is almost never used.',
@@ -7273,16 +7067,7 @@ The subject of a photograph is the person or thing on which the camera focuses.
 'exif-meteringmode' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See [http://en.wikipedia.org/wiki/Metering_mode Wikipedia article] on metering mode.
-
-See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
+{{Related|Exif-meteringmode}}',
 'exif-lightsource' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 {{Related|Exif-lightsource}}',
 'exif-flash' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
@@ -7315,23 +7100,13 @@ Indicates the number of pixels in the image width (X) direction per FocalPlaneRe
 'exif-focalplaneresolutionunit' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See also:
-* {{msg-mw|Exif-focalplaneresolutionunit}}
 * {{msg-mw|Exif-focalplaneresolutionunit-2}}',
 'exif-subjectlocation' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 Same as {{msg-mw|exif-subjectarea}} but only ever has two numbers as a value.',
 'exif-exposureindex' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 'exif-sensingmethod' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
-
-See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
+{{Related|Exif-sensingmethod}}',
 'exif-filesource' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 Determines if the image was recorded by a digital camera adhering to DSC standard (which is almost all digital cameras).',
@@ -7353,12 +7128,7 @@ See also:
 'exif-exposuremode' => "Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See also Wikipedia on [http://en.wikipedia.org/wiki/Exposure_(photography) exposure in photography]. This tag shows if the photo's exposure was manually set or automatically determined.
-
-See also:
-* {{msg-mw|Exif-exposuremode}}
-* {{msg-mw|Exif-exposuremode-0}}
-* {{msg-mw|Exif-exposuremode-1}}
-* {{msg-mw|Exif-exposuremode-2}}",
+{{Related|Exif-exposuremode}}",
 'exif-whitebalance' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See also Wikipedia on [http://en.wikipedia.org/wiki/Color_balance color balance].
@@ -7373,133 +7143,39 @@ See also Wikipedia on [http://en.wikipedia.org/wiki/Digital_zoom digital zoom].'
 'exif-focallengthin35mmfilm' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See also Wikipedia on [http://en.wikipedia.org/wiki/Focal_length#In_photography focal length].',
-'exif-scenecapturetype' => 'See also:
-* {{msg-mw|Exif-scenecapturetype}}
-* {{msg-mw|Exif-scenecapturetype-0}}
-* {{msg-mw|Exif-scenecapturetype-1}}
-* {{msg-mw|Exif-scenecapturetype-2}}
-* {{msg-mw|Exif-scenecapturetype-3}}',
+'exif-scenecapturetype' => '{{Related|Exif-scenecapturetype}}',
 'exif-gaincontrol' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
-
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)',
-'exif-contrast' => 'See also:
-* {{msg-mw|Exif-contrast}}
-* {{msg-mw|Exif-contrast-0}}
-* {{msg-mw|Exif-contrast-1}}
-* {{msg-mw|Exif-contrast-2}}',
-'exif-saturation' => 'See also:
-* {{msg-mw|Exif-saturation}}
-* {{msg-mw|Exif-saturation-0}}
-* {{msg-mw|Exif-saturation-1}}
-* {{msg-mw|Exif-saturation-2}}',
-'exif-sharpness' => 'See also:
-* {{msg-mw|Exif-sharpness}}
-* {{msg-mw|Exif-sharpness-0}}
-* {{msg-mw|Exif-sharpness-1}}
-* {{msg-mw|Exif-sharpness-2}}',
-'exif-subjectdistancerange' => 'See also:
-* {{msg-mw|Exif-subjectdistancerange}}
-* {{msg-mw|Exif-subjectdistancerange-0}}
-* {{msg-mw|Exif-subjectdistancerange-1}}
-* {{msg-mw|Exif-subjectdistancerange-2}}
-* {{msg-mw|Exif-subjectdistancerange-3}}',
+{{Related|Exif-gaincontrol}}',
+'exif-contrast' => '{{Related|Exif-contrast}}',
+'exif-saturation' => '{{Related|Exif-saturation}}',
+'exif-sharpness' => '{{Related|Exif-sharpness}}',
+'exif-subjectdistancerange' => '{{Related|Exif-subjectdistancerange}}',
 'exif-imageuniqueid' => 'A unique identifier for the image in the form of a 128-bit hexadecimal string. See http://www.exif.org/Exif2-2.PDF for details on exif properties.',
 'exif-gpsversionid' => 'Version of the GPS IFD used to store location information. This is usually 2.2.0.0',
 'exif-gpslatituderef' => 'In older versions of mediawiki this referred to if the latitude was North or South. This is no longer used in modern versions of mediawiki except for when using a foreign image repository that is using an older version of mediawiki since the information is now contained in {{msg-mw|exif-gpslatitude}}.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}
-See also:
-* {{msg-mw|Exif-gpsdestlatituderef}}
-* {{msg-mw|Exif-gpsdestlongituderef}}
-* {{msg-mw|Exif-gpslatituderef}}
-* {{msg-mw|Exif-gpslongituderef}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpslatitude' => 'The latitude of the location from where the picture was taken from.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpslongituderef' => 'Same as {{msg-mw|exif-gpslatituderef}} but for longitude.
 
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}
-See also:
-* {{msg-mw|Exif-gpsdestlatituderef}}
-* {{msg-mw|Exif-gpsdestlongituderef}}
-* {{msg-mw|Exif-gpslatituderef}}
-* {{msg-mw|Exif-gpslongituderef}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpslongitude' => 'The longitude of the location from where the picture was taken from.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}
-{{Identical|Longitude}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpsaltituderef' => 'No longer used except for when using foreign image repository with old version of mediawiki. 0 for above sea level, 1 for below sea level.',
 'exif-gpsaltitude' => 'Altitude in meters that the image was taken at.',
 'exif-gpstimestamp' => 'Time (does not include date) that GPS measurement was taken, in UTC. Since often this is at the same time as photo was taken, this is sometimes more reliable than {{msg-mw|exif-datetimeoriginal}}.',
 'exif-gpsstatus' => 'See also:
-* {{msg-mw|Exif-gpsstatus}}
 * {{msg-mw|Exif-gpsstatus-a}}
 * {{msg-mw|Exif-gpsstatus-v}}',
 'exif-gpsmeasuremode' => 'Is the measurement 2D (latitude and longitude) or 3D (latitude, longitude, and altitude).
 
 See also:
-* {{msg-mw|Exif-gpsmeasuremode}}
 * {{msg-mw|Exif-gpsmeasuremode-2}}
 * {{msg-mw|Exif-gpsmeasuremode-3}}',
 'exif-gpsdop' => 'How accurate the GPS information is. See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
-'exif-gpsspeedref' => 'See also:
-* {{msg-mw|Exif-gpsspeed}}
-* {{msg-mw|Exif-gpsspeedref}}
-* {{msg-mw|Exif-gpsspeed-k}}
-* {{msg-mw|Exif-gpsspeed-m}}
-* {{msg-mw|Exif-gpsspeed-n}}',
-'exif-gpsspeed' => 'See also:
-* {{msg-mw|Exif-gpsspeed}}
-* {{msg-mw|Exif-gpsspeedref}}
-* {{msg-mw|Exif-gpsspeed-k}}
-* {{msg-mw|Exif-gpsspeed-m}}
-* {{msg-mw|Exif-gpsspeed-n}}',
+{{Related|Exif-gpsdop}}',
+'exif-gpsspeedref' => '{{Related|Exif-gpsspeed}}',
+'exif-gpsspeed' => '{{Related|Exif-gpsspeed}}',
 'exif-gpstrackref' => 'See also:
 * {{msg-mw|Exif-gpstrack}}
 * {{msg-mw|Exif-gpsimgdirection}}
@@ -7524,21 +7200,13 @@ See also:
 * {{msg-mw|Exif-gpsimgdirectionref}}
 * {{msg-mw|Exif-gpsdestbearing}}
 * {{msg-mw|Exif-gpsdestbearingref}}',
-'exif-gpsdestlatituderef' => 'See also:
-* {{msg-mw|Exif-gpsdestlatituderef}}
-* {{msg-mw|Exif-gpsdestlongituderef}}
-* {{msg-mw|Exif-gpslatituderef}}
-* {{msg-mw|Exif-gpslongituderef}}',
+'exif-gpsdestlatituderef' => '{{Related|Exif-gpslatitude}}',
 'exif-gpsdestlatitude' => 'The latitude of the location shown in the picture, if it is different from latitude of the camera location. See {{msg-mw|exif-gpslatitude}}.
-
+{{Related|Exif-gpslatitude}}
 {{Identical|Latitude}}',
-'exif-gpsdestlongituderef' => 'See also:
-* {{msg-mw|Exif-gpsdestlatituderef}}
-* {{msg-mw|Exif-gpsdestlongituderef}}
-* {{msg-mw|Exif-gpslatituderef}}
-* {{msg-mw|Exif-gpslongituderef}}',
+'exif-gpsdestlongituderef' => '{{Related|Exif-gpslatitude}}',
 'exif-gpsdestlongitude' => 'The longitude of the location shown in the picture, if it is different from longitude of the camera location. See {{msg-mw|exif-gpslongitude}}.
-
+{{Related|Exif-gpslatitude}}
 {{Identical|Longitude}}',
 'exif-gpsdestbearingref' => 'See also:
 * {{msg-mw|Exif-gpstrack}}
@@ -7553,19 +7221,8 @@ See also:
 * {{msg-mw|Exif-gpsimgdirectionref}}
 * {{msg-mw|Exif-gpsdestbearingref}}',
 'exif-gpsdestdistanceref' => 'I think "reference" stands for "unit". See {{msg-mw|Exif-gpsspeedref}}
-
-See also:
-* {{msg-mw|Exif-gpsdestdistance}}
-* {{msg-mw|Exif-gpsdestdistanceref}}
-* {{msg-mw|Exif-gpsdestdistance-k}}
-* {{msg-mw|Exif-gpsdestdistance-m}}
-* {{msg-mw|Exif-gpsdestdistance-n}}',
-'exif-gpsdestdistance' => 'See also:
-* {{msg-mw|Exif-gpsdestdistance}}
-* {{msg-mw|Exif-gpsdestdistanceref}}
-* {{msg-mw|Exif-gpsdestdistance-k}}
-* {{msg-mw|Exif-gpsdestdistance-m}}
-* {{msg-mw|Exif-gpsdestdistance-n}}',
+{{Related|Exif-gpsdestdistance}}',
+'exif-gpsdestdistance' => '{{Related|Exif-gpsdestdistance}}',
 'exif-gpsdatestamp' => 'Date (does not generally include time unless recorded in XMP) that GPS measurement was taken, in UTC. Since often this is at the same date as photo was taken, this is sometimes more reliable than {{msg-mw|exif-datetimeoriginal}}.',
 'exif-coordinate-format' => '{{optional}} For formatting GPS latitude coordinates. $1 is degrees, $2 is minutes, $3 is seconds (up to two decimal places), $4 is direction (N, S, W, or E), $5 is coordinate as a single positive or negative real number.',
 'exif-jpegfilecomment' => 'This is not a true exif tag, but the contents of the JPEG COM segment. This often contains a file source, but can potentially contain any comment about the file. This is similar to {{msg-mw|exif-usercomment}}, {{msg-mw|exif-pngfilecomment}}, and {{msg-mw|exif-giffilecomment}}.',
@@ -7602,20 +7259,13 @@ This is who originally owned the image (a person, stock photo agency, etc). This
 {{Identical|Source}}',
 'exif-editstatus' => 'Editorial status of image. This is more intended for use with people making news papers. This denotes whether the image is on the main page, is part of a correction, etc. See 2:07 of http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf',
 'exif-urgency' => 'Urgency. How urgent this image is. 1 is very urgent, 5 is normal, 8 is  very low priority.
-
-See also:
-* {{msg-mw|Exif-urgency}}
-* {{msg-mw|Exif-urgency-normal}}
-* {{msg-mw|Exif-urgency-low}}
-* {{msg-mw|Exif-urgency-high}}
-* {{msg-mw|Exif-urgency-other}}',
+{{Related|Exif-urgency}}',
 'exif-fixtureidentifier' => 'Fixture name. Identifies frequently occuring object data, for example a regular column in a news paper.',
 'exif-locationdest' => 'Full printable name of location.',
 'exif-locationdestcode' => 'Code of location depicted. Typically this is an ISO country code, but the IPTC-iim standard also defines other codes like XSP for outer space. See appendix D (and tag 2:100) of http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf',
 'exif-objectcycle' => 'Time of day that media is intended for. Either morning only, evening only, or all day. Typically only used for news related things that might only be broadcast at a specific time of day.
 
 See also:
-* {{msg-mw|Exif-objectcycle}}
 * {{msg-mw|Exif-objectcycle-a}}
 * {{msg-mw|Exif-objectcycle-p}}
 * {{msg-mw|Exif-objectcycle-b}}',
@@ -7689,30 +7339,10 @@ Note, not all fields are guaranteed to be present, some may be empty strings.',
 *$2 is one of 17 broad categories that the code falls into. For example any code starting with 15 has the contents of {{msg-mw|exif-iimcategory-spo}} for $2.',
 
 # EXIF attributes
-'exif-compression-1' => 'See also:
-* {{msg-mw|Exif-compression}}
-* {{msg-mw|Exif-compression-1}}
-* {{msg-mw|Exif-compression-2}}
-* {{msg-mw|Exif-compression-3}}
-* {{msg-mw|Exif-compression-4}}',
-'exif-compression-2' => 'See also:
-* {{msg-mw|Exif-compression}}
-* {{msg-mw|Exif-compression-1}}
-* {{msg-mw|Exif-compression-2}}
-* {{msg-mw|Exif-compression-3}}
-* {{msg-mw|Exif-compression-4}}',
-'exif-compression-3' => 'See also:
-* {{msg-mw|Exif-compression}}
-* {{msg-mw|Exif-compression-1}}
-* {{msg-mw|Exif-compression-2}}
-* {{msg-mw|Exif-compression-3}}
-* {{msg-mw|Exif-compression-4}}',
-'exif-compression-4' => 'See also:
-* {{msg-mw|Exif-compression}}
-* {{msg-mw|Exif-compression-1}}
-* {{msg-mw|Exif-compression-2}}
-* {{msg-mw|Exif-compression-3}}
-* {{msg-mw|Exif-compression-4}}',
+'exif-compression-1' => '{{Related|Exif-compression}}',
+'exif-compression-2' => '{{Related|Exif-compression}}',
+'exif-compression-3' => '{{Related|Exif-compression}}',
+'exif-compression-4' => '{{Related|Exif-compression}}',
 'exif-compression-5' => '{{optional}}
 Lempel-Ziv & Welch algorithm',
 'exif-compression-6' => '{{optional}}',
@@ -7728,111 +7358,31 @@ Lempel-Ziv & Welch algorithm',
 'exif-photometricinterpretation-2' => '{{optional}}',
 'exif-photometricinterpretation-6' => '{{optional}}',
 
-'exif-orientation-1' => '{{Identical|Normal}}
-0th row: top; 0th column: left
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+'exif-orientation-1' => '0th row: top; 0th column: left
+{{Related|Exif-orientation}}
+{{Identical|Normal}}',
 'exif-orientation-2' => '0th row: top; 0th column: right
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-3' => '0th row: bottom; 0th column: right
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-4' => '0th row: bottom; 0th column: left
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-5' => '0th row: left; 0th column: top
 
 CCW is an abbreviation for counter-clockwise
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-6' => '0th row: right; 0th column: top
 
 CCW is an abbreviation for counter-clockwise.
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-7' => '0th row: right; 0th column: bottom
 
 CW is an abbreviation for clockwise
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 'exif-orientation-8' => '0th row: left; 0th column: bottom
 
 CW is an abbreviation for clockwise.
-
-See also:
-* {{msg-mw|Exif-orientation}}
-* {{msg-mw|Exif-orientation-1}}
-* {{msg-mw|Exif-orientation-2}}
-* {{msg-mw|Exif-orientation-3}}
-* {{msg-mw|Exif-orientation-4}}
-* {{msg-mw|Exif-orientation-5}}
-* {{msg-mw|Exif-orientation-6}}
-* {{msg-mw|Exif-orientation-7}}
-* {{msg-mw|Exif-orientation-8}}',
+{{Related|Exif-orientation}}',
 
 'exif-planarconfiguration-1' => 'See also:
 * {{msg-mw|Exif-planarconfiguration}}
@@ -7860,257 +7410,48 @@ See also:
 * {{msg-mw|Exif-colorspace-1|optional}}
 * {{msg-mw|Exif-colorspace-65535}}',
 
-'exif-componentsconfiguration-0' => 'See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+'exif-componentsconfiguration-0' => '{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-1' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-2' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-3' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-4' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-5' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
+{{Related|Exif-componentsconfiguration}}',
 'exif-componentsconfiguration-6' => '{{optional}}
-See also:
-* {{msg-mw|Exif-componentsconfiguration}}
-* {{msg-mw|Exif-componentsconfiguration-0}}
-* {{msg-mw|Exif-componentsconfiguration-1|optional}}
-* {{msg-mw|Exif-componentsconfiguration-2|optional}}
-* {{msg-mw|Exif-componentsconfiguration-3|optional}}
-* {{msg-mw|Exif-componentsconfiguration-4|optional}}
-* {{msg-mw|Exif-componentsconfiguration-5|optional}}
-* {{msg-mw|Exif-componentsconfiguration-6|optional}}',
-
-'exif-exposureprogram-0' => 'See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}',
-'exif-exposureprogram-1' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
+{{Related|Exif-componentsconfiguration}}',
 
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}",
-'exif-exposureprogram-2' => 'See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}',
+'exif-exposureprogram-0' => '{{Related|Exif-exposureprogram}}',
+'exif-exposureprogram-1' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
+{{Related|Exif-exposureprogram}}",
+'exif-exposureprogram-2' => '{{Related|Exif-exposureprogram}}',
 'exif-exposureprogram-3' => 'One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article for a definition of the term [http://en.wikipedia.org/wiki/Aperture_priority aperture priority].
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}',
+{{Related|Exif-exposureprogram}}',
 'exif-exposureprogram-4' => 'One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article for a definition of the term [http://en.wikipedia.org/wiki/Shutter_priority shutter priority].
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}',
+{{Related|Exif-exposureprogram}}',
 'exif-exposureprogram-5' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}",
+{{Related|Exif-exposureprogram}}",
 'exif-exposureprogram-6' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}",
+{{Related|Exif-exposureprogram}}",
 'exif-exposureprogram-7' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}",
+{{Related|Exif-exposureprogram}}",
 'exif-exposureprogram-8' => "One of the exposure program types in the table of metadata on image description pages. See the Wikipedia article '[http://en.wikipedia.org/wiki/Mode_dial Mode dial]' for an explanation.
-
-See also:
-* {{msg-mw|Exif-exposureprogram}}
-* {{msg-mw|Exif-exposureprogram-0}}
-* {{msg-mw|Exif-exposureprogram-1}}
-* {{msg-mw|Exif-exposureprogram-2}}
-* {{msg-mw|Exif-exposureprogram-3}}
-* {{msg-mw|Exif-exposureprogram-4}}
-* {{msg-mw|Exif-exposureprogram-5}}
-* {{msg-mw|Exif-exposureprogram-6}}
-* {{msg-mw|Exif-exposureprogram-7}}
-* {{msg-mw|Exif-exposureprogram-8}}",
+{{Related|Exif-exposureprogram}}",
 
 'exif-subjectdistance-value' => '$1 is a distance measured in metres. The value can, and usually does, include decimal places.',
 
-'exif-meteringmode-0' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}
+'exif-meteringmode-0' => '{{Related|Exif-meteringmode}}
 {{Identical|Unknown}}',
-'exif-meteringmode-1' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}
+'exif-meteringmode-1' => '{{Related|Exif-meteringmode}}
 {{Identical|Average}}',
-'exif-meteringmode-2' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
-'exif-meteringmode-3' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
-'exif-meteringmode-4' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
-'exif-meteringmode-5' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
-'exif-meteringmode-6' => 'See also:
-* {{msg-mw|Exif-meteringmode}}
-* {{msg-mw|Exif-meteringmode-0}}
-* {{msg-mw|Exif-meteringmode-1}}
-* {{msg-mw|Exif-meteringmode-2}}
-* {{msg-mw|Exif-meteringmode-3}}
-* {{msg-mw|Exif-meteringmode-4}}
-* {{msg-mw|Exif-meteringmode-5}}
-* {{msg-mw|Exif-meteringmode-6}}',
+'exif-meteringmode-2' => '{{Related|Exif-meteringmode}}',
+'exif-meteringmode-3' => '{{Related|Exif-meteringmode}}',
+'exif-meteringmode-4' => '{{Related|Exif-meteringmode}}',
+'exif-meteringmode-5' => '{{Related|Exif-meteringmode}}',
+'exif-meteringmode-6' => '{{Related|Exif-meteringmode}}',
 'exif-meteringmode-255' => '{{Identical|Other}}',
 
 'exif-lightsource-0' => '{{Identical|Unknown}}
@@ -8193,76 +7534,17 @@ See also:
 'exif-flash-function-1' => 'Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].',
 
 'exif-focalplaneresolutionunit-2' => 'See also:
-* {{msg-mw|Exif-focalplaneresolutionunit}}
-* {{msg-mw|Exif-focalplaneresolutionunit-2}}',
+* {{msg-mw|Exif-focalplaneresolutionunit}}',
 
-'exif-sensingmethod-1' => 'See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
-'exif-sensingmethod-2' => 'See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
-'exif-sensingmethod-3' => 'See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
-'exif-sensingmethod-4' => 'See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
+'exif-sensingmethod-1' => '{{Related|Exif-sensingmethod}}',
+'exif-sensingmethod-2' => '{{Related|Exif-sensingmethod}}',
+'exif-sensingmethod-3' => '{{Related|Exif-sensingmethod}}',
+'exif-sensingmethod-4' => '{{Related|Exif-sensingmethod}}',
 'exif-sensingmethod-5' => "''Color sequential'' means, that the three base colors are measured one after another (i.e. the sensor is first measuring red, than green, than blue).
-
-See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}",
-'exif-sensingmethod-7' => 'See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}',
+{{Related|Exif-sensingmethod}}",
+'exif-sensingmethod-7' => '{{Related|Exif-sensingmethod}}',
 'exif-sensingmethod-8' => "''Color sequential'' means, that the three base colors are measured one after another (i.e. the sensor is first measuring red, than green, than blue).
-
-See also:
-* {{msg-mw|Exif-sensingmethod}}
-* {{msg-mw|Exif-sensingmethod-1}}
-* {{msg-mw|Exif-sensingmethod-2}}
-* {{msg-mw|Exif-sensingmethod-3}}
-* {{msg-mw|Exif-sensingmethod-4}}
-* {{msg-mw|Exif-sensingmethod-5}}
-* {{msg-mw|Exif-sensingmethod-7}}
-* {{msg-mw|Exif-sensingmethod-8}}",
+{{Related|Exif-sensingmethod}}",
 
 'exif-filesource-3' => '{{optional}}',
 
@@ -8279,23 +7561,10 @@ See also:
 * {{msg-mw|Exif-customrendered-0}}
 * {{msg-mw|Exif-customrendered-1}}',
 
-'exif-exposuremode-0' => 'See also:
-* {{msg-mw|Exif-exposuremode}}
-* {{msg-mw|Exif-exposuremode-0}}
-* {{msg-mw|Exif-exposuremode-1}}
-* {{msg-mw|Exif-exposuremode-2}}',
-'exif-exposuremode-1' => 'See also:
-* {{msg-mw|Exif-exposuremode}}
-* {{msg-mw|Exif-exposuremode-0}}
-* {{msg-mw|Exif-exposuremode-1}}
-* {{msg-mw|Exif-exposuremode-2}}',
+'exif-exposuremode-0' => '{{Related|Exif-exposuremode}}',
+'exif-exposuremode-1' => '{{Related|Exif-exposuremode}}',
 'exif-exposuremode-2' => "A type of exposure mode shown as part of the metadata on image description pages. The Wikipedia article on [http://en.wikipedia.org/wiki/Bracketing#Exposure_bracketing bracketing] says that 'auto bracket' is a camera exposure setting which automatically takes a series of pictures at slightly different light exposures.
-
-See also:
-* {{msg-mw|Exif-exposuremode}}
-* {{msg-mw|Exif-exposuremode-0}}
-* {{msg-mw|Exif-exposuremode-1}}
-* {{msg-mw|Exif-exposuremode-2}}",
+{{Related|Exif-exposuremode}}",
 
 'exif-whitebalance-0' => 'See also:
 * {{msg-mw|Exif-whitebalance}}
@@ -8306,338 +7575,122 @@ See also:
 * {{msg-mw|Exif-whitebalance-0}}
 * {{msg-mw|Exif-whitebalance-1}}',
 
-'exif-scenecapturetype-0' => 'See also:
-* {{msg-mw|Exif-scenecapturetype}}
-* {{msg-mw|Exif-scenecapturetype-0}}
-* {{msg-mw|Exif-scenecapturetype-1}}
-* {{msg-mw|Exif-scenecapturetype-2}}
-* {{msg-mw|Exif-scenecapturetype-3}}
+'exif-scenecapturetype-0' => '{{Related|Exif-scenecapturetype}}
 {{Identical|Standard}}',
-'exif-scenecapturetype-1' => 'See also:
-* {{msg-mw|Exif-scenecapturetype}}
-* {{msg-mw|Exif-scenecapturetype-0}}
-* {{msg-mw|Exif-scenecapturetype-1}}
-* {{msg-mw|Exif-scenecapturetype-2}}
-* {{msg-mw|Exif-scenecapturetype-3}}',
-'exif-scenecapturetype-2' => 'See also:
-* {{msg-mw|Exif-scenecapturetype}}
-* {{msg-mw|Exif-scenecapturetype-0}}
-* {{msg-mw|Exif-scenecapturetype-1}}
-* {{msg-mw|Exif-scenecapturetype-2}}
-* {{msg-mw|Exif-scenecapturetype-3}}',
-'exif-scenecapturetype-3' => 'See also:
-* {{msg-mw|Exif-scenecapturetype}}
-* {{msg-mw|Exif-scenecapturetype-0}}
-* {{msg-mw|Exif-scenecapturetype-1}}
-* {{msg-mw|Exif-scenecapturetype-2}}
-* {{msg-mw|Exif-scenecapturetype-3}}',
+'exif-scenecapturetype-1' => '{{Related|Exif-scenecapturetype}}',
+'exif-scenecapturetype-2' => '{{Related|Exif-scenecapturetype}}',
+'exif-scenecapturetype-3' => '{{Related|Exif-scenecapturetype}}',
 
 'exif-gaincontrol-0' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
-
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)
+{{Related|Exif-gaincontrol}}
 {{Identical|None}}',
 'exif-gaincontrol-1' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
-
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)',
+{{Related|Exif-gaincontrol}}',
 'exif-gaincontrol-2' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
-
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)',
+{{Related|Exif-gaincontrol}}',
 'exif-gaincontrol-3' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
-
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)',
+{{Related|Exif-gaincontrol}}',
 'exif-gaincontrol-4' => 'Gain amplifies the signal off of the image sensor. Gain turns the brightness level up or down.
+{{Related|Exif-gaincontrol}}',
 
-See also:
-* {{msg-mw|Exif-gaincontrol}}
-* {{msg-mw|Exif-gaincontrol-0}} - no gain at all
-* {{msg-mw|Exif-gaincontrol-1}} - some more brightness
-* {{msg-mw|Exif-gaincontrol-2}} - much more brightness
-* {{msg-mw|Exif-gaincontrol-3}} - some less brightness (seems to be uncommon in photography)
-* {{msg-mw|Exif-gaincontrol-4}} - much less brightness (seems to be uncommon in photography)',
-
-'exif-contrast-0' => 'See also:
-* {{msg-mw|Exif-contrast}}
-* {{msg-mw|Exif-contrast-0}}
-* {{msg-mw|Exif-contrast-1}}
-* {{msg-mw|Exif-contrast-2}}
+'exif-contrast-0' => '{{Related|Exif-contrast}}
 {{Identical|Normal}}',
-'exif-contrast-1' => 'See also:
-* {{msg-mw|Exif-contrast}}
-* {{msg-mw|Exif-contrast-0}}
-* {{msg-mw|Exif-contrast-1}}
-* {{msg-mw|Exif-contrast-2}}
+'exif-contrast-1' => '{{Related|Exif-contrast}}
 {{Identical|Soft}}',
-'exif-contrast-2' => 'See also:
-* {{msg-mw|Exif-contrast}}
-* {{msg-mw|Exif-contrast-0}}
-* {{msg-mw|Exif-contrast-1}}
-* {{msg-mw|Exif-contrast-2}}
+'exif-contrast-2' => '{{Related|Exif-contrast}}
 {{Identical|Hard}}',
 
-'exif-saturation-0' => 'See also:
-* {{msg-mw|Exif-saturation}}
-* {{msg-mw|Exif-saturation-0}}
-* {{msg-mw|Exif-saturation-1}}
-* {{msg-mw|Exif-saturation-2}}
+'exif-saturation-0' => '{{Related|Exif-saturation}}
 {{Identical|Normal}}',
-'exif-saturation-1' => 'See also:
-* {{msg-mw|Exif-saturation}}
-* {{msg-mw|Exif-saturation-0}}
-* {{msg-mw|Exif-saturation-1}}
-* {{msg-mw|Exif-saturation-2}}',
+'exif-saturation-1' => '{{Related|Exif-saturation}}',
 'exif-saturation-2' => 'Color saturation in picture EXIF data
+{{Related|Exif-saturation}}',
 
-See also:
-* {{msg-mw|Exif-saturation}}
-* {{msg-mw|Exif-saturation-0}}
-* {{msg-mw|Exif-saturation-1}}
-* {{msg-mw|Exif-saturation-2}}',
-
-'exif-sharpness-0' => 'See also:
-* {{msg-mw|Exif-sharpness}}
-* {{msg-mw|Exif-sharpness-0}}
-* {{msg-mw|Exif-sharpness-1}}
-* {{msg-mw|Exif-sharpness-2}}
+'exif-sharpness-0' => '{{Related|Exif-sharpness}}
 {{Identical|Normal}}',
-'exif-sharpness-1' => 'See also:
-* {{msg-mw|Exif-sharpness}}
-* {{msg-mw|Exif-sharpness-0}}
-* {{msg-mw|Exif-sharpness-1}}
-* {{msg-mw|Exif-sharpness-2}}
+'exif-sharpness-1' => '{{Related|Exif-sharpness}}
 {{Identical|Soft}}',
-'exif-sharpness-2' => 'See also:
-* {{msg-mw|Exif-sharpness}}
-* {{msg-mw|Exif-sharpness-0}}
-* {{msg-mw|Exif-sharpness-1}}
-* {{msg-mw|Exif-sharpness-2}}
+'exif-sharpness-2' => '{{Related|Exif-sharpness}}
 {{Identical|Hard}}',
 
-'exif-subjectdistancerange-0' => 'See also:
-* {{msg-mw|Exif-subjectdistancerange}}
-* {{msg-mw|Exif-subjectdistancerange-0}}
-* {{msg-mw|Exif-subjectdistancerange-1}}
-* {{msg-mw|Exif-subjectdistancerange-2}}
-* {{msg-mw|Exif-subjectdistancerange-3}}
+'exif-subjectdistancerange-0' => '{{Related|Exif-subjectdistancerange}}
 {{Identical|Unknown}}',
 'exif-subjectdistancerange-1' => 'Macro view is close-up photography. See [http://en.wikipedia.org/wiki/Macro_photography Wikipedia].
-
-See also:
-* {{msg|Exif-subjectdistancerange-0}}
-* {{msg|Exif-subjectdistancerange-1}}
-* {{msg|Exif-subjectdistancerange-2}}
-* {{msg|Exif-subjectdistancerange-3}}',
-'exif-subjectdistancerange-2' => 'See also:
-* {{msg-mw|Exif-subjectdistancerange}}
-* {{msg-mw|Exif-subjectdistancerange-0}}
-* {{msg-mw|Exif-subjectdistancerange-1}}
-* {{msg-mw|Exif-subjectdistancerange-2}}
-* {{msg-mw|Exif-subjectdistancerange-3}}',
-'exif-subjectdistancerange-3' => 'See also:
-* {{msg-mw|Exif-subjectdistancerange}}
-* {{msg-mw|Exif-subjectdistancerange-0}}
-* {{msg-mw|Exif-subjectdistancerange-1}}
-* {{msg-mw|Exif-subjectdistancerange-2}}
-* {{msg-mw|Exif-subjectdistancerange-3}}',
+{{Related|Exif-subjectdistancerange}}',
+'exif-subjectdistancerange-2' => '{{Related|Exif-subjectdistancerange}}',
+'exif-subjectdistancerange-3' => '{{Related|Exif-subjectdistancerange}}',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
 'exif-gpslatitude-n' => 'Very rarely used. Only used when using an old version of Mediawiki as a foreign image repo.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpslatitude-s' => 'Very rarely used. Only used when using an old version of Mediawiki as a foreign image repo.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}',
+{{Related|Exif-gpslatitude}}',
 
 # Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
 'exif-gpslongitude-e' => 'Very rarely used. Only used when using an old version of Mediawiki as a foreign image repo.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}',
+{{Related|Exif-gpslatitude}}',
 'exif-gpslongitude-w' => 'Very rarely used. Only used when using an old version of Mediawiki as a foreign image repo.
-
-See also:
-* {{msg-mw|Exif-gpslatitude}}
-* {{msg-mw|Exif-gpslatituderef}}
-** {{msg-mw|Exif-gpslatitude-n}}
-** {{msg-mw|Exif-gpslatitude-s}}
-* {{msg-mw|Exif-gpslongitude}}
-* {{msg-mw|Exif-gpslongituderef}}
-** {{msg-mw|Exif-gpslongitude-e}}
-** {{msg-mw|Exif-gpslongitude-w}}',
+{{Related|Exif-gpslatitude}}',
 
 # Pseudotags used for GPSAltitudeRef
 'exif-gpsaltitude-above-sealevel' => 'Used as GPS Altitude in Exif data. Parameters:
 * $1 - altitude above sea level (in meters)
 See also:
-* {{msg-mw|Exif-gpsaltitude-above-sealevel}}
 * {{msg-mw|Exif-gpsaltitude-below-sealevel}}',
 'exif-gpsaltitude-below-sealevel' => 'Used as GPS Altitude in Exif data. Parameters:
 * $1 - altitude below sea level (in meters)
 See also:
-* {{msg-mw|Exif-gpsaltitude-above-sealevel}}
-* {{msg-mw|Exif-gpsaltitude-below-sealevel}}',
+* {{msg-mw|Exif-gpsaltitude-above-sealevel}}',
 
 'exif-gpsstatus-a' => 'See also:
 * {{msg-mw|Exif-gpsstatus}}
-* {{msg-mw|Exif-gpsstatus-a}}
 * {{msg-mw|Exif-gpsstatus-v}}',
 'exif-gpsstatus-v' => 'See also:
 * {{msg-mw|Exif-gpsstatus}}
-* {{msg-mw|Exif-gpsstatus-a}}
-* {{msg-mw|Exif-gpsstatus-v}}',
+* {{msg-mw|Exif-gpsstatus-a}}',
 
 'exif-gpsmeasuremode-2' => 'Only latitude and longitude recorded, no altitude.
 
 See also:
 * {{msg-mw|Exif-gpsmeasuremode}}
-* {{msg-mw|Exif-gpsmeasuremode-2}}
 * {{msg-mw|Exif-gpsmeasuremode-3}}',
 'exif-gpsmeasuremode-3' => 'Latitude, longitude, and altitude recorded.
 
 See also:
 * {{msg-mw|Exif-gpsmeasuremode}}
-* {{msg-mw|Exif-gpsmeasuremode-2}}
-* {{msg-mw|Exif-gpsmeasuremode-3}}',
+* {{msg-mw|Exif-gpsmeasuremode-2}}',
 
 # Pseudotags used for GPSSpeedRef
-'exif-gpsspeed-k' => 'See also:
-* {{msg-mw|Exif-gpsspeed}}
-* {{msg-mw|Exif-gpsspeedref}}
-* {{msg-mw|Exif-gpsspeed-k}}
-* {{msg-mw|Exif-gpsspeed-m}}
-* {{msg-mw|Exif-gpsspeed-n}}',
-'exif-gpsspeed-m' => 'See also:
-* {{msg-mw|Exif-gpsspeed}}
-* {{msg-mw|Exif-gpsspeedref}}
-* {{msg-mw|Exif-gpsspeed-k}}
-* {{msg-mw|Exif-gpsspeed-m}}
-* {{msg-mw|Exif-gpsspeed-n}}',
+'exif-gpsspeed-k' => '{{Related|Exif-gpsspeed}}',
+'exif-gpsspeed-m' => '{{Related|Exif-gpsspeed}}',
 'exif-gpsspeed-n' => "Knots: ''Knot'' is a unit of speed on water used for ships, etc., equal to one nautical mile per hour.
-
-See also:
-* {{msg-mw|Exif-gpsspeed}}
-* {{msg-mw|Exif-gpsspeedref}}
-* {{msg-mw|Exif-gpsspeed-k}}
-* {{msg-mw|Exif-gpsspeed-m}}
-* {{msg-mw|Exif-gpsspeed-n}}",
+{{Related|Exif-gpsspeed}}",
 
 # Pseudotags used for GPSDestDistanceRef
-'exif-gpsdestdistance-k' => 'See also:
-* {{msg-mw|Exif-gpsdestdistance}}
-* {{msg-mw|Exif-gpsdestdistanceref}}
-* {{msg-mw|Exif-gpsdestdistance-k}}
-* {{msg-mw|Exif-gpsdestdistance-m}}
-* {{msg-mw|Exif-gpsdestdistance-n}}',
-'exif-gpsdestdistance-m' => 'See also:
-* {{msg-mw|Exif-gpsdestdistance}}
-* {{msg-mw|Exif-gpsdestdistanceref}}
-* {{msg-mw|Exif-gpsdestdistance-k}}
-* {{msg-mw|Exif-gpsdestdistance-m}}
-* {{msg-mw|Exif-gpsdestdistance-n}}',
-'exif-gpsdestdistance-n' => 'See also:
-* {{msg-mw|Exif-gpsdestdistance}}
-* {{msg-mw|Exif-gpsdestdistanceref}}
-* {{msg-mw|Exif-gpsdestdistance-k}}
-* {{msg-mw|Exif-gpsdestdistance-m}}
-* {{msg-mw|Exif-gpsdestdistance-n}}',
-
-'exif-gpsdop-excellent' => '$1 is the actual HDOP/PDOP value (less than or equal to 2 for excellent). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
-'exif-gpsdop-good' => '$1 is the actual HDOP/PDOP value (2-5 for good). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
-'exif-gpsdop-moderate' => '$1 is the actual HDOP/PDOP value (5-10 for moderate). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
-'exif-gpsdop-fair' => '$1 is the actual HDOP/PDOP value (10-20 for fair). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
-'exif-gpsdop-poor' => '$1 is the actual HDOP/PDOP value (greater than 20 for poor). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-
-See also:
-* {{msg-mw|Exif-gpsdop}}
-* {{msg-mw|Exif-gpsdop-excellent}}
-* {{msg-mw|Exif-gpsdop-good}}
-* {{msg-mw|Exif-gpsdop-moderate}}
-* {{msg-mw|Exif-gpsdop-fair}}
-* {{msg-mw|Exif-gpsdop-poor}}',
+'exif-gpsdestdistance-k' => '{{Related|Exif-gpsdestdistance}}',
+'exif-gpsdestdistance-m' => '{{Related|Exif-gpsdestdistance}}',
+'exif-gpsdestdistance-n' => '{{Related|Exif-gpsdestdistance}}',
+
+'exif-gpsdop-excellent' => 'Parameters:
+* $1 - the actual HDOP/PDOP value (less than or equal to 2 for excellent). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+{{Related|Exif-gpsdop}}',
+'exif-gpsdop-good' => 'Parameters:
+* $1 - the actual HDOP/PDOP value (2-5 for good). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+{{Related|Exif-gpsdop}}',
+'exif-gpsdop-moderate' => 'Parameters:
+* $1 - the actual HDOP/PDOP value (5-10 for moderate). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+{{Related|Exif-gpsdop}}',
+'exif-gpsdop-fair' => 'Parameters:
+* $1 - the actual HDOP/PDOP value (10-20 for fair). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+{{Related|Exif-gpsdop}}',
+'exif-gpsdop-poor' => 'Parameters:
+* $1 - the actual HDOP/PDOP value (greater than 20 for poor). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+{{Related|Exif-gpsdop}}',
 
 'exif-objectcycle-a' => 'Morning only (a is for AM).
 
 See also:
 * {{msg-mw|Exif-objectcycle}}
-* {{msg-mw|Exif-objectcycle-a}}
 * {{msg-mw|Exif-objectcycle-p}}
 * {{msg-mw|Exif-objectcycle-b}}',
 'exif-objectcycle-p' => 'Evening only (p is for PM).
@@ -8645,37 +7698,25 @@ See also:
 See also:
 * {{msg-mw|Exif-objectcycle}}
 * {{msg-mw|Exif-objectcycle-a}}
-* {{msg-mw|Exif-objectcycle-p}}
 * {{msg-mw|Exif-objectcycle-b}}',
 'exif-objectcycle-b' => 'Both morning and evening (b is for both).
 
 See also:
 * {{msg-mw|Exif-objectcycle}}
 * {{msg-mw|Exif-objectcycle-a}}
-* {{msg-mw|Exif-objectcycle-p}}
-* {{msg-mw|Exif-objectcycle-b}}',
+* {{msg-mw|Exif-objectcycle-p}}',
 
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'See also:
-* {{msg-mw|Exif-gpsdirection-t}}
 * {{msg-mw|Exif-gpsdirection-m}}',
 'exif-gpsdirection-m' => 'See also:
-* {{msg-mw|Exif-gpsdirection-t}}
-* {{msg-mw|Exif-gpsdirection-m}}',
+* {{msg-mw|Exif-gpsdirection-t}}',
 
 'exif-ycbcrpositioning-1' => 'If the Chrominance samples are centered with respect to the Luminance samples.
-
-See also:
-* {{msg-mw|Exif-ycbcrpositioning}}
-* {{msg-mw|Exif-ycbcrpositioning-1}}
-* {{msg-mw|Exif-ycbcrpositioning-2}}',
+{{Related|Exif-ycbcrpositioning}}',
 'exif-ycbcrpositioning-2' => 'If the Chrominance samples are on top of to the Luminance samples.
 See: http://www.awaresystems.be/imaging/tiff/tifftags/ycbcrpositioning.html
-
-See also:
-* {{msg-mw|Exif-ycbcrpositioning}}
-* {{msg-mw|Exif-ycbcrpositioning-1}}
-* {{msg-mw|Exif-ycbcrpositioning-2}}',
+{{Related|Exif-ycbcrpositioning}}',
 
 'exif-dc-contributor' => 'People who helped make the resource, but are secondary in contribution to the author.',
 'exif-dc-coverage' => '"The extent or scope of the resource" see dc:coverage in http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf',
@@ -8717,36 +7758,16 @@ $1 is maxaperture in APEX units (APEX aperture units = 2log<sub>2</sub>(f-number
 
 'exif-urgency-normal' => 'Parameters:
 * $1 - numeric priority (aka 5 for normal)
-See also:
-* {{msg-mw|Exif-urgency}}
-* {{msg-mw|Exif-urgency-normal}}
-* {{msg-mw|Exif-urgency-low}}
-* {{msg-mw|Exif-urgency-high}}
-* {{msg-mw|Exif-urgency-other}}',
+{{Related|Exif-urgency}}',
 'exif-urgency-low' => 'Parameters:
 * $1 - numeric priority (6-8 for low)
-See also:
-* {{msg-mw|Exif-urgency}}
-* {{msg-mw|Exif-urgency-normal}}
-* {{msg-mw|Exif-urgency-low}}
-* {{msg-mw|Exif-urgency-high}}
-* {{msg-mw|Exif-urgency-other}}',
+{{Related|Exif-urgency}}',
 'exif-urgency-high' => 'Parameters:
 * $1 - numeric priority (1-4 for high)
-See also:
-* {{msg-mw|Exif-urgency}}
-* {{msg-mw|Exif-urgency-normal}}
-* {{msg-mw|Exif-urgency-low}}
-* {{msg-mw|Exif-urgency-high}}
-* {{msg-mw|Exif-urgency-other}}',
+{{Related|Exif-urgency}}',
 'exif-urgency-other' => 'Parameters:
 * $1 - numeric priority. Most specs define 0 and 9 to either be reserved or not allowed. However the exiftool documentation defines 0 to be reserved and 9 to be user-defined priority.
-See also:
-* {{msg-mw|Exif-urgency}}
-* {{msg-mw|Exif-urgency-normal}}
-* {{msg-mw|Exif-urgency-low}}
-* {{msg-mw|Exif-urgency-high}}
-* {{msg-mw|Exif-urgency-other}}',
+{{Related|Exif-urgency}}',
 
 # External editor support
 'edit-externally' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
@@ -8884,6 +7905,7 @@ Most languages use a space, but some Asian languages, such as Thai and Chinese,
 'ellipsis' => '{{optional}}',
 'percent' => '{{optional}}',
 'parentheses' => '{{optional}}',
+'brackets' => '{{Optional}}',
 
 # Multipage image navigation
 'imgmultipageprev' => '{{Identical|Previous page}}',
@@ -9023,10 +8045,21 @@ See also:
 '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}}.',
-'watchlisttools-edit' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-view}} and {{msg|watchlisttools-raw}}.',
-'watchlisttools-raw' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-view}} and {{msg|watchlisttools-edit}}.
+'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title.
+
+See also:
+* {{msg|watchlisttools-edit}}
+* {{msg|watchlisttools-raw}}',
+'watchlisttools-edit' => '[[Special:Watchlist]]: Navigation link under the title.
 
+See also:
+* {{msg|watchlisttools-view}}
+* {{msg|watchlisttools-raw}}',
+'watchlisttools-raw' => '[[Special:Watchlist]]: Navigation link under the title.
+
+See also:
+* {{msg-mw|watchlisttools-view}}
+* {{msg-mw|watchlisttools-edit}}
 {{Identical|Edit raw watchlist}}',
 
 # Iranian month names
@@ -9196,8 +8229,10 @@ This message is followed by the list of installed software (MediaWiki, PHP and M
 'version-entrypoints-header-entrypoint' => 'Header for the first column in the entry points table on [[Special:Version]].
 See also {{msg-mw|Version-entrypoints}}',
 'version-entrypoints-header-url' => 'Header for the second column in the entry points table on [[Special:Version]].',
-'version-entrypoints-articlepath' => 'A short description of the article path entry point. Links to the mediawiki.org documentation page for $wgArticlePath.',
-'version-entrypoints-scriptpath' => 'A short description of the script path entry point. Links to the mediawiki.org documentation page for $wgScriptPath.',
+'version-entrypoints-articlepath' => '{{Optional}}
+A short description of the article path entry point. Links to the mediawiki.org documentation page for $wgArticlePath.',
+'version-entrypoints-scriptpath' => '{{Optional}}
+A short description of the script path entry point. Links to the mediawiki.org documentation page for $wgScriptPath.',
 
 # Special:FilePath
 'filepath' => 'Legend of fieldset around input box in [[Special:FilePath]].',
@@ -9314,7 +8349,8 @@ Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a
 'dberr-info' => 'This message does not allow any wiki nor html markup.
 * $1 - database server name',
 'dberr-usegoogle' => 'This message does not allow any wiki nor html markup.',
-'dberr-outofdate' => "In this sentence, '''their''' indexes refers to '''Google's''' indexes. This message does not allow any wiki nor html markup.",
+'dberr-outofdate' => "{{doc-singularthey}}
+In this sentence, '''their''' indexes refers to '''Google's''' indexes. This message does not allow any wiki nor html markup.",
 'dberr-cachederror' => 'Used as error message at the bottom of the page.',
 
 # HTML forms
@@ -9479,6 +8515,28 @@ $4 is the name of the target user.',
 
 $4 is the gender of the target user.',
 'newuserlog-byemail' => 'Used as reason in [[Special:Log/newusers]].',
+'logentry-rights-rights' => '*$1 - username
+*$2 - (see below)
+*$3 - username
+*$4 - list of user groups or {{msg-mw|Rightsnone}}
+*$5 - list of user groups or {{msg-mw|Rightsnone}}
+----
+{{Logentry}}',
+'logentry-rights-rights-legacy' => '*$1 - username
+*$2 - (see below)
+*$3 - username
+----
+{{Logentry}}',
+'logentry-rights-autopromote' => '*$1 - username
+*$2 - (see below)
+*$3 - (see below)
+*$4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}
+*$5 - comma separated list of new user groups
+----
+{{Logentry}}',
+'rightsnone' => 'Default rights for registered users.
+
+{{Identical|None}}',
 
 # Feedback
 'feedback-bugornote' => 'When feedback dialog box is opened, this introductory message in small print explains the options to report a bug or add simple feedback. We expect that people in a hurry will not read this.',
@@ -9560,86 +8618,14 @@ $4 is the gender of the target user.',
 'api-error-verification-error' => 'The word "extension" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.',
 
 # Durations
-'duration-seconds' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-minutes' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-hours' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-days' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-weeks' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-years' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-decades' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-centuries' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
-'duration-millennia' => '* {{msg-mw|Duration-seconds}}
-* {{msg-mw|Duration-minutes}}
-* {{msg-mw|Duration-hours}}
-* {{msg-mw|Duration-days}}
-* {{msg-mw|Duration-weeks}}
-* {{msg-mw|Duration-years}}
-* {{msg-mw|Duration-decades}}
-* {{msg-mw|Duration-centuries}}
-* {{msg-mw|Duration-millennia}}',
+'duration-seconds' => '{{Related|Duration}}',
+'duration-minutes' => '{{Related|Duration}}',
+'duration-hours' => '{{Related|Duration}}',
+'duration-days' => '{{Related|Duration}}',
+'duration-weeks' => '{{Related|Duration}}',
+'duration-years' => '{{Related|Duration}}',
+'duration-decades' => '{{Related|Duration}}',
+'duration-centuries' => '{{Related|Duration}}',
+'duration-millennia' => '{{Related|Duration}}',
 
 );
index b376a00..c31b6c9 100644 (file)
@@ -1511,12 +1511,13 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'right-sendemail' => 'Huk ruraqkunaman e-chaskita kachay',
 'right-passwordreset' => 'Yaykuna rima kutichina e-chaskikunata qhaway',
 
+# Special:Log/newusers
+'newuserlogpage' => "Rakiquna kamariy hallch'a",
+'newuserlogpagetext' => "Kayqa ruraqkunap rakiqunankunata kamariymanta hallch'am.",
+
 # User rights log
 'rightslog' => 'Ruraqpa hayñinkunap hukyasqankuna',
 'rightslogtext' => "Kayqa hayñi hukchasqa hallch'aymi.",
-'rightslogentry' => 'hukchan $1-pa hayñinkunata $2-manta $3-man',
-'rightslogentry-autopromote' => 'kikinmanta $2-manta $3-manmi ñawpanchisqa',
-'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => "kay p'anqata ñawiriy",
@@ -2128,10 +2129,6 @@ Q\'imichisqa tantari qillqa: <code>$1</code> (maskaspaykiqa kaykunamanta ama may
 'activeusers-hidesysops' => 'Kamachiqkunata pakay',
 'activeusers-noresult' => 'Ruraqkunataqa manam tarinichu.',
 
-# Special:Log/newusers
-'newuserlogpage' => "Rakiquna kamariy hallch'a",
-'newuserlogpagetext' => "Kayqa ruraqkunap rakiqunankunata kamariymanta hallch'am.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Ruraq huñup hayñinkuna',
 'listgrouprights-summary' => "Kay qatiq sutisuyupiqa kay wikipi sut'ichasqa ruraq huñukunatam, kikinpa chayamuna hayñinkunatawan rikunki.
@@ -2255,6 +2252,8 @@ $UNWATCHURL
 
 Yanapasunaykipaq:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'kamarirqan',
+'changed' => 'hukchasqa',
 
 # Delete
 'deletepage' => "Kay p'anqata qulluy",
@@ -3753,6 +3752,7 @@ Rikchakunatataq hunt'a ch'irkukupim rikunki. Huk willañiqi llayakunaqa tantapus
 'logentry-newusers-create2' => '$1 sutiyuq ruraqqa rakiqunatam kamarin $3',
 'logentry-newusers-autocreate' => '$1 sutiyuq rakiqunaqa kikinmanta kamarisqam',
 'newuserlog-byemail' => 'e-chaskiwan kachasqa yaykuna rima',
+'rightsnone' => '(-)',
 
 # Feedback
 'feedback-bugornote' => "Allwiyapi sasachakuymanta imaymanachanta willayta munaspaykiqa, [\$1 pantasqamanta willay].
index 9cc078e..79dbea3 100644 (file)
@@ -379,6 +379,9 @@ Lezenda: '''({{int:cur}})''' = difarenzi cun la versiòn d'adès; '''({{int:last
 
 'grouppage-sysop' => '{{ns:project}}:Aministradór',
 
+# Special:Log/newusers
+'newuserlogpage' => "Regèstar d'j nov",
+
 # User rights log
 'rightslog' => "Dirètt d'j navigador",
 
@@ -470,9 +473,6 @@ $1 {{PLURAL:$1|elemént|elemént}}',
 # Special:LinkSearch
 'linksearch' => 'Ghènz int ê web',
 
-# Special:Log/newusers
-'newuserlogpage' => "Regèstar d'j nov",
-
 # Special:ListGroupRights
 'listgrouprights-members' => "(Lèsta d'j mèmbar)",
 
index 072b14a..d9b8e65 100644 (file)
@@ -1353,15 +1353,13 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'right-sendemail' => 'Trametter e-mails ad auters utilisaders',
 'right-passwordreset' => "Vesair l'e-mail per redefinir pleds-clav",
 
+# Special:Log/newusers
+'newuserlogpage' => "Log d'utilisaders creads",
+'newuserlogpagetext' => "Quai è il log dals contos d'utilisader ch'èn vegnids creads.",
+
 # User rights log
 'rightslog' => "Log dals dretgs d'utilisader",
 'rightslogtext' => "Quai è il log da las midadas en ils dretgs d'utilisaders.",
-'rightslogentry' => 'midar la commembranza da $1 davent da $2 a $3',
-'rightslogentry-autopromote' => 'è vegnì promovì automaticamain da $2 $3',
-'logentry-rights-rights' => '$1 ha midà la commembranza da gruppas per $3 da $4 a $5',
-'logentry-rights-rights-legacy' => '$1 ha midà la commembranza da gruppas per $3',
-'logentry-rights-autopromote' => '$1 è vegnì promovì automaticamain da $4 a $5',
-'rightsnone' => '(nagins)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leger questa pagina',
@@ -2006,10 +2004,6 @@ Dovra almain ina top-level domain, per exempel "*.org".<br />
 'activeusers-hidesysops' => 'Zuppentar administraturs',
 'activeusers-noresult' => 'Chattà nagins utilisaders.',
 
-# Special:Log/newusers
-'newuserlogpage' => "Log d'utilisaders creads",
-'newuserlogpagetext' => "Quai è il log dals contos d'utilisader ch'èn vegnids creads.",
-
 # Special:ListGroupRights
 'listgrouprights' => "Dretgs da las gruppas d'utilisaders",
 'listgrouprights-summary' => "Sutvart vegn mussada ina glista da las gruppas d'utilisaders sin questa wiki cun ils dretgs d'access associads.
@@ -2145,6 +2139,8 @@ $UNWATCHURL
 
 Resuns ed agid chattas qua:
 {{fullurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creada',
+'changed' => 'midada',
 
 # Delete
 'deletepage' => 'Stizzar la pagina',
@@ -3731,6 +3727,10 @@ Questa pagina ha actualmain difficultads tecnicas.',
 'logentry-newusers-create2' => 'Il conto $3 è vegnì creà da $1',
 'logentry-newusers-autocreate' => 'Il conto $1 è vegnì creà automaticamain',
 'newuserlog-byemail' => 'tramess il pled-clav per e-mail',
+'logentry-rights-rights' => '$1 ha midà la commembranza da gruppas per $3 da $4 a $5',
+'logentry-rights-rights-legacy' => '$1 ha midà la commembranza da gruppas per $3',
+'logentry-rights-autopromote' => '$1 è vegnì promovì automaticamain da $4 a $5',
+'rightsnone' => '(nagins)',
 
 # Feedback
 'feedback-bugornote' => 'Sche ti vuls descriver detagliadamain in problem techic, lura [$1 rapporta in bug].
index e570c3f..a8cef54 100644 (file)
@@ -434,6 +434,7 @@ pe titlul secțiunii (JavaScript)',
 'newwindow' => '(se deschide într-o fereastră nouă)',
 'cancel' => 'Revocare',
 'moredotdotdot' => 'Mai mult…',
+'morenotlisted' => 'Mai multe nu sunt enumerate...',
 'mypage' => 'Pagină',
 'mytalk' => 'Discuții',
 'anontalk' => 'Discuția pentru această adresă IP',
@@ -807,6 +808,7 @@ Vă rugăm să așteptați până să mai încercați.',
 # E-mail sending
 'php-mail-error-unknown' => 'Eroare necunoscută în funcția PHP mail()',
 'user-mail-no-addy' => 'S-a încercat trimiterea e-mailului fără o adresă de e-mail.',
+'user-mail-no-body' => 'S-a încercat trimiterea unui e-mail fără conținut sau nejustificat de scurt.',
 
 # Change password dialog
 'resetpass' => 'Modifică parola',
@@ -1600,15 +1602,13 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'right-sendemail' => 'Trimite e-mail altor utilizatori',
 'right-passwordreset' => 'Vizualizează e-mailurile de reinițializare a parolelor',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Jurnal utilizatori noi',
+'newuserlogpagetext' => 'Acesta este jurnalul creărilor conturilor de utilizator.',
+
 # User rights log
 'rightslog' => 'Jurnal permisiuni de utilizator',
 'rightslogtext' => 'Acest jurnal cuprinde modificările permisiunilor utilizatorilor.',
-'rightslogentry' => 'a schimbat permisiunile pentru $1 de la $2 la $3',
-'rightslogentry-autopromote' => 'a fost promovat în mod automat de la $2 la $3',
-'logentry-rights-rights' => '$1 a schimbat apartenența la grup pentru $3 de la $4 la $5',
-'logentry-rights-rights-legacy' => '$1 a schimbat apartenența la grup pentru $3',
-'logentry-rights-autopromote' => '$1 a fost promovat în mod automat de la $4 la $5',
-'rightsnone' => '(niciunul)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'citiți această pagină',
@@ -2257,10 +2257,6 @@ Necesită cel puțin un domeniu de nivel superior, cum ar fi „*.org”.<br />
 'activeusers-hidesysops' => 'Ascunde administratorii',
 'activeusers-noresult' => 'Niciun utilizator găsit.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Jurnal utilizatori noi',
-'newuserlogpagetext' => 'Acesta este jurnalul creărilor conturilor de utilizator.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Permisiuni grupuri de utilizatori',
 'listgrouprights-summary' => 'Mai jos se află o listă a grupurilor de utilizatori definite în acest wiki, împreună cu permisiunile de acces asociate.
@@ -2394,6 +2390,8 @@ $UNWATCHURL
 
 Asistență și suport:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creată',
+'changed' => 'modificată',
 
 # Delete
 'deletepage' => 'Șterge pagina',
@@ -2462,6 +2460,8 @@ Consultați [[Special:ProtectedPages|indexul paginilor protejate]] pentru o list
 'prot_1movedto2' => 'a mutat [[$1]] la [[$2]]',
 'protect-badnamespace-title' => 'Spațiu de nume neprotejabil',
 'protect-badnamespace-text' => 'Paginile din acest spațiu de nume nu pot fi protejate.',
+'protect-norestrictiontypes-text' => 'Această pagină nu poate fi protejată întrucât nu există niciun tip de restricție disponibil.',
+'protect-norestrictiontypes-title' => 'Pagină neprotejabilă',
 'protect-legend' => 'Confirmă protejare',
 'protectcomment' => 'Motiv:',
 'protectexpiry' => 'Expiră:',
@@ -3130,6 +3130,7 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'pageinfo-magic-words' => '{{PLURAL:$1|Cuvânt magic|Cuvinte magice}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categorie ascunsă|Categorii ascunse}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Format inclus|Formate incluse}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pagină transclusă|Pagini transcluse}} din ($1)',
 'pageinfo-toolboxlink' => 'Informații despre pagină',
 'pageinfo-redirectsto' => 'Redirecționează către',
 'pageinfo-redirectsto-info' => 'info',
@@ -3138,6 +3139,10 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'pageinfo-protect-cascading' => 'Protecțiile provin în cascadă de aici',
 'pageinfo-protect-cascading-yes' => 'Da',
 'pageinfo-protect-cascading-from' => 'Protecțiile provin în cascadă de la',
+'pageinfo-category-info' => 'Informații despre categorie',
+'pageinfo-category-pages' => 'Număr de pagini',
+'pageinfo-category-subcats' => 'Număr de subcategorii',
+'pageinfo-category-files' => 'Număr de fișiere',
 
 # Skin names
 'skinname-standard' => 'Clasic',
@@ -3226,6 +3231,8 @@ Executându-l, sistemul dvs. poate fi compromis.",
 'minutes' => '{{PLURAL:$1|un minut|$1 minute|$1 de minute}}',
 'hours' => '{{PLURAL:$1|o oră|$1 ore|$1 de ore}}',
 'days' => '{{PLURAL:$1|o zi|$1 zile|$1 de zile}}',
+'months' => '{{PLURAL:$1|$1 lună|$1 luni|$1 de luni}}',
+'years' => '{{PLURAL:$1|$1 an|$1 ani|$1 de ani}}',
 'ago' => '$1 în urmă',
 'just-now' => 'Chiar acum',
 
@@ -3976,6 +3983,10 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 'logentry-newusers-create2' => 'Contul de utilizator $3 a fost creat de către $1',
 'logentry-newusers-autocreate' => 'Contul $1 a fost creat în mod automat',
 'newuserlog-byemail' => 'parola trimisă prin e-mail',
+'logentry-rights-rights' => '$1 a schimbat apartenența la grup pentru $3 de la $4 la $5',
+'logentry-rights-rights-legacy' => '$1 a schimbat apartenența la grup pentru $3',
+'logentry-rights-autopromote' => '$1 a fost promovat în mod automat de la $4 la $5',
+'rightsnone' => '(niciunul)',
 
 # Feedback
 'feedback-bugornote' => 'Dacă sunteți pregătit să descrieți o problemă tehnică în detaliu vă rugăm să [$1 raportați un bug].
diff --git a/languages/messages/MessagesRoa_rup.php b/languages/messages/MessagesRoa_rup.php
deleted file mode 100644 (file)
index d05aa0c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/** Aromanian (Armãneashce)
- *
- * ISO 639-3 code 'rup' should be used. This is code is maintained for backward
- * compatilibity.
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- */
-
-$fallback = 'rup';
index 6221bcc..5cec379 100644 (file)
@@ -163,6 +163,7 @@ $messages = array(
 'newwindow' => "(iapre jndr'à 'na fenestra nova)",
 'cancel' => 'Scangìlle',
 'moredotdotdot' => 'De cchiù...',
+'morenotlisted' => "Otre non jndr'à l'elenghe...",
 'mypage' => "'A pàgena meje",
 'mytalk' => "'Ngazzaminde mie",
 'anontalk' => "'Ngazzaminde pe quiste IP",
@@ -556,6 +557,7 @@ Pe piacere vide c'aspitte 'nu picche de timbe apprime de pruvà 'n'otra vote.",
 # E-mail sending
 'php-mail-error-unknown' => "Errore scanusciute jndr'à funzione PHP mail()",
 'user-mail-no-addy' => "E' pruvate a mannà 'na mail senze 'u 'ndirizze mail",
+'user-mail-no-body' => "Pruvate a mannà 'na mail cu 'nu cuèrpe vacande o troppe curte.",
 
 # Change password dialog
 'resetpass' => "Cange 'a password",
@@ -1365,15 +1367,13 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'right-sendemail' => "Manne 'a mail a otre utinde",
 'right-passwordreset' => "Vide l'e-mail de azzeramende d'a passuord",
 
+# Special:Log/newusers
+'newuserlogpage' => 'Archivije de ccreazione de le utinde',
+'newuserlogpagetext' => "Quiste ète l'archivije de le creazziune de l'utinde.",
+
 # User rights log
 'rightslog' => "Archivie de le diritte de l'utende",
 'rightslogtext' => "Quiste jè 'n'archivije pe le cangiaminde de le deritte de l'utinde.",
-'rightslogentry' => "membre d'u gruppe cangete pe $1 da $2 a $3",
-'rightslogentry-autopromote' => 'ha state promosse automaticamende da $2 a $3',
-'logentry-rights-rights' => "$1 membre d'u gruppe cangiate pe $3 da $4 a $5",
-'logentry-rights-rights-legacy' => "$1 ave cangiate 'u membre d'u gruppe pe $3",
-'logentry-rights-autopromote' => '$1 ha state promosse automaticamende da $4 a $5',
-'rightsnone' => '(ninde)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ligge sta pàgene',
@@ -2037,10 +2037,6 @@ Onne abbesogne almene de \'nu dominie de levèlle ierte, pe esembie "*.org". <br
 'activeusers-hidesysops' => 'Scunne le amministrature',
 'activeusers-noresult' => 'Nisciune utende acchiate.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Archivije de ccreazione de le utinde',
-'newuserlogpagetext' => "Quiste ète l'archivije de le creazziune de l'utinde.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Deritte de le gruppe utinde',
 'listgrouprights-summary' => "'A liste ca ste vide ète 'na liste de le gruppe utinde ccreiate sus a sta Uicchi, cu le lore deritte d'accesse associate.
@@ -2179,6 +2175,8 @@ Pe scangellà 'a pàgene da 'a liste de le pàggene condrollate, vè vide
 
 Segnalaziune e otre assistenze:
 {{canonicalurl:{{MediaWiki:Helppage}}}}",
+'created' => 'ccrejete',
+'changed' => 'cangete',
 
 # Delete
 'deletepage' => "Scangille 'a pàgene",
@@ -2252,6 +2250,8 @@ Vide 'a [[Special:ProtectedPages|liste de le pàggene prutette]] pa liste de le
 'prot_1movedto2' => "[[$1]] spustete jndr'à [[$2]]",
 'protect-badnamespace-title' => 'Namespace none proteggibbele',
 'protect-badnamespace-text' => "Le pàggene jndr'à stu namespace non ge ponne essere prutette.",
+'protect-norestrictiontypes-text' => 'Sta pàggene non ge pò essere protette purcé non ge stonne tipe de restriziune disponibbile.',
+'protect-norestrictiontypes-title' => 'Pàgene non proteggibbele',
 'protect-legend' => "Conferme 'a protezione",
 'protectcomment' => 'Mutive:',
 'protectexpiry' => 'More:',
@@ -2953,6 +2953,7 @@ Stu fatte ha state causate da 'nu collegamende a 'nu site esterne ca appartene a
 'pageinfo-magic-words' => '{{PLURAL:$1|Parole|Parole}} maggiche ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categorije|Categorije}} scunnute ($1)',
 'pageinfo-templates' => 'Esclude {{PLURAL:$1|template|template}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pàgene|Pàggene}} escluse sus a ($1)',
 'pageinfo-toolboxlink' => "'Mbormaziune d'a pagene",
 'pageinfo-redirectsto' => 'Reinderizze a',
 'pageinfo-redirectsto-info' => "'Mbormazione",
@@ -2961,6 +2962,10 @@ Stu fatte ha state causate da 'nu collegamende a 'nu site esterne ca appartene a
 'pageinfo-protect-cascading' => 'Protezziune vonne a cascate da aqquà',
 'pageinfo-protect-cascading-yes' => 'Sine',
 'pageinfo-protect-cascading-from' => 'Le protezziune sò a cascate da',
+'pageinfo-category-info' => "'Mbormaziune sus a 'a categorije",
+'pageinfo-category-pages' => 'Numere de pàggene',
+'pageinfo-category-subcats' => 'Numere de sottocategorije',
+'pageinfo-category-files' => 'Numere de file',
 
 # Skin names
 'skinname-standard' => 'Classeche',
@@ -3054,6 +3059,8 @@ Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
 'minutes' => '{{PLURAL:$1|$1 minute|$1 minute}}',
 'hours' => '{{PLURAL: $1|$1ore|$1 ore}}',
 'days' => '{{PLURAL: $1|$1 sciurne|$1 sciurne}}',
+'months' => '{{PLURAL:$1|$1 mese|$1 mise}}',
+'years' => '{{PLURAL:$1|$1 anne}}',
 'ago' => '$1 fà',
 'just-now' => 'mò mò',
 
@@ -4003,6 +4010,10 @@ Le immaggine sonde fatte vedè jndr'à resoluziona megghie, otre tipe de file re
 'logentry-newusers-create2' => "$1 {{GENDER:$2|ccrejate}} {{GENDER:$4|'nu cunde utende}} $3",
 'logentry-newusers-autocreate' => "'U cunde utende $1 ha state ccrejate automaticamende",
 'newuserlog-byemail' => 'password mannete pe e-mail',
+'logentry-rights-rights' => "$1 membre d'u gruppe cangiate pe $3 da $4 a $5",
+'logentry-rights-rights-legacy' => "$1 ave cangiate 'u membre d'u gruppe pe $3",
+'logentry-rights-autopromote' => '$1 ha state promosse automaticamende da $4 a $5',
+'rightsnone' => '(ninde)',
 
 # Feedback
 'feedback-bugornote' => "Ce tu si pronde a descrivere 'nu probbleme tecniche cu le dettaglie pe piacere [\$1 manne 'nu bug].
index aab893e..fb6495b 100644 (file)
@@ -534,6 +534,7 @@ $messages = array(
 'newwindow' => '(в новом окне)',
 'cancel' => 'Отменить',
 'moredotdotdot' => 'Далее…',
+'morenotlisted' => 'Больше ничего нету...',
 'mypage' => 'Страница',
 'mytalk' => 'Обсуждение',
 'anontalk' => 'Обсуждение для этого IP-адреса',
@@ -910,7 +911,8 @@ $2',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Неизвестная ошибка в PHP-функции mail()',
-'user-mail-no-addy' => 'Попытался отправить электронное письмо без адреса электронной почты',
+'user-mail-no-addy' => 'Пытался отправить электронное письмо без адреса электронной почты',
+'user-mail-no-body' => 'Пытался отправить электронное письмо с пустым или бессмысленно коротким содержанием.',
 
 # Change password dialog
 'resetpass' => 'Изменение пароля',
@@ -1709,15 +1711,13 @@ $1",
 'right-sendemail' => 'отправлять электронную почту другим участникам',
 'right-passwordreset' => 'просмотр электронных писем с изменением пароля',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Журнал регистрации участников',
+'newuserlogpagetext' => 'Список недавно зарегистрировавшихся участников',
+
 # User rights log
 'rightslog' => 'Журнал прав участника',
 'rightslogtext' => 'Это журнал изменений прав участника.',
-'rightslogentry' => 'изменил членство в группах для $1 с $2 на $3',
-'rightslogentry-autopromote' => 'был автоматически переведён из $2 в $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3 с $4 на $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3',
-'logentry-rights-autopromote' => 'Учётная запись «$1» была автоматически переведена из $4 в $5',
-'rightsnone' => '(нет)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'чтение этой страницы',
@@ -2345,7 +2345,7 @@ $1',
 'linksearch-ok' => 'Найти',
 'linksearch-text' => 'Можно использовать подстановочные символы, например, <code>*.wikipedia.org</code>.
 Необходим по крайней мере домен верхнего уровня, например <code>*.org</code><br />
-Поддерживаемые протоколы: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
+Поддерживаемые {{PLURAL:$2|протокол|протоколы}}: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
 'linksearch-line' => 'Ссылка на $1 из $2',
 'linksearch-error' => 'Подстановочные символы могут использоваться только в начале адресов.',
 
@@ -2364,10 +2364,6 @@ $1',
 'activeusers-hidesysops' => 'Скрыть администраторов',
 'activeusers-noresult' => 'Не найдено участников.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Журнал регистрации участников',
-'newuserlogpagetext' => 'Список недавно зарегистрировавшихся участников',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права групп участников',
 'listgrouprights-summary' => 'Ниже представлен список определённых в этой вики групп участников, указаны соответствующие им права доступа.
@@ -2504,6 +2500,8 @@ $UNWATCHURL
 
 Обратная связь и помощь
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'создана',
+'changed' => 'изменена',
 
 # Delete
 'deletepage' => 'Удалить страницу',
@@ -2574,6 +2572,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] переименована в [[$2]]',
 'protect-badnamespace-title' => 'Незащищаемое пространство имён',
 'protect-badnamespace-text' => 'Страницы в этом пространстве имён не могут быть защищены.',
+'protect-norestrictiontypes-text' => 'Эта страница не может быть защищена, как как для неё нет доступных типов ограничений.',
+'protect-norestrictiontypes-title' => 'Незащищаемая страница',
 'protect-legend' => 'Подтвердите установку защиты страницы',
 'protectcomment' => 'Причина:',
 'protectexpiry' => 'Истекает:',
@@ -3255,6 +3255,7 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-magic-words' => '{{PLURAL:$1|Магическое слово|Магические слова}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытых категорий}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Шаблон|Шаблонов}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Включаемые страницы|Включаемых страниц}} ($1)',
 'pageinfo-toolboxlink' => 'Сведения о странице',
 'pageinfo-redirectsto' => 'Перенаправление',
 'pageinfo-redirectsto-info' => 'сведения',
@@ -3263,6 +3264,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-protect-cascading' => 'Каскадная защита отсюда',
 'pageinfo-protect-cascading-yes' => 'Да',
 'pageinfo-protect-cascading-from' => 'Каскадная защита от',
+'pageinfo-category-info' => 'Информация о категории',
+'pageinfo-category-pages' => 'Количество страниц',
+'pageinfo-category-subcats' => 'Количество подкатегорий',
+'pageinfo-category-files' => 'Количество файлов',
 
 # Skin names
 'skinname-standard' => 'Классическое',
@@ -3355,6 +3360,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 минута|$1 минуты|$1 минут}}',
 'hours' => '{{PLURAL:$1|$1 час|$1 часа|$1 часов}}',
 'days' => '{{PLURAL:$1|$1 день|$1 дня|$1 дней}}',
+'months' => '{{PLURAL:$1|$1 месяц|$1 месяца|$1 месяцев}}',
+'years' => '{{PLURAL:$1|$1 год|$1 года|$1 лет}}',
 'ago' => '$1 назад',
 'just-now' => 'только что',
 
@@ -4194,6 +4201,10 @@ MediaWiki распространяется в надежде, что она бу
 'logentry-newusers-create2' => '$1 {{GENDER:$2|создал|создала}} учётную запись для $3',
 'logentry-newusers-autocreate' => 'Автоматически создана учётная запись $1',
 'newuserlog-byemail' => 'пароль отправлен по эл. почте',
+'logentry-rights-rights' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3 с $4 на $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3',
+'logentry-rights-autopromote' => 'Учётная запись «$1» была автоматически переведена из $4 в $5',
+'rightsnone' => '(нет)',
 
 # Feedback
 'feedback-bugornote' => 'Если вы готовы подробно описать техническую проблему, пожалуйста, [$1 сообщите об ошибке].
index 801bae6..535e695 100644 (file)
@@ -1398,15 +1398,13 @@ $1",
 'right-sendemail' => 'Посыланя пошты іншым хоснователям',
 'right-passwordreset' => 'Перезераня імейлів про зміну гесла',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Лоґ вытварянь хоснователїв',
+'newuserlogpagetext' => 'Тото є список ново реґістрованых хоснователїв.',
+
 # User rights log
 'rightslog' => 'Лоґ хосновательскых прав',
 'rightslogtext' => 'Тото є протокол зміны прав хоснователїв',
-'rightslogentry' => 'змінив членство в ґрупах про хоснователя $1 з $2 на $3',
-'rightslogentry-autopromote' => 'быв автоматічно повышеный з $2 на $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|змінив|змінила}} членство в ґрупах про $3 із $4 на $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|змінив|змінила}} членство в ґрупах про $3',
-'logentry-rights-autopromote' => '$1 было автоматічно переведено із $4 в $5',
-'rightsnone' => '(жадне)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'прочітати тоту сторінку',
@@ -2030,10 +2028,6 @@ $1',
 'activeusers-hidesysops' => 'Сховати адміністраторів',
 'activeusers-noresult' => 'Ненайдженый жаден хоснователь.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Лоґ вытварянь хоснователїв',
-'newuserlogpagetext' => 'Тото є список ново реґістрованых хоснователїв.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права ґруп хоснователїв',
 'listgrouprights-summary' => 'Тото є список ґруп хоснователїв дефінованых на тій вікіi і&nbsp;їх приступовых прав.
@@ -2169,6 +2163,8 @@ $UNWATCHURL
 
 Порада і контакт:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'створена',
+'changed' => 'змінена',
 
 # Delete
 'deletepage' => 'Змазати сторінку',
@@ -3706,6 +3702,10 @@ MediaWiki є дістрібуована в надїї, же буде хосно
 'logentry-newusers-create2' => '$1 створив хосновательске конто $3',
 'logentry-newusers-autocreate' => 'Автоматічно было створене конто $1',
 'newuserlog-byemail' => 'гело послане електронічнов поштов',
+'logentry-rights-rights' => '$1 {{GENDER:$1|змінив|змінила}} членство в ґрупах про $3 із $4 на $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|змінив|змінила}} членство в ґрупах про $3',
+'logentry-rights-autopromote' => '$1 было автоматічно переведено із $4 в $5',
+'rightsnone' => '(жадне)',
 
 # Feedback
 'feedback-bugornote' => 'Кідь сьте прирыхтованый подробно описати технічный проблем, можете [$1 наголосити хыбу].
index 871ff86..264720a 100644 (file)
@@ -1542,15 +1542,13 @@ You can still [$1 view this revision]",
 'right-sendemail' => 'अन्ययोजकेभ्यः विद्युन्मानपत्राणि प्रेषयतु ।',
 'right-passwordreset' => 'निकुञ्चपुनारचितानां विद्युन्मानपत्राणाम् अवलोकनम् ।',
 
+# Special:Log/newusers
+'newuserlogpage' => 'प्रयोक्तृ-सृजन-सूचिका',
+'newuserlogpagetext' => 'अयं योजकनिर्माणास्य प्रवेशः ।',
+
 # User rights log
 'rightslog' => 'प्रयोक्तृ-अधिकार-सूचिका',
 'rightslogtext' => 'अयं योजकाधिकारस्य परिवर्तनकुञ्चः ।',
-'rightslogentry' => '$2 - $3 तः $1 सामूहिकसदस्यत्वं परिवर्तितम् ।',
-'rightslogentry-autopromote' => '$2 तः $3 स्वयम् उन्नतीकृतम् ।',
-'logentry-rights-rights' => '$1 इत्ययं $3 इत्यस्य समूहसदस्यतां $4 इत्यतः परिवर्त्य $5 इत्यकरोत्',
-'logentry-rights-rights-legacy' => '$1, $3 इत्यस्मै समूहसदस्यतां पर्यवर्तयत्',
-'logentry-rights-autopromote' => '$1 इत्ययं स्वचालितरूपेण $4 इत्यतः $5 इति यावत् पदोन्नतः',
-'rightsnone' => '(कतम)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'एतत्पुटं पठतु ।',
@@ -2188,10 +2186,6 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'activeusers-hidesysops' => 'प्रशासकान् गोपयतु ।',
 'activeusers-noresult' => 'योजकः न प्राप्तः ।',
 
-# Special:Log/newusers
-'newuserlogpage' => 'प्रयोक्तृ-सृजन-सूचिका',
-'newuserlogpagetext' => 'अयं योजकनिर्माणास्य प्रवेशः ।',
-
 # Special:ListGroupRights
 'listgrouprights' => 'योजकसमूहाधिकाराः ।',
 'listgrouprights-summary' => 'अधोदत्ता विकिपरिभाषितस्य सङ्गताभिगम्यताधिकारैः सहिता योजकसमूहस्य आवली । [[{{MediaWiki:Listgrouprights-helppage}}|additional information]]',
@@ -2300,6 +2294,8 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'enotif_lastdiff' => 'एतत्परिवर्तनं दृष्टुं $1 पश्यतु ।',
 'enotif_anon_editor' => 'अनामकः योजकः $1',
 'enotif_body' => 'आत्मीय $ अवलोकनबन्धो',
+'created' => 'सृष्टम् ।',
+'changed' => 'परिवर्तितम् ।',
 
 # Delete
 'deletepage' => 'पृष्ठं निराकरोतु।',
@@ -3851,6 +3847,10 @@ $1 इत्यनेन $3 इति पृष्ठम् $4 इत्ये
 'logentry-newusers-create2' => '$1,  $3 इति योजकलेखाम् असृजत्',
 'logentry-newusers-autocreate' => '$1 लेखा स्वयमेव सृष्टं जातम्',
 'newuserlog-byemail' => 'कूटशब्दः ईपत्रद्वारा प्रेषितः',
+'logentry-rights-rights' => '$1 इत्ययं $3 इत्यस्य समूहसदस्यतां $4 इत्यतः परिवर्त्य $5 इत्यकरोत्',
+'logentry-rights-rights-legacy' => '$1, $3 इत्यस्मै समूहसदस्यतां पर्यवर्तयत्',
+'logentry-rights-autopromote' => '$1 इत्ययं स्वचालितरूपेण $4 इत्यतः $5 इति यावत् पदोन्नतः',
+'rightsnone' => '(कतम)',
 
 # Feedback
 'feedback-bugornote' => 'यदि भवान् कस्याश्चित् तान्त्रिकसमस्यायाः विषये विशदीकर्तुम् इच्छति तर्हि [$1 मत्कुणसञ्चिकां करोतु ।]
index adb1d88..eff6726 100644 (file)
@@ -1341,12 +1341,13 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 'right-sendemail' => 'Атын кыттааччыларга эл. почтаны ыытарга',
 'right-passwordreset' => 'Киирии тылы почта нөҥүө уларытыыны көрүү',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Кыттааччылары бэлиэтиир сурунаал',
+'newuserlogpagetext' => 'Соторутааҕыта бэлиэтэммит кыттааччылар.',
+
 # User rights log
 'rightslog' => 'Кыттаачы бырааптарын сурунаала',
 'rightslogtext' => 'Бу кыттааччы бырааптарын уларыйыытын көрдөрөр сурунаал.',
-'rightslogentry' => '$1 кыттаачы киирэр бырааба $2-тан $3 уларыйда',
-'rightslogentry-autopromote' => 'мантан $2 аптамаатынан манна $3 көспүт',
-'rightsnone' => '(суох)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бу сирэйи ааҕыы',
@@ -1990,10 +1991,6 @@ $1',
 'activeusers-hidesysops' => 'Дьаһабыллары көрдөрүмэ',
 'activeusers-noresult' => 'Кыттааччылар көстүбэтилэр.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Кыттааччылары бэлиэтиир сурунаал',
-'newuserlogpagetext' => 'Соторутааҕыта бэлиэтэммит кыттааччылар.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Кыттааччылар бөлөхтөрүн бырааптара',
 'listgrouprights-summary' => 'Манна бу биикигэ баар бөлөхтөр уонна кинилэр киирэр бырааптара көстөллөр.
@@ -2118,6 +2115,8 @@ $UNWATCHURL
 
 Көмөлөһүннэрэр уонна быһаартарар сир:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'айыллыбыт',
+'changed' => 'уларыппыт (уларытыллыбыт)',
 
 # Delete
 'deletepage' => 'Сирэйи сот',
@@ -3679,6 +3678,7 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'logentry-newusers-create2' => '$3 кыттааччыны $1 бэлиэтээбит',
 'logentry-newusers-autocreate' => 'Маннык аат $1 аптамаатынан бэлиэтэнилиннэ',
 'newuserlog-byemail' => 'киирии тыл эл. почтаннан ыытылынна',
+'rightsnone' => '(суох)',
 
 # Feedback
 'feedback-bugornote' => 'Туох кыһалҕаны көрсүбүккүн сиһилии суруйар кыахтаах буоллаххына, бука диэн [$1 алҕас туһунан биллэр].
index 28c1513..11346a6 100644 (file)
@@ -795,6 +795,9 @@ Amaḱ e-mail ṭhikạna do bań cabaḱa tinre onko do ko beohara',
 'right-upload' => 'Rẽtko rakabmẽ',
 'right-delete' => 'Sakamko get giḍiymẽ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Laṛcaṛićaḱ tear cạbi',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'noa sakam joṛao',
 
@@ -934,9 +937,6 @@ Noa reaḱ pasnao katha [$2 rẽt pasnao sakam] latare emena',
 'listusers-submit' => 'Udugmẽ',
 'listusers-blocked' => '(Esetgea)',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Laṛcaṛićaḱ tear cạbi',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Gaõta',
 'listgrouprights-rights' => 'Ạidạriko',
@@ -969,6 +969,8 @@ Noa reaḱ pasnao katha [$2 rẽt pasnao sakam] latare emena',
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Ńeloḱ kana...',
 
+'changed' => 'Bodolena',
+
 # Delete
 'deletepage' => 'Sakam get giḍikam',
 'delete-legend' => 'Get giḍi',
index 2cf1643..94897ca 100644 (file)
@@ -772,9 +772,11 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'right-undelete' => 'Restaurare una pàgina',
 'right-siteadmin' => 'Bloccare e sbloccare su database',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Usuàrios nous',
+
 # User rights log
 'rightslog' => 'Deretos de is usuàrios',
-'rightsnone' => '(nisciunu)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lègher custa pàgina',
@@ -1010,9 +1012,6 @@ Dia podent essere immàgines impreadas dae àteros giassos cun unu ligàmine dir
 'activeusers-hidebots' => 'Cua bots',
 'activeusers-hidesysops' => 'Cua amministradores',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Usuàrios nous',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Grupu',
 'listgrouprights-members' => '(lista de is cumponentes)',
@@ -1063,6 +1062,7 @@ Is mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere
 'unwatching' => 'Boghende dae sa watchlist...',
 
 'enotif_impersonal_salutation' => 'Usuàriu de {{SITENAME}}',
+'created' => 'creada',
 
 # Delete
 'deletepage' => 'Fùlia pàgina',
@@ -1550,6 +1550,7 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
 
 # New logging system
 'newuserlog-byemail' => 'password imbiada via e-mail',
+'rightsnone' => '(nisciunu)',
 
 # Search suggestions
 'searchsuggest-search' => 'Chirca',
index 08838c1..447c5dd 100644 (file)
@@ -1231,11 +1231,13 @@ L'operazioni nun pò èssiri annullata.",
 'right-siteadmin' => 'Blocca a sblocca lu databasi',
 'right-override-export-depth' => 'Esporta pàggini cumpresi li pàggini culligati finu ô quintu liveddu',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Novi utenti',
+'newuserlogpagetext' => 'Di sècutu vènunu elincati li criazzioni di cunti novi (account).',
+
 # User rights log
 'rightslog' => "Dritti di l'utenti",
 'rightslogtext' => "Chistu è un log dî canciamenti a li dritti di l'utenti.",
-'rightslogentry' => "hà canciatu l'appartinenza di $1 dû gruppu $2 a lu gruppu $3",
-'rightsnone' => '(nuddu)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lèggiri sta pàggina',
@@ -1715,10 +1717,6 @@ Protucolli suppurtati: <code>$1</code>',
 'activeusers-hidesysops' => 'Amministratura ammucciati',
 'activeusers-noresult' => 'Nussun utenti truvatu.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Novi utenti',
-'newuserlogpagetext' => 'Di sècutu vènunu elincati li criazzioni di cunti novi (account).',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Diritti dô gruppu utenti',
 'listgrouprights-summary' => "Ccà sutta sunnu elincati li gruppi utenti difiniti pi sta wiki, cu li dritti d'accessu assuciati a iddi. Pi sapìrinni chiossai supra li dritti, lèggiti [[{{MediaWiki:Listgrouprights-helppage}}|sta pàggina]].",
@@ -1820,6 +1818,8 @@ Pi mudificari li mpustazzioni dâ lista di l\'ussirvati spiciali, vìsita
 
 Pi dari lu tò feedback e arricèviri ultiriuri assistenza:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'criatu',
+'changed' => 'canciatu',
 
 # Delete
 'deletepage' => 'Elìmina la pàggina',
@@ -2977,6 +2977,7 @@ Mèttiri lu nomu dû file senza lu prifissu "{{ns:file}}:"',
 'logentry-move-move' => '$1 spustau la pàggina $3 a $4',
 'logentry-newusers-create' => '$1 criau na utenza',
 'newuserlog-byemail' => 'password mannata via mail',
+'rightsnone' => '(nuddu)',
 
 # Search suggestions
 'searchsuggest-search' => 'Ricerca',
index 26a6c38..7630872 100644 (file)
@@ -807,6 +807,9 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 # Rights
 'right-delete' => 'Delete pages',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Uiser creation log',
+
 # User rights log
 'rightslog' => 'Uiser richts log',
 'rightslogtext' => 'This is a log o chynges tae uiser richts.',
@@ -1053,9 +1056,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Shaw',
 'listusers-blocked' => '(blockit)',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Uiser creation log',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(leet o members)',
 
@@ -1094,6 +1094,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_reset' => 'Merk aa pages visitit',
 'enotif_lastvisited' => 'Hae a leuk at $1 for aa chynges sin yer last visit.',
+'created' => 'creatit',
+'changed' => 'chynged',
 
 # Delete
 'deletepage' => 'Delete page',
index 3c57592..0c16f3c 100644 (file)
@@ -906,11 +906,12 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'grouppage-sysop' => '{{ns:project}}:Amministhradori',
 'grouppage-bureaucrat' => '{{ns:project}}:Buròcrati',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nobi utenti',
+
 # User rights log
 'rightslog' => 'Diritti di li utenti',
 'rightslogtext' => "Chisthu è lu rigisthru di lu mudìfigghi a li diritti assignaddi a l'utenti.",
-'rightslogentry' => "à mudìfiggaddu l'apparthinènzia di $1 da lu gruppu $2 a lu gruppu $3",
-'rightsnone' => '(nisciunu)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'mudìfiggà chistha pàgina',
@@ -1241,9 +1242,6 @@ Also see [[Special:WantedCategories|wanted categories]].",
 'listusers-submit' => 'Musthra',
 'listusers-noresult' => 'Nisciun utenti curripundi a li critéri impusthaddi.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nobi utenti',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(erencu di li membri)',
 
@@ -1330,6 +1328,8 @@ Pa mudìfiggà l\'impusthazioni di la listha di l\'abbaidaddi ippiziari, visita
 
 Pa dì cosa ni pensi e dumandà assisthènzia:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'criadda',
+'changed' => 'ciambadda',
 
 # Delete
 'deletepage' => 'Canzella pàgina',
@@ -2039,4 +2039,7 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
 'htmlform-reset' => 'Annulla mudifigghi',
 'htmlform-selectorother-other' => 'Althru',
 
+# New logging system
+'rightsnone' => '(nisciunu)',
+
 );
index b7b2c4f..7c4d997 100644 (file)
@@ -658,9 +658,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'grouppage-sysop' => '{{ns:project}}:Sysopam',
 'grouppage-bureaucrat' => '{{ns:project}}:Bureaucrátam',
 
-# User rights log
-'rightsnone' => '(zéro)',
-
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|quiix|quíix}}',
 'recentchanges' => 'Camjöx cmaa',
@@ -887,6 +884,8 @@ iitom e-iitomde diijömde caitóm.',
 
 'enotif_impersonal_salutation' => '{{SITENAME}} caitom',
 'enotif_anon_editor' => 'caitom anoniimom $1',
+'created' => 'creacöx',
+'changed' => 'quiixöx',
 
 # Delete
 'deletepage' => 'Delatar páhina',
@@ -1057,4 +1056,7 @@ iitom e-iitomde diijömde caitóm.',
 # Special:SpecialPages
 'specialpages' => 'Páhinám extravám',
 
+# New logging system
+'rightsnone' => '(zéro)',
+
 );
index 32bbca1..e49f5b3 100644 (file)
@@ -876,11 +876,12 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'right-read' => 'Skaitītė poslapius',
 'right-edit' => 'Keistė poslapius',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nauduotuojė kūrėma regėstros',
+
 # User rights log
 'rightslog' => 'Nauduotuoju teisiu istuorėjė',
 'rightslogtext' => 'Pateikiams nauduotuoju teisiu pakeitėmu sārašos.',
-'rightslogentry' => 'pakeista $1 gropės narīstė ėš $2 i $3. Sveikėnam!',
-'rightsnone' => '(juokiū)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'redagoutė ta poslapi',
@@ -1225,9 +1226,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Ruodītė',
 'listusers-noresult' => 'Nerast anėjuokiū nauduotuoju.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nauduotuojė kūrėma regėstros',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Nauduotuoju gropiu teisės',
 'listgrouprights-group' => 'Gropė',
@@ -1287,6 +1285,8 @@ Jēgo bikumet ožsėnuorietomiet liautėis keravuotė straipsnė, spauskat \"neb
 
 'enotif_reset' => 'Pažīmietė vėsus poslapius kāp aplonkītus',
 'enotif_anon_editor' => 'anuonėminis nauduotuos $1',
+'created' => 'sokūrė',
+'changed' => 'pakeitė',
 
 # Delete
 'deletepage' => 'Trintė poslapi',
@@ -1963,5 +1963,6 @@ Tamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuoja
 'logentry-newusers-create2' => '$1 padėrba nauduotuojė paskīra $3',
 'logentry-newusers-autocreate' => 'Paskīra $1 bova padėrbta autuomatėškā',
 'newuserlog-byemail' => 'slaptažuodis ėšsiōsts par el. pašta',
+'rightsnone' => '(juokiū)',
 
 );
index 41de27f..4629ec4 100644 (file)
@@ -1523,15 +1523,13 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'right-sendemail' => 'Slanje e-maila drugim korisnicima',
 'right-passwordreset' => 'Pregled e-maila za obnavljanje lozinke',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Registar novih korisnika',
+'newuserlogpagetext' => 'Ovo je evidencija registracije novih korisnika.',
+
 # User rights log
 'rightslog' => 'Registar korisničkih prava',
 'rightslogtext' => 'Ovo je evidencija izmjene korisničkih prava.',
-'rightslogentry' => 'promjena članstva u grupi za $1 sa $2 na $3',
-'rightslogentry-autopromote' => 'je automatski unaprijeđen iz $2 u $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|je promijenio|je promijenila|je promijenio}} članstvo grupe za $3 iz $4 u $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3',
-'logentry-rights-autopromote' => '$1 je automatski {{GENDER:$1|unaprijeđen|unaprijeđena|unaprijeđen}} iz $4 u $5',
-'rightsnone' => '(nema)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'čitanje ove stranice',
@@ -2175,10 +2173,6 @@ Podržani protokoli: <tt>$1</tt> (zadaje http:// ako ne navedete protokol).',
 'activeusers-hidesysops' => 'Sakrij administratore',
 'activeusers-noresult' => 'Nije pronađen korisnik.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Registar novih korisnika',
-'newuserlogpagetext' => 'Ovo je evidencija registracije novih korisnika.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prava korisničkih grupa',
 'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
@@ -2314,6 +2308,8 @@ $UNWATCHURL
 
 Povratne informacije i daljnja pomoć:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'napravljena',
+'changed' => 'promijenjena',
 
 # Delete
 'deletepage' => 'Izbrišite stranicu',
@@ -3890,6 +3886,10 @@ Slike su prikazane u punoj veličini, ostale vrste datoteka su prikazane direktn
 'logentry-newusers-create2' => 'Korisnički račun $3 {{GENDER:|je napravio|je napravila|je napravio}} $1',
 'logentry-newusers-autocreate' => 'Račun $1 je samostalno otvoren',
 'newuserlog-byemail' => 'lozinka je poslana putem e-maila',
+'logentry-rights-rights' => '$1 {{GENDER:$1|je promijenio|je promijenila|je promijenio}} članstvo grupe za $3 iz $4 u $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3',
+'logentry-rights-autopromote' => '$1 je automatski {{GENDER:$1|unaprijeđen|unaprijeđena|unaprijeđen}} iz $4 u $5',
+'rightsnone' => '(nema)',
 
 # Feedback
 'feedback-bugornote' => 'Ako ste spremni da detaljno opišete tehnički problem, onda [$1 prijavite grešku].
index bc0e71e..696c4fb 100644 (file)
@@ -740,9 +740,11 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 
 'grouppage-sysop' => '{{ns:project}}: Inedbalen',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Aɣmis n willi mmurzmn imiḍan amsqdac',
+
 # User rights log
 'rightslog' => 'Anɣmas n imbddlnn izrfan n umsqdac',
-'rightsnone' => '(ḥtta yan)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'Ssɣr tasna yad',
@@ -906,9 +908,6 @@ Mel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.',
 'linksearch' => 'Izdayn n brra',
 'linksearch-line' => '$1 tmmuttid z $2',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Aɣmis n willi mmurzmn imiḍan amsqdac',
-
 # Special:ListGroupRights
 'listgrouprights-members' => 'Umuɣ n  midn',
 
@@ -1353,5 +1352,6 @@ Wiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.
 # New logging system
 'revdelete-restricted' => 'iskr aqn i indbaln',
 'revdelete-unrestricted' => 'Aqn iḥiyd i indbaln',
+'rightsnone' => '(ḥtta yan)',
 
 );
index 0b0a50e..bdc6d74 100644 (file)
@@ -1481,12 +1481,13 @@ HTML ටැගයන් පිරික්සන්න.',
 'right-sendemail' => 'අනෙක් පරිශීලකයන්ට ඊ-ලිපි යවන්න',
 'right-passwordreset' => 'මුරපද යලි සැකසීම් විද්‍යුත් තැපෑලයන් නරඹන්න',
 
+# Special:Log/newusers
+'newuserlogpage' => 'පරිශීලකයන් තැනීමේ සටහන',
+'newuserlogpagetext' => 'මෙය පරිශිලකයන් තැනීම පිළිබඳ සටහනකි.',
+
 # User rights log
 'rightslog' => 'පරිශීලක හිමිකම් සටහන',
 'rightslogtext' => 'මෙය පරිශීලකයන්ගේ හිමිකම් වෙනස්වීම් පිළිබඳ ලඝු-සටහනකි.',
-'rightslogentry' => '$1 සඳහා කණ්ඩායම් සාමාජිකත්වය $2 සිට $3 දක්වා වෙනස්කෙරිණි',
-'rightslogentry-autopromote' => 'ස්වයංක්‍රීය ලෙසින් $2 සිට $3 දක්වා උසස් කරන ලදි',
-'rightsnone' => '(කිසිවක් නොමැත)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'මෙම පිටුව කියවන්න',
@@ -2118,10 +2119,6 @@ When filtered by user, only files where that user uploaded the most recent versi
 'activeusers-hidesysops' => 'පරිපාලකයින් සඟවන්න',
 'activeusers-noresult' => 'කිසිදු පරිශීලකයෙකු හමුනොවිණි.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'පරිශීලකයන් තැනීමේ සටහන',
-'newuserlogpagetext' => 'මෙය පරිශිලකයන් තැනීම පිළිබඳ සටහනකි.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'පරිශීලක කාණ්ඩ හිමිකම්',
 'listgrouprights-summary' => 'මෙම විකියේ අර්ථදක්වා ඇති පරිශීලක කාණ්ඩ ලැයිස්තුවක් ඔවුනට අදාළ ප්‍රවේශ හිමිකම්ද සමගින් මෙහි පහත ලැයිස්තුගත කොට ඇත.
@@ -2248,6 +2245,8 @@ $UNWATCHURL
 
 Feedback and further assistance:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'තනන ලදි',
+'changed' => 'වෙනස්කරන ලදි',
 
 # Delete
 'deletepage' => 'පිටුව මකා දමන්න',
@@ -3946,6 +3945,7 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 'logentry-newusers-create2' => '$1 විසින් $3 පරිශීලක ගිණුම තනන ලදී',
 'logentry-newusers-autocreate' => '$1 ගිණුම ස්වංක්‍රීයව නිර්මිතය',
 'newuserlog-byemail' => 'විද්‍යුත්-තැපෑලෙන් මුර-පදය යවන ලදි',
+'rightsnone' => '(කිසිවක් නොමැත)',
 
 # Feedback
 'feedback-subject' => 'විෂයය:',
diff --git a/languages/messages/MessagesSimple.php b/languages/messages/MessagesSimple.php
deleted file mode 100644 (file)
index 6d331d8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/** Simple English (Simple English)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- */
-
-$fallback = 'en';
index 0b17198..c07e914 100644 (file)
@@ -1575,15 +1575,13 @@ Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
 'right-sendemail' => 'Posielať e-mail ostatným používateľom',
 'right-passwordreset' => 'Prezeranie e-mailov pre znovunastavovanie hesla',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Záznam vytvorených používateľov',
+'newuserlogpagetext' => 'Toto je záznam naposledy vytvorených používateľských účtov.',
+
 # User rights log
 'rightslog' => 'Záznam používateľských práv',
 'rightslogtext' => 'Toto je záznam zmien práv používateľa.',
-'rightslogentry' => 'členstvo v skupine zmenené pre $1 z $2 na $3',
-'rightslogentry-autopromote' => 'bol automaticky povýšený z $2 na $3',
-'logentry-rights-rights' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách z $4 na $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách',
-'logentry-rights-autopromote' => '$1 {{GENDER:$2|bol automaticky povýšený|bola automaticky povýšená}} z $4 na $5',
-'rightsnone' => '(žiadne)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'čítať túto stránku',
@@ -2225,10 +2223,6 @@ Podporované protokoly: <code>$1</code> (ak protokol nie je uvedený, použije s
 'activeusers-hidesysops' => 'Skryť správcov',
 'activeusers-noresult' => 'Neboli nájdení žiadni používatelia.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Záznam vytvorených používateľov',
-'newuserlogpagetext' => 'Toto je záznam naposledy vytvorených používateľských účtov.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Práva skupiny používateľov',
 'listgrouprights-summary' => 'Toto je zoznam skupín používateľov definovaných na tejto wiki a ich prístupových práv.
@@ -2351,6 +2345,8 @@ $UNWATCHURL
 
 Návrhy a ďalšia pomoc:
 {{canonicalurl:{{int:Helppage}}}}',
+'created' => 'vytvorení',
+'changed' => 'zmene',
 
 # Delete
 'deletepage' => 'Zmazať stránku',
@@ -3964,6 +3960,10 @@ Obrázky sa zobrazia v plnom rozlíšení, ostatné typy súborov sa spustia v p
 'logentry-newusers-create2' => '$1 vytvoril používateľský účet $3',
 'logentry-newusers-autocreate' => 'Automaticky bol založený účet $1',
 'newuserlog-byemail' => 'heslo poslané emailom',
+'logentry-rights-rights' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách z $4 na $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|bol automaticky povýšený|bola automaticky povýšená}} z $4 na $5',
+'rightsnone' => '(žiadne)',
 
 # Feedback
 'feedback-bugornote' => 'Ak ste pripravený podrobne popísať technický problém, prosím pošlite [$1 hlásenie o chybe]. 
index 5316679..d204913 100644 (file)
@@ -318,6 +318,7 @@ $messages = array(
 'newwindow' => '(odpre se novo okno)',
 'cancel' => 'Prekliči',
 'moredotdotdot' => 'Več ...',
+'morenotlisted' => 'Več ni navedenih ...',
 'mypage' => 'Stran',
 'mytalk' => 'Pogovor',
 'anontalk' => 'Pogovorna stran IP',
@@ -703,6 +704,7 @@ Prosimo počakajte, preden poskusite znova.',
 # E-mail sending
 'php-mail-error-unknown' => 'Neznana napaka v funkciji PHP mail()',
 'user-mail-no-addy' => 'Poskušal poslati e-pošto brez e-poštnega naslova',
+'user-mail-no-body' => 'Poskušali ste poslati e-pošto s prazno ali nerazumno kratko vsebino.',
 
 # Change password dialog
 'resetpass' => 'Spremeni geslo',
@@ -1502,15 +1504,13 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'right-sendemail' => 'Pošiljanje e-pošte drugim uporabnikom',
 'right-passwordreset' => 'Ogled e-pošt ponastavitve gesel',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Dnevnik registracij uporabnikov',
+'newuserlogpagetext' => 'Prikazan je dnevnik nedavnih registracij novih uporabnikov.',
+
 # User rights log
 'rightslog' => 'Dnevnik uporabniških pravic',
 'rightslogtext' => 'Prikazan je dnevnik sprememb uporabniških pravic.',
-'rightslogentry' => 'je spremenil(-a) pravice uporabnika $1 iz $2 v $3',
-'rightslogentry-autopromote' => 'je bil(-a) samodejno povišan(-a) z $2 na $3',
-'logentry-rights-rights' => '$1 je spremenil(-a) članstvo skupine $3 z $4 na $5',
-'logentry-rights-rights-legacy' => '$1 je spremenil(-a) članstvo skupine $3',
-'logentry-rights-autopromote' => '$1 je bil(-a) samodejno povišan(-a) z $4 na $5',
-'rightsnone' => '(nobeno)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'branje te strani',
@@ -2169,10 +2169,6 @@ Zahtevana je vsaj najvišja domena, na primer »*.org«.<br />
 'activeusers-hidesysops' => 'Skrij administratorje',
 'activeusers-noresult' => 'Noben uporabnik ni bil najden.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Dnevnik registracij uporabnikov',
-'newuserlogpagetext' => 'Prikazan je dnevnik nedavnih registracij novih uporabnikov.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Pravice uporabniških skupin',
 'listgrouprights-summary' => 'Tu je na razpolago seznam uporabniških skupin na tem wikiju z navedbo dodeljenih pravic dostopa.
@@ -2307,6 +2303,8 @@ $UNWATCHURL
 
 Povratna sporočila in pomoč:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ustvaril',
+'changed' => 'spremenil',
 
 # Delete
 'deletepage' => 'Briši stran',
@@ -2377,6 +2375,8 @@ Oglejte si [[Special:ProtectedPages|seznam zaščitenih strani]] za seznam trenu
 'prot_1movedto2' => 'je prestavil(-a) [[$1]] na [[$2]]',
 'protect-badnamespace-title' => 'Nezaščitljiv imenski prostor',
 'protect-badnamespace-text' => 'Strani v tem imenskem prostoru ni mogoče zaščititi.',
+'protect-norestrictiontypes-text' => 'Strani ni mogoče zaščititi, saj zanjo ni na voljo nobena vrsta omejitve.',
+'protect-norestrictiontypes-title' => 'Stran, ki je ni mogoče zaščititi',
 'protect-legend' => 'Potrdite zaščito',
 'protectcomment' => 'Razlog:',
 'protectexpiry' => 'Poteče:',
@@ -3037,6 +3037,7 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Čarobna beseda|Čarobni besedi|Čarobne besede}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Skrita kategorija|Skriti kategoriji|Skrite kategorije}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Vključena predloga|Vključeni predlogi|Vključene predloge}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Stran, vključena|Strani, vključeni|Strani, vključene}} na ($1)',
 'pageinfo-toolboxlink' => 'Podatki o strani',
 'pageinfo-redirectsto' => 'Preusmerja na',
 'pageinfo-redirectsto-info' => 'informacije',
@@ -3045,6 +3046,10 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'pageinfo-protect-cascading' => 'Zaščite se dedujejo od tukaj',
 'pageinfo-protect-cascading-yes' => 'Da',
 'pageinfo-protect-cascading-from' => 'Zaščite se dedujejo od',
+'pageinfo-category-info' => 'Informacije o kategoriji',
+'pageinfo-category-pages' => 'Število strani',
+'pageinfo-category-subcats' => 'Število podkategorij',
+'pageinfo-category-files' => 'Število datotek',
 
 # Patrolling
 'markaspatrolleddiff' => 'Označite kot nadzorovano',
@@ -3127,6 +3132,8 @@ Z njenim zagonom lahko ogrozite vaš sistem.",
 'minutes' => '$1 {{PLURAL:$1|minuta|minuti|minute|minut}}',
 'hours' => '$1 {{PLURAL:$1|ura|uri|ure|ur}}',
 'days' => '$1 {{PLURAL:$1|dan|dneva|dnevi|dni}}',
+'months' => '$1 {{PLURAL:$1|mesec|meseca|mesece|mesecev}}',
+'years' => '$1 {{PLURAL:$1|leto|leti|leta|let}}',
 'ago' => 'pred $1',
 'just-now' => 'pravkar',
 
@@ -3892,6 +3899,10 @@ Ta stran se sooča s tehničnimi težavami.',
 'logentry-newusers-create2' => '$1 je ustvaril(-a) uporabniški račun $3',
 'logentry-newusers-autocreate' => 'Račun $1 je bil samodejno ustvarjen',
 'newuserlog-byemail' => 'geslo je bilo poslano po e-pošti',
+'logentry-rights-rights' => '$1 je spremenil(-a) članstvo skupine $3 z $4 na $5',
+'logentry-rights-rights-legacy' => '$1 je spremenil(-a) članstvo skupine $3',
+'logentry-rights-autopromote' => '$1 je bil(-a) samodejno povišan(-a) z $4 na $5',
+'rightsnone' => '(nobeno)',
 
 # Feedback
 'feedback-bugornote' => 'Če ste pripravljeni podrobno opisati tehnično težavo, vložite [$1 poročilo o hrošču].
index f82193b..274ddd3 100644 (file)
@@ -956,9 +956,12 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'right-siteadmin' => 'Datenbank sperra und entsperra',
 'right-sendemail' => 'E-Mails oa andere Nutzer senda',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Neuoameldungs-Logbuch',
+'newuserlogpagetext' => 'Dies ies a Logbuch fier neu erstellte Nutzerkonten.',
+
 # User rights log
 'rightslogtext' => 'Dies ies doas Logbuch dar Änderunga dar Nutzerrechte.',
-'rightslogentry' => 'änderte de Nutzerrechte fier „$1“ vu „$2“ uff „$3“',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'de Seite zu lasa',
@@ -1359,10 +1362,6 @@ Siehe au de Liste der [[Special:WantedCategories|gewinschta Kategorien]].',
 # Special:ActiveUsers
 'activeusers-noresult' => 'Kenne Benutzer gefunda.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Neuoameldungs-Logbuch',
-'newuserlogpagetext' => 'Dies ies a Logbuch fier neu erstellte Nutzerkonten.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Nutzergruppen-Rechte',
 'listgrouprights-summary' => 'Dies ies anne Liste dar ei diesem Wiki definierten Nutzergruppen und dar damit verbundenen Rechte.
@@ -1458,6 +1457,7 @@ Is waan sulange kenne wettera Benachrichtigungs-E-Mails gesendet, bis du de Seit
 Im de Einstellunga denner Beobachtungsliste oazupoaßa, besuche: {{canonicalurl:{{#special:EditWatchlist}}}}
 
 Rickmeldungen und wettere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'erzeugt',
 
 # Delete
 'deletepage' => 'Seite läscha',
index 7c89a0c..c5c7d6d 100644 (file)
@@ -367,7 +367,7 @@ fadlan waxyar kadib ku soo noqo.',
 'protectedpagetext' => 'Boggaan  waala difaacay si aan wax looga bedelin.',
 'viewsourcetext' => 'Waad fiirin kartaa waana koobi gareen kartaa xogta boggaan:',
 'editinginterface' => "'''Digniin:''' Waxaad guda gashay inaad badesho bogga lawada arkayo wajiga hore ee qoraalka softwareka.
-Waxa uu saamayn ku yeelan doonaa boggaan habka uu wax u arko adeegsadaha iyo dhanaab adeegsadayaasha ee wikgaan.
+Waxa uu saameeyn ku yeelan doonaa boggaan habka uu wax u arko adeegsadaha iyo dhamaan adeegsadayaasha ee wikgaan.
 Si aad wax ugu kordhiso ama aad uga dhinto turjumaadda mashaariicda wikiga , fadlan adeegso [//translatewiki.net/ translatewiki.net], mashruuca gaarka ah ee MediaWiki.",
 'cascadeprotected' => 'Boggaan waxaa laga difaacay in wax laga bedelo, sababtoo ah wuxuu ka midyahay  {{PLURAL:$1|bog, oo ah |bogyaalo ah, waana}}  kuwa laga difaacay "qoraalada kaskadka ah" dooqyada woo u furanyahay:
 $2',
@@ -729,7 +729,7 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 
 # Search results
 'searchresults' => 'Natiijada raadinta (Baaris)',
-'searchresults-title' => 'Raadi natiijoojika "$1"',
+'searchresults-title' => 'Raadinta natiijooyinka "$1"',
 'searchsubtitle' => 'Waxaad raadisay \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dhamaan bogaaga ka bilaawdo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dhamaan bogagga la xiriiro "$1"]])',
 'searchsubtitleinvalid' => "Waxaa raadisay '''$1'''",
 'prevn' => 'Ka horeeya {{PLURAL:$1|$1}}',
@@ -756,13 +756,14 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'search-result-category-size' => '{{PLURAL:$1|1 ka mid ah|$1 ka mid ah}} ({{PLURAL:$2|1 qeybta hoose|$2 qeybaha hoose}}, {{PLURAL:$3|1 fayl|$3 fayl-yo}})',
 'search-redirect' => '(waxaa loo toosiyay $1)',
 'search-section' => '(maqaalka $1)',
-'search-suggest' => 'Waxaa ka waday miyaa: $1',
+'search-suggest' => 'Ma waxaad ulajeeday: $1',
 'search-interwiki-default' => '$1 natiijooyinka:',
 'search-interwiki-more' => '(wax kale)',
 'search-relatedarticle' => 'La xiriiro',
 'searchrelated' => 'La xiriiro',
 'searchall' => 'Dhamaan',
 'showingresults' => "Waxaa hoos laga heley{{PLURAL:$1|'''1''' natiijo|'''$1''' natiijooyin}} ka biloow #'''$2'''.",
+'showingresultsnum' => "Hoos waxaa laga helay {{PLURAL:$3|'''1''' Natiijo|'''$3''' Natiijooyin}} Ka billow #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Natiijada  '''$1''' ee '''$3'''|Natiijooyinka '''$1 - $2'''  oo ah  '''$3'''}} ee '''$4'''",
 'search-nonefound' => 'Wax natiijo oo ka soo baxay ma jirto wixii aad raadisay',
 'powersearch' => 'Sidii aad wax uugu raadin laheed',
@@ -852,8 +853,8 @@ E-mailkaada mala sheegaayo markii ee dadka kale kula soo xiriirayaan.',
 'right-browsearchive' => 'Raadi maqaalada la tirtiray',
 'right-undelete' => 'Ha tirtirin bog',
 
-# User rights log
-'rightsnone' => '(waxna)',
+# Special:Log/newusers
+'newuserlogpage' => 'Gudagalaha Isticmaale sameeyay',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'akhri boggaan',
@@ -1011,6 +1012,8 @@ Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kart
 'deadendpages' => 'Boggaga aanan la daba joogin',
 'deadendpagestext' => 'Boggagaan soo socota lama xiriiraan boggaga kale ee {{SITENAME}}.',
 'protectedpages' => "Boggag la'difaacay",
+'listusers-editsonly' => 'Itus adeegsede yaasha sameeyey bedalka oo kaliya',
+'listusers-creationsort' => 'Ka dhig si ah taariikhdii la sameeyey',
 'usercreated' => '{{GENDER:$3|Sameeyay}} marka ee eheed $1 saacada $2',
 'newpages' => 'Bogyaalo cusub',
 'newpages-username' => 'Magaca gudagalka:',
@@ -1057,9 +1060,6 @@ Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kart
 'listusers-noresult' => 'Lama helin isticmaale.',
 'listusers-blocked' => '(waa la mamnuucay)',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Gudagalaha Isticmaale sameeyay',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(Inta ka mid ah liiskooda)',
 
@@ -1107,6 +1107,38 @@ Hadii aad rabootid in aad boggan ka saartid wardiyeynta, dhagsii \"Ha' wardiyeyn
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Daawasho...',
 
+'enotif_body_intro_changed' => 'Bogga {{SITENAME}} ga $1 waxaa la badelay $PAGEEDITDATE qof {{gender:$2|$2}}, eeg $3 sida laga dhigay hadda.',
+'enotif_lastvisited' => 'Eeg $1 Dhamaan isbedeleda ilaa goortii kuugu dambaysay.',
+'enotif_lastdiff' => 'Eeg $1 si aad u aragto bedelkaan.',
+'enotif_anon_editor' => 'Aan la qoon $1',
+'enotif_body' => 'Mudane $WATCHINGUSERNAME,
+
+$PAGEINTRO $NEWPAGE
+
+Qaybta wax laga bedelay: $PAGESUMMARY $PAGEMINOREDIT
+
+La xariirka Tafaftiraha:
+mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Lama soo diri doono ogeysiin dambe hadii isbedel kale lagu sii sameeyo ilaa aad ka soo booqato bogga.
+Waxaad awoodaa inaad ka saarto liiska waardiyeha booga.
+
+                        Nidaamka war gelinta {{SITENAME}} ee E-mailka
+
+--
+si aad ubedesho fariinta e-mail dooqyadiisa, Booqo
+{{canonicalurl:{{#special:Preferences}}}}
+
+Si aad ubedesho liiskaada waardiyaha, Booqo
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+si aad utirtirto liiskaada waardiyaha ee gaarka ah, Booqo
+$UNWATCHURL
+
+Faalada iyo helista caawinaad dheeraad ah:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
+
 # Delete
 'confirm' => 'Xaqiiji',
 'excontent' => "qoraalka wuxuu ahaa: '$1'",
@@ -1227,6 +1259,9 @@ eeg [[Special:ProtectedPages|Liiska bogagga dhowrsoon]] liiska bogagga howlaha d
 'autoblocker' => 'Waxaa automaatik u xirista keenay in mudo dhow uu cinwaanka IP:ga isticmaalay "[[User:$1|$1]]". Sababta keentay in loo xiro $1 waa: "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'Mamnuucida guda galaheeda',
 'blocklogentry' => 'la mamnuucay  [[$1]] Waqtiga uu dhacaayo neh waa $2 $3',
+'blocklogtext' => 'Halkaan waa  liiska lagu muujiyo manuuca iyo mamnuuc ka qaadista.
+Ciwaanka IP ga ee la mamnuucay so iskeedka ee aan la soo ban dhigin.
+Eeg [[Special:BlockList|Mamnuucyada]] si aad u aragto liiska mamnuucyada ee hadda shaqaynaua.',
 'unblocklogentry' => 'lama mamnuucin $1',
 'block-log-flags-anononly' => "Isticmaalayaasha aanan la'aqoonsanin oo kaliya",
 'block-log-flags-nocreate' => 'sameynta gudagalah lamaogola',
@@ -1318,6 +1353,7 @@ Waxaa fiiri kartaa cadaadkiisa',
 'tooltip-diff' => 'Fiiri waxa aad ka badashay qoraalka',
 'tooltip-compareselectedversions' => 'Fiiri sida ee u kala duwanyihiin  bedelaadka labada aad ka dooratay boggaan',
 'tooltip-watch' => 'Boggaan ku dar liiskaaga waardiyaha',
+'tooltip-watchlistedit-raw-submit' => 'Liska waardiyeha dib u howlageli',
 'tooltip-rollback' => '"Dib u soo celi" wuxuu dib boggaan ugu soo celinaa qofkii ugu danbeeyay wixii oo ku darsaday hal riix kaliya',
 'tooltip-undo' => '"Ka noqo" wuxuu dib u noqaa badalkaan wuxuuna furaa badalkii ka horeey.Wuxuu kuu fasaxaa in aad ku dartid sababta.',
 'tooltip-preferences-save' => 'Kaydi isbedelada',
@@ -1329,6 +1365,10 @@ Waxaa fiiri kartaa cadaadkiisa',
 'lastmodifiedatby' => 'Bogaan waxaa ugu dambeyntii wax laga bedelay $2, $1 kana bedelay $3.',
 'othercontribs' => 'Waxay ku saleysantahay shaqada $1.',
 
+# Info page
+'pageinfo-title' => 'Macluumaad ku saabsan "$1"',
+'pageinfo-toolboxlink' => 'Macluumad ku saabsan',
+
 # Browsing diffs
 'previousdiff' => '← bedelkii ka duqsanaa',
 'nextdiff' => 'Bedelkii ugu cusbaa →',
@@ -1375,6 +1415,9 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 # E-mail address confirmation
 'confirmemail_noemail' => 'Kuma haysatid cinwaan E-boosto sax [[Special:Preferences|isticmaala dooqiisa]].',
 
+# action=watch/unwatch
+'confirm-unwatch-top' => 'Boggaan ka saar liiskaaga waardiyaha',
+
 # Multipage image navigation
 'imgmultigo' => 'Soco!',
 
@@ -1388,6 +1431,13 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 'autosumm-replace' => 'Wuxuu qoraalka ku badalay "$1"',
 'autosumm-new' => 'Bog cusub: $1',
 
+# Watchlist editor
+'watchlistedit-normal-legend' => 'Ka saar ciwaanada liiska waardiyaha',
+'watchlistedit-normal-explain' => 'Ciwaanada ee liiskaada waardiyaha hoos ayaa lagu soo ban dhigay.
+Si aad u tirtito Ciwaanka, Godka udhow calaameey, ee guji "{{int:Watchlistedit-normal-submit}}".
+waxaad awoodaa [[Special:EditWatchlist/raw|Liiska wax ka bedel]].',
+'watchlistedit-raw-legend' => 'Badal liiska waardiyeenta ceeriinka ah',
+
 # Watchlist editing tools
 'watchlisttools-view' => 'Itusi isbedelada jiro',
 'watchlisttools-edit' => 'Fiiri iyo wax ka badal liiska waardiyaha',
@@ -1418,6 +1468,9 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 'htmlform-reset' => 'Ka noqo wax bedelka',
 'htmlform-selectorother-other' => 'kuwa kale',
 
+# New logging system
+'rightsnone' => '(waxna)',
+
 # Feedback
 'feedback-message' => 'Fariinta:',
 
index 565888a..7ddf3e2 100644 (file)
@@ -1488,12 +1488,13 @@ Kjo informatë është publike.',
 'right-sendemail' => 'Dërgo e-mail tek përdoruesit e tjerë',
 'right-passwordreset' => 'Shiko e-mail-et e rivendosjes së fjalëkalimit',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Regjistri i llogarive',
+'newuserlogpagetext' => 'Ky është një regjistër i llogarive të fundit që janë hapur',
+
 # User rights log
 'rightslog' => 'Regjistri i privilegjeve të përdoruesit',
 'rightslogtext' => 'Ky është një regjistër për ndryshimet e privilegjeve të përdoruesit.',
-'rightslogentry' => 'u ndryshua anëtarësimi i grupit për $1 nga $2 tek $3',
-'rightslogentry-autopromote' => 'automatikisht u rrit në datyrë nga $2 në $3',
-'rightsnone' => '(asgjë)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lexo këtë faqe',
@@ -2120,10 +2121,6 @@ Protokolle të mbështetura: <code>$1<code> (mos shtoni ndonjërin nga këta në
 'activeusers-hidesysops' => 'Fshih administratorët',
 'activeusers-noresult' => 'Asnjë përdorues nuk u gjet.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Regjistri i llogarive',
-'newuserlogpagetext' => 'Ky është një regjistër i llogarive të fundit që janë hapur',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Grupime përdoruesish me privilegje',
 'listgrouprights-summary' => 'Më poshtë jepet grupimi i përdoruesve sipas privilegjeve që ju janë dhënë në këtë wiki. Më shumë informacion rreth privilegjeve në veçanti mund të gjendet [[{{MediaWiki:Listgrouprights-helppage}}|këtu]].',
@@ -2272,6 +2269,8 @@ $UNWATCHURL
 
 Për të na dhënë përshtypjet tuaja ose për ndihmë të mëtejshme:
 {{canonicalurl:{{MediaWiki:Helpage}}}}',
+'created' => 'u krijua',
+'changed' => 'ndryshuar',
 
 # Delete
 'deletepage' => 'Grise faqen',
@@ -3779,6 +3778,7 @@ Kjo faqe është duke përjetuar vështirësi teknike.',
 'logentry-newusers-create2' => '$1 krijoi një llogari $3',
 'logentry-newusers-autocreate' => 'Llogaria $1 u krijua automatikisht',
 'newuserlog-byemail' => 'fjalëkalimi u dërgua në postën elektronike',
+'rightsnone' => '(asgjë)',
 
 # Feedback
 'feedback-bugornote' => 'Nëse jeni gati për të përshkruar një problem teknik me detaje ju lutemi [$1 raportoni një problem].
index 96acdea..cc8cbc7 100644 (file)
@@ -779,8 +779,8 @@ $1',
 'actionthrottled' => 'Радња је успорена',
 'actionthrottledtext' => 'У циљу борбе против непожељних порука, ограничене су вам измене у одређеном времену, а управо сте прешли то ограничење. Покушајте поново за неколико минута.',
 'protectedpagetext' => 'Ова страница је закључана за измене и друге радње.',
-'viewsourcetext' => 'Можете да погледате и умножите изворни текст ове странице:',
-'viewyourtext' => "Можете да погледате и умножите извор '''ваших измена''' на овој страници:",
+'viewsourcetext' => 'Можете да погледате и копирате изворни текст ове странице:',
+'viewyourtext' => "Можете да погледате и копирате извор '''ваших измена''' на овој страници:",
 'protectedinterface' => 'Ова страница садржи текст корисничког окружења за софтвер на овом викију и заштићена је ради спречавања злоупотребе.
 Да бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.',
 'editinginterface' => "'''Упозорење:''' уређујете страницу која се користи за приказивање текста корисничког окружења.
@@ -1145,10 +1145,10 @@ $2
 '''Не шаљите радове заштићене ауторским правима без дозволе!'''",
 'longpageerror' => "'''Грешка: текст који сте унели је величине {{PLURAL:$1|један килобајт|$1 килобајта|$1 килобајта}}, што је веће од {{PLURAL:$2|дозвољеног једног килобајта|дозвољена $2 килобајта|дозвољених $2 килобајта}}.'''
 Страница не може бити сачувана.",
-'readonlywarning' => "'''Упозорење: база података је закључана ради одржавања, тако да нећете моћи да сачувате измене.
\9dаÑ\98боÑ\99е Ð±Ð¸ Ð±Ð¸Ð»Ð¾ Ð´Ð° Ñ\83множиÑ\82е Ñ\82екÑ\81Ñ\82 Ñ\83 Ñ\83Ñ\80еÑ\92иваÑ\87 Ñ\82екÑ\81Ñ\82а Ð¸ Ñ\81аÑ\87Ñ\83ваÑ\82е Ð³Ð° Ð·Ð° ÐºÐ°Ñ\81ниÑ\98е.'''
+'readonlywarning' => "'''Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.
\9dаÑ\98боÑ\99е Ð±Ð¸ Ð±Ð¸Ð»Ð¾ Ð´Ð° Ñ\81аÑ\87Ñ\83ваÑ\82е Ñ\82екÑ\81Ñ\82 Ð·Ð° ÐºÐ°Ñ\81ниÑ\98е Ñ\83 Ð½ÐµÐºÐ¾Ñ\98 Ñ\82екÑ\81Ñ\82Ñ\83алноÑ\98 Ð´Ð°Ñ\82оÑ\82еÑ\86и.'''
 
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 ÐºÐ¾Ñ\98и Ñ\98е Ð·Ð°ÐºÑ\99Ñ\83Ñ\87ао Ð±Ð°Ð·Ñ\83 Ð¿Ð¾Ð´Ð°Ñ\82ака Ñ\98е Ð½Ð°Ð²ÐµÐ¾ следеће објашњење: $1",
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 ÐºÐ¾Ñ\98и Ñ\98е Ð·Ð°ÐºÑ\99Ñ\83Ñ\87ао Ð±Ð°Ð·Ñ\83 Ð´Ð°Ð¾ Ñ\98е следеће објашњење: $1",
 'protectedpagewarning' => "'''Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.'''
 Последња ставка у историји је приказана испод:",
 'semiprotectedpagewarning' => "'''Напомена:''' ова страница је заштићена, тако да само регистровани корисници могу да је уређују.
@@ -1721,15 +1721,13 @@ $1",
 'right-sendemail' => 'слање е-порука другим корисницима',
 'right-passwordreset' => 'прегледање порука за обнављање лозинке',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Дневник нових корисника',
+'newuserlogpagetext' => 'Ово је историја нових корисника.',
+
 # User rights log
 'rightslog' => 'Дневник корисничких права',
 'rightslogtext' => 'Ово је дневник измена корисничких права.',
-'rightslogentry' => '{{GENDER:|је променио|је променила|је променио}} права за члана $1 из $2 у $3',
-'rightslogentry-autopromote' => 'је унапређен из $2 у $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3 из $4 у $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3',
-'logentry-rights-autopromote' => '$1 је аутоматски {{GENDER:$1|унапређен|унапређена|унапређен}} из $4 у $5',
-'rightsnone' => '(ништа)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'читање ове странице',
@@ -2131,7 +2129,7 @@ $1',
 Њен опис можете да измените на [$2 одговарајућој страници].',
 'filepage-nofile' => 'Не постоји датотека с овим називом.',
 'filepage-nofile-link' => 'Не постоји датотека с овим називом, али је можете [$1 послати].',
-'uploadnewversion-linktext' => 'Пошаљи ново издање ове датотеке',
+'uploadnewversion-linktext' => 'Пошаљи нову верзију ове датотеке',
 'shared-repo-from' => 'из $1',
 'shared-repo' => 'заједничко складиште',
 'shared-repo-name-wikimediacommons' => 'Викимедијина остава',
@@ -2396,10 +2394,6 @@ $1',
 'activeusers-hidesysops' => 'Сакриј администраторе',
 'activeusers-noresult' => 'Корисник није пронађен.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Дневник нових корисника',
-'newuserlogpagetext' => 'Ово је историја нових корисника.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права корисничких група',
 'listgrouprights-summary' => 'Следи списак корисничких група на овом викију, заједно с правима приступа.
@@ -2543,6 +2537,8 @@ $UNWATCHURL
 
 Подршка и даља помоћ:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'направљена',
+'changed' => 'измењена',
 
 # Delete
 'deletepage' => 'Обриши страницу',
@@ -3087,7 +3083,7 @@ $1',
 Датуми и имена уредника ће бити сачувани.
 Све радње при увозу с других викија су забележене у [[Special:Log/import|дневнику увоза]].',
 'import-interwiki-source' => 'Извор викија/странице:',
-'import-interwiki-history' => 'Умножи Ñ\81ве измене ове странице',
+'import-interwiki-history' => 'Ð\9aопиÑ\80аÑ\98 Ñ\81ве Ñ\81Ñ\82аÑ\80иÑ\98е измене ове странице',
 'import-interwiki-templates' => 'Укључи све шаблоне',
 'import-interwiki-submit' => 'Увези',
 'import-interwiki-namespace' => 'Одредишни именски простор:',
@@ -4338,6 +4334,10 @@ $5
 'logentry-newusers-create2' => '$1 {{GENDER:|је отворио|је отворила|је отворио}} кориснички налог $3',
 'logentry-newusers-autocreate' => 'Налог $1 је самостално отворен',
 'newuserlog-byemail' => 'лозинка је послата е-поштом',
+'logentry-rights-rights' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3 из $4 у $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3',
+'logentry-rights-autopromote' => '$1 је аутоматски {{GENDER:$1|унапређен|унапређена|унапређен}} из $4 у $5',
+'rightsnone' => '(ништа)',
 
 # Feedback
 'feedback-bugornote' => 'Ако сте спремни да детаљно опишете технички проблем, онда [$1 пријавите грешку].
index 745ff40..b96a139 100644 (file)
@@ -1626,15 +1626,13 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-sendemail' => 'slanje e-poruka drugim korisnicima',
 'right-passwordreset' => 'pregledanje poruka za obnavljanje lozinke',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Dnevnik novih korisnika',
+'newuserlogpagetext' => 'Ovo je istorija novih korisnika.',
+
 # User rights log
 'rightslog' => 'Dnevnik korisničkih prava',
 'rightslogtext' => 'Ovo je dnevnik izmena korisničkih prava.',
-'rightslogentry' => '{{GENDER:|je promenio|je promenila|je promenio}} prava za člana $1 iz $2 u $3',
-'rightslogentry-autopromote' => 'je unapređen iz $2 u $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3 iz $4 u $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3',
-'logentry-rights-autopromote' => '$1 je automatski {{GENDER:$1|unapređen|unapređena|unapređen}} iz $4 u $5',
-'rightsnone' => '(ništa)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'čitanje ove stranice',
@@ -2300,10 +2298,6 @@ Podržani protokoli: <code>$1</code> (zadaje http:// ako ne navedete protokol).'
 'activeusers-hidesysops' => 'Sakrij administratore',
 'activeusers-noresult' => 'Korisnik nije pronađen.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Dnevnik novih korisnika',
-'newuserlogpagetext' => 'Ovo je istorija novih korisnika.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prava korisničkih grupa',
 'listgrouprights-summary' => 'Sledi spisak korisničkih grupa na ovom vikiju, zajedno s pravima pristupa.
@@ -2437,6 +2431,8 @@ $UNWATCHURL
 
 Podrška i dalja pomoć:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'napravljena',
+'changed' => 'izmenjena',
 
 # Delete
 'deletepage' => 'Obriši stranicu',
@@ -4232,6 +4228,10 @@ Slike su prikazane u punoj veličini, a druge vrste datoteka se pokreću pomoću
 'logentry-newusers-create2' => '$1 {{GENDER:|je otvorio|je otvorila|je otvorio}} korisnički nalog $3',
 'logentry-newusers-autocreate' => 'Nalog $1 je samostalno otvoren',
 'newuserlog-byemail' => 'lozinka je poslata e-poštom',
+'logentry-rights-rights' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3 iz $4 u $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3',
+'logentry-rights-autopromote' => '$1 je automatski {{GENDER:$1|unapređen|unapređena|unapređen}} iz $4 u $5',
+'rightsnone' => '(ništa)',
 
 # Feedback
 'feedback-bugornote' => 'Ako ste spremni da detaljno opišete tehnički problem, onda [$1 prijavite grešku].
index 9bcadf5..0b23f31 100644 (file)
@@ -727,7 +727,6 @@ A kan ben trowe efu dribi.
 
 # User rights log
 'rightslog' => 'Log buku fu kebroikiman leti',
-'rightsnone' => '(no)',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|kenki|kenki}}',
@@ -1237,4 +1236,7 @@ Trawan o kibri.
 # Special:SpecialPages
 'specialpages' => 'Spesrutu papira',
 
+# New logging system
+'rightsnone' => '(no)',
+
 );
index e090adc..e420ab3 100644 (file)
@@ -1254,12 +1254,13 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'right-sendemail' => 'E-Mails an uur Benutsere seende',
 'right-passwordreset' => 'Paaswoud fon n Benutser touräächsätte ([[Special:PasswordReset|Spezioalsiede]])',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Näianmäldengs-Logbouk',
+'newuserlogpagetext' => 'Dit is dät Logbouk fon näi anmäldede Benutsere.',
+
 # User rights log
 'rightslog' => 'Gjuchte-Logbouk',
 'rightslogtext' => 'Dit is dät Logbouk fon do Annerengen fon do Benutsergjuchte.',
-'rightslogentry' => 'annerde ju Gruppentouheeregaid foar „$1“ fon „$2“ ap „$3“.',
-'rightslogentry-autopromote' => 'wuud automatisk fon „$2“ ätter „$3“ touoardend',
-'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'disse Siede tou leesen',
@@ -1828,10 +1829,6 @@ Sjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].',
 'activeusers-hidesysops' => 'Administratore fersteete',
 'activeusers-noresult' => 'Neen Benutsere fuunen.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Näianmäldengs-Logbouk',
-'newuserlogpagetext' => 'Dit is dät Logbouk fon näi anmäldede Benutsere.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Benutsergruppen-Gjuchte',
 'listgrouprights-summary' => 'Dit is ne Lieste fon do in dissen Wiki definierde Benutsergruppen un do deermäd ferbuundene Gjuchte.
@@ -1959,6 +1956,8 @@ Uum ju Siede fon dien Kontrollieste tou läskjen, besäik
 $UNWATCHURL
 
 Touräächmäldengen un wiedere Hälpe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'näi anlaid',
+'changed' => 'annerd',
 
 # Delete
 'deletepage' => 'Siede läskje',
@@ -3288,6 +3287,7 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
 'revdelete-restricted' => 'Einskränkengen jäilde uk foar Administratore',
 'revdelete-unrestricted' => 'Ienskränkengen foar Administratore wächhoald',
 'newuserlog-byemail' => 'dät Paaswoud wuud uur E-Mail fersoand',
+'rightsnone' => '(-)',
 
 # Search suggestions
 'searchsuggest-search' => 'Säik',
index 7e076d4..e3a6f93 100644 (file)
@@ -1309,12 +1309,13 @@ Mun geus anggeus teu bisa dibolaykeun.',
 'right-siteadmin' => 'Ngonci jeung muka konci databés',
 'right-sendemail' => 'Kirim surélék ka pamaké séjén',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Log akun anyar',
+'newuserlogpagetext' => 'Di handap ieu béréndélan log pamaké anyar.',
+
 # User rights log
 'rightslog' => 'Log hak pamaké',
 'rightslogtext' => 'Ieu mangrupa log parobahan hak-hak pamaké.',
-'rightslogentry' => 'ngarobah kaanggotaan grup pikeun $1 tina $2 jadi $3',
-'rightslogentry-autopromote' => 'geus sacara otomatis dipromosikeun ti $2 ka $3',
-'rightsnone' => '(euweuh)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'maca ieu kaca',
@@ -1815,10 +1816,6 @@ Baca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].',
 'activeusers-hidesysops' => 'Sumputkeun kuncén',
 'activeusers-noresult' => 'Teu kapendak.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Log akun anyar',
-'newuserlogpagetext' => 'Di handap ieu béréndélan log pamaké anyar.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Hak-hak grup pamaké',
 'listgrouprights-summary' => 'Ieu mangrupa daptar jumplukan pamaké anu aya di wiki ieu, kalawan daptar hak aksés maranéhanana.
@@ -1927,6 +1924,8 @@ Pikeun ngarobah setélan dabtar awaseun anjeun, sindang ka {{SERVER}}{{localurl:
 
 Asupan jeung bantuan salajengna:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'geus dijieun',
+'changed' => 'geus robah',
 
 # Delete
 'deletepage' => 'Hapus kaca',
@@ -3044,6 +3043,7 @@ Coba ku sawangan normal.',
 'revdelete-restricted' => 'akses geus dibatesan ukur keur kuncén',
 'revdelete-unrestricted' => 'Watesan akses kuncén dihapuskeun',
 'newuserlog-byemail' => 'Sandi geus dikirim maké surélék.',
+'rightsnone' => '(euweuh)',
 
 # Feedback
 'feedback-subject' => 'Ngeunaan:',
index d54faa8..2ef8812 100644 (file)
@@ -824,6 +824,7 @@ Vänta innan du försöker igen.',
 # E-mail sending
 'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
 'user-mail-no-addy' => 'Försökte skicka e-post utan en e-postadress',
+'user-mail-no-body' => 'Försökte skicka e-post med tomt eller orimligt kort innehåll.',
 
 # Change password dialog
 'resetpass' => 'Ändra lösenord',
@@ -1613,15 +1614,13 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-sendemail' => 'Skicka e-post till andra användare',
 'right-passwordreset' => 'Visa e-postmeddelanden med lösenordsåterställning',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logg över nya användare',
+'newuserlogpagetext' => 'Detta är en logg över skapade användarkonton.',
+
 # User rights log
 'rightslog' => 'Användarrättighetslogg',
 'rightslogtext' => 'Detta är en logg över ändringar av användares rättigheter.',
-'rightslogentry' => 'ändrade grupptillhörighet för $1 från $2 till $3',
-'rightslogentry-autopromote' => 'befordrades automatiskt från $2 till $3',
-'logentry-rights-rights' => '$1 ändrade gruppmedlemskap för $3 från $4 till $5',
-'logentry-rights-rights-legacy' => '$1 ändrade gruppmedlemskap för $3',
-'logentry-rights-autopromote' => '$1 befordrades automatiskt från $4 till $5',
-'rightsnone' => '(inga)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'läsa denna sida',
@@ -2267,10 +2266,6 @@ Det krävs åtminstone en toppdomän, t.ex. "*.org".<br />
 'activeusers-hidesysops' => 'Dölj administratörer',
 'activeusers-noresult' => 'Inga användare funna.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logg över nya användare',
-'newuserlogpagetext' => 'Detta är en logg över skapade användarkonton.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Behörigheter för användargrupper',
 'listgrouprights-summary' => 'Följande lista visar vilka användargrupper som är definierade på den här wikin och vilka behörigheter grupperna har.
@@ -2406,6 +2401,8 @@ $UNWATCHURL
 
 Feedback och ytterligare hjälp:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'skapad',
+'changed' => 'ändrad',
 
 # Delete
 'deletepage' => 'Ta bort sida',
@@ -2472,6 +2469,7 @@ Se [[Special:ProtectedPages|listan över skyddade sidor]] för listan över akti
 'prot_1movedto2' => 'flyttade [[$1]] till [[$2]]',
 'protect-badnamespace-title' => 'Namnrymd som inte kan skrivskyddas',
 'protect-badnamespace-text' => 'Sidor i den här namnrymden kan inte skrivskyddas.',
+'protect-norestrictiontypes-text' => 'Denna sida kan inte skyddas eftersom det inte finns några begränsningstyper tillgängliga.',
 'protect-legend' => 'Bekräfta skrivskydd av sida',
 'protectcomment' => 'Anledning:',
 'protectexpiry' => 'Varaktighet:',
@@ -3164,6 +3162,10 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'pageinfo-protect-cascading' => 'Skrivskydd kaskaderar härifrån',
 'pageinfo-protect-cascading-yes' => 'Ja',
 'pageinfo-protect-cascading-from' => 'Skrivskydd kaskaderar från',
+'pageinfo-category-info' => 'Kategoriinformation',
+'pageinfo-category-pages' => 'Antal sidor',
+'pageinfo-category-subcats' => 'Antal underkategorier',
+'pageinfo-category-files' => 'Antal filer',
 
 # Skin names
 'skinname-standard' => 'Standard',
@@ -3252,6 +3254,8 @@ Om du kör den kan din dator skadas.",
 'minutes' => '{{PLURAL:$1|$1 minut|$1 minuter}}',
 'hours' => '{{PLURAL:$1|$1 timme|$1 timmar}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagar}}',
+'months' => '{{PLURAL:$1|$1 månad|$1 månader}}',
+'years' => '{{PLURAL:$1|$1 år}}',
 'ago' => '$1 sedan',
 'just-now' => 'precis nu',
 
@@ -4010,6 +4014,10 @@ Bilder visas i full upplösning, andra filtyper öppnas direkt i de program som
 'logentry-newusers-create2' => 'Användarkonto $3 skapades av $1',
 'logentry-newusers-autocreate' => 'Kontot $1 skapades automatiskt',
 'newuserlog-byemail' => 'lösenord skickat med e-post',
+'logentry-rights-rights' => '$1 ändrade gruppmedlemskap för $3 från $4 till $5',
+'logentry-rights-rights-legacy' => '$1 ändrade gruppmedlemskap för $3',
+'logentry-rights-autopromote' => '$1 befordrades automatiskt från $4 till $5',
+'rightsnone' => '(inga)',
 
 # Feedback
 'feedback-bugornote' => 'Om du är redo att beskriva ett tekniskt problem detaljerat, var god [$1 rapporterar en bugg].
index 382d200..46077e5 100644 (file)
@@ -1345,11 +1345,13 @@ Taarifa hii itakuwa wazi.',
 'right-sendemail' => 'Kutuma barua-pepe kwa watumiaji wengine',
 'right-passwordreset' => 'Onesha barua pepe zinazoweka neno la siri upya',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Kumbukumbu za kuanzisha akaunti za watumiaji',
+'newuserlogpagetext' => 'Hii ni kumbukumbu ya akaunti mpya zilizosajiliwa.',
+
 # User rights log
 'rightslog' => 'Kumbukumbu za vyeo vya watumiaji',
 'rightslogtext' => 'Hii ni kumbukumbu za mabadiliko za wezo za watumiaji.',
-'rightslogentry' => 'alibadilisha wezo za $1 aliyekuwa na wezo za kundi $2 awe mwanachama wa $3',
-'rightsnone' => '(hana)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'kusoma ukurasa huu',
@@ -1922,10 +1924,6 @@ Itifaki zinazoungwa mkono: <code>$1</code> (usiongeza hizi unapotafuta).',
 'activeusers-hidesysops' => 'Ficha wakabidhi',
 'activeusers-noresult' => 'Watumiaji hawakupatikana.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Kumbukumbu za kuanzisha akaunti za watumiaji',
-'newuserlogpagetext' => 'Hii ni kumbukumbu ya akaunti mpya zilizosajiliwa.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Wezo za kundi za watumiaji',
 'listgrouprights-summary' => 'Inafuata orodha ya kundi za watumiaji wa wiki hii, pamoja na maelezo ya wezo zao za kushughulika mambo.
@@ -2055,6 +2053,8 @@ $UNWATCHURL
 
 Kutoa maoni yako au kupata msaada mwingine:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'alianzisha',
+'changed' => 'alibadilisha',
 
 # Delete
 'deletepage' => 'Futa ukurasa',
@@ -2584,6 +2584,9 @@ Tafadhali jaribu tena.',
 'pageinfo-toolboxlink' => 'Maelezo ya ukurasa',
 'pageinfo-contentpage-yes' => 'Ndiyo',
 'pageinfo-protect-cascading-yes' => 'Ndiyo',
+'pageinfo-category-info' => 'Maelezo ya jamii',
+'pageinfo-category-pages' => 'Idadi ya kurasa',
+'pageinfo-category-files' => 'Idadi ya mafaili',
 
 # Image deletion
 'deletedrevision' => 'Pitio la awali lililofutwa $1',
@@ -3156,6 +3159,7 @@ Tovuti hii inapata matatatizo wakati huu.',
 'logentry-newusers-create2' => '$1 alianzisha akaunti ya mtumiaji $3',
 'logentry-newusers-autocreate' => 'Akaunti ya mtumiaji $1 ilianzishwa na mashine',
 'newuserlog-byemail' => 'neno la siri limetumwa kwa barua pepe',
+'rightsnone' => '(hana)',
 
 # Feedback
 'feedback-subject' => 'Mada:',
index cee2baf..39c5d9b 100644 (file)
@@ -1180,11 +1180,13 @@ $1',
 'right-userrights-interwiki' => 'Sprowjej uprawńyńo užytkowńikůw na zajtach inkšych Wiki',
 'right-siteadmin' => 'Zawjerańy i uodmykańy bazy danych',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nowe użytkowniki',
+'newuserlogpagetext' => 'To je rejer uostatńo utworzůnych kůnt użytkowńikůw',
+
 # User rights log
 'rightslog' => 'Uprawńyńa',
 'rightslogtext' => 'Rejer půmjyńań uprawńyń užytkowńikůw.',
-'rightslogentry' => 'půmjyńiu/a uprawńyńo užytkowńika $1 ($2 → $3)',
-'rightsnone' => 'podstawowo',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'přeglůndańo tyj zajty',
@@ -1627,10 +1629,6 @@ Uobsůgiwane protokoły: <code>$1</code>',
 '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ńyńo 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.
@@ -1738,6 +1736,8 @@ Kejbyś chćou půmjyńić štalowańo swojej listy zajtůw, na kere dowoš poz
 
 Pomoc:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'utwořono',
+'changed' => 'pomjyńono',
 
 # Delete
 'deletepage' => 'Wyćep artikel',
@@ -2843,5 +2843,6 @@ Naškryflej sam mjano plika bez prefiksu „{{ns:file}}:”.',
 'revdelete-restricted' => 'naštaluj uograničyńo do administratorůw',
 'revdelete-unrestricted' => 'wycofej uograničyńo do administratorůw',
 'newuserlog-byemail' => 'hasło uostało wysłane e-brifym',
+'rightsnone' => 'podstawowo',
 
 );
index e10fc87..fd63bb0 100644 (file)
@@ -873,7 +873,7 @@ $1 எனும் பயனரையோ வேறு [[{{MediaWiki:Grouppage-sy
 'currentrevisionlink' => 'நடப்பிலுள்ள திருத்தம்',
 'cur' => 'நடப்பு',
 'next' => 'அடுத்தது',
-'last' => 'à®®à¯\81நà¯\8dதà¯\88ய',
+'last' => 'à®®à¯\81நà¯\8dதிய',
 'page_first' => 'முதல்',
 'page_last' => 'கடைசி',
 'histlegend' => 'வேறுபாட்டைக் காண வேண்டிய இரண்டு பத்திப்புக்களை தெரிவுச் செய்து கீழுள்ள பொத்தானை அழுத்தவும்.<br />
@@ -1050,7 +1050,7 @@ $1",
 'notextmatches' => 'கட்டுரை உரை எதுவும் பொருந்தவில்லை',
 'prevn' => 'முன் {{PLURAL:$1|$1}}',
 'nextn' => 'அடுத்த {{PLURAL:$1|$1}}',
-'prevn-title' => 'à®®à¯\81நà¯\8dதà¯\88ய $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
+'prevn-title' => 'à®®à¯\81நà¯\8dதிய $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
 'nextn-title' => 'அடுத்த $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
 'shown-title' => 'ஒரு பக்கத்திற்கு $1 {{PLURAL:$1|முடிவு|முடிவுகள்}} காட்டவும்',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) பக்கங்களைப் பார்.',
@@ -1340,12 +1340,13 @@ $1",
 'right-sendemail' => 'மற்ற பயனர்களுக்கு மின்னஞ்சல் அனுப்பு',
 'right-passwordreset' => 'கடவுச்சொல் மீட்டமை மின்னஞ்சல்களை காண்.',
 
+# Special:Log/newusers
+'newuserlogpage' => 'பயனர் உருவாக்கம் பற்றிய குறிப்பு',
+'newuserlogpagetext' => 'இது பயனர் படைப்புகளின் பதிவு ஆகும்.',
+
 # User rights log
 'rightslog' => 'பயனர் உரிமைகள் பதிகை',
 'rightslogtext' => 'இது பயனர் உரிமைகள் தொடர்பான மாற்றங்களின் பதிகையாகும்.',
-'rightslogentry' => '$1 பயனருக்கான குழு உறுப்பியம் $2 குழுவிலிருந்து $3 குழுவிற்கு மாற்றப்பட்டது',
-'rightslogentry-autopromote' => '  $2  லிருந்து $3 க்கு தானாக உயர்ந்தது.',
-'rightsnone' => '(எதுவுமில்லை)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'இப் பக்கத்தை வாசிக்கவும்',
@@ -1708,7 +1709,7 @@ $1',
 'filerevert-defaultcomment' => '$2, $1 இல் உள்ளபடியான பதிப்புக்கு முன்நிலையாக்கப்பட்டது',
 'filerevert-submit' => 'முன்நிலையாக்கு',
 'filerevert-success' => "ஊடகம் '''[[Media:$1|$1]]''' $3, $2 இல் உள்ளபடியான $4 பதிப்புக்கு முன்நிலையாக்கப்பட்டது.",
-'filerevert-badversion' => 'à®\95à¯\81றிதà¯\8dத à®¨à¯\87à®° à®®à¯\81தà¯\8dதிரà¯\88யà¯\81à®\9fனà¯\8d à®\95à¯\82à®\9fிய à®®à¯\81நà¯\8dதà¯\88ய à®\89ளà¯\8dளà®\95 திருத்தங்கள் காணப்படவில்லை.',
+'filerevert-badversion' => 'à®\95à¯\81றிதà¯\8dத à®¨à¯\87à®° à®®à¯\81தà¯\8dதிரà¯\88யà¯\81à®\9fனà¯\8d à®\95à¯\82à®\9fிய à®®à¯\81நà¯\8dதிய à®\89ளà¯\8dளà®\95தà¯\8d திருத்தங்கள் காணப்படவில்லை.',
 
 # File deletion
 'filedelete' => '$1 கோப்பை நீக்கு',
@@ -1886,13 +1887,13 @@ $1',
 'allpages' => 'அனைத்துப் பக்கங்கள்',
 'alphaindexline' => '$1 தொடக்கம் $2 வரை',
 'nextpage' => 'அடுத்த பக்கம் ($1)',
-'prevpage' => 'à®®à¯\81நà¯\8dதà¯\88ய பக்கம் ($1)',
+'prevpage' => 'à®®à¯\81நà¯\8dதிய பக்கம் ($1)',
 'allpagesfrom' => 'அடுத்து காணப்படும் எழுத்தில் தொடங்கும் பக்கங்களை காட்டு:',
 'allpagesto' => 'இவ்வெழுத்துக்களில் முடிவடையும் பக்கங்களைக் காட்டு',
 'allarticles' => 'அனைத்துக் கட்டுரைகள்',
 'allinnamespace' => 'அனைத்து பக்கங்கள் ($1 பெயர்வெளியில்)',
 'allnotinnamespace' => 'அனைத்து பக்கங்கள் ($1 பெயர்வெளி தவிர்த்து)',
-'allpagesprev' => 'à®®à¯\81நà¯\8dதà¯\88ய',
+'allpagesprev' => 'à®®à¯\81நà¯\8dதிய',
 'allpagesnext' => 'அடுத்தது',
 'allpagessubmit' => 'செல்',
 'allpagesprefix' => 'பின்வரும் முன்னொட்டு உடைய பக்கங்களை காட்டு:',
@@ -1940,10 +1941,6 @@ $1',
 'activeusers-hidesysops' => 'நிர்வாகிகளை மறை',
 'activeusers-noresult' => 'எந்தவொரு பயனர்களும் காணப்படவில்லை.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'பயனர் உருவாக்கம் பற்றிய குறிப்பு',
-'newuserlogpagetext' => 'இது பயனர் படைப்புகளின் பதிவு ஆகும்.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'பயனர் குழு உரிமைகள்',
 'listgrouprights-key' => '<span class="listgrouprights-granted">உரிமை வழங்கப்பட்டது</span>
@@ -2065,6 +2062,8 @@ $NEWPAGE
 
 பின்னூட்டம், மேலதிக உதவிகளுக்கு:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'தொடக்கப்பட்டது',
+'changed' => 'மாற்றப்பட்டது',
 
 # Delete
 'deletepage' => 'பக்கத்தை நீக்கு',
@@ -2202,7 +2201,7 @@ $NEWPAGE
 நீக்கப்பட்ட திருத்தங்களின் வாசகங்களை நிர்வாகிகள் மட்டுமே காணமுடியும்.',
 'undelete-revision' => '$3 செய்த $1 பக்கத்தின் ($4, $5 இல் உள்ளபடியான) நீக்கப்பட்ட திருத்தம்:',
 'undeleterevision-missing' => 'செல்லுபடியற்ற அல்லது காணப்படாத திருத்தம். நீங்கள் இங்கே வந்த இணைப்பு பழுதுள்ளதாக இருக்கலாம் அல்லது குறித்த திருத்தம் பரணிலிருந்து நீக்கப்பட்டோ அல்லது மீட்கபட்டோ இருக்கலாம்.',
-'undelete-nodiff' => 'à®®à¯\81நà¯\8dதà¯\88ய திருத்தங்கள் காணப்படவில்லை.',
+'undelete-nodiff' => 'à®®à¯\81நà¯\8dதிய திருத்தங்கள் காணப்படவில்லை.',
 'undeletebtn' => 'மீட்டெடு',
 'undeletelink' => 'பார்க்க/மீட்டெடு',
 'undeleteviewlink' => 'பார்வையிடு',
@@ -2248,8 +2247,8 @@ $1',
 'contribsub2' => '$1 பயனரின் ($2)',
 'nocontribs' => 'இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.',
 'uctop' => '(மேல்)',
-'month' => 'மாதமà¯\8d à®\89à®\9fà¯\8dபà®\9f à®®à¯\81நà¯\8dதà¯\88ய:',
-'year' => 'à®\86ணà¯\8dà®\9fà¯\81 à®\89à®\9fà¯\8dபà®\9f à®®à¯\81நà¯\8dதà¯\88ய:',
+'month' => 'மாதமà¯\8d à®\89à®\9fà¯\8dபà®\9f à®®à¯\81நà¯\8dதிய:',
+'year' => 'à®\86ணà¯\8dà®\9fà¯\81 à®\89à®\9fà¯\8dபà®\9f à®®à¯\81நà¯\8dதிய:',
 
 'sp-contributions-newbies' => 'புதிய கணக்குகளின் பங்களிப்புகளை மட்டும் காட்டு',
 'sp-contributions-newbies-sub' => 'புதிய கணக்குகளுக்கு',
@@ -2279,7 +2278,7 @@ $1',
 'isredirect' => 'வழிமாற்றுப் பக்கம்',
 'istemplate' => 'உள்ளிடப்பட்டுள்ளது',
 'isimage' => 'கோப்பு இணைப்பு',
-'whatlinkshere-prev' => '{{PLURAL:$1|à®®à¯\81நà¯\8dதà¯\88ய|à®®à¯\81நà¯\8dதà¯\88ய $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|à®®à¯\81நà¯\8dதிய|à®®à¯\81நà¯\8dதிய $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|அடுத்த|அடுத்த $1}}',
 'whatlinkshere-links' => '← இணைப்புக்கள்',
 'whatlinkshere-hideredirs' => 'வழிமாற்றுகளை $1',
@@ -2785,7 +2784,7 @@ $1',
 'filedelete-archive-read-only' => 'வழங்கனால் பரண் அடைவு "$1" எழுதப்படமுடியாது.',
 
 # Browsing diffs
-'previousdiff' => 'â\86\90 à®®à¯\81நà¯\8dதà¯\88ய தொகுப்பு',
+'previousdiff' => 'â\86\90 à®®à¯\81நà¯\8dதிய தொகுப்பு',
 'nextdiff' => 'அடுத்த தொகுப்பு →',
 
 # Media information
@@ -3331,7 +3330,7 @@ $5
 'confirm-unwatch-top' => 'இப்பக்கத்தை உங்கள்  கவனிப்புப் பட்டியலிருந்து நீக்கா வேண்டுமா?',
 
 # Multipage image navigation
-'imgmultipageprev' => 'â\86\90 à®®à¯\81நà¯\8dதà¯\88ய பக்கம்',
+'imgmultipageprev' => 'â\86\90 à®®à¯\81நà¯\8dதிய பக்கம்',
 'imgmultipagenext' => 'அடுத்தப் பக்கம் →',
 'imgmultigo' => 'செல்!',
 'imgmultigoto' => 'பக்கம் $1இற்கு செல்க',
@@ -3340,7 +3339,7 @@ $5
 'ascending_abbrev' => 'ஏறு',
 'descending_abbrev' => 'இறங்கு',
 'table_pager_next' => 'அடுத்த பக்கம்',
-'table_pager_prev' => 'à®®à¯\81நà¯\8dதà¯\88ய பக்கம்',
+'table_pager_prev' => 'à®®à¯\81நà¯\8dதிய பக்கம்',
 'table_pager_first' => 'முதலாவது பக்கம்',
 'table_pager_last' => 'கடைசி பக்கம்',
 'table_pager_limit' => 'ஒரு பக்கத்துக்கு $1 உள்ளடக்கங்களைக் காட்டு',
@@ -3559,6 +3558,7 @@ $5
 'logentry-newusers-create2' => '$3 பயனர் கணக்கினை $1 உருவாக்கினார்',
 'logentry-newusers-autocreate' => 'கணக்கு  $1   தானாக    உருவாக்கப்பட்டது',
 'newuserlog-byemail' => 'மின்னஞ்சல் மூலம் கடவுச்சொல் அனுப்பப்பட்டுவிட்டது',
+'rightsnone' => '(எதுவுமில்லை)',
 
 # Feedback
 'feedback-bugornote' => 'நீங்கள் ஒரு தொழில்நுட்பக் கோளாறு குறித்து விரிவாக விளக்க தாயாராக இருந்தால் தயவுசெய்து [ $1  ஒரு bug பற்றி கூறு].
index 8dd1913..6fad2e8 100644 (file)
@@ -635,6 +635,9 @@ $messages = array(
 'right-delete' => 'ಪುಟೊಕುಲೆನ್ ಮಾಜಾಲೆ',
 'right-undelete' => 'ಪುಟೊನ್ ಮಾಜಾವಡೆ',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ಸದಸ್ಯ ರಚನೆ ಲಾಗ್',
+
 # User rights log
 'rightslog' => 'ಸದಸ್ಯೆರ್ನ ಹಕ್ಕು ದಾಖಲೆ',
 
@@ -771,9 +774,6 @@ $messages = array(
 'allarticles' => 'ಪೂರಾ ಲೇಖನೊಲು',
 'allpagessubmit' => 'ಪೋ',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ಸದಸ್ಯ ರಚನೆ ಲಾಗ್',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(ಸದಸ್ಯೆರ್ನ ಪಟ್ಟಿ)',
 
index bbbdbae..f1b9bba 100644 (file)
@@ -1391,11 +1391,13 @@ $1",
 'right-sendemail' => 'ఇతర వాడుకరులకు ఈ-మెయిలు పంపించగలగడం',
 'right-passwordreset' => 'సంకేతపదాన్ని పునరుద్ధరించిన ఈ-మెయిళ్ళు',
 
+# Special:Log/newusers
+'newuserlogpage' => 'కొత్త వాడుకరుల చిట్టా',
+'newuserlogpagetext' => 'ఇది వాడుకరి నమోదుల చిట్టా.',
+
 # User rights log
 'rightslog' => 'వాడుకరుల హక్కుల మార్పుల చిట్టా',
 'rightslogtext' => 'ఇది వాడుకరుల హక్కులకు జరిగిన మార్పుల చిట్టా.',
-'rightslogentry' => '$1 గారి సభ్యత్వ గుంపును $2 నుండి $3 కి మార్చారు',
-'rightsnone' => '(ఏమీలేవు)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ఈ పేజీని చదవండి',
@@ -1968,10 +1970,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'activeusers-hidesysops' => 'నిర్వాహకులను దాచు',
 'activeusers-noresult' => 'వాడుకరులెవరూ లేరు.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'కొత్త వాడుకరుల చిట్టా',
-'newuserlogpagetext' => 'ఇది వాడుకరి నమోదుల చిట్టా.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
 'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
@@ -2093,6 +2091,8 @@ $UNWATCHURL కి వెళ్ళండి.
 
 మీ అభిప్రాయాలు చెప్పేందుకు మరియు మరింత సహాయానికై:
 {{canonicalurl:{{MediaWiki:helppage}}}}',
+'created' => 'సృష్టించారు',
+'changed' => 'మార్చారు',
 
 # Delete
 'deletepage' => 'పేజీని తొలగించు',
@@ -3522,6 +3522,7 @@ $5
 'logentry-newusers-create2' => '$1  వాడుకరి ఖాతా $3ను సృష్టించారు',
 'logentry-newusers-autocreate' => '$1 ఖాతాను ఆటోమెటిగ్గా సృష్టించారు',
 'newuserlog-byemail' => 'ఈ-మెయిలులో సంకేతపదం పంపించాం',
+'rightsnone' => '(ఏమీలేవు)',
 
 # Feedback
 'feedback-subject' => 'విషయం:',
index 89b3401..3b58018 100644 (file)
@@ -1005,11 +1005,13 @@ $1',
 'right-userrights-interwiki' => 'Вироиши ихтиёроти корбарии корбарони дигар викиҳо',
 'right-siteadmin' => 'Бастн ва боз кардани пойгоҳи дода',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Гузориши эҷоди корбар',
+'newuserlogpagetext' => 'Ин гузориш аз номҳои корбарии тозасохташуда аст.',
+
 # User rights log
 'rightslog' => 'Гузориши ихтиёроти корбар',
 'rightslogtext' => 'Ин гузориш тағйироти ихтиёроти корбар аст.',
-'rightslogentry' => 'узвияти $1 аз гурӯҳ $2 ба $3 тағйир дода шуд',
-'rightsnone' => '(ҳеҷ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'вироиши ин саҳифа',
@@ -1377,10 +1379,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Нишон додани',
 'listusers-noresult' => 'Ҳеҷ корбаре ёфт нашуд.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Гузориши эҷоди корбар',
-'newuserlogpagetext' => 'Ин гузориш аз номҳои корбарии тозасохташуда аст.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Ихтиёроти гурӯҳҳои корбарӣ',
 'listgrouprights-group' => 'Гурӯҳ',
@@ -1473,6 +1471,8 @@ $NEWPAGE
 
 Пешниҳодот ва кӯмаки бештар:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'эҷод шуд',
+'changed' => 'тағйирёфта',
 
 # Delete
 'deletepage' => 'Ҳазфи саҳифа',
@@ -2534,5 +2534,6 @@ $5
 'revdelete-restricted' => 'маҳдудиятҳо ба мудирон амалӣ шуданд',
 'revdelete-unrestricted' => 'маҳдудиятҳо аз мудирон бардошта шуданд',
 'newuserlog-byemail' => 'калимаи убур ба почтаи электронӣ фиристода шуд',
+'rightsnone' => '(ҳеҷ)',
 
 );
index f80bb33..359c5cd 100644 (file)
@@ -887,11 +887,13 @@ On bojad kamtar az $1 {{PLURAL:$1|alomat|alomatho}} boşad.',
 'right-userrights-interwiki' => 'Viroişi ixtijoroti korbariji korbaroni digar vikiho',
 'right-siteadmin' => 'Bastn va boz kardani pojgohi doda',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Guzorişi eçodi korbar',
+'newuserlogpagetext' => 'In guzoriş az nomhoi korbariji tozasoxtaşuda ast.',
+
 # User rights log
 'rightslog' => 'Guzorişi ixtijoroti korbar',
 'rightslogtext' => 'In guzoriş taƣjiroti ixtijoroti korbar ast.',
-'rightslogentry' => 'uzvijati $1 az gurūh $2 ba $3 taƣjir doda şud',
-'rightsnone' => '(heç)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'viroişi in sahifa',
@@ -1227,10 +1229,6 @@ Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho
 'listusers-submit' => 'Nişon dodani',
 'listusers-noresult' => 'Heç korbare joft naşud.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Guzorişi eçodi korbar',
-'newuserlogpagetext' => 'In guzoriş az nomhoi korbariji tozasoxtaşuda ast.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Ixtijoroti gurūhhoi korbarī',
 'listgrouprights-group' => 'Gurūh',
@@ -1297,6 +1295,8 @@ Agar şumo dertar az fehristi nazarotaton in sahifaro hazv kardan xohed, dar men
 'enotif_lastvisited' => 'Baroi didani hamai taƣjirot az oxirin bore, ki sar zadaed $1ro bubined.',
 'enotif_lastdiff' => 'Baroi namoişi in taƣjir $1ro bubined.',
 'enotif_anon_editor' => 'korbari noşinos $1',
+'created' => 'eçod şud',
+'changed' => 'taƣjirjofta',
 
 # Delete
 'deletepage' => 'Hazfi sahifa',
@@ -2336,5 +2336,6 @@ Nişonai pajvandro biduni peşvand "{{ns:file}}:" vorid kuned.',
 'revdelete-restricted' => 'mahdudijatho ba mudiron amalī şudand',
 'revdelete-unrestricted' => 'mahdudijatho az mudiron bardoşta şudand',
 'newuserlog-byemail' => 'kalimai ubur ba poctai elektronī firistoda şud',
+'rightsnone' => '(heç)',
 
 );
index 8f6ffa8..d79544b 100644 (file)
@@ -198,30 +198,30 @@ $linkTrail = '/^([a-z]+)(.*)\$/sD';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ขีดเส้นใต้ลิงก์',
-'tog-justify' => 'à¸\88ัà¸\94ยà¹\88อหà¸\99à¹\89าà¹\80à¸\95à¹\87มà¸\9aรรà¸\97ัà¸\94',
+'tog-justify' => 'à¸\88ัà¸\94ยà¹\88อหà¸\99à¹\89าà¸\8aิà¸\94à¸\82อà¸\9a',
 'tog-hideminor' => 'ซ่อนการแก้ไขเล็กน้อยในหน้าปรับปรุงล่าสุด',
 'tog-hidepatrolled' => 'ซ่อนการแก้ไขที่ตรวจแล้วในหน้าปรับปรุงล่าสุด',
-'tog-newpageshidepatrolled' => 'à¸\8bà¹\88อà¸\99หà¸\99à¹\89าà¸\97ีà¹\88à¸\95รวà¸\88à¹\81ลà¹\89วà¸\88าà¸\81รายà¸\8aืà¹\88อหน้าใหม่',
+'tog-newpageshidepatrolled' => 'à¸\8bà¹\88อà¸\99หà¸\99à¹\89าà¸\97ีà¹\88à¸\95รวà¸\88à¹\81ลà¹\89วà¸\88าà¸\81รายà¸\81ารหน้าใหม่',
 'tog-extendwatchlist' => 'ขยายรายการเฝ้าดูให้แสดงการเปลี่ยนแปลงทั้งหมด ไม่เพียงการเปลี่ยนแปลงล่าสุด',
-'tog-usenewrc' => 'à¹\83à¸\8aà¹\89หà¸\99à¹\89าà¸\9bรัà¸\9aà¸\9bรุà¸\87ลà¹\88าสุà¸\94รุà¹\88à¸\99à¹\80สริม (ต้องการจาวาสคริปต์)',
+'tog-usenewrc' => 'à¸\88ัà¸\94à¸\81ลุà¹\88มà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¹\82à¸\94ยหà¸\99à¹\89าà¹\83à¸\99รายà¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87ลà¹\88าสุà¸\94à¹\81ละรายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู (ต้องการจาวาสคริปต์)',
 'tog-numberheadings' => 'ใส่เลขหัวข้อในสารบัญอัตโนมัติ',
 'tog-showtoolbar' => 'แสดงเครื่องมือแก้ไข (จาวาสคริปต์)',
 'tog-editondblclick' => 'แก้ไขหน้าโดยการดับเบิลคลิก (จาวาสคริปต์)',
 'tog-editsection' => 'เปิดการแก้ไขเฉพาะส่วนผ่านลิงก์ [แก้ไข]',
 'tog-editsectiononrightclick' => 'เปิดการแก้ไขเฉพาะส่วนโดยคลิกขวาที่หัวข้อ (จาวาสคริปต์)',
 'tog-showtoc' => 'แสดงสารบัญ (สำหรับหน้าที่มีมากกว่า 3 หัวข้อ)',
-'tog-rememberpassword' => 'à¸\88ำà¸\82à¹\89อมูลà¸\81ารà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aà¸\82อà¸\87à¸\89ัà¸\99à¹\83à¸\99à¹\80à¸\9aราà¹\80à¸\8bอรà¹\8cà¸\99ีà¹\89 (สูà¸\87สุà¸\94 $1 {{PLURAL: $1 | à¸§à¸±à¸\99 | à¸§à¸±à¸\99}})',
-'tog-watchcreations' => 'à¸\99ำหà¸\99à¹\89าà¸\97ีà¹\88สรà¹\89าà¸\87à¹\83สà¹\88รายการเฝ้าดู',
-'tog-watchdefault' => 'à¸\99ำหà¸\99à¹\89าà¸\97ีà¹\88à¹\81à¸\81à¹\89à¹\84à¸\82à¹\83สà¹\88รายการเฝ้าดู',
-'tog-watchmoves' => 'à¸\99ำหà¸\99à¹\89าà¸\97ีà¹\88à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¹\83สà¹\88รายการเฝ้าดู',
-'tog-watchdeletion' => 'à¸\99ำหà¸\99à¹\89าà¸\97ีà¹\88ลà¸\9aà¹\83สà¹\88รายการเฝ้าดู',
+'tog-rememberpassword' => 'à¸\88ำà¸\81ารลà¹\87อà¸\81อิà¸\99à¸\82อà¸\87à¸\89ัà¸\99à¹\83à¸\99à¹\80à¸\9aราวà¹\8cà¹\80à¸\8bอรà¹\8cà¸\99ีà¹\89 (สูà¸\87สุà¸\94 $1 à¸§à¸±à¸\99)',
+'tog-watchcreations' => 'à¹\80à¸\9eิà¹\88มหà¸\99à¹\89าà¸\97ีà¹\88à¸\89ัà¸\99สรà¹\89าà¸\87à¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99อัà¸\9bà¹\82หลà¸\94à¹\80à¸\82à¹\89ารายการเฝ้าดู',
+'tog-watchdefault' => 'à¹\80à¸\9eิà¹\88มหà¸\99à¹\89าà¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99à¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\82à¹\89ารายการเฝ้าดู',
+'tog-watchmoves' => 'à¹\80à¸\9eิà¹\88มà¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¹\80à¸\82à¹\89ารายการเฝ้าดู',
+'tog-watchdeletion' => 'à¹\80à¸\9eิà¹\88มหà¸\99à¹\89าà¹\81ละà¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\89ัà¸\99ลà¸\9aà¹\80à¸\82à¹\89ารายการเฝ้าดู',
 'tog-minordefault' => 'กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย',
 'tog-previewontop' => 'แสดงตัวอย่างการแก้ไขก่อนกล่องแก้ไข',
 'tog-previewonfirst' => 'แสดงตัวอย่างการแก้ไขสำหรับการแก้ไขครั้งแรก',
 'tog-nocache' => 'ปิดใช้งานแคช',
-'tog-enotifwatchlistpages' => 'หà¸\99à¹\89าà¸\97ีà¹\88à¹\80à¸\9dà¹\89าà¸\94ูมีà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82',
-'tog-enotifusertalkpages' => 'อีà¹\80มลหาà¹\80มืà¹\88อมีà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\89ัà¸\99',
-'tog-enotifminoredits' => 'à¹\81มà¹\89วà¹\88าà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\88ะà¹\80à¸\9bà¹\87à¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82เล็กน้อย',
+'tog-enotifwatchlistpages' => 'อีà¹\80มลหาà¹\80มืà¹\88อหà¸\99à¹\89าหรือà¹\84à¸\9fลà¹\8cà¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูมีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87',
+'tog-enotifusertalkpages' => 'อีà¹\80มลหาà¹\80มืà¹\88อหà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\89ัà¸\99มีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87',
+'tog-enotifminoredits' => 'อีà¹\80มลหาà¹\80à¸\8aà¹\88à¸\99à¸\81ัà¸\99สำหรัà¸\9aà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¹\81ละà¹\84à¸\9fลà¹\8cเล็กน้อย',
 'tog-enotifrevealaddr' => 'เผยที่อยู่อีเมลในอีเมลที่ชี้แจง',
 'tog-shownumberswatching' => 'แสดงจำนวนผู้ใช้ที่เฝ้าดู',
 'tog-oldsig' => 'ลายเซ็นที่ใช้อยู่:',
@@ -245,7 +245,7 @@ $messages = array(
 
 'underline-always' => 'เสมอ',
 'underline-never' => 'ไม่เคย',
-'underline-default' => 'à¸\84à¹\88าà¸\9bริยายà¸\95ามà¹\80วà¹\87à¸\9aเบราว์เซอร์',
+'underline-default' => 'à¸\84à¹\88าà¹\82à¸\94ยà¸\9bริยายà¸\82อà¸\87หà¸\99à¹\89าà¸\95าหรือเบราว์เซอร์',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'รูปแบบตัวอักษรในพื้นที่แก้ไข:',
@@ -330,6 +330,7 @@ $messages = array(
 'newwindow' => '(เปิดหน้าต่างใหม่)',
 'cancel' => 'ยกเลิก',
 'moredotdotdot' => 'ดูเพิ่ม...',
+'morenotlisted' => 'มีที่ยังไม่แสดงอีก...',
 'mypage' => 'หน้า',
 'mytalk' => 'พูดคุย',
 'anontalk' => 'พูดคุยกับไอพีนี้',
@@ -351,9 +352,9 @@ $messages = array(
 'vector-action-delete' => 'ลบ',
 'vector-action-move' => 'เปลี่ยนชื่อ',
 'vector-action-protect' => 'ป้องกัน',
-'vector-action-undelete' => 'ยà¸\81à¹\80ลิà¸\81à¸\81ารลà¸\9a',
+'vector-action-undelete' => 'à¸\81ูà¹\89à¸\84ืà¸\99',
 'vector-action-unprotect' => 'เปลี่ยนค่าการป้องกัน',
-'vector-simplesearch-preference' => 'à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ำà¹\81à¸\99ะà¸\99ำà¸\81ารà¸\84à¹\89à¸\99หาà¸\82ัà¹\89à¸\99สูà¸\87 (สำหรัà¸\9aสà¸\81ิà¸\99 Vector à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99)',
+'vector-simplesearch-preference' => 'à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¹\81à¸\96à¸\9aà¸\84à¹\89à¸\99หาอยà¹\88าà¸\87à¸\87à¹\88าย (à¹\80à¸\89à¸\9eาะหà¸\99à¹\89าà¸\95าà¹\80วà¸\81à¹\80à¸\95อรà¹\8c)',
 'vector-view-create' => 'สร้าง',
 'vector-view-edit' => 'แก้ไข',
 'vector-view-history' => 'ดูประวัติ',
@@ -393,12 +394,12 @@ $messages = array(
 'unprotect' => 'เปลี่ยนค่าการป้องกัน',
 'unprotectthispage' => 'แก้ไขการป้องกันหน้านี้',
 'newpage' => 'หน้าใหม่',
-'talkpage' => 'à¸\9eูà¸\94à¸\84ุยหน้านี้',
+'talkpage' => 'อภิà¸\9bรายหน้านี้',
 'talkpagelinktext' => 'พูดคุย',
 'specialpage' => 'หน้าพิเศษ',
 'personaltools' => 'เครื่องมือส่วนตัว',
-'postcomment' => 'หัวà¸\82à¹\89อใหม่',
-'articlepage' => 'à¹\81สà¸\94à¸\87หน้าเนื้อหา',
+'postcomment' => 'à¸\95อà¸\99ใหม่',
+'articlepage' => 'à¸\94ูหน้าเนื้อหา',
 'talk' => 'อภิปราย',
 'views' => 'ดู',
 'toolbox' => 'เครื่องมือ',
@@ -449,19 +450,19 @@ $1',
 'privacypage' => 'Project:นโยบายสิทธิส่วนบุคคล',
 
 'badaccess' => 'มีข้อผิดพลาดในการใช้สิทธิ',
-'badaccess-group0' => 'คุณไม่ได้รับอนุญาตให้ดำเนินการตามที่ร้องขอนี้',
+'badaccess-group0' => 'คุณไม่ได้รับอนุญาตให้ดำเนินการตามที่ร้องขอ',
 'badaccess-groups' => 'ปฏิบัติการที่คุณร้องขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่มหนึ่งกลุ่มใด ดังนี้}}: $1',
 
 'versionrequired' => 'ต้องการมีเดียวิกิรุ่น $1',
-'versionrequiredtext' => 'ต้องการมีเดียวิกิรุ่น $1 สำหรับใช้งานหน้านี้ ดูเพิ่ม [[Special:Version|รุ่นซอฟต์แวร์]]',
+'versionrequiredtext' => 'ต้องการมีเดียวิกิรุ่น $1 สำหรับใช้งานหน้านี้ ดู[[Special:Version|หน้ารุ่น]]',
 
 'ok' => 'ตกลง',
 'retrievedfrom' => 'รับข้อมูลจาก "$1"',
 'youhavenewmessages' => 'คุณมี$1 ($2)',
 'newmessageslink' => 'ข้อความใหม่',
 'newmessagesdifflink' => 'การเปลี่ยนแปลงล่าสุด',
-'youhavenewmessagesfromusers' => 'คุณมี$1จาก{{PLURAL:$3|ผู้ใช้คนอื่น|ผู้ใช้ $3 คน}} ($2)',
-'youhavenewmessagesmanyusers' => 'คุณมี$1จากผู้ใช้หลายคน ($2)',
+'youhavenewmessagesfromusers' => 'คุณมี $1จาก{{PLURAL:$3|ผู้ใช้คนอื่น|ผู้ใช้ $3 คน}} ($2)',
+'youhavenewmessagesmanyusers' => 'คุณมี $1จากผู้ใช้หลายคน ($2)',
 'newmessageslinkplural' => '$1 ข้อความใหม่',
 'newmessagesdifflinkplural' => '$1 การเปลี่ยนแปลงล่าสุด',
 'youhavenewmessagesmulti' => 'คุณมีข้อความใหม่ที่ $1',
@@ -491,7 +492,7 @@ $1',
 'sort-ascending' => 'เรียงจากน้อยไปมาก',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'à¹\80à¸\99ืà¹\89อหา',
+'nstab-main' => 'หà¸\99à¹\89า',
 'nstab-user' => 'หน้าผู้ใช้',
 'nstab-media' => 'หน้าสื่อ',
 'nstab-special' => 'หน้าพิเศษ',
@@ -508,10 +509,9 @@ $1',
 คุณอาจกรอกยูอาร์แอลผิด หรือมาตามลิงก์ที่ไม่ถูกต้อง
 หรืออาจเกิดจากข้อผิดพลาดในซอฟต์แวร์ซึ่ง {{SITENAME}} ใช้อยู่',
 'nosuchspecialpage' => 'ไม่มีหน้าพิเศษดังกล่าว',
-'nospecialpagetext' => '
-<strong>คุณร้องขอหน้าพิเศษไม่ถูกต้อง</strong>
+'nospecialpagetext' => '<strong>คุณร้องขอหน้าพิเศษไม่ถูกต้อง</strong>
 
-รายà¸\8aืà¹\88อหà¸\99à¹\89าà¸\9eิà¹\80ศษà¸\97ีà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87à¸\94ูà¹\84à¸\94à¹\89à¸\97ีà¹\88 [[Special:SpecialPages|รายà¸\8aืà¹\88อหน้าพิเศษ]]',
+รายà¸\81ารหà¸\99à¹\89าà¸\9eิà¹\80ศษà¸\97ีà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87à¸\94ูà¹\84à¸\94à¹\89à¸\97ีà¹\88 [[Special:SpecialPages|รายà¸\81ารหน้าพิเศษ]]',
 
 # General errors
 'error' => 'ข้อผิดพลาด',
@@ -553,7 +553,7 @@ $1',
 'fileexistserror' => 'ไม่สามารถเขียนไฟล์ "$1" ได้ เนื่องจากมีไฟล์อยู่แล้ว',
 'unexpected' => 'ผลที่ไม่คาดคิด: "$1"="$2"',
 'formerror' => 'ผิดพลาด: ไม่สามารถส่งแบบได้',
-'badarticleerror' => 'à¹\84มà¹\88สามารà¸\96à¸\94ำà¹\80à¸\99ิà¸\99à¸\81ารà¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\99ีà¹\89à¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89',
+'badarticleerror' => 'ไม่สามารถดำเนินปฏิบัติการนี้ในหน้านี้',
 'cannotdelete' => 'ไม่สามารถลบหน้าหรือไฟล์ "$1" 
 อาจมีผู้อื่นลบไปแล้ว',
 'cannotdelete-title' => "ไม่สามารถลบหน้า ''$1''",
@@ -561,21 +561,24 @@ $1',
 ไม่มีคำอธิบายสำหรับการยกเลิกนี้',
 'badtitle' => 'ชื่อไม่เหมาะสม',
 'badtitletext' => 'ชื่อหน้าที่ร้องขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อที่ผิดพลาดเนื่องจากลิงก์ข้ามมาจากภาษาอื่น ชื่อที่ใช้อาจมีตัวอักษรที่ไม่สามารถปรากฏในชื่อได้',
-'perfcached' => 'à¸\82à¹\89อมูลà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89อาà¸\88à¹\80à¸\9bà¹\87à¸\99à¸\82à¹\89อมูลà¹\80à¸\81à¹\88า à¸\97ีà¹\88à¹\80à¸\81à¹\87à¸\9aà¹\84วà¹\89à¹\83à¸\99à¹\81à¸\84à¸\8aà¸\82อà¸\87ระà¸\9aà¸\9a A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'ข้อมูลต่อไปนี้ถูกเก็บไว้ในหน่วยความจำแคช, และได้รับการปรับปรุงครั้งสุดท้าย $1. ค่าสูงสุดของ {{PLURAL:$4|หนึ่งผลลัพธ์คือ|$4 ผลลัพธ์คือ}} จะสามารถเก็บไว้ในหน่วยความจำแคชได้',
+'perfcached' => 'à¸\82à¹\89อมูลà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¸\96ูà¸\81à¹\80à¸\81à¹\87à¸\9aà¹\84วà¹\89à¹\83à¸\99à¹\81à¸\84à¸\8a à¹\81ละอาà¸\88ลà¹\89าสมัย à¸¡à¸µà¸\9cลà¸\81ารà¸\84à¹\89à¸\99หาสูà¸\87สุà¸\94 $1 à¸£à¸²à¸¢à¸\81ารà¹\83à¸\99à¹\81à¸\84à¸\8a',
+'perfcachedts' => 'ข้อมูลต่อไปนี้ถูกเก็บไว้ในหน่วยความจำแคช และได้รับการปรับล่าสุดเมื่อ $1 ค่าสูงสุด $4 ผลลัพธ์สามารถเก็บไว้ในหน่วยความจำแคชได้',
 'querypage-no-updates' => 'ขณะนี้การปรับปรุงหน้านี้ถูกระงับ ข้อมูลในที่นี่จะไม่รีเฟรชเป็นปัจจุบัน',
 'wrong_wfQuery_params' => 'พารามิเตอร์ที่ส่งไป wfQuery() ไม่ถูกต้อง<br />
 ฟังก์ชั่น: $1<br />
 คำค้น: $2',
 'viewsource' => 'ดูโค้ด',
 'viewsource-title' => 'ดูโค้ดสำหรับ $1',
-'actionthrottled' => 'à¸\81ารà¸\81ระà¸\97ำà¸\99ีà¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9aà¸\8aัà¹\88วà¸\84ราว',
+'actionthrottled' => 'การกระทำถูกระงับชั่วคราว',
 'actionthrottledtext' => 'เพื่อเป็นมาตรการป้องกันสแปม คุณจึงถูกจำกัดมิให้กระทำสิ่งนี้ไม่ให้ติดต่อกันหลายครั้งเกินไปในช่วงระยะเวลาสั้น ๆ ซึ่งขณะนี้คุณได้กระทำเกินขีดจำกัดแล้ว กรุณารอสักครู่แล้วลองอีกครั้ง',
-'protectedpagetext' => 'หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87อà¸\81à¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82',
+'protectedpagetext' => 'หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¸\9bà¹\89อà¸\87à¸\81ัà¸\99มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82หรือà¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารอืà¹\88à¸\99',
 'viewsourcetext' => 'คุณสามารถดูและคัดลอกโค้ดหน้านี้ได้:',
-'viewyourtext' => "คุณสามารถเปิดดูและคัดลอกต้นฉบับของ '''การแก้ไขของคุณ''' ของหน้านี้ได้",
-'protectedinterface' => 'หน้านี้เป็นข้อความที่ใช้แสดงบนหน้าตาหรือส่วนติดต่อผู้ใช้ของซอฟต์แวร์ ถูกล็อกห้ามแก้ไขเพื่อป้องกันการก่อกวน',
-'editinginterface' => "'''คำเตือน:''' คุณกำลังแก้ไขข้อความที่ใช้แสดงบนหน้าตาหรือส่วนติดต่อผู้ใช้ของซอฟต์แวร์  การแก้ไขหน้านี้จะมีผลต่อการแสดงข้อความบนส่วนติดต่อผู้ใช้ของทุกคน  ถ้าคุณต้องการแปลหน้านี้ ให้ลองใช้บริการของ [//translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] ซึ่งเป็นโครงการสำหรับแปลซอฟต์แวร์มีเดียวิกิ",
+'viewyourtext' => "คุณสามารถดูและคัดลอกต้นฉบับ'''การแก้ไขของคุณ'''ในหน้านี้ได้",
+'protectedinterface' => 'หน้านี้เป็นข้อความอินเตอร์เฟซสำหรับซอฟต์แวร์บนวิกินี้ และถูกป้องกันเพื่อมิให้มีการกระทำผิด
+ในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น',
+'editinginterface' => "'''คำเตือน:''' คุณกำลังแก้ไขหน้าที่ใช้เพื่อให้ข้อความอินเตอร์เฟซแก่ซอฟต์แวร์
+การเปลี่ยนแปลงหน้านี้จะกระทบต่อลักษณะของอินเตอร์เฟซผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้
+ในการเพิ่มหรือเปลี่ยนแปลงคำแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
 'sqlhidden' => '(คำสั่ง SQL ซ่อนอยู่)',
 'cascadeprotected' => 'หน้านี้ได้รับการป้องกันจากการแก้ไข เนื่องจากหน้านี้ถูกใช้เป็นส่วนหนึ่งใน{{PLURAL:$1|หน้า $2 ซึ่งได้รับการป้องกันแบบ "ทบทุกลำดับขั้น"|หน้าซึ่งได้รับการป้องกันแบบ "ทบทุกลำดับขั้น" ดังต่อไปนี้: $2}}',
 'namespaceprotected' => "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ '''$1'''",
@@ -600,8 +603,8 @@ $1',
 คุณสามารถใช้งาน {{SITENAME}} ต่อในฐานะผู้ใช้นิรนาม หรือคุณสามารถ<span class='plainlinks'>[$1 ล็อกอินกลับเข้าไป]</span>ด้วยชื่อผู้ใช้เดิมหรือชื่อผู้ใช้อื่น
 อย่างไรก็ตามอาจมีบางหน้าที่แสดงผลเสมือนคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
 'welcomeuser' => 'ยินดีต้อนรับ $1!',
-'welcomecreation-msg' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\84ุà¸\93à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¹\81ลà¹\89ว
-อย่าลืมเปลี่ยนแปลง[[Special:Preferences|การตั้งค่าใน{{SITENAME}}]]ของคุณ',
+'welcomecreation-msg' => 'บัญชีของคุณถูกสร้างขึ้นแล้ว
+อย่าลืมเปลี่ยนแปลง[[Special:Preferences|การตั้งค่าใน {{SITENAME}}]] ของคุณ',
 'yourname' => 'ชื่อผู้ใช้',
 'yourpassword' => 'รหัสผ่าน',
 'yourpasswordagain' => 'พิมพ์รหัสผ่านอีกครั้ง:',
@@ -609,19 +612,19 @@ $1',
 'securelogin-stick-https' => 'ยังคงเชื่อมต่อกับ HTTPS หลังจากล็อกอิน',
 'yourdomainname' => 'โดเมนของคุณ:',
 'password-change-forbidden' => 'คุณไม่สามารถเปลี่ยนรหัสผ่านบนวิกินี้',
-'externaldberror' => 'à¹\80à¸\81ิà¸\94à¸\84วามà¸\9cิà¸\94à¸\9eลาà¸\94à¹\83à¸\99à¸\81ารระà¸\9aุà¸\95ัวà¸\95à¸\99à¸\88าà¸\81ภายà¸\99อà¸\81 à¸«à¸£à¸·à¸­à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\83à¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\9aัà¸\8dà¸\8aีอืà¹\88à¸\99',
+'externaldberror' => 'มีà¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\82อà¸\87à¸\90าà¸\99à¸\82à¹\89อมูลà¹\83à¸\99à¸\81ารà¸\9eิสูà¸\88à¸\99à¹\8cà¸\95ัวà¸\88ริà¸\87 à¸«à¸£à¸·à¸­à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aอà¸\99ุà¸\8dาà¸\95à¹\83หà¹\89à¸\9bรัà¸\9aà¸\9aัà¸\8dà¸\8aีภายà¸\99อà¸\81à¸\82อà¸\87à¸\84ุà¸\93',
 'login' => 'ล็อกอิน',
 'nav-login-createaccount' => 'ล็อกอิน / สร้างบัญชี',
-'loginprompt' => 'à¸\95à¹\89อà¸\87à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¸\81à¹\88อà¸\99à¸\97ีà¹\88à¸\88ะลà¹\87อà¸\81อิà¸\99à¹\80à¸\82à¹\89าสูà¹\88 {{SITENAME}}',
+'loginprompt' => 'ต้องเปิดใช้คุกกี้ก่อนจะล็อกอินเข้าสู่ {{SITENAME}}',
 'userlogin' => 'ล็อกอิน / สร้างบัญชี',
 'userloginnocreate' => 'ล็อกอิน',
 'logout' => 'ล็อกเอาต์',
 'userlogout' => 'ล็อกเอาต์',
 'notloggedin' => 'ไม่ได้ล็อกอิน',
-'nologin' => "ล็อกอินด้านล่างหรือ '''$1'''",
+'nologin' => 'ไม่มีบัญชีหรือ $1',
 'nologinlink' => 'สร้างบัญชี',
 'createaccount' => 'สร้างบัญชี',
-'gotaccount' => "มีà¸\9aัà¸\8dà¸\8aีà¹\81ลà¹\89วหรือà¹\84มà¹\88 '''$1'''",
+'gotaccount' => "มีà¸\9aัà¸\8dà¸\8aีà¹\81ลà¹\89วà¹\83à¸\8aà¹\88à¹\84หม '''$1'''",
 'gotaccountlink' => 'ล็อกอิน',
 'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
 'createaccountmail' => 'ผ่านทางอีเมล',
@@ -637,16 +640,16 @@ $1',
 'noname' => 'คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง',
 'loginsuccesstitle' => 'ล็อกอินสำเร็จ',
 'loginsuccess' => "'''ขณะนี้คุณล็อกอินเข้าสู่ {{SITENAME}} ด้วยชื่อ \"\$1\"'''",
-'nosuchuser' => 'à¹\84มà¹\88มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\8aืà¹\88อ "$1"
+'nosuchuser' => 'ไม่มีผู้ใช้ชื่อ "$1"
 อักษรใหญ่เล็กมีผลต่อชื่อผู้ใช้
-à¸\81รุà¸\93าà¸\95รวà¸\88à¸\81ารสะà¸\81à¸\94อีà¸\81à¸\84รัà¹\89à¸\87 à¸«à¸£à¸·à¸­[[Special:UserLogin/signup|สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\83หมà¹\88]]',
-'nosuchusershort' => 'à¹\84มà¹\88มีà¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\8aืà¹\88อ "$1" à¸\81รุà¸\93าà¸\95รวà¸\88สอà¸\9aà¸\81ารสะà¸\81à¸\94',
+กรุณาตรวจการสะกดอีกครั้ง หรือ[[Special:UserLogin/signup|สร้างบัญชีใหม่]]',
+'nosuchusershort' => 'ไม่มีผู้ใช้ชื่อ "$1" กรุณาตรวจสอบการสะกด',
 'nouserspecified' => 'คุณต้องระบุชื่อผู้ใช้',
 'login-userblocked' => 'ผู้ใช้นี้ถูกบล็อก ไม่อนุญาตให้ล็อกอิน',
 'wrongpassword' => 'รหัสผ่านที่ใส่ไม่ถูกต้อง โปรดลองอีกครั้ง',
 'wrongpasswordempty' => 'ยังไม่ได้ระบุรหัสผ่าน โปรดลองอีกครั้ง',
 'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย $1 ตัวอักษร',
-'password-name-match' => 'รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¹\84มà¹\88à¹\80หมือà¸\99à¸\81ัà¸\9aชื่อผู้ใช้ของคุณ',
+'password-name-match' => 'รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\95à¹\88าà¸\87à¸\88าà¸\81ชื่อผู้ใช้ของคุณ',
 'password-login-forbidden' => 'ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้',
 'mailmypassword' => 'อีเมลรหัสผ่านใหม่',
 'passwordremindertitle' => 'รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}',
@@ -665,11 +668,11 @@ $1',
 จึงส่งผลให้ผู้เข้าชมที่ใช้หมายเลขไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้',
 'emailauthenticated' => 'อีเมลของคุณได้รับการรับรอง ณ วันที่ $2 เวลา $3',
 'emailnotauthenticated' => 'อีเมลของคุณยังไม่ได้ถูกยืนยัน ดังนั้นคำสั่งพิเศษที่ใช้งานผ่านอีเมลยังไม่เปิดใช้งาน',
-'noemailprefs' => 'รัà¸\9aอีà¹\80มลà¸\95ามà¹\80à¸\87ืà¹\88อà¸\99à¹\84à¸\82à¸\9eิà¹\80ศษà¸\95à¹\88อà¹\84à¸\9bà¸\99ี้',
+'noemailprefs' => 'ระà¸\9aุà¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¹\83à¸\99à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\82อà¸\87à¸\84ุà¸\93à¹\80à¸\9eืà¹\88อà¹\83หà¹\89à¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¹\80หลà¹\88าà¸\99ีà¹\89à¸\97ำà¸\87าà¸\99à¹\84à¸\94้',
 'emailconfirmlink' => 'ยืนยันอีเมลของคุณ',
 'invalidemailaddress' => 'ไม่สามารถรับที่อยู่อีเมลได้ เพราะดูมีรูปแบบไม่ถูกต้อง
 โปรดใส่ที่อยู่ให้มีรูปแบบถูกต้อง หรือเว้นช่องนั้น',
-'cannotchangeemail' => 'à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\97ีà¹\88à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ัà¸\9aà¸\9aัà¸\8dà¸\8aีà¹\84มà¹\88สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99à¹\84à¸\94à¹\89à¹\83à¸\99สาราà¸\99ุà¸\81รมนี้',
+'cannotchangeemail' => 'à¹\84มà¹\88สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\9aà¸\99วิà¸\81ินี้',
 'emaildisabled' => 'เว็บไซต์นี้ไม่สามารถส่งอีเมล',
 'accountcreated' => 'ชื่อบัญชีได้ถูกสร้างขึ้น',
 'accountcreatedtext' => 'ชื่อบัญชีสำหรับ $1 ได้ถูกสร้างขึ้นแล้ว',
@@ -685,12 +688,12 @@ $1',
 'suspicious-userlogout' => 'คำขอของคุณเพื่อออกจากระบบถูกปฏิเสธ เพราะดูเหมือนว่าจะส่งมาจากเบราว์เซอร์หรือพร็อกซี่แคชที่เสีย',
 
 # E-mail sending
-'php-mail-error-unknown' => 'à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\97ีà¹\88à¹\84มà¹\88รูà¹\89à¸\88ัà¸\81à¹\83à¸\99à¸\9fัà¸\87à¸\81à¹\8cà¸\8aัà¸\99 mail() à¸\82อà¸\87 PHP',
+'php-mail-error-unknown' => 'à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¹\84มà¹\88à¸\97ราà¸\9aสาà¹\80หà¸\95ุà¹\83à¸\99à¸\9fัà¸\87à¸\81à¹\8cà¸\8aัà¸\99 mail() à¸\82อà¸\87à¸\9eีà¹\80อà¸\8aà¸\9eี',
 'user-mail-no-addy' => 'พยายามส่งอีเมลโดยไม่มีที่อยู่อีเมล',
 
 # Change password dialog
 'resetpass' => 'เปลี่ยนรหัสผ่าน',
-'resetpass_announce' => 'คุณใช้รหัสอีเมลชั่วคราวล็อกอิน คุณต้องกำหนดรหัสผ่านใหม่จึงจะเสร็จสิ้นขั้นตอนการล็อกอิน:',
+'resetpass_announce' => 'à¸\84ุà¸\93à¹\83à¸\8aà¹\89รหัสอีà¹\80มลà¸\8aัà¹\88วà¸\84ราวลà¹\87อà¸\81อิà¸\99 à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ำหà¸\99à¸\94รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\95รà¸\87à¸\99ีà¹\89 à¸\88ึà¸\87à¸\88ะà¹\80สรà¹\87à¸\88สิà¹\89à¸\99à¸\82ัà¹\89à¸\99à¸\95อà¸\99à¸\81ารลà¹\87อà¸\81อิà¸\99:',
 'resetpass_text' => '<!-- เพิ่มข้อความที่นี่ -->',
 'resetpass_header' => 'เปลี่ยนรหัสผ่าน',
 'oldpassword' => 'รหัสผ่านเดิม:',
@@ -707,17 +710,17 @@ $1',
 'resetpass-temp-password' => 'รหัสผ่านชั่วคราว:',
 
 # Special:PasswordReset
-'passwordreset' => 'ลà¹\89าà¸\87รหัสà¸\9cà¹\88าà¸\99',
+'passwordreset' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
 'passwordreset-text' => 'กรอกแบบนี้เพื่อรับตัวเตือนอีเมลของรายละเอียดบัญชีของคุณ',
 'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
-'passwordreset-disabled' => 'à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¹\84มà¹\88สามารà¸\96à¸\97ำà¹\84à¸\94à¹\89à¹\83นวิกินี้',
+'passwordreset-disabled' => 'à¸\81ารà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\9aนวิกินี้',
 'passwordreset-username' => 'ชื่อผู้ใช้:',
 'passwordreset-domain' => 'โดเมน:',
 'passwordreset-email' => 'ที่อยู่อีเมล:',
 'passwordreset-emailtitle' => 'รายละเอียดบัญชีบน {{SITENAME}}',
 'passwordreset-emailelement' => 'ชื่อผู้ใช้: $1
 รหัสผ่านชั่วคราว: $2',
-'passwordreset-emailsent' => 'อีà¹\80มลà¹\8cà¹\81à¸\88à¹\89à¸\87à¹\80à¸\95ือà¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¹\81ลà¹\89ว',
+'passwordreset-emailsent' => 'อีเมลแจ้งเตือนได้ถูกส่งไปแล้ว',
 
 # Special:ChangeEmail
 'changeemail' => 'เปลี่ยนที่อยู่อีเมล',
@@ -761,14 +764,14 @@ $1',
 'showpreview' => 'แสดงตัวอย่าง',
 'showlivepreview' => 'แสดงตัวอย่างทันที',
 'showdiff' => 'แสดงความเปลี่ยนแปลง',
-'anoneditwarning' => "'''à¸\84ำà¹\80à¸\95ือà¸\99:''' à¸«à¸¡à¸²à¸¢à¹\80ลà¸\82à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93à¸\88ะà¸\96ูà¸\81à¹\80à¸\81à¹\87à¸\9aà¹\84วà¹\89à¹\83à¸\99สà¹\88วà¸\99à¸\9bระวัà¸\95ิà¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99",
-'anonpreviewwarning' => 'คุณยังไม่ได้ล็อกอิน การบันทึกจะเก็บเลขที่อยู่ไอพีของคุณไว้ในประวัติของหน้านี้',
+'anoneditwarning' => "'''à¸\84ำà¹\80à¸\95ือà¸\99:''' à¸\84ุà¸\93มิà¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99 à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93à¸\88ะà¸\96ูà¸\81à¸\9aัà¸\99à¸\97ึà¸\81à¹\84วà¹\89à¹\83à¸\99à¸\9bระวัà¸\95ิà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89",
+'anonpreviewwarning' => "'''คุณมิได้ล็อกอิน การบันทึกจะเก็บที่อยู่ไอพีของคุณในประวัติการแก้ไขของหน้านี้'''",
 'missingsummary' => "'''อย่าลืม:''' คุณยังไม่ได้ระบุคำอธิบายการแก้ไขครั้งนี้ ถ้าคุณกดบันทึกไปส่วนคำอธิบายการแก้ไขนั้นจะว่างและไม่แสดงผล",
 'missingcommenttext' => 'กรุณาใส่ความเห็นด้านล่าง',
-'missingcommentheader' => "'''อยà¹\88าลืม:''' à¸\84ุà¸\93ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83สà¹\88หัวà¸\82à¹\89อ/à¸\88à¹\88าหัวสำหรัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¹\83à¸\99à¸\84รัà¹\89à¸\87à¸\99ีà¹\89 à¸\96à¹\89าà¸\84ุà¸\93à¸\81à¸\94 {{int:savearticle}} à¸­à¸µà¸\81à¸\84รัà¹\89à¸\87หà¸\99ึà¹\88à¸\87 à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93à¸\88ะไม่มีหัวข้อ",
+'missingcommentheader' => "'''à¸\9bระà¸\81าศà¹\80à¸\95ือà¸\99:''' à¸\84ุà¸\93ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83สà¹\88หัวà¸\82à¹\89อ/à¸\88à¹\88าหัวสำหรัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¸\99ีà¹\89 à¸\96à¹\89าà¸\84ุà¸\93à¸\81à¸\94 \"{{int:savearticle}}\" à¸­à¸µà¸\81à¸\84รัà¹\89à¸\87 à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93à¸\88ะà¸\96ูà¸\81à¸\9aัà¸\99à¸\97ึà¸\81à¹\82à¸\94ยไม่มีหัวข้อ",
 'summary-preview' => 'ตัวอย่างคำอธิบายการแก้ไข:',
 'subject-preview' => 'ตัวอย่างหัวข้อ:',
-'blockedtitle' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\96ูà¸\81หà¹\89ามà¹\83à¸\8aà¹\89à¸\87าà¸\99',
+'blockedtitle' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81',
 'blockedtext' => "'''ชื่อผู้ใช้หรือหมายเลขไอพีถูกของคุณถูกบล็อก'''
 
 $1 เป็นผู้ดำเนินการบล็อก 
@@ -799,20 +802,20 @@ $1 เป็นผู้ดำเนินการบล็อก
 กรุณาระบุรายละเอียดทั้งหมดข้างต้นในการร้องขอใดๆ ที่คุณกระทำ',
 'blockednoreason' => 'ไม่ได้ให้เหตุผลไว้',
 'whitelistedittext' => 'คุณต้อง$1เพื่อทำการแก้ไขหน้า',
-'confirmedittext' => 'à¹\84มà¹\88อà¸\99ุà¸\8dาà¸\95à¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82à¸\96à¹\89าà¹\84มà¹\88à¹\84à¸\94à¹\89à¸\97ำà¸\81ารยืà¸\99ยัà¸\99อีà¹\80มล à¸\81รุà¸\93ายืà¸\99ยัà¸\99อีà¹\80มลà¸\9cà¹\88าà¸\99à¸\97าà¸\87 [[Special:Preferences|การตั้งค่าผู้ใช้]]',
+'confirmedittext' => 'à¸\84ุà¸\93à¸\95à¹\89อà¸\87ยืà¸\99ยัà¸\99à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\82อà¸\87à¸\84ุà¸\93à¸\81à¹\88อà¸\99à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89า à¹\82à¸\9bรà¸\94à¸\81ำหà¸\99à¸\94à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\82อà¸\87à¸\84ุà¸\93à¹\81ละà¸\97ำà¹\83หà¹\89à¸\96ูà¸\81à¸\95à¹\89อà¸\87à¸\9cà¹\88าà¸\99[[Special:Preferences|การตั้งค่าผู้ใช้]]',
 'nosuchsectiontitle' => 'ไม่พบหัวข้อย่อย',
-'nosuchsectiontext' => 'à¸\84ุà¸\93à¸\9eยายามà¹\81à¸\81à¹\89à¹\84à¸\82หัวà¸\82à¹\89อยà¹\88อยà¸\97ีà¹\88à¹\84มà¹\88มีอยูà¹\88à¹\81ลà¹\89วà¹\83à¸\99à¸\82à¸\93ะà¸\99ีà¹\89 à¸«à¸±à¸§à¸\82à¹\89อยà¹\88อยà¸\94ัà¸\87à¸\81ลà¹\88าวอาà¸\88à¸\96ูà¸\81ยà¹\89ายหรือลà¸\9aà¹\83à¸\99à¸\82à¸\93ะà¸\97ีà¹\88à¸\84ุà¸\93à¸\94ูหà¸\99à¹\89าà¹\80วà¹\87à¸\9aอยู่',
+'nosuchsectiontext' => 'à¸\84ุà¸\93à¸\9eยายามà¹\81à¸\81à¹\89à¹\84à¸\82à¸\95อà¸\99à¸\97ีà¹\88à¹\84มà¹\88มีอยูà¹\88 à¸\95อà¸\99à¸\94ัà¸\87à¸\81ลà¹\88าวอาà¸\88à¸\96ูà¸\81ยà¹\89ายหรือลà¸\9aà¸\82à¸\93ะà¸\97ีà¹\88à¸\84ุà¸\93à¸\94ูหà¸\99à¹\89าอยู่',
 'loginreqtitle' => 'จำเป็นต้องล็อกอิน',
 'loginreqlink' => 'ล็อกอิน',
 'loginreqpagetext' => 'คุณต้อง$1เพื่อดูหน้าอื่น',
 'accmailtitle' => 'ส่งรหัสผ่านแล้ว',
-'accmailtext' => "มีà¸\81ารสรà¹\89าà¸\87รหัสà¸\9cà¹\88าà¸\99à¹\81à¸\9aà¸\9aสุà¹\88มà¹\83หà¹\89à¸\81ัà¸\9a [[User talk:$1|$1]] à¹\82à¸\94ยรหัสà¸\9cà¹\88าà¸\99à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\88ัà¸\94สà¹\88à¸\87à¹\84à¸\9bà¸\97ีà¹\88 $2
+'accmailtext' => "มีการสร้างรหัสผ่านแบบสุ่มให้กับ [[User talk:$1|$1]] โดยจัดส่งไปที่ $2
 
-สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\83หมà¹\88à¸\99ีà¹\89à¹\83à¸\99หà¸\99à¹\89า''[[Special:ChangePassword|à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99]]'' à¸«à¸¥à¸±à¸\87à¸\88าà¸\81à¸\97ีà¹\88ล็อกอินแล้ว",
+สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\9aัà¸\8dà¸\8aีà¹\83หมà¹\88à¸\99ีà¹\89à¹\83à¸\99หà¸\99à¹\89า''[[Special:ChangePassword|à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99]]'' à¸«à¸¥à¸±à¸\87ล็อกอินแล้ว",
 'newarticle' => '(ใหม่)',
-'newarticletext' => 'หน้านี้ยังไม่มีข้อความใด สามารถเริ่มสร้างหน้านี้โดยการพิมพ์ข้อความลงในกล่องด้านล่าง
-(ดูเพิ่มเติมที่ [[{{MediaWiki:Helppage}}|หน้าคำอธิบาย]])
-à¸\96à¹\89าà¹\84มà¹\88à¸\95à¹\89อà¸\87à¸\81ารสรà¹\89าà¸\87à¹\83หà¹\89à¸\81à¸\94à¸\9bุà¹\88ม à¸\96อยหลัà¸\87 (back) à¸\97ีà¹\88à¹\80วà¹\87à¸\9aà¹\80à¸\9aราวà¹\8cà¹\80à¸\8bอรà¹\8c',
+'newarticletext' => "คุณตามลิงก์ไปยังหน้าที่ยังไม่มีในขณะนี้
+ในการสร้างหน้า เริ่มพิมพ์ในกล่องด้านล่าง (ดูข้อมูลเพิ่มเติมใน[[{{MediaWiki:Helppage}}|หน้าคำอธิบาย]])
+à¸\96à¹\89าà¸\84ุà¸\93มาà¹\82à¸\94ยอุà¸\9aัà¸\95ิà¹\80หà¸\95ุ à¹\83หà¹\89à¸\81à¸\94'''à¸\96อยหลัà¸\87''' (back) à¸\97ีà¹\88à¹\80à¸\9aราวà¹\8cà¹\80à¸\8bอรà¹\8c",
 'anontalkpagetext' => "----''หน้านี้เป็นหน้าพูดคุยสำหรับผู้ใช้นิรนาม ซึ่งยังไม่ได้สร้างบัญชีผู้ใช้
 โดยทางเราจำเป็นต้องระบุตัวตนผ่านทางหมายเลขไอพี
 ซึ่งหมายเลขไอพีนี้อาจถูกใช้ร่วมกันโดยผู้ใช้หลายคน
@@ -823,25 +826,26 @@ $1 เป็นผู้ดำเนินการบล็อก
 'noarticletext-nopermission' => 'ปัจจุบันไม่มีข้อความในหน้านี้
 คุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]]ในหน้าอื่น หรือ<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span> แต่คุณไม่มีสิทธิ์สร้างหน้านี้',
 'userpage-userdoesnotexist' => 'บัญชีผู้ใช้ "<nowiki>$1</nowiki>" มิได้ลงทะเบียน กรุณาตรวจสอบก่อนว่าคุณต้องการสร้างหรือแก้ไขหน้านี้',
-'userpage-userdoesnotexist-view' => 'à¹\84มà¹\88มีà¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียà¸\99à¹\83à¸\99à¸\8aืà¹\88อ "$1"',
+'userpage-userdoesnotexist-view' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89 "$1" à¸¡à¸´à¹\84à¸\94à¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียà¸\99',
 'blocked-notice-logextract' => 'ปัจจุบันเลขที่อยู่ไอพีนี้ถูกบล็อก
-à¸\9bูมการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:',
+รายการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:',
 'clearyourcache' => "'''หมายเหตุ:''' หลังจากบันทึกแล้ว คุณอาจจะต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง
 * '''ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะคลิก ''Reload'' หรือกดปุ่ม ''Ctrl-F5'' หรือ ''Ctrl-R'' (''⌘-R'' บนแมคอินทอช)
 * '''กูเกิล โครม:''' กดปุ่ม ''Ctrl-Shift-R'' (''⌘-Shift-R'' บนแมคอินทอช)
 * '''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กดปุ่ม ''Ctrl'' ค้างไว้ขณะคลิก ''Refresh'' หรือกดปุ่ม ''Ctrl-F5''
 * '''คองเคอเรอร์:''' คลิก ''Reload'' หรือกดปุ่ม ''F5''
 * '''โอเปร่า:''' ล้างแคชในเมนู ''Tools → Preferences''",
-'usercssyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบ CSS สไตล์ชีทก่อนทำการบันทึก",
-'userjsyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม 'แสดงตัวอย่าง' เพื่อทดสอบสไตล์ชีตหรือจาวาสคริปต์ก่อนทำการบันทึก",
-'usercsspreview' => "'''อย่าลืมว่าสไตล์ชีตที่คุณสร้างยังไม่ได้ถูกบันทึก'''
-'''นี่คือการแสดงตัวอย่างเท่านั้น!'''",
-'userjspreview' => "'''อย่าลืมว่าจาวาสคริปต์ยังไม่ได้ถูกบันทึก ขณะนี้แสดงเพียงตัวอย่างเท่านั้น!'''",
-'sitecsspreview' => "'''โปรดจำไว้ว่า คุณกำลังแสดงตัวอย่าง CSS นี้เท่านั้น'''
+'usercssyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบสไตล์ชีท CSS ก่อนบันทึก",
+'userjsyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม \"แสดงตัวอย่าง\" เพื่อทดสอบจาวาสคริปต์ใหม่ก่อนบันทึก",
+'usercsspreview' => "'''อย่าลืมว่าคุณกำลังดูตัวอย่าง CSS ผู้ใช้ของคุณ'''
+'''ยังไม่ได้ถูกบันทึก!'''",
+'userjspreview' => "'''อย่าลืมว่าคุณกำลังทดสอบ/ดูตัวอย่างจาวาสคริปต์ผู้ใช้ของคุณ'''
+'''ยังไม่ถูกบันทึก!'''",
+'sitecsspreview' => "'''พึงระลึกว่าคุณกำลังแสดงตัวอย่าง CSS นี้เท่านั้น'''
 '''มันยังไม่ได้ถูกบันทึก!'''",
-'sitejspreview' => "'''à¹\82à¸\9bรà¸\94à¸\88ำà¹\84วà¹\89วà¹\88า à¸\84ุà¸\93à¸\81ำลัà¸\87à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87รหัส JavaScript นี้เท่านั้น'''
+'sitejspreview' => "'''à¸\9eึà¸\87ระลึà¸\81วà¹\88าà¸\84ุà¸\93à¸\81ำลัà¸\87à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¹\82à¸\84à¹\89à¸\94à¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cนี้เท่านั้น'''
 '''มันยังไม่ได้ถูกบันทึก!'''",
-'userinvalidcssjstitle' => "'''à¸\84ำà¹\80à¸\95ือà¸\99:''' à¹\84มà¹\88มีà¹\81à¸\9aà¸\9aหà¸\99à¹\89าà¸\95า \"\$1\" à¸­à¸¢à¹\88าลืมวà¹\88าหà¸\99à¹\89า .css à¹\81ละ .js à¸\97ีà¹\88à¸\9bรัà¸\9aà¹\81à¸\95à¹\88à¸\87à¹\80อà¸\87 à¹\83à¸\8aà¹\89à¹\80à¸\9bà¹\87à¸\99อัà¸\81ษรตัวพิมพ์เล็กทั้งหมด เช่น ใช้ {{ns:user}}:Foo/vector.css แทนที่จะเป็น {{ns:user}}:Foo/Vector.css",
+'userinvalidcssjstitle' => "'''à¸\84ำà¹\80à¸\95ือà¸\99:''' à¹\84มà¹\88มีหà¸\99à¹\89าà¸\95า \"\$1\" à¸«à¸\99à¹\89า .css à¹\81ละ .js à¸\97ีà¹\88à¸\9bรัà¸\9aà¹\81à¸\95à¹\88à¸\87à¹\80อà¸\87 à¹\83à¸\8aà¹\89ตัวพิมพ์เล็กทั้งหมด เช่น ใช้ {{ns:user}}:Foo/vector.css แทนที่จะเป็น {{ns:user}}:Foo/Vector.css",
 'updated' => '(ปรับปรุงแล้ว)',
 'note' => "'''คำแนะนำ:'''",
 'previewnote' => "'''พึงระลึกว่านี่เป็นเพียงตัวอย่างเท่านั้น'''
@@ -858,15 +862,17 @@ $1 เป็นผู้ดำเนินการบล็อก
 'token_suffix_mismatch' => "'''การแก้ไขของคุณได้ถูกปฏิเสธ เนื่องจากเครื่องลูกข่ายที่คุณใช้อยู่ได้ทำลายรูปแบบเครื่องหมายวรรคตอนในตราสารประจำการแก้ไข (edit token)'''
 ระบบไม่รับการแก้ไขของคุณเพื่อป้องกันความผิดพลาดของข้อมูล
 ในบางครั้งปัญหานี้จะเกิดขึ้นถ้าคุณใช้บริการเว็บพร็อกซีนิรนามที่มีบั๊ก",
-'edit_form_incomplete' => "'''à¸\9aาà¸\87สà¹\88วà¸\99à¸\82อà¸\87à¹\81à¸\9aà¸\9aà¹\81à¸\81à¹\89à¹\84à¸\82à¹\84à¸\9bà¹\84มà¹\88à¸\96ึà¸\87à¹\80à¸\8bิรà¹\8cà¸\9fà¹\80วอรà¹\8c à¸\95รวà¸\88สอà¸\9aอีà¸\81à¸\84รัà¹\89à¸\87วà¹\88าà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93ยัà¸\87à¸\84งอยู่และลองอีกครั้ง'''",
+'edit_form_incomplete' => "'''à¹\81à¸\9aà¸\9aà¹\81à¸\81à¹\89à¹\84à¸\82à¸\9aาà¸\87สà¹\88วà¸\99à¹\84à¸\9bà¹\84มà¹\88à¸\96ึà¸\87à¹\80à¸\8bิรà¹\8cà¸\9fà¹\80วอรà¹\8c à¸\95รวà¸\88สอà¸\9aอีà¸\81à¸\84รัà¹\89à¸\87วà¹\88าà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93ยังอยู่และลองอีกครั้ง'''",
 'editing' => 'กำลังแก้ไข $1',
-'creating' => 'กำลังสร้างหน้า $1',
+'creating' => 'กำลังสร้าง $1',
 'editingsection' => 'กำลังแก้ไข $1 (เฉพาะส่วน)',
-'editingcomment' => 'à¸\81ำลัà¸\87à¹\81à¸\81à¹\89à¹\84à¸\82 $1 (หัวà¸\82à¹\89อใหม่)',
+'editingcomment' => 'à¸\81ำลัà¸\87à¹\81à¸\81à¹\89à¹\84à¸\82 $1 (à¸\95อà¸\99ใหม่)',
 'editconflict' => 'แก้ไขชนกัน: $1',
-'explainconflict' => "ใครบางคนได้เปลี่ยนแปลงหน้านี้ขณะที่คุณกำลังแก้ไข
-ข้อความส่วนบนเป็นข้อความปัจจุบันของหน้านี้ และส่วนล่างเป็นการแก้ไขของคุณ
-คุณต้องทำการรวมการเปลี่ยนแปลงของคุณเข้ากับข้อความปัจจุบัน '''เฉพาะ'''ข้อความส่วนบนเท่านั้นที่จะถูกบันทึก เมื่อกดปุ่ม \"{{int:savearticle}}\"",
+'explainconflict' => "ใครบางคนได้เปลี่ยนแปลงหน้านี้ตั้งแต่คุณกำลังแก้ไข
+พื้นที่ข้อความส่วนบนมีข้อความหน้าที่มีอยู่ในปัจจุบัน
+การแก้ไขของคุณแสดงอยู่ในพื้นที่ข้อความส่วนล่าง
+คุณจะต้องรวมการเปลี่ยนแปลงของคุณเข้ากับข้อความที่มีอยู่
+'''เฉพาะ'''ข้อความในพื้นที่ข้อความส่วนบนเท่านั้นที่จะถูกบันทึก เมื่อกดปุ่ม \"{{int:savearticle}}\"",
 'yourtext' => 'ข้อความของคุณ',
 'storedversion' => 'รุ่นที่เก็บไว้',
 'nonunicodebrowser' => "'''คำเตือน: เว็บเบราว์เซอร์นี้ไม่สนับสนุนการใช้งานแบบยูนิโคด ตัวอักษรที่ไม่ใช่แบบแอสกีจะแสดงในกล่องการแก้ไขในลักษณะรหัสเลขฐานสิบหก'''",
@@ -890,7 +896,7 @@ $1 เป็นผู้ดำเนินการบล็อก
 'semiprotectedpagewarning' => "'''หมายเหตุ:''' หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้น
 รายการแก้ไขล่าสุดได้ถูกแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง",
 'cascadeprotectedwarning' => "'''คำเตือน:''' หน้านี้ถูกล็อก และแก้ไขได้เฉพาะผู้ใช้ที่มีสิทธิผู้ดูแลระบบเท่านั้น เนื่องจากหน้านี้สืบทอดการล็อกมาจาก{{PLURAL:$1|หน้า|หน้า}}ต่อไปนี้:",
-'titleprotectedwarning' => "'''คำเตือน:  หน้านี้ได้รับการป้องกันไว้ให้สร้างได้โดย[[Special:ListGroupRights|ผู้ใช้ที่ได้รับสิทธิ]]เท่านั้น'''
+'titleprotectedwarning' => "'''คำเตือน: หน้านี้ได้รับการป้องกันไว้ให้สร้างได้เฉพาะโดย[[Special:ListGroupRights|ผู้ใช้ที่ได้รับสิทธิ]]เท่านั้น'''
 รายการแก้ไขล่าสุดได้ถูกแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง",
 'templatesused' => '{{PLURAL:$1|แม่แบบ}}ที่ใช้ในหน้านี้:',
 'templatesusedpreview' => '{{PLURAL:$1|แม่แบบ}}ที่ใช้ในการแสดงตัวอย่าง:',
@@ -922,14 +928,15 @@ $1 เป็นผู้ดำเนินการบล็อก
 'edit-no-change' => 'การแก้ไขของคุณถูกเพิกเฉย เพราะไม่มีการเปลี่ยนแปลงใด ๆ',
 'edit-already-exists' => 'ไม่สามารถสร้างหน้าใหม่ได้
 เพราะมีหน้านี้แล้ว',
+'defaultmessagetext' => 'ข้อความสารโดยปริยาย',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''คำเตือน:''' หน้านี้มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป
 
 หน้านี้ควรมีการเรียกใช้น้อยกว่า $2  ครั้ง แต่ปัจจุบันมีการเรียกใช้ $1 ครั้ง",
 'expensive-parserfunction-category' => 'หน้าที่มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป',
-'post-expand-template-inclusion-warning' => 'คำเตือน: แม่แบบที่นำมารวมมีขนาดใหญ่เกินไป
¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\9aาà¸\87หà¸\99à¹\89าà¸\88ะà¹\84มà¹\88à¸\96ูà¸\81รวมà¹\80à¸\82à¹\89ามา',
+'post-expand-template-inclusion-warning' => "'''คำเตือน:''' แม่แบบที่นำมารวมมีขนาดใหญ่เกินไป
¸\9aาà¸\87à¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\88ะà¹\84มà¹\88à¸\96ูà¸\81รวมà¹\80à¸\82à¹\89ามา",
 'post-expand-template-inclusion-category' => 'หน้าที่มีแม่แบบรวมมาเกินขนาด',
 'post-expand-template-argument-warning' => 'คำเตือน: หน้านี้มีแม่แบบที่มีอาร์กิวเมนต์ขนาดใหญ่เกินไป อาร์กิวเมนต์เหล่านี้จะถูกละทิ้ง',
 'post-expand-template-argument-category' => 'หน้าที่มีแม่แบบซึ่งอาร์กิวเมนต์ถูกละทิ้ง',
@@ -940,12 +947,12 @@ $1 เป็นผู้ดำเนินการบล็อก
 # "Undo" feature
 'undo-success' => 'การแก้ไขนี้สามารถย้อนกลับได้ กรุณาตรวจสอบข้อแตกต่างด้านล่างให้แน่ใจว่านี่คือสิ่งที่คุณต้องการทำ จากนั้นให้บันทึกการเปลี่ยนแปลงด้านล่างเพื่อเสร็จสิ้นขั้นตอน',
 'undo-failure' => 'การแก้ไขนี้ไม่สามารถย้อนกลับได้ เนื่องจากขัดแย้งกับการแก้ไขปัจจุบัน',
-'undo-norev' => 'à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\99ีà¹\89à¹\84มà¹\88สามารà¸\96ยà¹\89อà¸\99à¹\84à¸\94à¹\89à¹\80à¸\9eราะà¹\84มà¹\88มีหรือà¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89วà¹\83à¸\99à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99',
+'undo-norev' => 'à¹\84มà¹\88สามารà¸\96ยà¹\89อà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\99ีà¹\89 à¹\80à¸\9eราะà¹\84มà¹\88มีหรือà¸\96ูà¸\81ลà¸\9aà¹\84à¸\9bà¹\81ลà¹\89ว',
 'undo-summary' => 'ย้อนการแก้ไขรุ่น $1 โดย [[Special:Contributions/$2|$2]] ([[User talk:$2|พูดคุย]])',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'ไม่สามารถสร้างบัญชีได้',
-'cantcreateaccount-text' => "à¸\81ารสรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\83หมà¹\88à¸\9cà¹\88าà¸\99à¸\97าà¸\87หมายà¹\80ลà¸\82à¹\84อà¸\9eีà¸\99ีà¹\89 ('''$1''') à¸\96ูà¸\81ระà¸\87ัà¸\9aà¹\84วà¹\89โดย [[User:$3|$3]]
+'cantcreateaccount-text' => "à¸\81ารสรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¹\83หมà¹\88à¸\88าà¸\81à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\99ีà¹\89 ('''$1''') à¸\96ูà¸\81ระà¸\87ัà¸\9aโดย [[User:$3|$3]]
 
 เหตุผลที่ $3 ให้ไว้ คือ ''$2''",
 
@@ -984,7 +991,7 @@ $1 เป็นผู้ดำเนินการบล็อก
 # Revision deletion
 'rev-deleted-comment' => '(คำอธิบายอย่างย่อถูกลบออก)',
 'rev-deleted-user' => '(ชื่อผู้ใช้ถูกลบออก)',
-'rev-deleted-event' => '(หà¸\99à¹\89าà¸\97ีà¹\88à¹\83สà¹\88à¹\80à¸\82à¹\89ามาถูกลบออก)',
+'rev-deleted-event' => '(à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\9bูมถูกลบออก)',
 'rev-deleted-user-contribs' => '[ชื่อผู้ใช้หรือหมายเลขไอพีถูกลบแล้ว - การแก้ไขถูกซ่อนจากรายการแก้ไข]',
 'rev-deleted-text-permission' => "รุ่นของหน้านี้'''ถูกลบ'''
 รายละเอียดพบได้ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ปูมการลบ]",
@@ -1127,7 +1134,7 @@ $1",
 # Search results
 'searchresults' => 'ผลการค้นหา',
 'searchresults-title' => 'ผลการค้นหาสำหรับ "$1"',
-'searchresulttext' => 'สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการค้น{{SITENAME}} ดูที่ [[{{MediaWiki:Helppage}}|{{int:help}}]]',
+'searchresulttext' => 'สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการค้น {{SITENAME}} ดูที่ [[{{MediaWiki:Helppage}}|{{int:help}}]]',
 'searchsubtitle' => 'คุณได้สืบค้นหา \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ทุกหน้าที่ขึ้นต้นด้วย "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ทุกหน้าที่โยงมาที่ "$1"]])',
 'searchsubtitleinvalid' => "ค้นหาเกี่ยวกับ '''$1'''",
 'toomanymatches' => 'พบตรงกันมากเกินไป กรุณาใช้คำค้นหาอื่น',
@@ -1146,7 +1153,7 @@ $1",
 'searchmenu-new' => "'''สร้างหน้า \"[[:\$1]]\" บนวิกินี้'''",
 'searchhelp-url' => 'Help:สารบัญ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|สืบค้นหน้าที่มีคำขึ้นต้นนี้]]',
-'searchprofile-articles' => 'หà¸\99à¹\89าà¸\9aà¸\97à¸\84วาม',
+'searchprofile-articles' => 'หà¸\99à¹\89าà¹\80à¸\99ืà¹\89อหา',
 'searchprofile-project' => 'คำอธิบายและหน้าโครงการ',
 'searchprofile-images' => 'มัลติมีเดีย',
 'searchprofile-everything' => 'ทุกอย่าง',
@@ -1173,8 +1180,8 @@ $1",
 'showingresults' => "แสดง $1 รายการ เริ่มต้นจากรายการที่ '''$2'''",
 'showingresultsnum' => "แสดง $3 รายการ เริ่มต้นจากรายการที่  '''$2'''",
 'showingresultsheader' => "{{PLURAL:$5|ผลการสืบค้น '''$1''' จาก '''$3'''|ผลการสืบค้น '''$1 - $2''' จาก '''$3'''}} สำหรับ '''$4'''",
-'nonefound' => "'''à¸\84ำà¹\80à¸\95ือà¸\99''': à¹\80à¸\99มสà¹\80à¸\9bà¸\8bà¸\9aาà¸\87สà¹\88วà¸\99à¸\88ะà¸\96ูà¸\81à¸\84à¹\89à¸\99หาà¹\80อà¸\87
¹\83หà¹\89ลอà¸\87à¹\80ลือà¸\81à¸\84ำà¸\82ึà¹\89à¸\99à¸\95à¹\89à¸\99à¸\81ารà¸\84à¹\89à¸\99หาà¸\94à¹\89วย ''all:'' à¸ªà¸³à¸«à¸£à¸±à¸\9aà¸\84à¹\89à¸\99หาà¹\80à¸\99ืà¹\89อหาà¸\97ัà¹\89à¸\87หมà¸\94 (รวมà¸\96ึà¸\87 หน้าอภิปราย แม่แบบ ฯลฯ) หรือเลือกเนมสเปซที่ต้องการ",
+'nonefound' => "'''à¸\84ำà¹\80à¸\95ือà¸\99''': à¸¡à¸µà¹\80à¸\9eียà¸\87à¸\9aาà¸\87à¹\80à¸\99มสà¹\80à¸\9bà¸\8bà¸\97ีà¹\88à¸\88ะà¸\96ูà¸\81à¸\84à¹\89à¸\99à¹\82à¸\94ยà¸\9bริยาย
¸¥à¸­à¸\87à¹\80ลือà¸\81à¸\84ำà¸\82ึà¹\89à¸\99à¸\95à¹\89à¸\99à¸\81ารà¸\84à¹\89à¸\99หาà¸\94à¹\89วย ''all:'' à¸ªà¸³à¸«à¸£à¸±à¸\9aà¸\84à¹\89à¸\99à¹\80à¸\99ืà¹\89อหาà¸\97ัà¹\89à¸\87หมà¸\94 (รวมหน้าอภิปราย แม่แบบ ฯลฯ) หรือเลือกเนมสเปซที่ต้องการ",
 'search-nonefound' => 'ไม่มีผลลัพธ์ตามคำค้นที่กำหนด',
 'powersearch' => 'ค้นหาระดับสูง',
 'powersearch-legend' => 'ค้นหาระดับสูง',
@@ -1197,7 +1204,7 @@ $1",
 
 # Preferences page
 'preferences' => 'ตั้งค่าส่วนตัว',
-'mypreferences' => 'à¸\95ัà¹\89à¸\87à¸\84à¹\88าสà¹\88วà¸\99à¸\95ัว',
+'mypreferences' => 'à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า',
 'prefs-edits' => 'จำนวนการแก้ไข:',
 'prefsnologin' => 'ไม่ได้ล็อกอิน',
 'prefsnologintext' => 'คุณต้อง<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ล็อกอิน]</span>ก่อนเพื่อตั้งค่าส่วนตัว',
@@ -1216,7 +1223,7 @@ $1",
 'prefs-watchlist-days-max' => 'มากสุด $1 วัน',
 'prefs-watchlist-edits' => 'จำนวนการแก้ไขมากสุดที่แสดงในรายการเฝ้าดูที่ขยายออก:',
 'prefs-watchlist-edits-max' => 'จำนวนสูงสุด: 1000',
-'prefs-watchlist-token' => 'สัà¸\8dลัà¸\81ษà¸\93à¹\8cรายการเฝ้าดู:',
+'prefs-watchlist-token' => 'à¹\82à¸\97à¹\80à¸\84à¹\87à¸\99รายการเฝ้าดู:',
 'prefs-misc' => 'เบ็ดเตล็ด',
 'prefs-resetpass' => 'เปลี่ยนรหัสผ่าน',
 'prefs-changeemail' => 'เปลี่ยนที่อยู่อีเมล',
@@ -1260,7 +1267,7 @@ $1",
 'timezoneregion-indian' => 'มหาสมุทรอินเดีย',
 'timezoneregion-pacific' => 'มหาสมุทรแปซิฟิก',
 'allowemail' => 'เปิดรับอีเมลจากผู้ใช้อื่น',
-'prefs-searchoptions' => 'à¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\81ารà¸\84à¹\89à¸\99หา',
+'prefs-searchoptions' => 'ค้นหา',
 'prefs-namespaces' => 'เนมสเปซ',
 'defaultns' => 'หรือค้นหาในเนมสเปซต่อไปนี้:',
 'default' => 'ค่าโดยปริยาย',
@@ -1283,7 +1290,7 @@ $1",
 'yournick' => 'ลายเซ็น:',
 'prefs-help-signature' => 'ความเห็นในหน้าพูดคุยควรจะลงลายเซ็นด้วย "<nowiki>~~~~</nowiki>" ซึ่งจะถูกแปลงเป็นลายเซ็นและตราเวลา',
 'badsig' => 'ลายเซ็นที่ใช้ผิดพลาด กรุณาตรวจสอบคำสั่งเอชทีเอ็มแอล',
-'badsiglength' => 'ลายà¹\80à¸\8bà¹\87à¸\99à¸\82อà¸\87à¸\84ุà¸\93ยาวà¹\80à¸\81ิà¸\99à¹\84à¸\9b à¸\95à¹\89อà¸\87มีà¸\84วามยาวà¹\84มà¹\88à¹\80à¸\81ิà¸\99 $1 à¸\95ัวอัà¸\81ษร',
+'badsiglength' => 'ลายเซ็นของคุณยาวเกินไป ต้องยาวไม่เกิน $1 ตัวอักษร',
 'yourgender' => 'เพศ:',
 'gender-unknown' => 'ไม่ระบุ',
 'gender-male' => 'ชาย',
@@ -1308,7 +1315,7 @@ $1",
 'prefs-displayrc' => 'ค่าการแสดงผล',
 'prefs-displaysearchoptions' => 'ค่าการแสดงผล',
 'prefs-displaywatchlist' => 'ค่าการแสดงผล',
-'prefs-diffs' => 'สà¹\88วà¸\99à¸\95à¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82',
+'prefs-diffs' => 'à¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87',
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => 'ที่อยู่อีเมลดูถูกต้อง',
@@ -1348,9 +1355,9 @@ $1",
 
 'group-user-member' => '{{GENDER:$1|ผู้ใช้ใหม่}}',
 'group-autoconfirmed-member' => 'ผู้ใช้ทั่วไป',
-'group-bot-member' => 'บอต',
-'group-sysop-member' => 'ผู้ดูแล',
-'group-bureaucrat-member' => 'ผู้ดูแลสิทธิแต่งตั้ง',
+'group-bot-member' => '{{GENDER:$1|บอต}}',
+'group-sysop-member' => '{{GENDER:$1|ผู้ดูแลระบบ}}',
+'group-bureaucrat-member' => '{{GENDER:$1|ผู้ดูแลสิทธิแต่งตั้ง}}',
 'group-suppress-member' => '{{GENDER:$1|oversight}}',
 
 'grouppage-user' => '{{ns:project}}:ผู้ใช้',
@@ -1405,13 +1412,13 @@ $1",
 'right-editusercssjs' => 'แก้ไข CSS และ JS ของผู้ใช้คนอื่น',
 'right-editusercss' => 'แก้ไข CSS ของผู้ใช้คนอื่น',
 'right-edituserjs' => 'แก้ไข JS ของผู้ใช้คนอื่น',
-'right-rollback' => 'ยà¹\89อà¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¹\88าสุà¸\94à¸\97ีà¹\88à¹\81à¸\81à¹\89à¹\84à¸\82à¸\9aาà¸\87หà¸\99à¹\89าà¹\82à¸\94ยà¹\80à¸\89à¸\9eาะอยà¹\88าà¸\87รวà¸\94à¹\80รà¹\87ว',
+'right-rollback' => 'ย้อนการแก้ไขของผู้ใช้ล่าสุดที่แก้ไขหน้าโดยเฉพาะอย่างรวดเร็ว',
 'right-markbotedits' => 'ทำเครื่องหมายการย้อนว่าเป็นการแก้ไขโดยบอต',
 'right-noratelimit' => 'ไม่มีผลกระทบจากการจำกัดสิทธิตามเวลา',
 'right-import' => 'นำเข้าหน้าจากวิกิอื่น',
 'right-importupload' => 'นำเข้าหน้าจากไฟล์ที่อัปโหลด',
 'right-patrol' => 'ทำเครื่องหมายการแก้ไขของผู้อื่นว่าตรวจสอบแล้ว',
-'right-autopatrol' => 'à¸\95ัà¹\89à¸\87à¹\83หà¹\89à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\95à¸\99à¹\80อà¸\87วà¹\88าà¸\95รวà¸\88สอà¸\9aà¹\81ลà¹\89วà¹\82à¸\94ยอัตโนมัติ',
+'right-autopatrol' => 'à¸\95ัà¹\89à¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\95à¸\99à¹\80อà¸\87วà¹\88าà¸\95รวà¸\88สอà¸\9aà¹\81ลà¹\89วอัตโนมัติ',
 'right-patrolmarks' => 'ดูการเปลี่ยนแปลงล่าสุดของการทำเครื่องหมายตรวจสอบ',
 'right-unwatchedpages' => 'ดูรายการหน้าที่ไม่มีผู้เฝ้าดู',
 'right-mergehistory' => 'รวมประวัติการแก้ไขหน้า',
@@ -1420,13 +1427,15 @@ $1",
 'right-siteadmin' => 'ล็อกและปลดล็อกฐานข้อมูล',
 'right-override-export-depth' => 'ส่งออกหน้า รวมหน้าที่เชื่อมโยงกับหน้านี้สูงสุด 5 ลำดับชั้น',
 'right-sendemail' => 'ส่งอีเมลหาผู้ใช้อื่น',
-'right-passwordreset' => 'เปลี่ยนรหัสผ่านของผู้ใช้ ([[Special:PasswordReset|หน้าพิเศษ]])',
+'right-passwordreset' => 'ดูอีเมลตั้งรหัสผ่านใหม่',
+
+# Special:Log/newusers
+'newuserlogpage' => 'ปูมการสร้างบัญชีผู้ใช้',
+'newuserlogpagetext' => 'นี่คือปูมการสร้างบัญชีผู้ใช้',
 
 # User rights log
 'rightslog' => 'ปูมสิทธิผู้ใช้',
 'rightslogtext' => 'ส่วนนี้คือปูมการเปลี่ยนแปลงสิทธิผู้ใช้',
-'rightslogentry' => '$1 ถูกเปลี่ยนกลุ่มจาก $2 เป็น $3',
-'rightsnone' => '(ไม่มี)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'อ่านหน้านี้',
@@ -1474,7 +1483,7 @@ $1",
 'recentchanges-label-minor' => 'เป็นการแก้ไขเล็กน้อย',
 'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
 'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
-'rcnote' => "รายการด้านล่างคือการแก้ไข {{PLURAL:$1|'''1''' รายการ|ล่าสุด '''$1''' รายการ}} ในช่วง {{PLURAL:$2|1 วัน|'''$2''' วัน}}ที่ผ่านมา จนถึง $5; $4",
+'rcnote' => "รายการด้านล่างคือการแก้ไข {{PLURAL:$1|'''1''' รายการ|ล่าสุด '''$1''' รายการ}} ในช่วง '''$2''' วันที่ผ่านมา จนถึง $5, $4",
 'rcnotefrom' => "แสดงการเปลี่ยนแปลงตั้งแต่ '''$2''' (แสดง '''$1''' รายการ)",
 'rclistfrom' => 'แสดงการเปลี่ยนแปลงตั้งแต่ $1',
 'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
@@ -1483,7 +1492,7 @@ $1",
 'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
 'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
 'rcshowhidemine' => '$1การแก้ไขของฉัน',
-'rclinks' => 'แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา;<br />$3',
+'rclinks' => 'แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา<br />$3',
 'diff' => 'ต่าง',
 'hist' => 'ประวัติ',
 'hide' => 'ซ่อน',
@@ -1562,7 +1571,7 @@ $1",
 'filename-tooshort' => 'ชื่อไฟล์สั้นเกินไป',
 'filetype-banned' => 'ไฟล์ประเภทนี้ถูกห้าม',
 'verification-error' => 'ไฟล์นี้ไม่ผ่านการพิสูจน์ยืนยันไฟล์',
-'hookaborted' => 'สิà¹\88à¸\87à¸\97ีà¹\88à¸\84ุà¸\93à¸\9eยายามà¸\97ีà¹\88à¸\88ะà¸\97ำà¸\81ารà¸\9bรัà¸\9aà¹\80à¸\9bลีà¹\88ยà¸\99à¹\84à¸\94à¹\89ถูกยกเลิกโดยส่วนขยาย',
+'hookaborted' => 'สิà¹\88à¸\87à¸\97ีà¹\88à¸\84ุà¸\93à¸\9eยายามà¸\9bรัà¸\9aà¹\80à¸\9bลีà¹\88ยà¸\99ถูกยกเลิกโดยส่วนขยาย',
 'illegal-filename' => 'ชื่อไฟล์นี้ไม่ได้รับอนุญาต',
 'overwrite' => 'ไม่อนุญาตให้เขียนทับไฟล์ที่มีอยู่แล้ว',
 'unknown-error' => 'เกิดข้อผิดพลาดไม่ทราบสาเหตุ',
@@ -1599,9 +1608,9 @@ $1",
 'uploadwarning' => 'คำเตือนการอัปโหลด',
 'uploadwarning-text' => 'กรุณาแก้ไขคำอธิบายไฟล์ด้านล่างนี้ แล้วลองใหม่อีกครั้ง',
 'savefile' => 'บันทึกไฟล์',
-'uploadedimage' => '"[[$1]]" ถูกอัปโหลด',
+'uploadedimage' => 'อัปโหลด "[[$1]]"',
 'overwroteimage' => 'อัปโหลดรุ่นใหม่ของ "[[$1]]"',
-'uploaddisabled' => 'อัà¸\9bà¹\82หลà¸\94à¸\9bิà¸\94à¸\81ารà¹\83à¸\8aà¹\89à¸\87าà¸\99',
+'uploaddisabled' => 'à¸\9bิà¸\94à¸\81ารà¹\83à¸\8aà¹\89à¸\87าà¸\99อัà¸\9bà¹\82หลà¸\94',
 'copyuploaddisabled' => 'การอัปโหลดโดย URL ได้ถูกปิดการใช้งานไว้',
 'uploadfromurl-queued' => 'การอัพโหลดของคุณได้ถูกจัดในคิวแล้ว',
 'uploaddisabledtext' => 'การอัปโหลดไฟล์ถูกปิดการใช้งาน',
@@ -1618,7 +1627,7 @@ $1",
 'upload-options' => 'ตัวเลือกอัปโหลด',
 'watchthisupload' => 'เฝ้าดูไฟล์นี้',
 'filewasdeleted' => 'ไฟล์ในชื่อนี้ได้ถูกอัปโหลดก่อนหน้าและถูกลบไปแล้ว กรุณาตรวจสอบ $1 ก่อนที่จะอัปโหลดใหม่อีกครั้ง',
-'filename-bad-prefix' => "ไฟล์ที่คุณกำลังจะอัปโหลดเข้ามานี้มีชื่อที่ขึ้นต้นด้วย '''\"\$1\"''' ซึ่งเป็นชื่อที่ไม่สื่อความหมายใดๆ (โดยปกติแล้วชื่อนี้จะถูกตั้งมาโดยกล้องถ่ายรูปดิจิทัล).  กรุณาตั้งชื่อไฟล์ใหม่ที่สื่อความหมายมากกว่าเดิม",
+'filename-bad-prefix' => "ไฟล์ที่คุณกำลังจะอัปโหลดเข้ามานี้มีชื่อที่ขึ้นต้นด้วย '''\"\$1\"''' ซึ่งเป็นชื่อที่ไม่สื่อความหมายใด ๆ ที่โดยปกติแล้วชื่อนี้จะถูกตั้งโดยกล้องถ่ายรูปดิจิทัลอัตโนมัติ กรุณาตั้งชื่อไฟล์ใหม่ที่สื่อความหมายกว่าเดิม",
 'upload-success-subj' => 'อัปโหลดสำเร็จ',
 'upload-success-msg' => 'การอัปโหลดของคุณจาก [$2] สำเร็จแล้ว และสามารถใช้ไฟล์ได้ที่นี่: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'ปัญหาการอัปโหลด',
@@ -1646,7 +1655,7 @@ $1',
 'backend-fail-copy' => 'ไม่สามารถคัดลอกไฟล์ "$1" ไปยัง "$2" ได้',
 'backend-fail-move' => 'ไม่สามารถย้ายไฟล์ "$1" ไปยัง "$2" ได้',
 'backend-fail-read' => 'ไม่สามารถอ่านไฟล์ "$1" ได้',
-'backend-fail-create' => 'à¹\84มà¹\88สามารà¸\96สรà¹\89าà¸\87à¹\84à¸\9fลà¹\8c $1 à¹\84à¸\94à¹\89.',
+'backend-fail-create' => 'à¹\84มà¹\88สามารà¸\96à¹\80à¸\82ียà¸\99à¹\84à¸\9fลà¹\8c "$1" à¹\84à¸\94à¹\89',
 
 # ZipDirectoryReader
 'zip-unsupported' => 'ไฟล์ดังกล่าวเป็นไฟล์ ZIP ซึ่งใช้คุณสมบัติ ZIP ที่ไม่ได้รับการสนับสนุนโดย MediaWiki.
@@ -1665,7 +1674,7 @@ $1',
 'img-auth-accessdenied' => 'การเข้าถึงถูกจำกัด',
 'img-auth-nopathinfo' => 'ค่า PATH_INFO สูญหาย
 เซิร์ฟเวอร์ของคุณอาจไม่ได้ถูกตั้งให้ส่งข้อมูลนี้
-หรือà¹\80à¸\8bิรà¹\8cà¸\9fà¹\80วอรà¹\8cอาà¸\88à¸\88ะà¹\80à¸\9bà¹\87à¸\99à¹\81à¸\9aà¸\9a CGI-based à¹\81ละà¹\84มà¹\88สà¸\99ัà¸\9aสà¸\99ุà¸\99à¸\82à¹\89อมูล img_auth
+หรือเซิร์ฟเวอร์อาจเป็นแบบ CGI-based และไม่สนับสนุนข้อมูล img_auth
 ดูที่ https://www.mediawiki.org/wiki/Manual:Image_Authorization',
 'img-auth-notindir' => 'ที่อยู่ที่ร้องขอไม่ได้อยู่ในไดเร็กทอรีอัพโหลดที่กำหนดไ้ว้',
 'img-auth-badtitle' => 'ไม่สามารถสร้างชื่อเรื่องที่ถูกต้องจาก "$1" ได้',
@@ -1775,7 +1784,7 @@ $1',
 'filedelete-comment' => 'เหตุผล:',
 'filedelete-submit' => 'ลบ',
 'filedelete-success' => "ลบไฟล์ '''$1''' แล้ว",
-'filedelete-success-old' => "à¹\84à¸\9fลà¹\8c '''[[Media:$1|$1]]''' à¸£à¸¸à¹\88à¸\99à¹\80มืà¹\88อ $3, $2 à¸\96ูà¸\81ลà¸\9aà¹\80รียà¸\9aรà¹\89อยà¹\81ลà¹\89ว",
+'filedelete-success-old' => "ไฟล์ '''[[Media:$1|$1]]''' รุ่นเมื่อ $3, $2 ถูกลบแล้ว",
 'filedelete-nofile' => "ไม่มีไฟล์ '''$1'''",
 'filedelete-nofile-old' => "ไม่มี '''$1''' ตามคุณลักษณะที่กำหนด อยู่ในกรุ",
 'filedelete-otherreason' => 'เหตุผลอื่น/เพิ่มเติม:',
@@ -1783,7 +1792,7 @@ $1',
 'filedelete-reason-dropdown' => '* เหตุผลการลบทั่วไป
 ** ละเมิดลิขสิทธิ์
 ** ไฟล์ซ้ำ',
-'filedelete-edit-reasonlist' => 'à¹\81à¸\81à¹\89à¹\84à¸\82รายà¸\8aืà¹\88อà¹\80หà¸\95ุà¸\9cลà¹\83à¸\99การลบ',
+'filedelete-edit-reasonlist' => 'à¹\81à¸\81à¹\89à¹\84à¸\82à¹\80หà¸\95ุà¸\9cลการลบ',
 'filedelete-maintenance' => 'ปิดการลบและเรียกคืนไฟล์ไว้ชั่วคราว ในระหว่างการซ่อมบำรุง',
 'filedelete-maintenance-title' => 'ไม่สามารถลบไฟล์',
 
@@ -1818,26 +1827,26 @@ $1',
 'statistics-header-edits' => 'สถิติการแก้ไข',
 'statistics-header-views' => 'สถิติการเข้าชม',
 'statistics-header-users' => 'สถิติผู้ใช้',
-'statistics-header-hooks' => 'สถิติอื่น',
+'statistics-header-hooks' => 'สถิติอื่น',
 'statistics-articles' => 'หน้าเนื้อหา',
 'statistics-pages' => 'หน้าทั้งหมด',
-'statistics-pages-desc' => 'หà¸\99à¹\89าà¸\97ัà¹\89à¸\87หมà¸\94à¹\83à¸\99à¹\80วà¹\87à¸\9aà¹\84à¸\8bà¸\95à¹\8cà¸\99ีà¹\89 à¸£à¸§à¸¡à¹\84à¸\9bà¸\96ึà¸\87หà¸\99à¹\89าà¸\95à¹\88าà¸\87 à¹\86 à¹\80à¸\8aà¹\88à¸\99 à¸«à¸\99à¹\89าสà¸\99à¸\97à¸\99า à¹\81ละหน้าเปลี่ยนทาง เป็นต้น',
+'statistics-pages-desc' => 'หà¸\99à¹\89าà¸\97ัà¹\89à¸\87หมà¸\94à¹\83à¸\99วิà¸\81ิà¸\99ีà¹\89 à¸£à¸§à¸¡à¸\97ัà¹\89à¸\87หà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุย หน้าเปลี่ยนทาง เป็นต้น',
 'statistics-files' => 'จำนวนไฟล์ที่ถูกอัปโหลด',
-'statistics-edits' => 'การแก้ไขหน้าทั้งหมดนับแต่ก่อตั้ง{{SITENAME}}ภาษาไทย',
+'statistics-edits' => 'การแก้ไขหน้าทั้งหมดนับแต่ก่อตั้ง {{SITENAME}}',
 'statistics-edits-average' => 'จำนวนแก้ไขต่อหน้าโดยเฉลี่ย',
 'statistics-views-total' => 'จำนวนการเข้าชมทั้งหมด',
 'statistics-views-total-desc' => 'ไม่นับรวมจำนวนการเข้าชมหน้าที่ไม่มีอยู่และหน้าพิเศษ',
 'statistics-views-peredit' => 'จำนวนการเข้าดูต่อการแก้ไข:',
-'statistics-users' => '[[Special:ListUsers|à¸\9cูà¹\89à¹\83à¸\8aà¹\89]]à¸\97ีà¹\88ลà¸\87à¸\97ะà¹\80à¸\9aียà¸\99',
+'statistics-users' => '[[Special:ListUsers|ผู้ใช้]]ลงทะเบียน',
 'statistics-users-active' => 'ผู้ใช้ที่ยังแก้ไขอยู่',
-'statistics-users-active-desc' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¹\84à¸\94à¹\89à¹\81à¸\81à¹\89à¹\84à¸\82ในช่วง $1 วันที่ผ่านมา',
+'statistics-users-active-desc' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\94ำà¹\80à¸\99ิà¸\99à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารในช่วง $1 วันที่ผ่านมา',
 'statistics-mostpopular' => 'หน้าที่มีการเข้าชมมากที่สุด',
 
 'disambiguations' => 'หน้าที่เชื่อมโยงกับหน้าแก้ความกำกวม',
 'disambiguationspage' => 'Template:แก้กำกวม',
-'disambiguations-text' => "หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¹\84à¸\9bยัà¸\87 '''หà¸\99à¹\89าà¸\84ำà¸\81ำà¸\81วม''' à¸\8bึà¹\88à¸\87à¹\80à¸\99ืà¹\89อหาà¹\83à¸\99หà¸\99à¹\89าà¹\80หลà¹\88าà¸\99ัà¹\89à¸\99à¸\84วรà¸\96ูà¸\81à¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¹\84à¸\9bยัà¸\87หัวà¸\82à¹\89อà¸\97ีà¹\88à¹\80หมาะสมà¹\81à¸\97à¸\99à¸\97ีà¹\88<br />
-
-หà¸\99à¹\89าà¹\83à¸\94à¸\97ีà¹\88à¹\80รียà¸\81à¹\83à¸\8aà¹\89 [[MediaWiki:Disambiguationspage]] à¸«à¸\99à¹\89าà¹\80หลà¹\88าà¸\99ัà¹\89à¸\99à¸\88ะà¸\96ูà¸\81à¸\99ัà¸\9aà¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84ำกำกวม",
+'disambiguations-text' => "หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89มีอยà¹\88าà¸\87à¸\99à¹\89อยหà¸\99ึà¹\88à¸\87ลิà¸\87à¸\81à¹\8cà¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¹\84à¸\9bยัà¸\87'''หà¸\99à¹\89าà¸\84วามà¸\81ำà¸\81วม'''
+ซึ่งอาจต้องลิงก์ไปยังหน้าที่เหมาะสมแทน<br />
+หà¸\99à¹\89าà¹\83à¸\94à¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\81มà¹\88à¹\81à¸\9aà¸\9aà¸\97ีà¹\88ลิà¸\87à¸\81à¹\8cมาà¸\88าà¸\81 [[MediaWiki:Disambiguationspage]] à¸«à¸\99à¹\89าà¹\80หลà¹\88าà¸\99ัà¹\89à¸\99à¸\88ะà¸\96ูà¸\81à¸\99ัà¸\9aรวมà¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84วามกำกวม",
 
 'doubleredirects' => 'หน้าเปลี่ยนทางซ้ำซ้อน',
 'doubleredirectstext' => 'หน้านี้แสดงรายการชื่อที่เปลี่ยนทางไปยังหน้าเปลี่ยนทางอื่น
@@ -1857,7 +1866,7 @@ $1',
 'withoutinterwiki-legend' => 'คำนำหน้า',
 'withoutinterwiki-submit' => 'แสดง',
 
-'fewestrevisions' => 'หน้าที่มีการแก้ไขน้อย',
+'fewestrevisions' => 'หน้าที่มีการแก้ไขน้อยสุด',
 
 # Miscellaneous special pages
 'nbytes' => '$1 ไบต์',
@@ -1891,33 +1900,34 @@ $1',
 'mostinterwikis' => 'หน้าที่มีลิงก์ข้ามภาษามากที่สุด',
 'mostrevisions' => 'หน้าที่มีการแก้ไขมาก',
 'prefixindex' => 'หน้าทั้งหมดตามดัชนีคำขึ้นต้น',
+'prefixindex-namespace' => 'ทุกหน้าที่มีคำขึ้นต้น ($1 เนมสเปซ)',
 'shortpages' => 'หน้าสั้นมาก',
 'longpages' => 'หน้ายาวมาก',
 'deadendpages' => 'หน้าสุดทาง',
-'deadendpagestext' => 'หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¹\84มà¹\88à¹\84à¸\94à¹\89ลิà¸\87à¸\81à¹\8cà¹\84à¸\9bหà¸\99à¹\89าหà¸\99à¹\89าà¹\83à¸\94à¹\83à¸\99วิà¸\81ิ',
+'deadendpagestext' => 'หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¹\84มà¹\88à¹\84à¸\94à¹\89ลิà¸\87à¸\81à¹\8cà¹\84à¸\9bหà¸\99à¹\89าอืà¹\88à¸\99à¹\83à¸\99 {{SITENAME}}',
 'protectedpages' => 'หน้าถูกล็อก',
 'protectedpages-indef' => 'การล็อกแบบไม่จำกัดเท่านั้น',
 'protectedpages-cascade' => 'การล็อกแบบสืบทอดเท่านั้น',
-'protectedpagestext' => 'หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87อà¸\81หà¹\89ามà¹\81à¸\81à¹\89à¹\84à¸\82หรือหà¹\89ามà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อ',
+'protectedpagestext' => 'หน้าต่อไปนี้ถูกล็อกห้ามแก้ไขหรือเปลี่ยนชื่อ',
 'protectedpagesempty' => 'ไม่มีหน้าใดที่ถูกล็อกตามค่าที่เลือก',
 'protectedtitles' => 'หัวเรื่องที่ได้รับการป้องกัน',
-'protectedtitlestext' => 'หัวà¹\80รืà¹\88อà¸\87à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¹\84มà¹\88à¹\83หà¹\89สรà¹\89าà¸\87à¹\83หมà¹\88',
+'protectedtitlestext' => 'หัวà¹\80รืà¹\88อà¸\87à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99มิà¹\83หà¹\89สรà¹\89าà¸\87',
 'protectedtitlesempty' => 'ปัจจุบันไม่มีหัวเรื่องที่ได้รับการป้องกันด้วยค่าต่อไปนี้',
 'listusers' => 'รายนามผู้ใช้',
-'listusers-editsonly' => 'à¹\81สà¸\94à¸\87à¹\80à¸\89à¸\9eาะà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88รà¹\88วมแก้ไข',
+'listusers-editsonly' => 'à¹\81สà¸\94à¸\87à¹\80à¸\89à¸\9eาะà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88มีà¸\81ารแก้ไข',
 'listusers-creationsort' => 'เรียงลำดับตามวันสร้าง',
-'usereditcount' => 'การแก้ไข $1 {{PLURAL:$1|ครั้ง|ครั้ง}}',
-'usercreated' => '{{GENDER:$3|Created}} เมื่อ $1 เวลา $2',
+'usereditcount' => 'การแก้ไข $1 ครั้ง',
+'usercreated' => '{{GENDER:$3|ถูกสร้าง}}เมื่อ $1 เวลา $2',
 'newpages' => 'หน้าใหม่',
 'newpages-username' => 'ชื่อผู้ใช้:',
 'ancientpages' => 'หน้าที่ไม่ได้แก้ไขนานสุด',
 'move' => 'เปลี่ยนชื่อ',
 'movethispage' => 'เปลี่ยนชื่อหน้านี้',
-'unusedimagestext' => 'à¹\84à¸\9fลà¹\8cà¸\94ัà¸\87à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89à¸\9bราà¸\81à¸\8fà¹\81à¸\95à¹\88à¹\84มà¹\88มีà¸\81ารà¹\80รียà¸\81à¹\83à¸\8aà¹\89à¸\97ีà¹\88หà¸\99à¹\89าà¹\83à¸\94ๆ เลย
-ภาà¸\9eà¸\99ีà¹\89อาà¸\88à¸\88ะà¸\96ูà¸\81à¹\83à¸\8aà¹\89à¸\88าà¸\81à¹\80วà¹\87à¸\9aà¹\84à¸\8bà¸\95à¹\8cอืà¹\88à¸\99 à¸\8bึà¹\88à¸\87ลิà¸\87à¸\81à¹\8cมาภาà¸\9eà¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¹\82à¸\94ยà¸\95รà¸\87 à¸\94ัà¸\87à¸\99ัà¹\89à¸\99à¹\84à¸\9fลà¹\8cà¸\94ัà¸\87à¸\81ลà¹\88าวà¸\88ะยัà¸\87à¸\9bราà¸\81à¸\8fà¹\83à¸\99รายà¸\81ารà¸\99ีà¹\89à¹\81มà¹\89วà¹\88าจะมีการใช้อย่างต่อเนื่อง',
+'unusedimagestext' => 'à¹\84à¸\9fลà¹\8cà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89มีอยูà¹\88 à¹\81à¸\95à¹\88à¹\84มà¹\88มีà¸\81ารà¹\80รียà¸\81à¹\83à¸\8aà¹\89à¹\83à¸\99หà¸\99à¹\89าà¹\83à¸\94 ๆ เลย
+หมายà¹\80หà¸\95ุวà¹\88า à¹\80วà¹\87à¸\9aà¹\84วà¸\95à¹\8cอืà¹\88à¸\99อาà¸\88ลิà¸\87à¸\81à¹\8cมายัà¸\87à¹\84à¸\9fลà¹\8cà¸\94à¹\89วยยูอารà¹\8cà¹\81อลà¹\82à¸\94ยà¸\95รà¸\87 à¸\89ะà¸\99ัà¹\89à¸\99à¸\88ึà¸\87อาà¸\88ยัà¸\87มีà¸\8aืà¹\88ออยูà¹\88à¸\97ีà¹\88à¸\99ีà¹\88à¹\81มà¹\89จะมีการใช้อย่างต่อเนื่อง',
 'unusedcategoriestext' => 'หมวดหมู่ต่อไปนี้ยังมีอยู่ถึงแม้ว่าจะไม่มีว่าไม่มีหน้าไหนหรือบทความไหนใช้ส่วนนี้',
 'notargettitle' => 'ไม่พบหน้าปลายทาง',
-'notargettext' => 'à¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83สà¹\88หà¸\99à¹\89าà¸\9bลายà¸\97าà¸\87หรือà¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\95à¹\89อà¸\87à¸\81ารà¹\83à¸\8aà¹\89à¸\84ำสัà¹\88à¸\87นี้',
+'notargettext' => 'à¸\84ุà¸\93มิà¹\84à¸\94à¹\89ระà¸\9aุหà¸\99à¹\89าหรือà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\80à¸\9bà¹\89าหมายà¸\97ีà¹\88à¸\88ะà¸\94ำà¹\80à¸\99ิà¸\99à¸\81ารà¸\9fัà¸\87à¸\81à¹\8cà¸\8aัà¸\99นี้',
 'nopagetitle' => 'ไม่มีหน้าเป้าหมายดังกล่าว',
 'nopagetext' => 'หน้าเป้าหมายที่คุณระบุไม่มีอยู่',
 'pager-newer-n' => 'ใหม่กว่า $1',
@@ -1937,8 +1947,8 @@ $1',
 'speciallogtitlelabel' => 'เป้าหมาย (ชื่อเรื่องหรือผู้ใช้):',
 'log' => 'ปูม',
 'all-logs-page' => 'ปูมสาธารณะทั้งหมด',
-'alllogstext' => 'à¹\81สà¸\94à¸\87à¸\9bูมà¸\97ีà¹\88มีà¸\97ัà¹\89à¸\87หมà¸\94à¸\82อà¸\87{{SITENAME}}
-à¸\84ุà¸\93สามารà¸\96à¸\84à¹\89à¸\99หาà¹\83หà¹\89ละà¹\80อียà¸\94à¸\82ึà¹\89à¸\99à¹\82à¸\94ยà¹\80ลือà¸\81à¸\9bระà¹\80ภà¸\97à¸\82อà¸\87à¸\9bูม à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89หรือหà¸\99à¹\89าà¸\97ีà¹\88à¸\95à¹\89อà¸\87à¸\81าร (ระวัà¸\87อัà¸\81ษรภาษาอัà¸\87à¸\81ฤษà¸\9eิมà¸\9eà¹\8cà¹\80ลà¹\87à¸\81à¹\83หà¸\8dà¹\88)',
+'alllogstext' => 'à¸\81ารà¹\81สà¸\94à¸\87à¸\9cลรวมà¸\9bูมà¸\97ีà¹\88มีà¸\97ัà¹\89à¸\87หมà¸\94à¸\82อà¸\87 {{SITENAME}}
+คุณสามารถค้นหาให้ละเอียดขึ้นโดยเลือกประเภทปูม ชื่อผู้ใช้หรือหน้าที่ต้องการ (ระวังอักษรภาษาอังกฤษพิมพ์เล็กใหญ่)',
 'logempty' => 'ไม่พบรายการตรงกันในปูม',
 'log-title-wildcard' => 'ค้นหาชื่อเรื่องด้วยคำขึ้นต้น',
 'showhideselectedlogentries' => 'แสดง/ซ่อนรายการปูมที่เลือก',
@@ -1981,8 +1991,8 @@ $1',
 'linksearch-ns' => 'เนมสเปซ:',
 'linksearch-ok' => 'สืบค้น',
 'linksearch-text' => 'อักขระตัวแทนเช่น "*.wikipedia.org" สามารถใช้ได้
¹\82à¸\94à¹\80มà¸\99ระà¸\94ัà¸\9aà¸\9aà¸\99สุà¸\94à¸\88ำà¹\80à¸\9bà¹\87à¸\99à¸\95à¹\89อà¸\87มีเป็นอย่างน้อย เช่น "*.org"<br />
-à¹\82à¸\9eรà¹\82à¸\97à¸\84อลà¸\97ีà¹\88รอà¸\87รัà¸\9a: <code>$1</code> (อยà¹\88าà¹\83สà¹\88à¸\84ำà¹\80หลà¹\88าà¸\99ีà¹\89à¹\83à¸\99à¸\81ารสืà¸\9aà¸\84à¹\89à¸\99à¸\82อà¸\87à¸\84ุà¸\93)',
¸\95à¹\89อà¸\87à¸\81ารà¹\82à¸\94à¹\80มà¸\99ระà¸\94ัà¸\9aà¸\9aà¸\99สุà¸\94เป็นอย่างน้อย เช่น "*.org"<br />
+à¹\82à¸\9eรà¹\82à¸\97à¸\84อลà¸\97ีà¹\88รอà¸\87รัà¸\9a: <code>$1</code> (à¸\84à¹\88าà¹\82à¸\94ยà¸\9bริยายà¹\80à¸\9bà¹\89à¸\99 http:// à¸«à¸²à¸\81à¹\84มà¹\88ระà¸\9aุà¹\82à¸\9eรà¹\82à¸\97à¸\84อล)',
 'linksearch-line' => '$1 ถูกลิงก์จาก $2',
 'linksearch-error' => 'เครื่องหมายแทนอักขระ (wildcard) อยู่หน้าชื่อโฮสต์ได้เท่านั้น',
 
@@ -1990,21 +2000,17 @@ $1',
 'listusersfrom' => 'แสดงชื่อผู้ใช้โดยเริ่มต้นจาก:',
 'listusers-submit' => 'แสดง',
 'listusers-noresult' => 'ไม่พบชื่อผู้ใช้ที่ต้องการ',
-'listusers-blocked' => '(à¸\96ูà¸\81ระà¸\87ัà¸\9a)',
+'listusers-blocked' => '(à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81)',
 
 # Special:ActiveUsers
 'activeusers' => 'รายการผู้ใช้ประจำ',
-'activeusers-intro' => 'à¸\99ีà¹\88à¸\84ือรายà¸\81ารà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88มีà¸\81ิà¸\88à¸\81รรมà¹\83à¸\94à¹\86 à¹\83à¸\99รอà¸\9a $1 {{PLURAL:$1|วัà¸\99|วัà¸\99}}ที่ผ่านมา',
-'activeusers-count' => '{{PLURAL:$1|การแก้ไขล่าสุด|การแก้ไขล่าสุด $1 รายการ}} ใน{{PLURAL:$3|ช่วงวัน|ช่วง $3 วัน}}ที่ผ่านมา',
+'activeusers-intro' => 'à¸\99ีà¹\88à¸\84ือรายà¸\99ามà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88มีà¸\81ิà¸\88à¸\81รรมà¹\83à¸\94 à¹\86 à¹\83à¸\99 $1 à¸§à¸±à¸\99ที่ผ่านมา',
+'activeusers-count' => '{{PLURAL:$1|การแก้ไขล่าสุด|การแก้ไขล่าสุด $1 รายการ}} ในช่วง $3 วันที่ผ่านมา',
 'activeusers-from' => 'แสดงชื่อผู้ใช้โดยเริ่มจาก:',
 'activeusers-hidebots' => 'ซ่อนบอต',
 'activeusers-hidesysops' => 'ซ่อนผู้ดูแลระบบ',
 'activeusers-noresult' => 'ไม่พบชื่อผู้ใช้',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ปูมการสร้างบัญชีผู้ใช้ใหม่',
-'newuserlogpagetext' => 'นี่คือปูมการสร้างบัญชีผู้ใช้',
-
 # Special:ListGroupRights
 'listgrouprights' => 'สิทธิของกลุ่มผู้ใช้',
 'listgrouprights-summary' => 'รายชื่อกลุ่มผู้ใช้ต่อไปนี้ถูกกำหนดไว้บน {{SITENAME}} โดยมีสิทธิการเข้าถึงที่เกี่ยวข้อง และอาจมี[[{{MediaWiki:Listgrouprights-helppage}}|ข้อมูลเพิ่มเติม]]เกี่ยวกับสิทธิของแต่ละบุคคล',
@@ -2018,8 +2024,8 @@ $1',
 'listgrouprights-removegroup' => 'สามารถลบ{{PLURAL:$2|กลุ่มนี้|กลุ่มเหล่านี้}}ได้: $1',
 'listgrouprights-addgroup-all' => 'สามารถเพิ่มกลุ่มทั้งหมดได้',
 'listgrouprights-removegroup-all' => 'สามารถลบกลุ่มทั้งหมดได้',
-'listgrouprights-addgroup-self' => 'เพิ่ม {{PLURAL:$2|กลุ่ม|กลุ่ม}} เข้าไปในชื่อผู้ใช้: $1',
-'listgrouprights-removegroup-self' => 'ลบ {{PLURAL:$2|กลุ่ม|กลุ่ม}} ออกจากชื่อผู้ใช้: $1',
+'listgrouprights-addgroup-self' => 'เพิ่ม{{PLURAL:$2|กลุ่ม|กลุ่ม}}เข้าไปในชื่อผู้ใช้: $1',
+'listgrouprights-removegroup-self' => 'ลบ{{PLURAL:$2|กลุ่ม|กลุ่ม}}ออกจากชื่อผู้ใช้: $1',
 'listgrouprights-addgroup-self-all' => 'เพิ่มทุกกลุ่มเข้าไปในชื่อผู้ใช้นี้',
 'listgrouprights-removegroup-self-all' => 'ลบทุกกลุ่มออกจากชื่อผู้ใช้นี้',
 
@@ -2027,30 +2033,33 @@ $1',
 'mailnologin' => 'ไม่มีการส่งอีเมล',
 'mailnologintext' => 'ต้องการทำ[[Special:UserLogin|ล็อกอิน]]และตั้งค่าอีเมลในส่วน[[Special:Preferences|การตั้งค่า]] เพื่อจะส่งอีเมลหาผู้ใช้คนอื่น',
 'emailuser' => 'ส่งอีเมลหาผู้ใช้นี้',
+'emailuser-title-target' => 'ส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}',
+'emailuser-title-notarget' => 'อีเมลผู้ใช้',
 'emailpage' => 'อีเมลผู้ใช้',
-'emailpagetext' => 'คุณสามารถใช้แบบฟอร์มด้านล่างส่งอีเมลหาผู้ใช้คนนี้
-à¸\8aืà¹\88ออีà¹\80มลà¸\9cูà¹\89สà¹\88à¸\87à¸\88ะà¹\83à¸\8aà¹\89à¸\8aืà¹\88ออีà¹\80มลà¸\97ีà¹\88à¹\84à¸\94à¹\89ระà¸\9aุà¹\84วà¹\89à¹\81ลà¹\89วà¹\83à¸\99[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าสà¹\88วà¸\99à¸\95ัวà¸\82อà¸\87à¸\84ุà¸\93]] à¸\8bึà¹\88à¸\87à¸\9cูà¹\89รัà¸\9aสามารà¸\96à¸\95อà¸\9aà¸\81ลัà¸\9aà¹\84à¸\94à¹\89',
+'emailpagetext' => 'คุณสามารถใช้แบบฟอร์มด้านล่างส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้
+à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81à¹\83à¸\99[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าสà¹\88วà¸\99à¸\95ัวà¸\82อà¸\87à¸\84ุà¸\93]]à¸\88ะà¸\9bราà¸\81à¸\8fà¹\80à¸\9bà¹\87à¸\99à¸\97ีà¹\88อยูà¹\88 "à¸\88าà¸\81" à¸\82อà¸\87อีà¹\80มล à¸\8bึà¹\88à¸\87à¸\9cูà¹\89รัà¸\9aสามารà¸\96à¸\95อà¸\9aà¸\81ลัà¸\9aà¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\82à¸\94ยà¸\95รà¸\87',
 'usermailererror' => 'การส่งอีเมลผิดพลาด:',
-'defemailsubject' => '{{SITENAME}} อีเมล์จากผู้ใช้งาน "$1"',
-'usermaildisabled' => 'à¸\81ารสà¹\88à¸\87อีà¹\80มลหาà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84มà¹\88สามารà¸\96à¹\83à¸\8aà¹\89à¸\87าà¸\99à¹\84à¸\94à¹\89',
+'defemailsubject' => 'อีเมล {{SITENAME}} จากผู้ใช้ "$1"',
+'usermaildisabled' => 'สà¹\88à¸\87อีà¹\80มลหาà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\9bิà¸\94à¸\81ารà¹\83à¸\8aà¹\89à¸\87าà¸\99',
 'usermaildisabledtext' => 'คุณไม่สามารถส่งอีเมลไปหาผู้ใช้อื่นบนวิกินี้',
 'noemailtitle' => 'ไม่มีที่อยู่อีเมล',
 'noemailtext' => 'ผู้ใช้คนนี้ระบุที่อยู่อีเมลไม่ถูกต้อง',
 'nowikiemailtitle' => 'ไม่อนุญาตให้ใช้อีเมล',
-'nowikiemailtext' => 'ผู้ใช้ท่านนี้เลือกไม่รับอีเมลจากผู้ใช้อื่น',
-'emailtarget' => 'กรอกชื่อผู้ใช้งานของผู้รับ',
-'emailusername' => 'ชื่อผู้ใช้งาน :',
-'emailusernamesubmit' => 'ส่งข้อมูล',
-'email-legend' => 'ส่งอีเมลถึงผู้ใช้อื่นใน {{SITENAME}}',
+'nowikiemailtext' => 'ผู้ใช้คนนี้เลือกไม่รับอีเมลจากผู้ใช้อื่น',
+'emailnotarget' => 'ไม่มีชื่อผู้ใช้ของผู้รับหรือชื่อผู้ใช้ไม่ถูกต้อง',
+'emailtarget' => 'กรอกชื่อผู้ใช้ของผู้รับ',
+'emailusername' => 'ชื่อผู้ใช้ :',
+'emailusernamesubmit' => 'ส่ง',
+'email-legend' => 'ส่งอีเมลถึงผู้ใช้ {{SITENAME}} อีกคน',
 'emailfrom' => 'จาก:',
 'emailto' => 'ถึง:',
 'emailsubject' => 'หัวเรื่อง:',
 'emailmessage' => 'ข้อความ:',
 'emailsend' => 'ส่ง',
 'emailccme' => 'ส่งอีเมลสำเนากลับมา',
-'emailccsubject' => 'สà¹\88à¸\87à¸\82à¹\89อà¸\84วามà¸\8bà¹\89ำà¹\84à¸\9bà¸\97ีà¹\88$1: $2',
-'emailsent' => 'อีà¹\80มลà¹\84à¸\94à¹\89à¸\96ูà¸\81สà¹\88à¸\87à¹\80รียà¸\9aรà¹\89อย',
-'emailsenttext' => 'อีà¹\80มลà¹\84à¸\94à¹\89à¸\96ูà¸\81สà¹\88à¸\87à¹\80รียà¸\9aรà¹\89อย',
+'emailccsubject' => 'à¸\84ัà¸\94ลอà¸\81à¸\82à¹\89อà¸\84วามà¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\9bยัà¸\87$1: $2',
+'emailsent' => 'อีà¹\80มลà¸\96ูà¸\81สà¹\88à¸\87à¹\81ลà¹\89ว',
+'emailsenttext' => 'อีà¹\80มลà¸\82อà¸\87à¸\84ุà¸\93à¸\96ูà¸\81สà¹\88à¸\87à¹\81ลà¹\89ว',
 'emailuserfooter' => 'อีเมลฉบับนี้ถูกส่งโดย $1 ถึง $2 ด้วยฟังก์ชัน "อีเมลผู้ใช้รายนี้" ที่ {{SITENAME}}',
 
 # User Messenger
@@ -2058,19 +2067,17 @@ $1',
 'usermessage-editor' => 'ตัวส่งข้อความของระบบ',
 
 # Watchlist
-'watchlist' => 'รายการเฝ้าดู',
+'watchlist' => 'รายการเฝ้าดูของฉัน',
 'mywatchlist' => 'รายการเฝ้าดู',
-'watchlistfor2' => 'สำหรับ $1 ($2)',
-'nowatchlist' => 'à¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83สà¹\88หà¸\99à¹\89าà¹\84หà¸\99à¹\80à¸\82à¹\89ารายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู',
-'watchlistanontext' => 'กรุณา $1 เพื่อที่จะดูหรือแก้ไขหน้าในรายการเฝ้าดู',
+'watchlistfor2' => 'สำหรับ $1 $2',
+'nowatchlist' => 'à¹\84มà¹\88มีรายà¸\81ารà¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูà¸\82อà¸\87à¸\84ุà¸\93',
+'watchlistanontext' => 'กรุณา$1เพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ',
 'watchnologin' => 'ไม่ได้ล็อกอิน',
-'watchnologintext' => 'ต้อง[[Special:UserLogin|ล็อกอิน]]เพื่อแก้ไขรายการเฝ้าดู',
-'addwatch' => 'เพิ่มเข้าไปยังรายการเฝ้าดู',
-'addedwatchtext' => 'หน้า "[[:$1]]" ถูกใส่เข้าไปใน[[Special:Watchlist|รายการเฝ้าดู]]ของคุณ ถ้ามีการเปลี่ยนแปลงเกิดขึ้นในหน้าเหล่านี้ รวมถึงหน้าพูดคุยของหน้านี้
-รายชื่อหน้าจะแสดงเป็นตัวหนาในส่วนของ[[Special:RecentChanges|หน้าการเปลี่ยนแปลงล่าสุด]]เพื่อให้โดดเด่นเป็นที่สังเกต
-ถ้าไม่ต้องการเฝ้าดูให้กดที่  "เลิกเฝ้าดู" ในส่วนของเมนู',
-'removewatch' => 'ลบออกจากรายการเฝ้าดู',
-'removedwatchtext' => 'หน้า "[[:$1]]" ถูกนำออกจาก[[Special:Watchlist|รายการเฝ้าดูของท่าน]]',
+'watchnologintext' => 'ต้อง[[Special:UserLogin|ล็อกอิน]]เพื่อแก้ไขรายการเฝ้าดูของคุณ',
+'addwatch' => 'เพิ่มเข้ารายการเฝ้าดู',
+'addedwatchtext' => 'หน้า "[[:$1]]" ถูกเพิ่มเข้า[[Special:Watchlist|รายการเฝ้าดู]]ของคุณ ถ้ามีการเปลี่ยนแปลงในหน้านี้ และหน้าพูดคุยที่เกี่ยวข้องจะแสดงรายการด้านล่าง',
+'removewatch' => 'นำออกจากรายการเฝ้าดู',
+'removedwatchtext' => 'หน้า "[[:$1]]" ถูกนำออกจาก[[Special:Watchlist|รายการเฝ้าดูของคุณ]]',
 'watch' => 'เฝ้าดู',
 'watchthispage' => 'เฝ้าดูหน้านี้',
 'unwatch' => 'เลิกเฝ้าดู',
@@ -2078,14 +2085,14 @@ $1',
 'notanarticle' => 'ไม่ใช่หน้าเนื้อหา',
 'notvisiblerev' => 'รุ่นดังกล่าวถูกลบเรียบร้อยแล้ว',
 'watchnochange' => 'ไม่มีหน้าที่คุณเฝ้าดูถูกแก้ไขในระยะเวลาที่แสดง',
-'watchlist-details' => 'มี $1 à¸«à¸\99à¹\89าà¹\83à¸\99รายà¸\8aืà¹\88อเฝ้าดูของคุณ ไม่รวมหน้าอภิปราย',
+'watchlist-details' => 'มี $1 à¸«à¸\99à¹\89าà¹\83à¸\99รายà¸\81ารเฝ้าดูของคุณ ไม่รวมหน้าอภิปราย',
 'wlheader-enotif' => '* แจ้งเตือนผ่านอีเมลถูกเปิดใช้งาน',
-'wlheader-showupdated' => "* à¸«à¸\99à¹\89าà¸\97ีà¹\88à¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84รัà¹\89à¸\87ลà¹\88าสุà¸\94แสดงใน'''ตัวหนา'''",
+'wlheader-showupdated' => "* à¸«à¸\99à¹\89าà¸\97ีà¹\88มีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\80à¸\82à¹\89าà¸\8aมà¸\84รัà¹\89à¸\87ลà¹\88าสุà¸\94à¸\82อà¸\87à¸\84ุà¸\93แสดงใน'''ตัวหนา'''",
 'watchmethod-recent' => 'ตรวจสอบการปรับปรุงล่าสุดกับหน้าเฝ้าดู',
 'watchmethod-list' => 'ตรวจสอบหน้าเฝ้าดูกับการแก้ไขล่าสุด',
 'watchlistcontains' => 'รายการเฝ้าดูของคุณมี $1 หน้า',
 'iteminvalidname' => "เกิดปัญหาชื่อไม่ถูกต้องกับ '$1'...",
-'wlnote' => 'ด้านล่างเป็นการแก้ไข $1 รายการ ในช่วง $2 ชั่วโมงที่ผ่านมา',
+'wlnote' => "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|สุดท้าย|ล่าสุด '''$1''' รายการ}} ใน{{PLURAL:$2|ชั่วโมง|ช่วง '''$2''' ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
 'wlshowlast' => 'แสดงล่าสุดใน $1 ชั่วโมง $2 วัน $3',
 'watchlist-options' => 'ตัวเลือกรายการเฝ้าดู',
 
@@ -2100,43 +2107,44 @@ $1',
 'enotif_subject_created' => '{{SITENAME}} หน้า $1 ถูกสร้างแล้วโดย {{gender:$2|$2}}',
 'enotif_subject_moved' => '{{SITENAME}} หน้า $1 ได้ย้ายแล้วโดย {{gender:$2|$2}}',
 'enotif_subject_changed' => '{{SITENAME}} หน้า $1 ได้เปลี่ยนแล้วโดย {{gender:$2|$2}}',
-'enotif_lastvisited' => 'ดู $1 สำหรับการเปลี่ยนแปลงตั้งแต่ครั้งล่าสุดที่คุณเข้าชม',
+'enotif_lastvisited' => 'à¸\94ู $1 à¸ªà¸³à¸«à¸£à¸±à¸\9aà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\97ัà¹\89à¸\87หมà¸\94à¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\84รัà¹\89à¸\87ลà¹\88าสุà¸\94à¸\97ีà¹\88à¸\84ุà¸\93à¹\80à¸\82à¹\89าà¸\8aม',
 'enotif_lastdiff' => 'ดู $1 เพื่อดูการเปลี่ยนแปลงนี้',
 'enotif_anon_editor' => 'ผู้ใช้นิรนาม $1',
-'enotif_body' => 'เรียน $WATCHINGUSERNAME,
-
+'enotif_body' => 'เรียน $WATCHINGUSERNAME
 
-ทางระบบจากเว็บ {{SITENAME}} ต้องการแจ้งให้ทราบว่า หน้า $PAGETITLE ได้ $CHANGEDORCREATED เมื่อ $PAGEEDITDATE โดย $PAGEEDITOR ดูรุ่นปัจจุบันได้ที่ $PAGETITLE_URL
+$PAGEINTRO $NEWPAGE
 
-$NEWPAGE
+คำอธิบายอย่างย่อของผู้เขียน: $PAGESUMMARY $PAGEMINOREDIT
 
-คำสรุปการแก้ไข: $PAGESUMMARY $PAGEMINOREDIT
-
-ติดต่อผู้แก้ไข:
-อีเมล: $PAGEEDITOR_EMAIL
+ติดต่อผู้เขียน:
+เมล: $PAGEEDITOR_EMAIL
 วิกิ: $PAGEEDITOR_WIKI
 
-จะไม่มีการแจ้งเพิ่มเติมจนกว่าคุณจะได้แวะเข้าไปที่หน้านี้
-นอกจากนี้คุณสามารถตั้งค่ายกเลิกการแจ้งของหน้าที่อยู่ในรายการเฝ้าดูได้
+จะไม่มีประกาศอื่นหากมีกิจกรรมเพิ่มเติม เว้นเสียแต่คุณจะเข้าชมหน้านี้ คุณยังสามารถตั้งค่าตัวบ่งชี้ประกาศใหม่สำหรับหน้าที่คุณเฝ้าดูทุกหน้าในรายการเฝ้าดูของคุณ
 
-             ระบบแจ้งอัตโนมัติจาก {{SITENAME}}
+ระบบประกาศ {{SITENAME}} ที่เป็นมิตรของคุณ
 
 --
-ถ้าต้องการเปลี่ยนแปลงรายการเฝ้าดู กรุณาไปที่:
+ในการเปลี่ยนการตั้งค่าประกาศอีเมลของคุณ โปรดดู
+{{canonicalurl:{{#special:Preferences}}}}
+
+ในการเปลี่ยนการตั้งค่ารายการเฝ้าดูของคุณ โปรดดู
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารลà¸\9aหà¸\99à¹\89าà¸\99ีà¹\89à¸\88าà¸\81รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู à¸\81รุà¸\93าà¹\84à¸\9bà¸\97ีà¹\88:
¹\83à¸\99à¸\81ารลà¸\9aหà¸\99à¹\89าà¸\88าà¸\81รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูà¸\82อà¸\87à¸\84ุà¸\93 à¹\82à¸\9bรà¸\94à¸\94ู
 $UNWATCHURL
 
-à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¸\84วามà¸\8aà¹\88วยà¹\80หลือà¹\80à¸\9eิà¹\88มà¹\80à¸\95ิม à¸\81รุà¸\93าà¹\84à¸\9bà¸\97ีà¹\88:
+à¸\9cลà¸\9bà¹\89อà¸\99à¸\81ลัà¸\9aà¹\81ละà¸\84วามà¸\8aà¹\88วยà¹\80หลือà¹\80à¸\9eิà¹\88มà¹\80à¸\95ิม:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ถูกสร้าง',
+'changed' => 'ถูกเปลี่ยนแปลง',
 
 # Delete
 'deletepage' => 'ลบหน้า',
 'confirm' => 'ยืนยัน',
 'excontent' => "เนื้อหาเดิม: '$1'",
 'excontentauthor' => "เนื้อหาเดิม: '$1' (และมีผู้เขียนคนเดียว คือ '[[Special:Contributions/$2|$2]]')",
-'exbeforeblank' => "à¹\80à¸\99ืà¹\89อหาà¹\80à¸\94ิมà¸\81à¹\88อà¸\99หà¸\99à¹\89าà¸\96ูà¸\81à¸\97ำà¹\83หà¹\89วà¹\88าà¸\87: '$1'",
+'exbeforeblank' => "à¹\80à¸\99ืà¹\89อหาà¸\81à¹\88อà¸\99à¸\96ูà¸\81à¸\97ำวà¹\88าà¸\87à¸\84ือ: '$1'",
 'exblank' => 'หน้าว่าง',
 'delete-confirm' => 'ลบ "$1"',
 'delete-legend' => 'ลบ',
@@ -2148,18 +2156,18 @@ $UNWATCHURL
 'deletedtext' => '"$1" ถูกลบ
 ดู $2 สำหรับบันทึกการลบล่าสุด',
 'dellogpage' => 'ปูมการลบ',
-'dellogpagetext' => 'à¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¹\80à¸\9bà¹\87à¸\99รายà¸\81ารà¸\82อà¸\87à¸\81ารลà¸\9aลà¹\88าสุà¸\94',
+'dellogpagetext' => 'ด้านล่างเป็นรายการการลบล่าสุด',
 'deletionlog' => 'ปูมการลบ',
 'reverted' => 'ย้อนไปรุ่นก่อนหน้า',
 'deletecomment' => 'เหตุผล:',
 'deleteotherreason' => 'เหตุผลอื่น/เพิ่มเติม:',
 'deletereasonotherlist' => 'เหตุผลอื่น',
-'deletereason-dropdown' => '* à¹\80หà¸\95ุà¸\9cลà¸\97ัà¹\88วà¹\84à¸\9bà¸\82อà¸\87à¸\81ารลà¸\9a
+'deletereason-dropdown' => '* à¹\80หà¸\95ุà¸\9cลà¸\81ารลà¸\9aà¸\97ัà¹\88วà¹\84à¸\9b
 ** รับแจ้งจากผู้เขียน
 ** ละเมิดลิขสิทธิ์
 ** ก่อกวน',
-'delete-edit-reasonlist' => 'à¹\81à¸\81à¹\89à¹\84à¸\82รายà¸\8aืà¹\88อà¹\80หà¸\95ุà¸\9cลà¹\83à¸\99การลบ',
-'delete-toobig' => 'หน้านี้มีประวัติการแก้ไขนาดใหญ่ คือ $1 รุ่น การลบหน้าเช่นนี้ถูกจำกัดเพื่อป้องกันการรบกวน{{SITENAME}}โดยบังเอิญ',
+'delete-edit-reasonlist' => 'à¹\81à¸\81à¹\89à¹\84à¸\82à¹\80หà¸\95ุà¸\9cลการลบ',
+'delete-toobig' => 'หน้านี้มีประวัติการแก้ไขนาดใหญ่ คือ กว่า $1 รุ่น การลบหน้าเช่นนี้ถูกจำกัดเพื่อป้องกันการรบกวน{{SITENAME}}โดยบังเอิญ',
 'delete-warning-toobig' => 'หน้านี้มีประวัติการแก้ไขขนาดใหญ่ กว่า $1 รุ่น การลบหน้านี้อาจรบกวนการทำงานของฐานข้อมูลของ {{SITENAME}} โปรดดำเนินการด้วยความระมัดระวัง',
 
 # Rollback
@@ -2167,27 +2175,28 @@ $UNWATCHURL
 'rollback_short' => 'ย้อนกลับฉุกเฉิน',
 'rollbacklink' => 'ย้อนกลับฉุกเฉิน',
 'rollbacklinkcount' => 'ย้อนกลับฉุกเฉิน $1 การแก้ไข',
+'rollbacklinkcount-morethan' => 'ย้อนกลับฉุกเฉินกว่า $1 การแก้ไข',
 'rollbackfailed' => 'ย้อนกลับฉุกเฉินล้มเหลว',
 'cantrollback' => 'ไม่สามารถย้อนการแก้ไขได้ ผู้เขียนคนล่าสุดเป็นผู้เขียนคนเดียวของหน้านี้',
 'alreadyrolled' => 'ไม่สามารถย้อนกลับฉุกเฉินการแก้ไขสุดท้ายโดย [[User:$2|$2]] ([[User talk:$2|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ในหน้า [[:$1]] มีผู้อื่นได้แก้ไขหรือย้อนกลับฉุกเฉินหน้านี้ไปก่อนแล้ว
 
 ผู้แก้ไขล่าสุดของหน้านี้คือ [[User:$3|$3]] ([[User talk:$3|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])',
-'editcomment' => "สรุà¸\9bà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82: \"''\$1''\"",
+'editcomment' => "à¸\84ำอà¸\98ิà¸\9aายอยà¹\88าà¸\87ยà¹\88อà¸\84ือ: \"''\$1''\"",
 'revertpage' => 'ย้อนการแก้ไขของ [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ไปยังรุ่นของ [[User:$1|$1]]',
 'revertpage-nouser' => 'ย้อนการแก้ไขโดย (ชื่อผู้ใช้ถูกลบออก) ไปยังรุ่นล่าสุดโดย [[User:$1|$1]]',
-'rollback-success' => 'ยà¹\89อà¸\99รุà¹\88à¸\99à¸\97ีà¹\88à¹\81à¸\81à¹\89à¹\84à¸\82à¹\82à¸\94ย $1 à¹\84à¸\9bยัà¸\87รุà¹\88à¸\99ลà¹\88าสุà¸\94à¸\97ีà¹\88à¹\81à¸\81à¹\89à¹\84à¸\82à¹\82à¸\94ย $2 à¹\81ลà¹\89ว',
+'rollback-success' => 'ยà¹\89อà¸\99รุà¹\88à¸\99à¸\97ีà¹\88à¹\81à¸\81à¹\89à¹\84à¸\82à¹\82à¸\94ย $1 à¹\84à¸\9bยัà¸\87รุà¹\88à¸\99ลà¹\88าสุà¸\94à¹\82à¸\94ย $2',
 
 # Edit tokens
 'sessionfailure-title' => 'Session นี้ล้มเหลว',
-'sessionfailure' => 'à¸\97à¹\88าà¸\97าà¸\87จะมีปัญหาเกี่ยวการล็อกอินในช่วงเวลานี้ เกิดจากทางระบบป้องกันการลักลอบการขโมยล็อกอิน กรุณาย้อนกลับไปหน้าก่อนหน้า และลองโหลดใหม่อีกครั้ง',
+'sessionfailure' => 'à¹\80หมือà¸\99จะมีปัญหาเกี่ยวการล็อกอินในช่วงเวลานี้ เกิดจากทางระบบป้องกันการลักลอบการขโมยล็อกอิน กรุณาย้อนกลับไปหน้าก่อนหน้า และลองโหลดใหม่อีกครั้ง',
 
 # Protect
 'protectlogpage' => 'ปูมการล็อก',
 'protectlogtext' => 'ด้านล่างนี้คือรายการการเปลี่ยนแปลงการป้องกันหน้า
 ดู[[Special:ProtectedPages|รายการหน้าที่ถูกป้องกัน]]สำหรับการป้องกันหน้าในปัจจุบัน',
-'protectedarticle' => '"[[$1]]" ถูกล็อก',
+'protectedarticle' => 'ป้องกัน "[[$1]]"',
 'modifiedarticleprotection' => 'เปลี่ยนระดับการล็อกสำหรับ "[[$1]]"',
-'unprotectedarticle' => 'ลà¸\9aà¸\81ารà¸\9bà¸\81à¸\9bà¹\89อà¸\87à¸\82à¹\89อมูลออà¸\81จาก "[[$1]]" แล้ว',
+'unprotectedarticle' => 'ยà¸\81à¹\80ลิà¸\81à¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99จาก "[[$1]]" แล้ว',
 'movedarticleprotection' => 'ย้ายการตั้งค่าการล็อกจาก "[[$2]]" ไปยัง "[[$1]]"',
 'protect-title' => 'กำลังล็อกหน้า "$1"',
 'protect-title-notallowed' => 'ดูระดับการป้องกันของ "$1"',
@@ -2199,7 +2208,7 @@ $UNWATCHURL
 'protectexpiry' => 'หมดอายุ:',
 'protect_expiry_invalid' => 'เวลาหมดอายุไม่ถูกต้อง',
 'protect_expiry_old' => 'เวลาหมดอายุผ่านมาแล้ว',
-'protect-unchain-permissions' => 'ปลดล็อกตัวเลือกป้องกันอื่นๆ',
+'protect-unchain-permissions' => 'ปลดล็อกตัวเลือกป้องกันอื่น ๆ',
 'protect-text' => "ดูและเปลี่ยนระดับการล็อกสำหรับหน้า '''$1'''.",
 'protect-locked-blocked' => "ไม่สามารถเปลี่ยนระดับการล็อกหน้าขณะที่ถูกบล็อกได้ ดูระดับการล็อกของหน้า '''$1''':",
 'protect-locked-dblock' => "ไม่สามารถเปลี่ยนระดับการล็อกหน้าได้เนื่องจากฐานข้อมูลถูกล็อก ดูระดับการล็อกของหน้า '''$1''':",
@@ -2252,15 +2261,16 @@ $UNWATCHURL
 'viewdeletedpage' => 'หน้าที่ถูกลบ',
 'undeletepagetext' => '{{PLURAL:$1|หน้า|หน้า}}ต่อไปนี้ถูกลบไปแล้ว แต่ยังคงอยู่ในกรุซึ่งสามารถเรียกคืนได้ กรุข้อมูลอาจถูกลบเป็นระยะ',
 'undelete-fieldset-title' => 'กู้คืนรุ่นต่าง ๆ',
-'undeleteextrahelp' => "à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¹\80รียà¸\81à¸\84ืà¸\99à¸\9bระวัà¸\95ิà¸\82อà¸\87หà¸\99à¹\89าà¸\97ัà¹\89à¸\87หมà¸\94 à¹\84มà¹\88à¸\95à¹\89อà¸\87à¹\80ลือà¸\81à¸\81ลà¹\88อà¸\87à¹\83à¸\94à¹\80ลย à¹\81ลà¹\89วà¸\81à¸\94à¸\9bุà¹\88ม '''''à¹\80รียà¸\81คืน'''''
-à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¹\80รียà¸\81à¸\84ืà¸\99à¸\9bระวัà¸\95ิà¹\80à¸\89à¸\9eาะสà¹\88วà¸\99à¹\83à¸\94สà¹\88วà¸\99หà¸\99ึà¹\88à¸\87 à¹\80ลือà¸\81à¸\81ลà¹\88อà¸\87à¸\97ีà¹\88มีà¸\9bระวัà¸\95ิสà¹\88วà¸\99à¸\97ีà¹\88à¸\95à¹\89อà¸\87à¸\81ารà¸\88ะà¹\80รียà¸\81à¸\84ืà¸\99 à¹\81ลà¹\89วà¸\81à¸\94'''''à¹\80รียà¸\81คืน'''''
+'undeleteextrahelp' => "à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¸\81ูà¹\89à¸\9bระวัà¸\95ิà¸\82อà¸\87หà¸\99à¹\89าà¸\84ืà¸\99à¸\97ัà¹\89à¸\87หมà¸\94 à¹\84มà¹\88à¸\95à¹\89อà¸\87à¹\80ลือà¸\81à¸\81ลà¹\88อà¸\87à¹\83à¸\94à¹\80ลย à¹\81ลà¹\89วà¸\81à¸\94à¸\9bุà¹\88ม '''''à¸\81ูà¹\89คืน'''''
+à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¸\81ูà¹\89à¸\9bระวัà¸\95ิà¸\84ืà¸\99à¹\80à¸\89à¸\9eาะà¸\9aาà¸\87สà¹\88วà¸\99 à¹\83หà¹\89à¹\80ลือà¸\81à¸\81ลà¹\88อà¸\87à¸\97ีà¹\88มีà¸\9bระวัà¸\95ิสà¹\88วà¸\99à¸\97ีà¹\88à¸\95à¹\89อà¸\87à¸\81ารà¸\81ูà¹\89 à¹\81ลà¹\89วà¸\81à¸\94'''''à¸\81ูà¹\89คืน'''''
 กด '''''ล้างค่า''''' เพื่อลบค่าในกล่องความเห็นและกล่องตัวเลือกทั้งหมด",
 'undeleterevisions' => '$1 รุ่นการแก้ไขถูกเก็บไว้',
 'undeletehistory' => 'เมื่อคุณกู้หน้าใดหน้าหนึ่ง รุ่นทั้งหมดจะถูกกู้คืนไปยังประวัติ หากมีหน้าใหม่ในชื่อเดียวกันถูกสร้างขึ้นหลังจากการลบ รุ่นที่กู้คืนนั้นจะปรากฏในประวัติที่มีมาก่อน',
 'undeleterevdel' => 'จะกู้คืนไม่ได้หากการกู้คืนนั้นส่งผลให้รุ่นล่าสุดของหน้าหรือไฟล์ถูกลบไปบางส่วน ในกรณีเช่นนั้น คุณต้องไม่เลือกหรือแสดงรุ่นใหม่สุดที่ถูกลบไปก่อน',
 'undeletehistorynoadmin' => 'หน้านี้ถูกลบก่อนหน้านี้ โดยสาเหตุการลบและรายชื่อผู้ร่วมแก้ไขก่อนหน้าแสดงผลด้านล่าง สำหรับข้อมูลที่ถูกลบจะดูได้เฉพาะผู้ดูแลระบบ',
 'undelete-revision' => 'รุ่นที่ถูกลบของหน้า $1 (ตั้งแต่ $4 เมื่อ $5) โดย $3:',
-'undeleterevision-missing' => 'รุ่นที่ต้องการดูไม่มี ข้อมูลอาจจะโดนลบ',
+'undeleterevision-missing' => 'รุ่นไม่ถูกต้องหรือสูญหาย
+คุณอาจมีลิงก์เสีย หรือรุ่นอาจถูกกู้คืนหรือนำออกจากกรุ',
 'undelete-nodiff' => 'ไม่พบรุ่นก่อนหน้า',
 'undeletebtn' => 'กู้คืน',
 'undeletelink' => 'ดู/กู้คืน',
@@ -2271,11 +2281,12 @@ $UNWATCHURL
 'undeletedrevisions' => '$1 รุ่นการแก้ไขถูกกู้คืน',
 'undeletedrevisions-files' => '$1 รุ่น และ $2 ไฟล์ถูกกู้คืน',
 'undeletedfiles' => '$1 ไฟล์ถูกกู้คืน',
-'cannotundelete' => 'เรียกคืนไม่สำเร็จ อาจมีใครบางคนเรียกคืนหน้านั้นแล้ว',
+'cannotundelete' => 'กู้คืนล้มเหลว:
+$1',
 'undeletedpage' => "'''$1 ถูกกู้คืน'''
 
 ดู[[Special:Log/delete|ปูมการลบ]] สำหรับรายชื่อการลบและการกู้คืนล่าสุด",
-'undelete-header' => 'à¸\94ู [[Special:Log/delete|à¸\9aัà¸\99à¸\97ึà¸\81การลบ]] สำหรับหน้าที่ถูกลบล่าสุด',
+'undelete-header' => 'à¸\94ู [[Special:Log/delete|à¸\9bูมการลบ]] สำหรับหน้าที่ถูกลบล่าสุด',
 'undelete-search-title' => 'ค้นหาหน้าที่ถูกลบ',
 'undelete-search-box' => 'ค้นหาหน้าที่ถูกลบ',
 'undelete-search-prefix' => 'ค้นหาหน้าที่เริ่มต้นด้วย:',
@@ -2295,14 +2306,14 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'เนมสเปซ:',
-'invert' => 'à¸\97ัà¹\89à¸\87หมà¸\94à¸\97ีà¹\88à¹\84มà¹\88à¹\84à¸\94à¹\89เลือก',
+'invert' => 'à¸\81ลัà¸\9aà¸\81ารเลือก',
 'tooltip-invert' => 'เลือกกล่องนี้เพื่อซ่อนการเปลี่ยนแปลงไปยังหน้าในเนมเปซที่เลือก (และเนมสเปซที่เกี่ยวข้องถ้าเลือก)',
 'namespace_association' => 'เนมสเปซที่เกี่ยวข้อง',
 'tooltip-namespace_association' => 'เลือกกล่องนี้เพื่อรวมเนมสเปซพูดคุยหรือหัวข้อที่เกี่ยวข้องกับเนมสเปซที่เลือกด้วย',
 'blanknamespace' => '(หลัก)',
 
 # Contributions
-'contributions' => 'เรื่องที่เขียนโดยผู้ใช้นี้',
+'contributions' => 'เรื่องที่เขียนโดย{{GENDER:$1|ผู้ใช้}}นี้',
 'contributions-title' => 'เรื่องที่เขียนโดย $1',
 'mycontris' => 'เรื่องที่เขียน',
 'contribsub2' => 'สำหรับ $1 ($2)',
@@ -2331,9 +2342,9 @@ $1',
 
 # What links here
 'whatlinkshere' => 'หน้าที่ลิงก์มา',
-'whatlinkshere-title' => 'หà¸\99à¹\89าà¸\97ีà¹\88à¹\82ยà¸\87มาà¸\97ีà¹\88 "$1"',
+'whatlinkshere-title' => 'หà¸\99à¹\89าà¸\97ีà¹\88ลิà¸\87à¸\81à¹\8cมายัà¸\87 "$1"',
 'whatlinkshere-page' => 'หน้า:',
-'linkshere' => "หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89ลิà¸\87à¸\81à¹\8cมาà¸\97ีà¹\88 '''[[:$1]]''':",
+'linkshere' => "หà¸\99à¹\89าà¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89ลิà¸\87à¸\81à¹\8cมายัà¸\87 '''[[:$1]]''':",
 'nolinkshere' => "ไม่มีหน้าใดลิงก์มาที่ '''[[:$1]]'''",
 'nolinkshere-ns' => "ไม่มีหน้าใดลิงก์มาที่'''[[:$1]]''' ในเนมสเปซที่เลือกไว้",
 'isredirect' => 'หน้าเปลี่ยนทาง',
@@ -2345,7 +2356,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1หน้าเปลี่ยนทาง',
 'whatlinkshere-hidetrans' => '$1 ถูกรวมอยู่',
 'whatlinkshere-hidelinks' => '$1 ลิงก์',
-'whatlinkshere-hideimages' => '$1 ภาพที่ลิงก์',
+'whatlinkshere-hideimages' => '$1ลิงก์ไฟล์',
 'whatlinkshere-filters' => 'ตัวกรอง',
 
 # Block/unblock
@@ -2386,7 +2397,7 @@ $1',
 'badipaddress' => 'หมายเลขไอพีไม่ถูกต้อง',
 'blockipsuccesssub' => 'บล็อกสำเร็จ',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ถูกบล็อก<br />
-ดู[[Special:BlockList|รายการบล็อกไอพี]]เพื่อตรวจสอบการบล็อก',
+ดู[[Special:BlockList|รายการบล็อก]]เพื่อทบทวนการบล็อก',
 'ipb-blockingself' => 'คุณกำลังทำการบล็อกตัวคุณเอง คุณแน่ใจแล้วหรือว่าต้องการทำเช่นนั้น',
 'ipb-edit-dropdown' => 'แก้ไขสาเหตุการบล็อก',
 'ipb-unblock-addr' => 'เลิกบล็อก $1',
@@ -2428,7 +2439,7 @@ $1',
 'change-blocklink' => 'เปลี่ยนการบล็อก',
 'contribslink' => 'เรื่องที่เขียน',
 'emaillink' => 'ส่งอีเมล',
-'autoblocker' => 'à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81อัà¸\95à¹\82à¸\99มัà¸\95ิà¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81หมายà¹\80ลà¸\82à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93à¸\95รà¸\87à¸\81ัà¸\9a "[[User:$1|$1]]" à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81à¸\81ลà¹\88อà¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81สาà¹\80หà¸\95ุ: "$2"',
+'autoblocker' => 'à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81อัà¸\95à¹\82à¸\99มัà¸\95ิà¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81หมายà¹\80ลà¸\82à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93ลà¹\88าสุà¸\94à¸\96ูà¸\81à¹\83à¸\8aà¹\89à¹\82à¸\94ย "[[User:$1|$1]]" à¹\80หà¸\95ุà¸\9cลà¸\97ีà¹\88à¹\83หà¹\89à¹\81à¸\81à¹\88à¸\81ารà¸\9aลà¹\87อà¸\81 $1 à¸\84ือ: "$2"',
 'blocklogpage' => 'ปูมการบล็อก',
 'blocklog-showlog' => 'ผู้ใช้นี้ถูกสกัดกั้นมาก่อน
 ปูมการสกัดกั้นแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
@@ -2450,10 +2461,10 @@ $1',
 'range_block_disabled' => 'ยกเลิกการบล็อกช่วงไอพีของผู้ดูแลระบบ',
 'ipb_expiry_invalid' => 'ค่าวันหมดอายุไม่ถูกต้อง',
 'ipb_expiry_temp' => 'ผู้ใช้ที่ถูกบล็อกจะซ่อนโดยถาวร',
-'ipb_hide_invalid' => 'à¹\84มà¹\88สามารà¸\96ยัà¸\9aยัà¹\89à¸\87à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81อาà¸\88à¸\88ะมีการแก้ไขมากเกินไป',
+'ipb_hide_invalid' => 'à¹\84มà¹\88สามารà¸\96ยัà¸\9aยัà¹\89à¸\87à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¹\80à¸\9eราะอาà¸\88มีการแก้ไขมากเกินไป',
 'ipb_already_blocked' => '"$1" ถูกบล็อกแล้วก่อนหน้านี้',
 'ipb-needreblock' => '$1 ถูกบล็อกแล้ว คุณต้องการแก้ไขหรือไม่',
-'ipb-otherblocks-header' => 'การบล็อกอื่นๆ',
+'ipb-otherblocks-header' => '{{PLURAL:$1|การบล็อก}}อื่น ๆ',
 'unblock-hideuser' => 'คุณไม่สามารถยกเลิกการบล็อคผู้ใช้งานรายนี้ได้, เนื่องจากชื่อผู้ใช้ของผู้ใช้งานถูกซ่อนอยู่',
 'ipb_cant_unblock' => 'ปัญหา: หมายเลขบล็อก $1 ไม่พบ อาจเกิดจากได้ถูกยกเลิกการบล็อกแล้ว',
 'ipb_blocked_as_range' => 'มีข้อผิดพลาด: หมายเลขไอพี $1 ไม่ได้ถูกระงับโดยตรงและไม่สามารถยกเลิกการระงับโดยตรงได้.  อย่างไรก็ตาม ไอพีนี้ถูกระงับในฐานะที่เป็นส่วนหนึ่งของหมายเลขไอพีในช่วง $2 ซึ่งสามารถยกเลิกการระงับได้',
@@ -2467,7 +2478,7 @@ $1',
 'sorbsreason' => 'หมายเลขไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ถูกใช้งานในเว็บไซต์',
 'sorbs_create_account_reason' => 'หมายเลขไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ถูกใช้งานในเว็บไซต์ ดังนั้นคุณไม่สามารถสร้างชื่อบัญชีผู้ใช้ได้',
 'cant-block-while-blocked' => 'คุณไม่สามารถบล็อกผู้ใช้อื่นในขณะที่คุณกำลังถูกบล็อก',
-'cant-see-hidden-user' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\88à¸\97ีà¹\88à¸\84ุà¸\93à¸\81ำลัà¸\87à¸\9eยายามระà¸\87ัà¸\9aà¸\99ัà¹\89à¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9aหรือà¸\8bà¹\88อà¸\99à¹\80à¸\94ิมอยูà¹\88à¹\81ลà¹\89ว à¹\83à¸\99à¸\82à¸\93ะà¸\97ีà¹\88ีà¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\8cà¹\83à¸\99à¸\81ารà¸\8bà¹\88อà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89 à¸\84ุà¸\93ไม่สามารถดูหรือแก้ไขการระงับผู้ใช้ได้',
+'cant-see-hidden-user' => 'à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\84ุà¸\93à¸\81ำลัà¸\87à¸\9eยายามระà¸\87ัà¸\9aà¸\99ัà¹\89à¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9aหรือà¸\8bà¹\88อà¸\99à¹\80à¸\94ิมอยูà¹\88à¹\81ลà¹\89ว à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¸\8bà¹\88อà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89 à¸\84ุà¸\93à¸\88ึà¸\87ไม่สามารถดูหรือแก้ไขการระงับผู้ใช้ได้',
 'ipbblocked' => 'คุณไม่สามารถบล็อกหรือปลดบล็อกผู้ใช้คนอื่น เนื่องจากคุณกำลังถูกบล็อก',
 'ipbnounblockself' => 'คุณไม่ได้รับอนุญาตให้ปลดบล็อกตนเอง',
 
@@ -2484,7 +2495,7 @@ $1',
 'lockdbsuccesssub' => 'ล็อกฐานข้อมูลเรียบร้อย',
 'unlockdbsuccesssub' => 'ปลดล็อกฐานข้อมูลเรียบร้อย',
 'lockdbsuccesstext' => 'ล็อกฐานข้อมูลเรียบร้อย
-<br />อย่าลืมที่จะ [[Special:UnlockDB|ปลดล็อก]] เพื่อให้ใช้งานได้ตามปกติ',
+<br />อย่าลืม[[Special:UnlockDB|ปลดล็อก]]หลังการบำรุงรักษาเสร็จสิ้น',
 'unlockdbsuccesstext' => 'ปลดล็อกฐานข้อมูลเรียบร้อย',
 'lockfilenotwritable' => 'ไม่สามารถล็อกฐานข้อมูลได้ เนื่องจากการเขียนลงฐานข้อมูล การล็อกและการปลดล็อกจำเป็นต้องทำที่เว็บเซิร์ฟเวอร์',
 'databasenotlocked' => 'ฐานข้อมูลไม่ได้ล็อก',
@@ -2520,23 +2531,23 @@ $1',
 
 หากเกิดกรณีเหล่านี้ คุณจะต้องย้ายหรือรวมหน้าเองหากต้องการเปลี่ยนชื่อตามในภายหลัง",
 'movearticle' => 'เปลี่ยนชื่อ',
-'moveuserpage-warning' => "'''à¸\84ำà¹\80à¸\95ือà¸\99''' à¸\84ุà¸\93à¸\81ำลัà¸\87à¸\88ะยà¹\89ายหà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89 à¹\82à¸\9bรà¸\94à¸\97ราà¸\9aวà¹\88าหà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99à¸\97ีà¹\88à¸\88ะà¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อ à¹\81à¸\95à¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\88ะ'''à¹\84มà¹\88'''à¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อ",
+'moveuserpage-warning' => "'''คำเตือน''' คุณกำลังย้ายหน้าผู้ใช้ โปรดทราบว่าหน้าผู้ใช้เท่านั้นที่จะถูกเปลี่ยนชื่อ แต่ผู้ใช้จะ'''ไม่'''ถูกเปลี่ยนชื่อ",
 'movenologin' => 'ไม่ได้ล็อกอิน',
-'movenologintext' => 'à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อหà¸\99à¹\89าà¸\99ีà¹\89 à¸\95à¹\89อà¸\87ลà¸\87à¸\97ะà¹\80à¸\9aียà¸\99à¹\81ละà¹\83หà¹\89à¸\97ำà¸\81าร[[Special:UserLogin|ล็อกอิน]]',
-'movenotallowed' => 'à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aอà¸\99ุà¸\8dาà¸\95à¹\83หà¹\89ยà¹\89ายหน้า',
-'movenotallowedfile' => 'à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¸\97ีà¹\88à¸\88ะยà¹\89ายà¹\84à¸\9fลà¹\8c',
-'cant-move-user-page' => 'à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\83à¸\99à¸\81ารยà¹\89ายหà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89 (à¹\81ยà¸\81à¸\88าà¸\81หà¸\99à¹\89ายà¹\88อย)',
-'cant-move-to-user-page' => 'à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\83à¸\99à¸\81ารยà¹\89ายหà¸\99à¹\89าà¹\83à¸\94 à¹\86 à¹\84à¸\9bà¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\9cูà¹\89à¹\83à¸\8aà¹\89 (ยà¸\81à¹\80วà¹\89à¸\99หà¸\99à¹\89ายà¹\88อยà¸\82อà¸\87à¸\9cูà¹\89à¹\83à¸\8aà¹\89)',
+'movenologintext' => 'à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อหà¸\99à¹\89าà¸\99ีà¹\89 à¸\95à¹\89อà¸\87à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียà¸\99à¹\81ละ[[Special:UserLogin|ล็อกอิน]]',
+'movenotallowed' => 'à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อหน้า',
+'movenotallowedfile' => 'คุณไม่มีสิทธิย้ายไฟล์',
+'cant-move-user-page' => 'คุณไม่มีสิทธิย้ายหน้าผู้ใช้ (แยกจากหน้าย่อย)',
+'cant-move-to-user-page' => 'คุณไม่มีสิทธิย้ายหน้าใด ๆ ไปเป็นหน้าผู้ใช้ (ยกเว้นหน้าย่อยของผู้ใช้)',
 'newtitle' => 'ชื่อใหม่',
 'move-watch' => 'เฝ้าดูหน้านี้',
 'movepagebtn' => 'เปลี่ยนชื่อ',
 'pagemovedsub' => 'เปลี่ยนชื่อสำเร็จ',
 'movepage-moved' => '\'\'\'"$1" ถูกเปลี่ยนชื่อเป็น "$2"\'\'\'',
 'movepage-moved-redirect' => 'หน้าเปลี่ยนทางถูกสร้างขึ้น',
-'movepage-moved-noredirect' => 'หà¸\99à¹\89าà¹\80à¸\9bลีà¹\88ยà¸\99à¸\97าà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89à¸\96ูà¸\81สรà¹\89าà¸\87',
+'movepage-moved-noredirect' => 'à¸\81ารสรà¹\89าà¸\87หà¸\99à¹\89าà¹\80à¸\9bลีà¹\88ยà¸\99à¸\97าà¸\87à¸\96ูà¸\81ระà¸\87ัà¸\9a',
 'articleexists' => 'หน้าที่ต้องการมีอยู่แล้ว หรือชื่อที่เลือกไม่ถูกต้อง กรุณาเลือกชื่อใหม่',
 'cantmove-titleprotected' => 'คุณไม่สามารถเปลี่ยนชื่อหน้าเป็นชื่อนี้ได้ เนื่องจากชื่อใหม่นี้ได้รับการป้องกันไม่ให้สร้างใหม่',
-'talkexists' => "'''à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อหà¸\99à¹\89าสำà¹\80รà¹\87à¸\88 à¹\81à¸\95à¹\88หà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¹\84มà¹\88สามารà¸\96à¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¸\84à¹\88à¸\97à¹\84à¸\94à¹\80 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81มีหà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¹\83à¸\99à¸\8aืà¹\88อà¹\83หมà¹\88à¹\81ลà¹\89ว à¹\82à¸\9bรà¸\94ยà¹\89ายà¹\80อà¸\87อีà¸\81à¸\84รัà¹\89à¸\87'''",
+'talkexists' => "'''à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อหà¸\99à¹\89าสำà¹\80รà¹\87à¸\88 à¹\81à¸\95à¹\88หà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¹\84มà¹\88สามารà¸\96à¸\96ูà¸\81à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¹\84à¸\94à¹\89 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81มีหà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¹\83à¸\99à¸\8aืà¹\88อà¹\83หมà¹\88à¹\81ลà¹\89ว à¹\82à¸\9bรà¸\94รวมà¹\80อà¸\87à¸\94à¹\89วยมือ'''",
 'movedto' => 'เปลี่ยนชื่อเป็น',
 'movetalk' => 'เปลี่ยนชื่อหน้าพูดคุยพร้อมกัน',
 'move-subpages' => 'ย้ายหน้าย่อยทั้งหมด (มากถึง $1 หน้า)',
@@ -2544,7 +2555,7 @@ $1',
 'movepage-page-exists' => 'หน้า $1 มีอยู่แล้วและไม่สามารถเขียนทับได้โดยอัตโนมัติ',
 'movepage-page-moved' => 'หน้า $1 ถูกเปลี่ยนชื่อเป็น $2',
 'movepage-page-unmoved' => 'หน้า $1 ไม่สามารถเปลี่ยนชื่อเป็น $2 ได้',
-'movepage-max-pages' => 'หน้าทั้งหมด $1 {{PLURAL:$1|หน้า|หน้า}} ถูกย้ายไป ซึ่งนับได้ว่าเป็นจำนวนที่มากที่สุดเท่าที่จะทได้ และหยุดการย้ายหน้าอย่างอัตโนมัติแล้ว',
+'movepage-max-pages' => 'หน้า $1 หน้าถูกย้ายไป ซึ่งมากสุดแล้ว และจะไม่มีหน้าใดย้ายอัตโนมัติเพิ่ม',
 'movelogpage' => 'ปูมการเปลี่ยนชื่อ',
 'movelogpagetext' => 'ด้านล่างเป็นรายการการเปลี่ยนชื่อทุกหน้า',
 'movesubpage' => '{{PLURAL:$1|หน้าย่อย|หน้าย่อย}}',
@@ -2553,12 +2564,12 @@ $1',
 'movereason' => 'เหตุผล:',
 'revertmove' => 'ย้อน',
 'delete_and_move' => 'ลบและย้าย',
-'delete_and_move_text' => '== à¸\88ำà¹\80à¸\9bà¹\87à¸\99à¸\95à¹\89อà¸\87ลบ ==
+'delete_and_move_text' => '== à¸\95à¹\89อà¸\87à¸\81ารลบ ==
 
 มีหน้าปลายทาง "[[:$1]]" แล้ว คุณต้องการลบหน้านั้นหรือไม่เพื่อดำเนินการต่อ',
 'delete_and_move_confirm' => 'ใช่ ลบหน้านั้น',
-'delete_and_move_reason' => 'à¸\96ูà¸\81ลà¸\9aสำหรัà¸\9aà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อ',
-'selfmove' => 'à¸\8aืà¹\88อหà¸\99à¹\89าà¹\80à¸\94ิมà¹\81ละหà¸\99à¹\89าà¹\83หมà¹\88à¹\80à¸\9bà¹\87à¸\99à¸\8aืà¹\88อà¹\80à¸\94ียวà¸\81ัà¸\99 à¹\84มà¹\88สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อได้',
+'delete_and_move_reason' => 'à¸\96ูà¸\81ลà¸\9aà¹\80à¸\9eืà¹\88อà¹\80à¸\9bิà¸\94à¸\8aà¹\88อà¸\87à¹\81à¸\81à¹\88à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¸\88าà¸\81 "[[$1]]"',
+'selfmove' => 'à¸\8aืà¹\88อหà¸\99à¹\89าà¸\95à¹\89à¸\99à¸\97าà¸\87à¹\81ละà¸\9bลายà¸\97าà¸\87à¹\80à¸\9bà¹\87à¸\99à¸\8aืà¹\88อà¹\80à¸\94ียวà¸\81ัà¸\99 à¹\84มà¹\88สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99à¸\8aืà¹\88อà¹\84à¸\94à¹\89มาà¹\83à¸\8aà¹\89à¸\8aืà¹\88อà¹\80à¸\94ิมได้',
 'immobile-source-namespace' => 'ไม่สามารถเปลี่ยนชื่อหน้าในเนมสเปซ "$1"',
 'immobile-target-namespace' => 'ไม่สามารถย้ายหน้าไปยังเนมสเปซ "$1" ได้',
 'immobile-target-namespace-iw' => 'ไม่สามารถย้ายไปยังหน้าปลายทางที่เป็นลิงก์ interwiki ได้',
@@ -2642,16 +2653,16 @@ $1',
 'importtext' => 'กรุณาส่งออกไฟล์จากวิกิต้นทางโดยใช้[[Special:Export|เครื่องมือส่งออก]]
 บันทึกลงคอมพิวเตอร์ของคุณ และอัปโหลดที่นี่',
 'importstart' => 'กำลังนำเข้าหน้า...',
-'import-revision-count' => '$1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}',
+'import-revision-count' => '$1 รุ่นการแก้ไข',
 'importnopages' => 'ไม่มีหน้าให้นำเข้า',
-'imported-log-entries' => 'นำ $1 {{PLURAL:$1| เข้าระบบ | รายการบันทึก}}',
+'imported-log-entries' => 'นำเข้า $1 รายการปูม',
 'importfailed' => 'การนำเข้าไม่สำเร็จ: <nowiki>$1</nowiki>',
 'importunknownsource' => 'ไม่ทราบชนิดของไฟล์นำเข้า',
 'importcantopen' => 'ไม่สามารถเปิดไฟล์นำเข้าได้',
-'importbadinterwiki' => 'ลิà¸\87à¸\81à¹\8cà¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¸\82à¹\89ามภาษาà¹\80สีย',
+'importbadinterwiki' => 'ลิงก์ข้ามภาษาเสีย',
 'importnotext' => 'ไฟล์ว่างหรือไฟล์ไม่มีข้อความ',
 'importsuccess' => 'นำเข้าไฟล์สำเร็จ!',
-'importhistoryconflict' => 'à¸\9bระวัà¸\95ิหà¸\99à¹\89าà¸\82ัà¸\94à¹\81ยà¹\89à¸\87à¸\81ัà¸\99 (à¸\8bึà¹\88à¸\87อาจเคยนำเข้าหน้านี้มาก่อน)',
+'importhistoryconflict' => 'มีà¸\9bระวัà¸\95ิรุà¹\88à¸\99à¸\82ัà¸\94à¹\81ยà¹\89à¸\87à¸\81ัà¸\99 (อาจเคยนำเข้าหน้านี้มาก่อน)',
 'importnosources' => 'ไม่มีการกำหนดแหล่งนำเข้าข้ามวิกิ และการอัปโหลดประวัติหน้าโดยตรงถูกปิดการใช้งาน',
 'importnofile' => 'ไฟล์นำเข้าไม่ได้ถูกอัปโหลด',
 'importuploaderrorsize' => 'อัปโหลดไฟล์ข้อมูลนำเข้าไม่สำเร็จ
@@ -2670,7 +2681,7 @@ $1',
 'import-error-create' => 'หน้า "$1" ยังไม่ได้ถูกนำเข้า เนื่องจากคุณไม่ได้รับอนุญาตให้สามารถสร้างได้',
 
 # Import log
-'importlogpage' => 'à¸\9aัà¸\99à¸\97ึà¸\81การนำเข้า',
+'importlogpage' => 'à¸\9bูมการนำเข้า',
 'importlogpagetext' => 'นำเข้าไฟล์จากวิกิอื่น โดยผ่านทางผู้ดูแลระบบ',
 'import-logentry-upload' => 'นำเข้า [[$1]] ผ่านการอัปโหลดแล้ว',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}',
@@ -2699,7 +2710,7 @@ $1',
 'tooltip-ca-protect' => 'ล็อกหน้านี้',
 'tooltip-ca-unprotect' => 'เปลี่ยนแปลงการป้องกันหน้านี้',
 'tooltip-ca-delete' => 'ลบหน้านี้',
-'tooltip-ca-undelete' => 'à¹\80รียà¸\81คืนการแก้ไขหน้านี้กลับมาเป็นรุ่นก่อนที่ถูกลบ',
+'tooltip-ca-undelete' => 'à¸\81ูà¹\89คืนการแก้ไขหน้านี้กลับมาเป็นรุ่นก่อนที่ถูกลบ',
 'tooltip-ca-move' => 'เปลี่ยนชื่อหน้านี้',
 'tooltip-ca-watch' => 'เพิ่มหน้านี้เข้ารายการเฝ้าดู',
 'tooltip-ca-unwatch' => 'นำหน้านี้ออกจากรายการเฝ้าดู',
@@ -2714,7 +2725,7 @@ $1',
 'tooltip-n-recentchanges' => 'รายการปรับปรุงล่าสุดในวิกินี้',
 'tooltip-n-randompage' => 'สุ่มหน้าขึ้นมา',
 'tooltip-n-help' => 'อธิบายการใช้งาน',
-'tooltip-t-whatlinkshere' => 'รายการหน้าวิกิที่ลิงก์มาที่นี่',
+'tooltip-t-whatlinkshere' => 'รายà¸\81ารà¸\97ุà¸\81หà¸\99à¹\89าวิà¸\81ิà¸\97ีà¹\88ลิà¸\87à¸\81à¹\8cมาà¸\97ีà¹\88à¸\99ีà¹\88',
 'tooltip-t-recentchangeslinked' => 'รายการปรับปรุงล่าสุดในหน้าที่ลิงก์จากหน้านี้',
 'tooltip-feed-rss' => 'ฟีดชนิดอาร์เอสเอส (RSS) ของหน้านี้',
 'tooltip-feed-atom' => 'ฟีดอะตอม (Atom) ของหน้านี้',
@@ -2740,8 +2751,9 @@ $1',
 'tooltip-diff' => 'แสดงการเปลี่ยนการต่อข้อความ',
 'tooltip-compareselectedversions' => 'แสดงความแตกต่างระหว่างสองรุ่นที่เลือกของหน้านี้',
 'tooltip-watch' => 'เพิ่มหน้านี้เข้ารายการเฝ้าดู',
+'tooltip-watchlistedit-normal-submit' => 'นำชื่อเรื่องออก',
 'tooltip-watchlistedit-raw-submit' => 'อัพเดทรายการเฝ้าดู',
-'tooltip-recreate' => 'สรà¹\89าà¸\87หà¸\99à¹\89าà¸\99ีà¹\89อีà¸\81à¸\84รัà¹\89à¸\87à¹\81มà¹\89วà¹\88าà¸\88ะถูกลบ',
+'tooltip-recreate' => 'สรà¹\89าà¸\87หà¸\99à¹\89าà¸\99ีà¹\89อีà¸\81à¸\84รัà¹\89à¸\87à¹\81มà¹\89à¹\80à¸\84ยถูกลบ',
 'tooltip-upload' => 'เริ่มอัปโหลด',
 'tooltip-rollback' => '"ย้อนกลับฉุกเฉิน" ใช้ย้อนการแก้ไขในหน้านี้ของผู้เขียนคนล่าสุดในคลิกเดียว',
 'tooltip-undo' => '"ย้อน" ใช้ย้อนการแก้ไขครั้งนี้และเปิดแบบแก้ไข สามารถเพิ่มคำอธิบายในตอนท้าย',
@@ -2810,7 +2822,7 @@ $1',
 'pageinfo-title' => 'ข้อมูลสำหรับ "$1"',
 'pageinfo-not-current' => 'ขออภัย ไม่สามารถให้ข้อมูลนี้สำหรับรุ่นเก่าได้',
 'pageinfo-header-basic' => 'ข้อมูลเบื้องต้น',
-'pageinfo-header-edits' => 'การแก้ไข',
+'pageinfo-header-edits' => 'à¸\9bระวัà¸\95ิà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82',
 'pageinfo-header-restrictions' => 'การล็อกหน้า',
 'pageinfo-header-properties' => 'คุณสมบัติหน้า',
 'pageinfo-display-title' => 'แสดงชื่อ',
@@ -2820,7 +2832,7 @@ $1',
 'pageinfo-language' => 'ภาษาเนื้อหาของหน้า',
 'pageinfo-robot-policy' => 'สถานะเสิร์ชเอนจิน',
 'pageinfo-views' => 'จำนวนการเข้าดู',
-'pageinfo-watchers' => 'จำนวนผู้เข้าดู',
+'pageinfo-watchers' => 'จำนวนผู้เข้าดูหน้า',
 'pageinfo-redirects-name' => 'หน้าเปลี่ยนทางมายังหน้านี้',
 'pageinfo-subpages-name' => 'หน้าย่อยของหน้านี้',
 'pageinfo-subpages-value' => '$1 ($2 หน้าเปลี่ยนทาง; $3 หน้าไม่เปลี่ยนทาง)',
@@ -2828,7 +2840,7 @@ $1',
 'pageinfo-firsttime' => 'วันที่สร้างหน้า',
 'pageinfo-lastuser' => 'ผู้เขียนคนล่าสุด',
 'pageinfo-lasttime' => 'วันที่แก้ไขล่าสุด',
-'pageinfo-edits' => 'จำนวนการแก้ไข',
+'pageinfo-edits' => 'จำนวนการแก้ไขรวม',
 'pageinfo-authors' => 'จำนวนผู้เขียนทั้งหมด',
 'pageinfo-recent-edits' => 'การแก้ไขล่าสุด (ภายใน $1ที่ผ่านมา)',
 'pageinfo-recent-authors' => 'จำนวนผู้เขียนล่าสุด',
@@ -2838,6 +2850,10 @@ $1',
 'pageinfo-redirectsto' => 'เปลี่ยนทางไปยัง',
 'pageinfo-contentpage' => 'นับเป็นหน้าเนื้อหา',
 'pageinfo-contentpage-yes' => 'ใช่',
+'pageinfo-category-info' => 'ข้อมูลหมวดหมู่',
+'pageinfo-category-pages' => 'จำนวนหน้า',
+'pageinfo-category-subcats' => 'จำนวนหมวดหมู่ย่อย',
+'pageinfo-category-files' => 'จำนวนไฟล์',
 
 # Skin names
 'skinname-standard' => 'คลาสสิก',
@@ -2890,7 +2906,7 @@ $1',
 'file-info' => 'ขนาดไฟล์: $1, ชนิดไมม์: $2',
 'file-info-size' => '$1 × $2 พิกเซล, ขนาดไฟล์: $3, ชนิดไมม์: $4',
 'file-info-size-pages' => '$1 × $2 พิกเซล, ขนาดไฟล์: $3, ประเภท MIME: $4, $5 {{PLURAL:$5|หน้า|หน้า}}',
-'file-nohires' => 'à¹\84มà¹\88มีภาà¸\9eà¸\84วามละà¹\80อียà¸\94สูà¸\87à¸\81วà¹\88าà¸\99ีà¹\89',
+'file-nohires' => 'ไม่มีความละเอียดสูงกว่านี้',
 'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิกเซล พอเป็นพิธี, ขนาดไฟล์: $3',
 'show-big-image' => 'ความละเอียดสูงสุด',
 'show-big-image-other' => 'อื่นๆ {{PLURAL:$2|resolution|resolutions}}: $1.',
@@ -2922,7 +2938,10 @@ $1',
 'minutes' => '$1 นาที',
 'hours' => '$1 ชั่วโมง',
 'days' => '$1 วัน',
+'months' => '$1 เดือน',
+'years' => '$1 ปี',
 'ago' => '$1 มาแล้ว',
+'just-now' => 'เมื่อสักครู่นี้',
 
 # Bad image list
 'bad_image_list' => 'รูปแบบแสดงต่อไปนี้:
@@ -3254,7 +3273,7 @@ $1',
 'confirmemail_send' => 'ส่งรหัสยืนยันผ่านทางอีเมล',
 'confirmemail_sent' => 'อีเมลยืนยันได้ส่งเรียบร้อย',
 'confirmemail_oncreate' => 'รหัสยืนยันได้ถูกส่งไปที่อีเมล อย่างไรก็ตามรหัสนี้ไม่จำเป็นสำหรับการล็อกอิน เว้นเสียแต่ว่าต้องการใช้คำสั่งพิเศษในด้านอีเมลของวิกินี้',
-'confirmemail_sendfailed' => 'ขออภัย {{SITENAME}}ภาษาไทยไม่สามารถส่งอีเมลให้คุณยืนยันการใช้งานได้
+'confirmemail_sendfailed' => 'ขออภัย {{SITENAME}} ไม่สามารถส่งอีเมลให้คุณยืนยันการใช้งานได้
 กรุณาตรวจสอบอีเมลว่าถูกต้อง และไม่มีอักขระที่ไม่สามารถใช้ได้
 
 ข้อความตีกลับ: $1',
@@ -3314,7 +3333,7 @@ $5
 'confirmrecreate' => "ผู้ใช้ [[User:$1|$1]] ([[User talk:$1|พูดคุย]]) ได้ลบหน้านี้ในช่วงที่คุณกำลังแก้ไข ด้วยเหตุผลว่า:
 : ''$2''
 กรุณายืนยันว่าต้องการสร้างหน้านี้ขึ้นมาใหม่",
-'confirmrecreate-noreason' => 'ผู้ใช้ [[ผู้ใช้:$1|$1]] ([[พูดคุยกับผู้ใช้:$1|พูดคุย]]) ลบหน้านี้หลังคุณเริ่มแก้ไข โปรดยืนยันว่าคุณต้องการสร้างหน้านี้ใหม่จริง ๆ',
+'confirmrecreate-noreason' => 'ผู้ใช้ [[User:$1|$1]] ([[User talk:$1|พูดคุย]]) ลบหน้านี้หลังคุณเริ่มแก้ไข โปรดยืนยันว่าคุณต้องการสร้างหน้านี้ใหม่จริง ๆ',
 'recreate' => 'สร้างใหม่',
 
 # action=purge
@@ -3386,24 +3405,24 @@ $5
 
 # Watchlist editor
 'watchlistedit-numitems' => 'รายการเฝ้าดูมี $1 รายการ ไม่รวมหน้าพูดคุย',
-'watchlistedit-noitems' => 'à¹\84มà¹\88มีหัวà¸\82à¹\89อใดในรายการเฝ้าดู',
+'watchlistedit-noitems' => 'à¹\84มà¹\88มีà¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87ใดในรายการเฝ้าดู',
 'watchlistedit-normal-title' => 'แก้ไขรายการเฝ้าดู',
-'watchlistedit-normal-legend' => 'ลà¸\9aà¸\8aืà¹\88อหัวà¸\82à¹\89อออกจากรายการเฝ้าดู',
-'watchlistedit-normal-explain' => 'หัวà¸\82à¹\89อà¸\97ีà¹\88อยูà¹\88à¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูแสดงด้านล่าง 
-à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารลà¸\9aออà¸\81 à¹\83หà¹\89à¸\84ลิà¸\81à¹\80ลือà¸\81à¸\97ีà¹\88à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99à¸\82à¹\89าà¸\87à¹\81à¸\95à¹\88ละหัวà¸\82à¹\89อ และคลิก "{{int:Watchlistedit-normal-submit}}" 
+'watchlistedit-normal-legend' => 'ลà¸\9aà¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87ออกจากรายการเฝ้าดู',
+'watchlistedit-normal-explain' => 'à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูà¸\82อà¸\87à¸\84ุà¸\93แสดงด้านล่าง 
+à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารลà¸\9aออà¸\81 à¹\83หà¹\89à¸\84ลิà¸\81à¹\80ลือà¸\81à¸\97ีà¹\88à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99à¸\82à¹\89าà¸\87à¹\81à¸\95à¹\88ละà¸\8aืà¹\88อ และคลิก "{{int:Watchlistedit-normal-submit}}" 
 หรืออาจจะ[[Special:EditWatchlist/raw|แก้ไขรายการทั้งหมด]]',
-'watchlistedit-normal-submit' => 'ลà¸\9aหัวà¸\82à¹\89อ',
+'watchlistedit-normal-submit' => 'ลà¸\9aà¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87',
 'watchlistedit-normal-done' => '$1 รายการได้ถูกนำออกจากรายการเฝ้าดู:',
 'watchlistedit-raw-title' => 'แก้ไขรายการเฝ้าดูทั้งหมด',
 'watchlistedit-raw-legend' => 'แก้ไขรายการเฝ้าดูทั้งหมด',
-'watchlistedit-raw-explain' => 'หัวà¸\82à¹\89อà¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูà¹\81สà¸\94à¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87 à¸\8bึà¹\88à¸\87สามารà¸\96à¹\80à¸\9eิà¹\88มหรือà¸\99ำออà¸\81à¹\84à¸\94à¹\89 à¸«à¸\99ึà¹\88à¸\87หัวà¸\82à¹\89อà¸\95à¹\88อหà¸\99ึà¹\88à¸\87แถว 
-à¹\80มืà¹\88อà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80สรà¹\87à¸\88à¹\81ลà¹\89ว à¹\83หà¹\89à¸\84ลิà¸\81 "{{int:Watchlistedit-raw-submit}}" 
+'watchlistedit-raw-explain' => 'à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูà¸\82อà¸\87à¸\84ุà¸\93à¹\81สà¸\94à¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87 à¸\8bึà¹\88à¸\87สามารà¸\96à¹\80à¸\9eิà¹\88มหรือà¸\99ำออà¸\81à¹\84à¸\94à¹\89 à¸«à¸\99ึà¹\88à¸\87à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¸\95à¹\88อแถว 
+à¹\80มืà¹\88อà¹\80สรà¹\87à¸\88à¹\81ลà¹\89ว à¹\83หà¹\89à¸\81à¸\94 "{{int:Watchlistedit-raw-submit}}" 
 ซึ่งอาจแก้ไขผ่าน [[Special:EditWatchlist|โปรแกรมแก้ไขข้อความทั่วไป]]',
-'watchlistedit-raw-titles' => 'หัวà¸\82à¹\89อ:',
+'watchlistedit-raw-titles' => 'à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87:',
 'watchlistedit-raw-submit' => 'ปรับรายการเฝ้าดู',
 'watchlistedit-raw-done' => 'รายการเฝ้าดูของคุณได้ปรับแล้ว',
-'watchlistedit-raw-added' => '$1 à¸«à¸±à¸§à¸\82à¹\89อได้ถูกเพิ่มเข้าไป:',
-'watchlistedit-raw-removed' => '$1 à¸«à¸±à¸§à¸\82à¹\89อได้ถูกนำออกไป:',
+'watchlistedit-raw-added' => '$1 à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87ได้ถูกเพิ่มเข้าไป:',
+'watchlistedit-raw-removed' => '$1 à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87ได้ถูกนำออกไป:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'ดูการเปลี่ยนแปลงที่เกี่ยวข้อง',
@@ -3472,10 +3491,10 @@ $5
 'specialpages' => 'หน้าพิเศษ',
 'specialpages-note' => '----
 * หน้าพิเศษปกติ
-* <strong class="mw-specialpagerestricted">หน้าพิเศษสำหรับผู้ดูแล</strong>',
+* <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
 'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
 'specialpages-group-other' => 'หน้าพิเศษอื่น ๆ',
-'specialpages-group-login' => 'ล็อกอิน / สร้างบัญชีผู้ใช้ใหม่',
+'specialpages-group-login' => 'ล็อกอิน / สร้างบัญชี',
 'specialpages-group-changes' => 'ปรับปรุงล่าสุดและปูมต่าง ๆ',
 'specialpages-group-media' => 'รายงานเรื่องสื่อและการอัปโหลด',
 'specialpages-group-users' => 'ผู้ใช้และสิทธิ',
@@ -3521,6 +3540,9 @@ $5
 'compare-rev1' => 'รุ่น 1',
 'compare-rev2' => 'รุ่น 2',
 'compare-submit' => 'เปรียบเทียบ',
+'compare-invalid-title' => 'ชื่อเรื่องที่คุณระบุไม่ถูกต้อง',
+'compare-title-not-exists' => 'ชื่อเรื่องที่คุณระบุไม่มีอยู่',
+'compare-revision-not-exists' => 'รุ่นที่คุณระบุไม่มีอยู่',
 
 # Database error messages
 'dberr-header' => 'วิกินี้กำลังประสบปัญหา',
@@ -3551,9 +3573,20 @@ $5
 'logentry-delete-delete' => '$1 ลบหน้า $3',
 'logentry-delete-restore' => '$1 กู้คืนหน้า $3',
 'logentry-delete-event' => '$1 เปลี่ยนทัศนวิสัยของ $5 รายการปูมใน $3: $4',
+'logentry-delete-revision' => '$1 เปลี่ยนแปลงทัศนวิสัยของ $5 รุ่น ในหน้า $3: $4',
+'logentry-delete-event-legacy' => '$1 เปลี่ยนแปลงทัศนวิสัยของเหตุการณ์ปูมในหน้า $3',
+'logentry-delete-revision-legacy' => '$1 เปลี่ยนแปลงทัศนวิสัยของรุ่นในหน้า $3',
+'logentry-suppress-delete' => '$1 ระงับหน้า $3',
+'logentry-suppress-event' => '$1 เปลี่ยนทัศนวิสัยอย่างลับ ๆ ของ $5 รายการปูมบน $3: $4',
+'logentry-suppress-revision' => '$1 เปลี่ยนทัศนวิสัยอย่างลับ ๆ ของ $5 รุ่นบนหน้า $3: $4',
+'logentry-suppress-event-legacy' => '$1 เปลี่ยนทัศนวิสัยอย่างลับ ๆ ของรายการปูมบน $3',
+'logentry-suppress-revision-legacy' => '$1 เปลี่ยนทัศนวิสัยอย่างลับ ๆ ของรุ่นบนหน้า $3',
 'revdelete-content-hid' => 'เนื้อหาถูกซ่อน',
 'revdelete-summary-hid' => 'คำอธิบายอย่างย่อถูกซ่อน',
 'revdelete-uname-hid' => 'ชื่อผู้ใช้ถูกซ่อน',
+'revdelete-content-unhid' => 'เนื้อหาถูกแสดง',
+'revdelete-summary-unhid' => 'คำอธิบายอย่างย่อถูกแสดง',
+'revdelete-uname-unhid' => 'ชื่อผู้ใช้ถูกแสดง',
 'revdelete-restricted' => 'เพิ่มการจำกัดกับผู้ดูแลระบบ',
 'revdelete-unrestricted' => 'ยกเลิกการจำกัดแก่ผู้ดูแลระบบ',
 'logentry-move-move' => '$1 ย้ายหน้า $3 ไปยัง $4',
@@ -3562,11 +3595,12 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 ย้ายหน้า $3 ไปยัง $4 ทับหน้าเปลี่ยนทาง (ไม่สร้างหน้าเปลี่ยนทางตามมา)',
 'logentry-patrol-patrol' => '$1 ทำเครื่องหมายว่ารุ่น $4 ของหน้า $3 ได้รับการตรวจสอบแล้ว',
 'logentry-patrol-patrol-auto' => '$1 ทำเครื่องหมายโดยอัตโนมัติว่ารุ่น $4 ของหน้า $3 ได้รับการตรวจสอบแล้ว',
-'logentry-newusers-newusers' => '$1 สร้างบัญชีผู้ใช้ใหม่',
-'logentry-newusers-create' => '$1 สร้างบัญชีผู้ใช้ใหม่',
-'logentry-newusers-create2' => '$1 สร้างบัญชีผู้ใช้ $3',
+'logentry-newusers-newusers' => 'บัญชีผู้ใช้ $1 ถูกสร้างขึ้น',
+'logentry-newusers-create' => 'บัญชีผู้ใช้ $1 ถูกสร้างขึ้น',
+'logentry-newusers-create2' => 'บัญชีผู้ใช้ $3 ถูกสร้างขึ้นโดย $1',
 'logentry-newusers-autocreate' => 'บัญชี $1 ถูกสร้างขึ้นอัตโนมัติ',
 'newuserlog-byemail' => 'รหัสผ่านถูกส่งทางอีเมล',
+'rightsnone' => '(ไม่มี)',
 
 # Feedback
 'feedback-message' => 'ข้อความ:',
@@ -3587,4 +3621,15 @@ $5
 'api-error-filetype-banned' => 'ไฟล์ประเภทนี้ถูกห้าม',
 'api-error-mustbeloggedin' => 'กรุณาลงชื่อเข้าใช้เพื่ออัปโหลดไฟล์',
 
+# Durations
+'duration-seconds' => '$1 วินาที',
+'duration-minutes' => '$1 นาที',
+'duration-hours' => '$1 ชั่วโมง',
+'duration-days' => '$1 วัน',
+'duration-weeks' => '$1 สัปดาห์',
+'duration-years' => '$1 ปี',
+'duration-decades' => '$1 ทศวรรษ',
+'duration-centuries' => '$1 ศตวรรษ',
+'duration-millennia' => '$1 สหัสวรรษ',
+
 );
index 17829ab..07ac792 100644 (file)
@@ -1237,11 +1237,13 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'right-override-export-depth' => 'Sahypalary, şol sanda çykgytly sahypalary 5-e çenli çuňlukda eksportirle',
 'right-sendemail' => 'Başga ulanyjylara e-poçta iber',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Täze ulanyjy gündeligi',
+'newuserlogpagetext' => 'Ulanyjy döretme gündeligi.',
+
 # User rights log
 'rightslog' => 'Ulanyjy hukuklarynyň gündeligi',
 'rightslogtext' => 'Ulanyjy hukuklaryndaky üýtgeşmeler gündeligi.',
-'rightslogentry' => '$1 üçin topar agzalygyny $2 toparyndan $3 toparyna üýtgetdi',
-'rightsnone' => '(hiç biri)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'bu sahypany okamaga',
@@ -1787,10 +1789,6 @@ Goldanylýan protokollar: <code>$1</code>',
 'activeusers-hidesysops' => 'Administratorlary gizle',
 'activeusers-noresult' => 'Ulanyjy tapylmady.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Täze ulanyjy gündeligi',
-'newuserlogpagetext' => 'Ulanyjy döretme gündeligi.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Ulanyjy topary hukuklary',
 'listgrouprights-summary' => 'Aşakda şu wikide kesgitlenen ulanyjy toparlarynyň hem-de olaryň degişli ulanmak hukuklarynyň sanawy berilýär.
@@ -1909,6 +1907,8 @@ $UNWATCHURL
 
 Seslenme we goşmaça kömek:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'döredildi',
+'changed' => 'üýtgedildi',
 
 # Delete
 'deletepage' => 'Sahypany öçür',
@@ -3153,6 +3153,7 @@ Faýlyň adyny "{{ns:file}}:" pristawkasyz giriziň.',
 'revdelete-restricted' => 'administratorlara goýlan çäklendirmeler',
 'revdelete-unrestricted' => 'administratorlardan aýyrylan çäklendirmeler',
 'newuserlog-byemail' => 'parol e-poçta bilen iberildi',
+'rightsnone' => '(hiç biri)',
 
 # Search suggestions
 'searchsuggest-search' => 'Gözleg',
index 4b7beae..d3597db 100644 (file)
@@ -1464,12 +1464,13 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'right-sendemail' => 'Magpadala ng e-liham sa ibang mga tagagamit',
 'right-passwordreset' => 'Tingnan ang mga e-liham ng muling pagtatakda ng hudyat',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Talaan ng paglikha ng tagagamit',
+'newuserlogpagetext' => 'Isa itong talaan ng mga paglikha ng tagagamit.',
+
 # User rights log
 'rightslog' => 'Tala ng mga karapatan ng tagagamit',
 'rightslogtext' => 'Isa itong tala ng mga pagbabago sa mga karapatan ng tagagamit.',
-'rightslogentry' => 'binago ang kasapiang pampangkat para kay $1 mula sa $2 patungong $3',
-'rightslogentry-autopromote' => 'ay kusang naitaas ang ranggo mula $2 upang maging $3',
-'rightsnone' => '(wala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basahin itong pahina',
@@ -2119,10 +2120,6 @@ Sinusuportahang mga protokolo: <code>$1</code> (huwag idagdag ang anuman sa mga
 'activeusers-hidesysops' => 'Itago ang mga tagapangasiwa',
 'activeusers-noresult' => 'Walang natagpuang mga tagagamit.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Talaan ng paglikha ng tagagamit',
-'newuserlogpagetext' => 'Isa itong talaan ng mga paglikha ng tagagamit.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Mga uri ng tagagamit',
 'listgrouprights-summary' => 'Ang sumusunod ay isang talaan ng mga pangkat ng tagagamit na binigyang kahulugang sa wiking ito, kasama ang kanilang mga kaugnay na mga karapatan.
@@ -2253,6 +2250,8 @@ $UNWATCHURL
 
 Tugon at karagdagang tulong:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'nilikha',
+'changed' => 'binago',
 
 # Delete
 'deletepage' => 'Burahin ang pahina',
@@ -4039,6 +4038,7 @@ Ipinapakita ang mga larawan sa buong kalinawan, tuwirang sinisimulan ang ibang u
 'logentry-newusers-create2' => 'Lumikha si $1 ng isang kuwenta ng tagagamit na $3',
 'logentry-newusers-autocreate' => 'Kusang nalikha ang akawnt na $1',
 'newuserlog-byemail' => 'Ipinadala ang hudyat sa pamamagitan ng e-liham',
+'rightsnone' => '(wala)',
 
 # Feedback
 'feedback-bugornote' => 'Kung handa ka nang detalyadong maglarawan ng isang suliraning teknikal mangyaring [$1 iulat ang sira].
index 42461ba..e9d5c1b 100644 (file)
@@ -649,6 +649,9 @@ $messages = array(
 # Groups
 'group-user' => 'Иштирокәкон',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Иштирокәкон ғеидијоти журнал',
+
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'Ым сәһифә сәрост кардеј',
 
@@ -774,9 +777,6 @@ $messages = array(
 # Special:LinkSearch
 'linksearch-line' => '$2-ку сәбон вардә бә $1',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Иштирокәкон ғеидијоти журнал',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(иштирокәкон сијоһи)',
 
index 4126a24..39c868d 100644 (file)
@@ -466,9 +466,11 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 'right-delete' => 'Rausim ol pes',
 'right-suppressionlog' => 'Lukim ol praivet ripot',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Ripot long ol nupela yusa',
+
 # User rights log
 'rightslog' => 'Ripot long ol pawa bilong ol yusa',
-'rightsnone' => 'i nogat wanpela',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ridim dispela pes',
@@ -608,9 +610,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ListUsers
 'listusers-submit' => 'Soim',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Ripot long ol nupela yusa',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Grup',
 'listgrouprights-members' => '(lista bilong ol memba)',
@@ -655,6 +654,8 @@ Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis
 'enotif_reset' => 'Makim olgeta pes olsem mi lukim pinis',
 'enotif_impersonal_salutation' => 'yusa long {{SITENAME}}',
 'enotif_anon_editor' => 'IP yusa $1',
+'created' => 'i kirapim',
+'changed' => 'i senisim',
 
 # Delete
 'deletepage' => 'Rausim dispela pes',
@@ -881,6 +882,9 @@ Yu inap lukim as tok bilong em',
 # HTML forms
 'htmlform-selectorother-other' => 'Narapela',
 
+# New logging system
+'rightsnone' => 'i nogat wanpela',
+
 # Search suggestions
 'searchsuggest-search' => 'Painim',
 
index 22b3dd7..a9b015f 100644 (file)
@@ -1465,9 +1465,9 @@ Kullanabileceğiniz rastgele-üretilmiş bir değer: $1',
 'prefs-emailconfirm-label' => 'E-posta doğrulaması:',
 'prefs-textboxsize' => 'Değiştirme penceresinin boyutu',
 'youremail' => 'E-posta:',
-'username' => 'Kullanıcı adı:',
-'uid' => 'Kayıt numarası:',
-'prefs-memberingroups' => '{{PLURAL:$1|Grup|Grup}} üyesi:',
+'username' => '{{GENDER:$1|Kullanıcı adı}}:',
+'uid' => '{{GENDER:$1|Kullanıcı}} kimliği:',
+'prefs-memberingroups' => '{{GENDER:$2|Üye}} {{PLURAL:$1|group|grupları}}:',
 'prefs-registration' => 'Kayıt zamanı:',
 'yourrealname' => 'Gerçek adınız:',
 'yourlanguage' => 'Dil:',
@@ -1615,12 +1615,13 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'right-sendemail' => 'Diğer kullanıcılara e-posta gönder',
 'right-passwordreset' => 'Parola sıfırlama e-postalarını görür',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Yeni kullanıcı kayıtları',
+'newuserlogpagetext' => 'En son kaydolan kullanıcı kayıtları.',
+
 # User rights log
 'rightslog' => 'Kullanıcı hakları kayıtları',
 'rightslogtext' => 'Kullanıcı hakları değişiklikleri kayıtları.',
-'rightslogentry' => '$1 adlı kullanıcının yetkileri $2 iken $3 olarak değiştirildi',
-'rightslogentry-autopromote' => '$2 otomatik olarak yükseltilerek $3 yapıldı.',
-'rightsnone' => '(hiçbiri)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'bu sayfayı okumaya',
@@ -2223,10 +2224,6 @@ Desteklenen iletişim kuralları: <code>$1</code> (bunların hiçbirini aramanı
 'activeusers-hidesysops' => 'Yöneticileri gizle',
 'activeusers-noresult' => 'Kullanıcı bulunamadı.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Yeni kullanıcı kayıtları',
-'newuserlogpagetext' => 'En son kaydolan kullanıcı kayıtları.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Kullanıcı grubu hakları',
 'listgrouprights-summary' => 'Aşağıdaki bu vikide tanımlanan kullanıcı gruplarının, ilgili erişim haklarıyla birlikte listesidir.
@@ -2355,6 +2352,8 @@ $UNWATCHURL
 
 Geri bildirim ve daha fazla yardım için:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'oluşturuldu',
+'changed' => 'değiştirildi',
 
 # Delete
 'deletepage' => 'Sayfayı sil',
@@ -2506,7 +2505,8 @@ Revizyon onarılmış veya arşivden silinmiş olabilir ya da sahip olduğunuz b
 'undeletedrevisions' => 'Toplam {{PLURAL:$1|1 kayıt|$1 kayıt}} geri getirildi.',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 revizyon|$1 revizyon}} ve {{PLURAL:$2|1 dosya|$2 dosya}} eski konumuna getirildi',
 'undeletedfiles' => '{{PLURAL:$1|1 dosya|$1 dosya}} geri getirildi.',
-'cannotundelete' => 'Sayfayı ya da medyayı sizden önce bir başka kullanıcı geri getirdiğinden dolayı sizin geri getirme işleminiz geçersiz.',
+'cannotundelete' => 'Silme başarısız oldu:
+$1',
 'undeletedpage' => "'''$1 sayfası geri getirildi'''
 
 Önceki silme ve geri getirme işlemleri için [[Special:Log/delete|silme kayıtları]]na bakınız.",
@@ -2669,7 +2669,7 @@ Engelleme günlüğü referans için aşağıda sağlanmıştır:',
 Gizleme günlüğü referans için aşağıda sağlanmıştır:',
 'blocklogentry' => ', [[$1]] kullanıcısını engelledi, engelleme süresi: $2 $3',
 'reblock-logentry' => '[[$1]] için bitiş tarihi $2 $3 olmak üzere engelleme ayarlarını değiştirdi',
-'blocklogtext' => 'Burada kullanıcı erişimine yönelik engelleme ya da engelleme kaldırma kayıtları listelenmektedir. Otomatik  IP adresi engellemeleri listeye dahil değildir. Şu anda erişimi durdurulmuş kullanıcıları [[Special:BlockList|IP engelleme listesi]] sayfasından görebilirsiniz.',
+'blocklogtext' => 'Burada kullanıcı erişimine yönelik engelleme ya da engelleme kaldırma kayıtları listelenmektedir. Otomatik  IP adresi engellemeleri listeye dahil değildir. Şu anda erişimi durdurulmuş kullanıcıları [[Special:BlockList|engelleme listesi]] sayfasından görebilirsiniz.',
 'unblocklogentry' => '$1 kullanıcının engellemesi kaldırıldı',
 'block-log-flags-anononly' => 'sadece anonim kullanıcılar',
 'block-log-flags-nocreate' => 'hesap yaratımı engellendi',
@@ -2919,6 +2919,7 @@ Geçici dosya kayıp.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript denemesi',
+'javascripttest-title' => '$1 testleri çalışıyor',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Kullanıcı sayfanız',
@@ -3055,6 +3056,9 @@ Geçici dosya kayıp.',
 'pageinfo-contentpage' => 'Bir içerik sayfası sayılır',
 'pageinfo-contentpage-yes' => 'Evet',
 'pageinfo-protect-cascading-yes' => 'Evet',
+'pageinfo-protect-cascading-from' => 'Korumalar üzerinden geçiş',
+'pageinfo-category-info' => 'Kategori bilgileri',
+'pageinfo-category-pages' => 'Sayfa sayısı',
 
 # Skin names
 'skinname-standard' => 'Klasik',
@@ -3301,6 +3305,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-source' => 'Kaynak',
 'exif-urgency' => 'Aciliyet',
 'exif-fixtureidentifier' => 'Fikstür adı',
+'exif-locationdest' => 'Yerin konumu',
 'exif-contact' => 'İletişim bilgileri',
 'exif-writer' => 'Yazar',
 'exif-languagecode' => 'Dil',
@@ -3892,6 +3897,7 @@ Resimler tam çözünürlükte görüntülenir, diğer dosya tipleri ilgili prog
 'logentry-newusers-create2' => '$1 kullanıcı hesabı oluşturdu $3',
 'logentry-newusers-autocreate' => '$1 hesabı otomatik olarak oluşturuldu',
 'newuserlog-byemail' => 'e-posta yoluyla şifre gönderilmiştir',
+'rightsnone' => '(hiçbiri)',
 
 # Feedback
 'feedback-subject' => 'Konu:',
index d1c7a9f..b7087c0 100644 (file)
@@ -1343,10 +1343,12 @@ $1",
 'right-delete' => 'битләрне бетерү',
 'right-editinterface' => 'Кулланучы интерфейсын үзгәртү',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Кулланучыларны теркәү көндәлеге',
+'newuserlogpagetext' => 'Яңа теркәлгән кулланучылар исемлеге',
+
 # User rights log
 'rightslog' => 'Кулланучының хокуклары көндәлеге',
-'rightslogentry' => '$1 кулланучысын $2 группасыннан $3 группасына күчерде',
-'rightsnone' => '(юк)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бу битне укырга',
@@ -1703,10 +1705,6 @@ PICT # төрле
 'activeusers-hidesysops' => 'Идарәчеләрне яшер',
 'activeusers-noresult' => 'Кулланучылар табылмады.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Кулланучыларны теркәү көндәлеге',
-'newuserlogpagetext' => 'Яңа теркәлгән кулланучылар исемлеге',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Кулланучы төркемнәренең хокуклары',
 'listgrouprights-group' => 'Төркем',
@@ -1716,7 +1714,10 @@ PICT # төрле
 
 # E-mail user
 'emailuser' => 'Бу кулланучыга хат',
+'emailuser-title-target' => '{{GENDER:$1|Кулланучыга}} электрон хат язу',
+'emailuser-title-notarget' => 'Кулланучыга хат җибәрү',
 'emailpage' => 'Кулланучыга хат җибәрү',
+'emailpagetext' => 'Әлеге форма ярдәмендә {{GENDER:$1|кулланучының}} электрон почта адресына хат җибәрергә мөмкин. Җибәрелгән адрес исемендә Сезнең [[Special:Preferences|көйләнмәләрдә]] күрсәтелгән адресыгыз күрсәтеләчәк, шуның ярдәмендә Сез ул кулланучы белән турыдан-туры сөйләшә аласыз.',
 'defemailsubject' => '{{SITENAME}}: хат',
 'noemailtitle' => 'Электрон почта адресы юк',
 'noemailtext' => 'Бу кулланучы чын электрон әрҗә адресын күрсәтмәде.',
@@ -1789,6 +1790,8 @@ $UNWATCHURL
 
 Элемтә һәм ярдәм:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'төзергән',
+'changed' => 'үзгәртелде',
 
 # Delete
 'deletepage' => 'Битне бетерү',
@@ -2529,6 +2532,7 @@ $1',
 'logentry-newusers-create2' => '$1 $3 кулланучы хисап язмасын төзеде',
 'logentry-newusers-autocreate' => 'Автоматик рәвештә $1 хисап язмасы төзелде.',
 'newuserlog-byemail' => 'серсүз электрон почта аша җибәрелде',
+'rightsnone' => '(юк)',
 
 # Feedback
 'feedback-bugornote' => 'Әгәр дә сез техник проблеманы җентекләп тасвирларга әзер икәнсез, зинһар өчен, [$1 хата турында хәбәр итегез].
index 210cade..f09b370 100644 (file)
@@ -1113,10 +1113,12 @@ Ul $1 {{PLURAL:$1|xäreftän}} kübräk bulırğa tieş tügel.',
 'right-delete' => 'bitlärne beterü',
 'right-editinterface' => 'Qullanuçı interfeysın üzgärtü',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Qullanuçılarnı terkäw köndälege',
+'newuserlogpagetext' => 'Yaña terkälgän qullanuçılar isemlege',
+
 # User rights log
 'rightslog' => 'Qullanuçınıñ xoquqları köndälege',
-'rightslogentry' => '$1 qullanuçısın $2 gruppasınnan $3 gruppasına küçerde',
-'rightsnone' => '(yuq)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'bu bitne üzgärtergä',
@@ -1463,10 +1465,6 @@ Asta [[Special:UnusedCategories|qullanılmağan törkemnär]] kärsätelgän.
 'activeusers-hidesysops' => 'İdaräçelärne yäşer',
 'activeusers-noresult' => 'Qullanuçılar tabılmadı.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Qullanuçılarnı terkäw köndälege',
-'newuserlogpagetext' => 'Yaña terkälgän qullanuçılar isemlege',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Qullanuçı törkemnäreneñ xoquqları',
 'listgrouprights-group' => 'Törkem',
@@ -1537,6 +1535,8 @@ $UNWATCHURL
 
 Elemtä häm yärdäm:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'tözergän',
+'changed' => 'üzgärtelde',
 
 # Delete
 'deletepage' => 'Bitne beterü',
@@ -2187,5 +2187,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
 # New logging system
 'revdelete-restricted' => 'çikläwlär idaräçelärgä dä qullanıla',
 'newuserlog-byemail' => 'sersüz elektron poçta aşa cibärelde',
+'rightsnone' => '(yuq)',
 
 );
index 7ebbfb3..a8a7959 100644 (file)
@@ -187,10 +187,10 @@ $messages = array(
 'vector-view-create' => 'Чаяары',
 'vector-view-edit' => 'Эдери',
 'vector-view-history' => 'Төөгүнү көөрү',
-'vector-view-view' => 'Номчууру',
+'vector-view-view' => 'Номчуур',
 'vector-view-viewsource' => 'Дөзү бижиин көөрү',
 'actions' => 'Кылыглар',
-'namespaces' => 'Аттар делгеми',
+'namespaces' => 'Ð\90Ñ\82Ñ\82аÑ\80 Ð´ÐµÐ»Ð³ÐµÐ¼Ð½ÐµÑ\80и',
 'variants' => 'Бир янзы',
 
 'errorpagetitle' => 'Алдаг',
@@ -198,7 +198,7 @@ $messages = array(
 'tagline' => '{{SITENAME}} деп веб-сайттан',
 'help' => 'Дуза',
 'search' => 'Диле',
-'searchbutton' => 'Дилээри',
+'searchbutton' => 'Дилээр',
 'go' => 'Баары',
 'searcharticle' => 'Күүcедири',
 'history' => 'Арынның төөгүзү',
@@ -222,12 +222,12 @@ $messages = array(
 'unprotectthispage' => 'Бо арынның камгалалын өскертири',
 'newpage' => 'Чаа арын',
 'talkpage' => 'Бо арын дугайында чугаалажыры',
-'talkpagelinktext' => 'Чугаалажыры',
+'talkpagelinktext' => 'Чугаа',
 'specialpage' => 'Тускай арын',
 'personaltools' => 'Хууда херекселдер',
 'postcomment' => 'Чаа салбыр',
 'articlepage' => 'Допчу арынны көөрү',
-'talk' => 'Чугаалажыры',
+'talk' => 'Чугаа',
 'views' => 'Көрүүшкүннери',
 'toolbox' => 'Херекселдер',
 'userpage' => 'Ажыглакчының арынын көөрү',
@@ -536,7 +536,7 @@ Please check if you want to create/edit this page.',
 
 # Search results
 'searchresults' => 'Түңнелдер',
-'searchresults-title' => '«$1» диле',
+'searchresults-title' => '«$1» Ð´ÐµÐ¿ Ð´Ð¸Ð»Ðµ',
 'prevn' => 'эрткен {{PLURAL:$1|$1}}',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
 'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
@@ -670,8 +670,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'right-editusercss' => 'Өске ажыглакчыларның CSS файлдарын өскертири.',
 'right-edituserjs' => 'Өске ажыглакчыларның JavaScript файлдарын өскертири.',
 
-# User rights log
-'rightsnone' => '(чок)',
+# Special:Log/newusers
+'newuserlogpage' => 'Чаа ажыглакчы кырында журнал',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бо арынны номчууру',
@@ -726,7 +726,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchangeslinked-to' => 'Айыткан арынче шөлүп турар арыннарга өскерилгелерни көргүзер',
 
 # Upload
-'upload' => 'Файлды салыры',
+'upload' => 'Файл чүдүрер',
 'uploadbtn' => 'Файлды салыры',
 'uploadnologin' => 'Кирбес',
 'uploaderror' => 'Кииреринге алдаг',
@@ -899,9 +899,6 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'activeusers-hidebots' => 'Роботтарны чажырары',
 'activeusers-hidesysops' => 'Эргелекчыларны чажырары',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Чаа ажыглакчы кырында журнал',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Бөлүк кижилер',
 'listgrouprights-members' => '(кежигүннүң даңзызы)',
@@ -936,6 +933,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
 'enotif_anon_editor' => 'ат эвес ажыглакчы $1',
+'changed' => 'өскертти',
 
 # Delete
 'deletepage' => 'Арынны ырадыры',
@@ -982,7 +980,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'blanknamespace' => '(Кол)',
 
 # Contributions
-'contributions' => 'Ажыглакчыниң салыышкыннары',
+'contributions' => '{{GENDER:$1|Ажыглакчының}} салыышкыннары',
 'contributions-title' => '«$1» деп ажыглакчының салыышкыннары',
 'mycontris' => 'Салыышкыннар',
 'contribsub2' => '$1 ($2)',
@@ -1109,7 +1107,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-search-go' => 'Шак ындыг аттыг арынче щилчиир',
 'tooltip-search-fulltext' => 'Бо бижике арыннардан дилээри',
 'tooltip-p-logo' => 'Кол Арын',
-'tooltip-n-mainpage' => 'Кол Арынны баары',
+'tooltip-n-mainpage' => 'Кол Арынче шилчиир',
 'tooltip-n-mainpage-description' => 'Кол Арынче кирери',
 'tooltip-n-portal' => 'Төлевилел дыгайында, чүнү кылып болур силер, кайда чүү чыдарыл',
 'tooltip-n-currentevents' => 'Ам болуп турар таварылгалар даңзызы',
@@ -1330,6 +1328,9 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'htmlform-submit' => 'Күүcедири',
 'htmlform-selectorother-other' => 'Өске',
 
+# New logging system
+'rightsnone' => '(чок)',
+
 # Feedback
 'feedback-subject' => 'Кол сөс:',
 'feedback-message' => 'Чагаа:',
index a5c64dd..523311d 100644 (file)
@@ -1401,15 +1401,13 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'right-sendemail' => 'باشقا ئىشلەتكۈچىگە ئېلخەت يوللا',
 'right-passwordreset' => 'پارول ئەسلىگە قايتۇرۇش ئېلخەت ئادرېس كۆرۈش.',
 
+# Special:Log/newusers
+'newuserlogpage' => 'ئىشلەتكۈچى قۇرغان خاتىرە',
+'newuserlogpagetext' => '(چەكلەنگەن)',
+
 # User rights log
 'rightslog' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
 'rightslogtext' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
-'rightslogentry' => 'گۇرۇپپا ئەزاسى $1  نىڭ ھوقۇقىنى $2 دىن $3 غا ئۆزگەرت',
-'rightslogentry-autopromote' => 'ئۆزلۈكىدىن $2 دىن $3 غا ئۆرلىدى',
-'logentry-rights-rights' => '$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $4 دىن $5 غا $1 ئالماشتۇردى',
-'logentry-rights-rights-legacy' => '$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $1 ئۆزگەرتتى',
-'logentry-rights-autopromote' => '$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى',
-'rightsnone' => '(يوق)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'بۇ بەتنى ئوقۇ',
@@ -2057,10 +2055,6 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'activeusers-hidesysops' => 'باشقۇرغۇچىنى يوشۇر',
 'activeusers-noresult' => 'ئىشلەتكۈچى تېپىلمىدى.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'ئىشلەتكۈچى قۇرغان خاتىرە',
-'newuserlogpagetext' => '(چەكلەنگەن)',
-
 # Special:ListGroupRights
 'listgrouprights' => 'ئىشلەتكۈچى گۇرۇپپا ھوقۇقى',
 'listgrouprights-summary' => 'تۆۋەندىكىسى بۇ wiki دا ئېنىقلىما بېرىلگەن ئىشلەتكۈچى ھوقۇق چېكى تىزىملىكى ۋە ئۇلارنىڭ زىيارەت ھوقۇق چېكى.
@@ -2197,6 +2191,8 @@ $UNWATCHURL نى زىيارەت قىلىڭ
 
 قايتما ئىنكاس ياكى تېخىمۇ كۆپ ياردەمگە ئېرىشمەكچى بولسىڭىز:
 {{canonicalurl:{{MediaWiki:Helppage}}}} نى زىيارەت قىلىڭ',
+'created' => 'قۇرغان',
+'changed' => 'ئۆزگەردى',
 
 # Delete
 'deletepage' => 'بەت ئۆچۈر',
@@ -3074,6 +3070,7 @@ $1',
 'minutes' => '{{PLURAL: $1|$1مىنۇت}}',
 'hours' => '{{PLURAL:$1|$1سائەت}}',
 'days' => '{{PLURAL:$1|$1 كۈن}}',
+'years' => '{{PLURAL:$1|$1 يىل}}',
 'ago' => '$1 بۇرۇن',
 'just-now' => 'بايا',
 
@@ -3864,6 +3861,10 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئېلان 
 'logentry-newusers-create2' => 'ئىشلەتكۈچى ھېساباتى $3 نى $1 قۇردى',
 'logentry-newusers-autocreate' => 'ئىشلەتكۈچى $1 ئاپتوماتلىق قۇرۇلدى',
 'newuserlog-byemail' => 'ئىم ئىلخەتتە يوللاندى',
+'logentry-rights-rights' => '$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $4 دىن $5 غا $1 ئالماشتۇردى',
+'logentry-rights-rights-legacy' => '$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $1 ئۆزگەرتتى',
+'logentry-rights-autopromote' => '$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى',
+'rightsnone' => '(يوق)',
 
 # Feedback
 'feedback-bugornote' => 'ئەگەر بىر تېخنىكىلىق مەسىلىنى تەپسىلىي بايان قىلىشقا تەييارلانماقچى بولسىڭىز، [$1 خاتالىق دوكلات]ى يوللاڭ. ياكى تۆۋەندىكى ئاددىي جەدۋەلنى ئىشلىتىڭ. ئىنكاسىڭىز "[$3 $2]" بەتكە قوشۇلىدۇ، ئىشلەتكۈچى ئاتىڭىز ۋە ئىشلەتكەن توركۆرگۈڭىز قوشۇپ قويۇلىدۇ.',
index 636100f..8080ef1 100644 (file)
@@ -32,6 +32,7 @@
  * @author NickK
  * @author Olvin
  * @author Prima klasy4na
+ * @author RLuts
  * @author Riwnodennyk
  * @author Sodmy
  * @author Urhixidur
@@ -490,6 +491,7 @@ $messages = array(
 'newwindow' => '(відкривається в новому вікні)',
 'cancel' => 'Скасувати',
 'moredotdotdot' => 'Детальніше…',
+'morenotlisted' => 'Більше немає нічого…',
 'mypage' => 'Сторінка',
 'mytalk' => 'Обговорення',
 'anontalk' => 'Обговорення для цієї IP-адреси',
@@ -870,6 +872,7 @@ $1',
 # E-mail sending
 'php-mail-error-unknown' => 'Невідома помилка в PHP-mail() функції',
 'user-mail-no-addy' => 'Спроба надсилання електронної пошти без зазначеної адреси електронної пошти.',
+'user-mail-no-body' => 'Спроба надіслати електронного листа з порожнім або надто коротким вмістом.',
 
 # Change password dialog
 'resetpass' => 'Змінити пароль',
@@ -1359,7 +1362,7 @@ $1",
 'editundo' => 'скасувати',
 'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|одного користувача|$2 користувачів}} не показані}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна я версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|$1 користувачем|$2 користувачами}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f|$2 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|$2 Ð²ÐµÑ\80Ñ\81Ñ\96й}} Ð´Ð»Ñ\8f Ñ\86Ñ\8cого Ð¿Ð¾Ñ\80Ñ\96внÑ\8fннÑ\8f ($1) Ð½Ðµ {{PLURAL:$2|знайдене|знайдені}}.
+'difference-missing-revision' => '{{PLURAL:$2|$2 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f|$2 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|$2 Ð²ÐµÑ\80Ñ\81Ñ\96й}} Ð´Ð»Ñ\8f Ñ\86Ñ\8cого Ð¿Ð¾Ñ\80Ñ\96внÑ\8fннÑ\8f ($1) Ð½Ðµ {{PLURAL:$2|знайдена|знайдені}}.
 
 Імовірно, ви перейшли за застарілим посиланням на порівняння версій вилученої сторінки.
 Подробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].',
@@ -1669,15 +1672,13 @@ $1",
 'right-sendemail' => 'відправляти пошту іншим користувачам',
 'right-passwordreset' => 'Перегляд повідомлень електронної пошти для зміни паролю',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Журнал нових користувачів',
+'newuserlogpagetext' => 'Список нещодавно зареєстрованих користувачів.',
+
 # User rights log
 'rightslog' => 'Журнал прав користувача',
 'rightslogtext' => 'Це протокол зміни прав користувачів.',
-'rightslogentry' => 'змінив права доступу для користувача $1 з $2 на $3',
-'rightslogentry-autopromote' => 'був автоматично переведений з $2 до $3',
-'logentry-rights-rights' => '$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3 із $4 на $5',
-'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3',
-'logentry-rights-autopromote' => '$1 було автоматично переведено із $4 в $5',
-'rightsnone' => '(нема)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'перегляд цієї сторінки',
@@ -2314,9 +2315,9 @@ $1',
 'linksearch-pat' => 'Шаблон для пошуку:',
 'linksearch-ns' => 'Простір назв:',
 'linksearch-ok' => 'Знайти',
-'linksearch-text' => 'Ð\9cожна Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ð¿Ñ\96дÑ\81Ñ\82ановоÑ\87нÑ\96 Ñ\81имволи (Ñ\88аблони), Ð½Ð°Ð¿Ñ\80иклад, "*.wikipedia.org".
\9dеобÑ\85Ñ\96дний Ð´Ð¾Ð¼ÐµÐ½ Ð¿Ñ\80инаймнÑ\96 Ð²ÐµÑ\80Ñ\85нÑ\8cого Ñ\80Ñ\96внÑ\8f, Ð½Ð°Ð¿Ñ\80иклад "*.org"<br />
-Підтримувані протоколи: <code>$1</code> (за замовчуванням http:// якщо жоден протокол не вказано)',
+'linksearch-text' => 'Ð\9cожна Ð²Ð¶Ð¸Ð²Ð°Ñ\82и Ð¿Ñ\96дÑ\81Ñ\82ановоÑ\87нÑ\96 Ñ\81имволи, Ð½Ð°Ð¿Ñ\80иклад, Â«*.wikipedia.org».
\9dеобÑ\85Ñ\96дно Ð·Ð°Ð·Ð½Ð°Ñ\87иÑ\82и Ð´Ð¾Ð¼ÐµÐ½, Ð¿Ñ\80инаймнÑ\96 Ð²ÐµÑ\80Ñ\85нÑ\8cого Ñ\80Ñ\96внÑ\8f, Ð½Ð°Ð¿Ñ\80иклад Â«*.org».<br />
+{{PLURAL:$2|Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
 'linksearch-line' => 'Посилання на $1 із $2',
 'linksearch-error' => 'Підстановочні знаки можуть використовуватися лише на початку адрес.',
 
@@ -2335,10 +2336,6 @@ $1',
 'activeusers-hidesysops' => 'Приховати адміністраторів',
 'activeusers-noresult' => 'Не знайдено користувачів.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Журнал нових користувачів',
-'newuserlogpagetext' => 'Список нещодавно зареєстрованих користувачів.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Права груп користувачів',
 'listgrouprights-summary' => 'Нижче наведений список груп користувачів у цій вікі і права для кожної групи.
@@ -2476,6 +2473,8 @@ $UNWATCHURL
 
 Зворотній зв\'язок і допомога:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'створена',
+'changed' => 'змінена',
 
 # Delete
 'deletepage' => 'Вилучити сторінку',
@@ -2518,10 +2517,10 @@ $UNWATCHURL
 'rollbacklinkcount' => 'скасування $1 {{PLURAL:$1|редагування|редагувань|редагувань}}',
 'rollbacklinkcount-morethan' => 'скасування більш, ніж $1 {{PLURAL:$1|редагування|редагувань|редагувань}}',
 'rollbackfailed' => 'Відкинути зміни не вдалося',
-'cantrollback' => 'Неможливо відкинути редагування, оскільки останній, хто редагував, є єдиним автором цієї сторінки.',
+'cantrollback' => 'Неможливо відкинути редагування, оскільки останній дописувач є її автором.',
 'alreadyrolled' => 'Неможливо відкинути останні редагування [[:$1]], зроблені [[User:$2|$2]] ([[User talk:$2|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), оскільки хтось інший уже змінив чи відкинув редагування цієї статті.
 
\9eÑ\81Ñ\82аннÑ\96 Ñ\80едагÑ\83ваннÑ\8f Ð·Ñ\80обив [[User:$3|$3]] ([[User talk:$3|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
\9eÑ\81Ñ\82аннÑ\96 Ñ\80едагÑ\83ваннÑ\8f Ð·Ñ\80облено [[User:$3|$3]] ([[User talk:$3|обговорення]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Пояснення редагування було: «''$1''».",
 'revertpage' => 'Редагування користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) відкинуті до версії користувача [[User:$1|$1]]',
 'revertpage-nouser' => "Відкинуто редагування (ім'я користувача приховано) до зробленого [[User:$1|$1]]",
@@ -2546,6 +2545,8 @@ $UNWATCHURL
 'prot_1movedto2' => '«[[$1]]» перейменована на «[[$2]]»',
 'protect-badnamespace-title' => 'Беззахисний простір імен',
 'protect-badnamespace-text' => 'Сторінки у просторі імен не можуть бути захищені.',
+'protect-norestrictiontypes-text' => 'Цю сторінку не може бути захищено, бо немає ніяких типів обмежень.',
+'protect-norestrictiontypes-title' => 'Сторінка, яку неможливо захистити',
 'protect-legend' => 'Підтвердження встановлення захисту',
 'protectcomment' => 'Причина:',
 'protectexpiry' => 'Закінчується:',
@@ -3222,7 +3223,7 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-watchers' => 'Кількість спостерігачів',
 'pageinfo-redirects-name' => 'Перенаправлення на цю сторінку',
 'pageinfo-subpages-name' => 'Підсторінки цієї сторінки',
-'pageinfo-subpages-value' => '$1($2 {{PLURAL:$2|перенаправлення|перенаправлення|перенаправлень}}; $3 {{PLURAL:$3|не-перенаправлення|не-перенаправлення|не-перенаправлень}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправлення|перенаправлення|перенаправлень}}; $3 {{PLURAL:$3|неперенаправлення|неперенаправлення|неперенаправлень}})',
 'pageinfo-firstuser' => 'Створив сторінку',
 'pageinfo-firsttime' => 'Дата створення сторінки',
 'pageinfo-lastuser' => 'Останній редактор',
@@ -3234,6 +3235,7 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-magic-words' => '{{PLURAL:$1|Магічне слово|Магічні слова}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}} ($1)',
 'pageinfo-templates' => 'Включено {{PLURAL:$1|шаблон|шаблонів}} ($1)',
+'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|сторінки|сторінок}}',
 'pageinfo-toolboxlink' => 'Інформація про сторінку',
 'pageinfo-redirectsto' => 'Перенаправляє на',
 'pageinfo-redirectsto-info' => 'інформація',
@@ -3242,6 +3244,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-protect-cascading' => 'Звідси розпочинається каскадний захист',
 'pageinfo-protect-cascading-yes' => 'Так',
 'pageinfo-protect-cascading-from' => 'Каскадний захист починається тут',
+'pageinfo-category-info' => 'Інформація про категорію',
+'pageinfo-category-pages' => 'Кількість сторінок',
+'pageinfo-category-subcats' => 'Кількість підкатегорій',
+'pageinfo-category-files' => 'Кількість файлів',
 
 # Skin names
 'skinname-standard' => 'Стандартне',
@@ -3334,6 +3340,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 хвилина|$1 хвилини|$1 хвилин}}',
 'hours' => '{{PLURAL:$1|$1 година|$1 години|$1 годин}}',
 'days' => '{{PLURAL:$1|$1 день|$1 дні|$1 днів}}',
+'months' => '{{PLURAL:$1|$1 місяць|$1 місяці|$1 місяців}}',
+'years' => '{{PLURAL:$1|$1 рік|$1 роки|$1 років}}',
 'ago' => '$1 тому',
 'just-now' => 'щойно',
 
@@ -4255,6 +4263,10 @@ MediaWiki поширюється в надії, що вона буде кори
 'logentry-newusers-create2' => '$1 {{GENDER:$2|створив|створила}} обліковий запис {{GENDER:$4|користувача|користувачки}} $3',
 'logentry-newusers-autocreate' => '$1 — автоматично створений обліковий запис',
 'newuserlog-byemail' => 'пароль надісланий електронною поштою',
+'logentry-rights-rights' => '$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3 із $4 на $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3',
+'logentry-rights-autopromote' => '$1 було автоматично переведено із $4 в $5',
+'rightsnone' => '(нема)',
 
 # Feedback
 'feedback-bugornote' => 'Якщо ви готові описати технічні проблеми в деталях, будь ласка [ $1  повідомте про помилку].
index 9573ecd..72f19ca 100644 (file)
@@ -979,11 +979,13 @@ HTML tags جانچئے.',
 'right-delete' => 'صفحات حذف کریں',
 'right-sendemail' => 'دیگر صارفین کو برقی ڈاک بھیجیں',
 
+# Special:Log/newusers
+'newuserlogpage' => 'نوشتۂ آمد صارف',
+'newuserlogpagetext' => 'یہ نۓ صارفوں کی آمد کا نوشتہ ہے',
+
 # User rights log
 'rightslog' => 'نوشتہ صارفی اختیارات',
 'rightslogtext' => 'یہ صارفی اختیارات میں تبدیلیوں کا نوشتہ ہے۔',
-'rightslogentry' => 'گروہ رکنیت میں برائے $1 از $2 تا $3 تبدیلی ہوئی',
-'rightsnone' => '(کچھ نہیں)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'اس صفحہ میں ترمیم کریں',
@@ -1182,10 +1184,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch-line' => '$1 مربوط ہے $2 سے',
 
-# Special:Log/newusers
-'newuserlogpage' => 'نوشتۂ آمد صارف',
-'newuserlogpagetext' => 'یہ نۓ صارفوں کی آمد کا نوشتہ ہے',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(اراکین کی فہرست)',
 
@@ -1212,6 +1210,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'wlshowlast' => 'دکھائیں آخری $1 گھنٹے $2 دن $3',
 'watchlist-options' => 'اختیارات برائے زیرِنظرفہرست',
 
+'created' => 'بنا دیا گیا',
+'changed' => 'تبدیل کردیاگیا',
+
 # Delete
 'deletepage' => 'صفحہ ضائع کریں',
 'confirm' => 'یقین',
@@ -1525,6 +1526,9 @@ $1 × $2 عکصر (پکسلز)، حجم ملف: $3، MIME قسم: $4',
 # Special:SpecialPages
 'specialpages' => 'خصوصی صفحات',
 
+# New logging system
+'rightsnone' => '(کچھ نہیں)',
+
 # Search suggestions
 'searchsuggest-search' => 'تلاش',
 
index 773282c..d083992 100644 (file)
@@ -170,7 +170,7 @@ $messages = array(
 'cancel' => 'Bekor qilish',
 'moredotdotdot' => 'Batafsil...',
 'mypage' => 'Sahifa',
-'mytalk' => 'Munozara',
+'mytalk' => 'Munozaram',
 'anontalk' => 'Bu IP uchun suhbat',
 'navigation' => 'Saytda harakatlanish',
 'and' => '&#32;va',
@@ -733,6 +733,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'stub-threshold-disabled' => "O'chirib qo'yilgan",
 'recentchangesdays-max' => 'Eng koʻpi $1 kun',
 'recentchangescount' => 'Sukut boʻyicha koʻrsatiladigan tahrirlar soni',
+'savedprefs' => 'Sizning moslamalaringiz saqlandi.',
 'timezonelegend' => 'Vaqt mintaqangiz:',
 'localtime' => 'Mahalliy vaqt:',
 'timezoneuseserverdefault' => 'Server moslamalaridan foydalanish ($1)',
@@ -835,9 +836,12 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'right-read' => "Sahifalarni o'qish",
 'right-edit' => 'Sahifalarni tahrirlash',
 
+# Special:Log/newusers
+'newuserlogpage' => "Ishtirokchilarni ro'yxatga olish qaydlari",
+'newuserlogpagetext' => 'Yaqinda roʻyxatdan oʻtgan foydalanuvchilar roʻyxati',
+
 # User rights log
 'rightslog' => "Ishtirokchi huquqlari bo'yicha qaydlar",
-'rightslogentry' => "ishtirokchi $1ning guruhlardagi a'zoligini $2dan $3ga o'zgartirdi",
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'ushbu sahifani tahrirlash',
@@ -868,7 +872,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'diff' => 'farq',
 'hist' => 'tarix',
 'hide' => 'Yashirish',
-'show' => 'Koʻrsatish',
+'show' => 'koʻrsatish',
 'minoreditletter' => 'k',
 'newpageletter' => 'Y',
 'boteditletter' => 'b',
@@ -912,7 +916,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'listfiles_name' => 'Nomi',
 'listfiles_user' => 'Foydalanuvchi',
 'listfiles_size' => 'Oʻlchami',
-'listfiles_description' => 'TaÊ»rif',
+'listfiles_description' => 'Taʼrif',
 'listfiles_count' => 'Versiyalar',
 
 # File description page
@@ -1048,10 +1052,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'activeusers-hidesysops' => 'Maʼmurlarni yashirish',
 'activeusers-noresult' => 'Foydalanuvchilar topilmadi.',
 
-# Special:Log/newusers
-'newuserlogpage' => "Ishtirokchilarni ro'yxatga olish qaydlari",
-'newuserlogpagetext' => 'Yaqinda roʻyxatdan oʻtgan foydalanuvchilar roʻyxati',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Foydalanuvchilar guruhi huquqlari',
 'listgrouprights-group' => 'Guruh',
@@ -1156,6 +1156,8 @@ $UNWATCHURL
 
 Qayta aloqa va yordam
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'yaratildi',
+'changed' => 'o‘zgartirildi',
 
 # Delete
 'deletepage' => "Sahifani o'chirish",
@@ -1251,7 +1253,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 # Contributions
 'contributions' => '{{GENDER:$1|Foydalanuvchi}} hissasi',
 'contributions-title' => '{{GENDER:$1|Foydalanuvchi}} $1 hissasi',
-'mycontris' => 'Hissa',
+'mycontris' => 'Hissam',
 'contribsub2' => '$1 uchun ($2)',
 'nocontribs' => "Belgilangan shartlarga muvofiq o'zgarishlar topilmadi",
 'uctop' => '(oxirgi)',
@@ -1476,6 +1478,7 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'pageinfo-watchers' => 'Sahifa kuzatuvchilari soni',
 'pageinfo-edits' => 'Jami tahrirlar soni',
 'pageinfo-toolboxlink' => 'Sahifa haqida maʼlumot',
+'pageinfo-redirectsto' => 'Qayta yoʻnaltirish',
 
 # Skin names
 'skinname-standard' => 'Klassik',
index db6d37b..e0fa776 100644 (file)
@@ -156,7 +156,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Scondi i canbiamenti verificà in tei "Ultimi canbiamenti"',
 'tog-newpageshidepatrolled' => "Scondi łe pajine verifegae da l'elenco de łe pajine pì resenti",
 'tog-extendwatchlist' => "Mostra tute łe modifeghe a i oservai spesałi, no soło l'ultima",
-'tog-usenewrc' => 'Utiłisa łe ulteme modifeghe avansae (el richiede JavaScript)',
+'tog-usenewrc' => "Ragrupa łe modifeghe par pàjina inte i ultimi canbiamenti e inte łe tegnùe d'ocio (el dimanda JavaScript)",
 'tog-numberheadings' => 'Numerasion automatega de i titołi de sesion',
 'tog-showtoolbar' => 'Mostra ła bara de i strumenti de modifega (el richiede JavaScript)',
 'tog-editondblclick' => 'Modifega de łe pajine tramite dopio clic (el richiede JavaScript)',
@@ -164,10 +164,10 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Modifega de łe sesion tramite clic destro sol titoło (el richiede JavaScript)',
 'tog-showtoc' => "Mostra l'indexe par łe pajine con pì de 3 sesion",
 'tog-rememberpassword' => 'Tiente in mente la me password so sto computer (par un massimo de $1 {{PLURAL:$1|zorno|zorni}})',
-'tog-watchcreations' => 'Zonta łe pajine creae a i oservai spesałi',
-'tog-watchdefault' => 'Zonta łe pajine modifegae a i oservai spesałi',
-'tog-watchmoves' => 'Zonta łe pajine spostae a i oservai spesałi',
-'tog-watchdeletion' => 'Zonta łe pajine scansełae a i oservai spesałi',
+'tog-watchcreations' => "Xonta łe pàjine creae e i file cargai a łe tegnùe d'ocio",
+'tog-watchdefault' => "Xonta łe pàjine e i file modifegai a łe tegnùe d'ocio",
+'tog-watchmoves' => "Xonta łe pàjine e i file spostai a łe tegnùe d'ocio",
+'tog-watchdeletion' => "Xonta łe pàjine e i file scansełai a łe tegnùe d'ocio",
 'tog-minordefault' => 'Segna ogni canbiamento come picenin (solo come predefinìo)',
 'tog-previewontop' => "Mostra l'anteprima sora ła caseła de modifega e no soto",
 'tog-previewonfirst' => "Mostra l'anteprima par ła prima modifega",
@@ -282,6 +282,7 @@ $messages = array(
 'newwindow' => '(se verze in te na finestra nova)',
 'cancel' => 'Lassa star',
 'moredotdotdot' => 'Altro...',
+'morenotlisted' => 'Altro nó elencà',
 'mypage' => 'La me pagina',
 'mytalk' => 'Discussion',
 'anontalk' => 'Discusion par sto IP',
@@ -509,6 +510,8 @@ Se prega de dìrghelo a un [[Special:ListUsers/sysop|aministradore]] indicando l
 'cannotdelete' => 'No xè sta posibiłe scansełare el file "$1".
 Podaria esare sta zà scansełà da qualcun altro.',
 'cannotdelete-title' => 'Inposibiłe ełiminare ła pajina "$1"',
+'delete-hook-aborted' => 'Modifega abortìa da parte del hook.
+No xe stà dà nisuna spiegasion in merito.',
 'badtitle' => 'Titoło mia justo',
 'badtitletext' => "El titoło de ła pajina richiesta xè vodo, erà o con carateri no amesi opure el deriva da n'erore ne i cołegamenti tra siti wiki diversi o version en łengue diverse de ło steso sito.",
 'perfcached' => 'Sti dati vien tiradi fora da na copia "cache" del database e łi podarìa no esare ajornadi. Inte ła cache xe {{PLURAL:$1|disponibiłe un rixultado|xe disponibiłi $1 rixultadi}}.',
@@ -543,6 +546,7 @@ L\'aministradore che ło ga blocà ga fornìo sta spiegasion: "$3".',
 'invalidtitle-knownnamespace' => 'Titoło no vałido co namespace "$2" e testo "$3"',
 'invalidtitle-unknownnamespace' => 'Titoło no vałido co namespace sconosùo "$1" e testo "$2"',
 'exception-nologin' => 'Acesso mia efetuà',
+'exception-nologin-text' => "Sta pàjina o asion ła richiede che te gapi efetuà 'l aceso so sta wiki.",
 
 # Virus scanner
 'virus-badscanner' => 'Erore de configurasion: antivirus sconossuo: "$1"',
@@ -555,12 +559,15 @@ L\'aministradore che ło ga blocà ga fornìo sta spiegasion: "$3".',
 Te poli 'ndar vanti doparando {{SITENAME}} come utente anonimo o se nò <span class='plainlinks'>[$1 entrar da novo]</span>, col stesso nome utente o uno difarente.
 Ocio che serte pagine podarìa èssar che ti 'e vedi come se te fussi 'ncora drento col to nome de prima, fin che no te neti la ''cache'' del to browser.",
 'welcomeuser' => 'Benvegnù, $1!',
+'welcomecreation-msg' => 'El to nome utente el xe stà creà.
+Nó desmentegarte de personałixare łe [[Special:Preferences|prefarense de {{SITENAME}}]].',
 'yourname' => 'Nome utente:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => 'De novo la password:',
 'remembermypassword' => 'Tiente in mente la password su sto conputer (par un massimo de $1 {{PLURAL:$1|zorno|zorni}})',
 'securelogin-stick-https' => 'Resta tacà par HTTPS dopo èssar entrà',
 'yourdomainname' => 'Spesifegare el dominio',
+'password-change-forbidden' => 'Nó xe posibiłe canbiar ła password so sta wiki.',
 'externaldberror' => "Se xè verifegà n'erore con el server de autenticasion esterno, opure no se dispone de łe autorizasion nesesarie par ajornare el proprio aceso esterno.",
 'login' => 'Entra',
 'nav-login-createaccount' => 'Entra / Regìstrete',
@@ -641,6 +648,7 @@ Spèta un tocheto prima de proàr da novo.',
 # E-mail sending
 'php-mail-error-unknown' => "Erore sconosudo nte'l funsionamento deła posta ełetronega PHP",
 'user-mail-no-addy' => 'Te ghe provà spedire un mesajo de posta ełetronega sensa un indiriso.',
+'user-mail-no-body' => 'Tentà de inviar na e-mail có un testo vodo o masa curto.',
 
 # Change password dialog
 'resetpass' => 'Cànbia la password',
@@ -702,6 +710,7 @@ Password tenporanea: $2',
 'changeemail-oldemail' => 'Indiriso de posta ełetronega atuałe:',
 'changeemail-newemail' => 'Novo indiriso de posta ełetronega:',
 'changeemail-none' => '(nisun)',
+'changeemail-password' => 'Ła password so {{SITENAME}}:',
 'changeemail-submit' => 'Canbia indiriso de posta ełetronega',
 'changeemail-cancel' => 'Anuła',
 
@@ -800,6 +809,7 @@ o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
 'noarticletext-nopermission' => 'In sto momento no ghe xe nissun testo su sta pagina.
 Te pol [[Special:Search/{{PAGENAME}}|sercar sto titolo de pagina]] in altre pagine,
 o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sercar in tei registri ligà a sta pagina]</span>, ma no te ghè el parmesso de crear sta pagina.',
+'missing-revision' => 'Ła revixion #$1 de ła pàjina "{{PAGENAME}}" nó ła existe.',
 'userpage-userdoesnotexist' => 'L\'account "<nowiki>$1</nowiki>" no\'l corisponde mìa a un utente registrà. Verifica se te voli dal bon crear o modificar sta pagina.',
 'userpage-userdoesnotexist-view' => 'L\'utensa "$1" no la xe gnancora registrà.',
 'blocked-notice-logextract' => "Sto utente xè atualmente blocà.
@@ -895,6 +905,9 @@ Pararìa che la sìpia stà scancelà.',
 'edit-already-exists' => 'No se pol crear na pagina nova.
 La esiste de zà.',
 'defaultmessagetext' => 'Testo predefinìo',
+'content-failed-to-parse' => "Inposibiłe anałixare $2 pa'l modèl $1: $3",
+'invalid-content-data' => 'Dati contegnui nó vałidi',
+'content-not-allowed-here' => 'Contegnùo in "$1" nó consentio inte ła pàjina [[$2]]',
 
 # Content models
 'content-model-wikitext' => 'wikitesto',
@@ -922,6 +935,7 @@ Sti argomenti i xe stà omessi.",
 'expansion-depth-exceeded-warning' => 'Sta pajina ga superà el limite de profondità de espansion',
 'parser-unstrip-loop-warning' => 'Xe sta riłevà un ciclo de Unstrip',
 'parser-unstrip-recursion-limit' => 'Superadi i limiti de recursion de Unstrip ($1)',
+'converter-manual-rule-error' => 'Rilevà eror inte ła regoła manuałe de conversion de ła lèngua',
 
 # "Undo" feature
 'undo-success' => 'Sta modifica la pode èssar anulà. Verifica el confronto presentà de seguito par èssar sicuro che el contenuto el sia come te lo voli e quindi salva le modifiche par conpletar la procedura de anulamento.',
@@ -1103,6 +1117,10 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
 'editundo' => 'tira indrìo',
 'diff-multi' => '({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} de {{PLURAL:$2|un utente|$2 utenti}} mia mostrà)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} de pi de {{PLURAL:$2|un utente|$2 utenti}} mia mostrà)',
+'difference-missing-revision' => "{{PLURAL:$2|Na version|$2 version}} de sta difarensa ($1) {{PLURAL:$2|nó ła xe sta trovà|nó łe xe stae trovae}}.
+
+Cuesto se verifega de sołito seguendo un ligamente vecio de un dif a na pàjina scansełà.
+I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de łe scansełasion].",
 
 # Search results
 'searchresults' => 'Risultati de la riserca',
@@ -1189,6 +1207,7 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'prefs-beta' => 'Funsionałidà beta',
 'prefs-datetime' => 'Data e ora',
 'prefs-labs' => 'Funsionałidà de i laboratori',
+'prefs-user-pages' => 'Pàjine utente',
 'prefs-personal' => 'Profiło utente',
 'prefs-rc' => 'Ultime modifeghe',
 'prefs-watchlist' => 'Tegnùi de òcio',
@@ -1365,6 +1384,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'right-writeapi' => "Doparar l'API par la modifica de la wiki",
 'right-delete' => 'Scancela pagine',
 'right-bigdelete' => 'Scancela pagine con cronologie longhe',
+'right-deletelogentry' => 'Scanseła e ripristina voxe de registrio spesifeghe',
 'right-deleterevision' => 'Scondi version specifiche de le pagine',
 'right-deletedhistory' => 'Varda i record scancelà de la cronologia, ma sensa el testo associà a lori',
 'right-deletedtext' => 'Vardar el testo scancelà e i canbiamenti tra dele revision scancelà',
@@ -1401,12 +1421,13 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'right-sendemail' => 'Mandarghe e-mail a cheialtri utenti',
 'right-passwordreset' => 'Vedi i mesaji de rinpostasion de ła password',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Novi utenti',
+'newuserlogpagetext' => 'Sto qua el xè el registro dei novi utenti registrai.',
+
 # User rights log
 'rightslog' => 'Diriti de i utenti',
 'rightslogtext' => 'Sto qua el xe el registro de le modifiche ai diriti assegnà ai utenti.',
-'rightslogentry' => "gà modificà l'apartenenza de $1 dal grupo $2 al grupo $3",
-'rightslogentry-autopromote' => 'xe stà automategamente promoso/a da $2 a $3',
-'rightsnone' => '(nissun)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lèxar sta pàxena',
@@ -1475,7 +1496,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'number_of_watching_users_pageview' => '[osservà da {{PLURAL:$1|un utente|$1 utenti}}]',
 'rc_categories' => 'Limita a le categorie (separà da "|")',
 'rc_categories_any' => 'Qualsiasi',
-'rc-change-size-new' => '$1 byte dopo ła modifega',
+'rc-change-size-new' => '$1 {{PLURAL:$|byte}} dopo ła modifega',
 'newsectionsummary' => '/* $1 */ sezion nova',
 'rc-enhanced-expand' => 'Mostra detaji (richiede JavaScript)',
 'rc-enhanced-hide' => 'Scondi detaji',
@@ -1630,6 +1651,7 @@ Se el problema el persiste, contatar un [[Special:ListUsers/sysop|aministrador]]
 'backend-fail-notsame' => 'Existe xà un file no identico a  $1 .',
 'backend-fail-invalidpath' => '$1 no xe un percorso de archiviasion vałido.',
 'backend-fail-delete' => 'Inposibiłe scançełare el file "$1".',
+'backend-fail-describe' => 'Inposibiłe modifegar i metadati del file "$1".',
 'backend-fail-alreadyexists' => 'El file $1 existe xà.',
 'backend-fail-store' => 'Inposibiłe memorixare el file  $1  in  $2 .',
 'backend-fail-copy' => 'Inposibiłe copiare el file "$1" in "$2".',
@@ -1644,12 +1666,48 @@ Se el problema el persiste, contatar un [[Special:ListUsers/sysop|aministrador]]
 'backend-fail-synced' => 'El file "$1" xe incoerente rento i backend de ła memoria interna.',
 'backend-fail-connect' => 'Inposibiłe conétarse al backend de memoria "$1".',
 'backend-fail-internal' => 'Se ga verifegà on erore sconosùo nte\'l backend de memoria "$1".',
-'backend-fail-usable' => 'Inposibiłe modifegare el file $1 a cauxa de autorixasion insuficenti o directory mancanti.',
+'backend-fail-contenttype' => 'Inposibiłe determinar ła tipołoxia del file da archiviar in "$1".',
+'backend-fail-batchsize' => 'El backend de memoria el ga programà na serie de $1 {{PLURAL:$1|operasion}} su file; el limite el xe de $2 {{PLURAL:$2|operasion}}.',
+'backend-fail-usable' => 'Inposibiłe lexare o scrivare el file $1 a cauxa de autorixasion insuficenti o directory/contenidori mancanti.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Inposibiłe coneterse al database journal par l\'archiviasion back-end "$1".',
+'filejournal-fail-dbquery' => 'Inposibiłe axornar el database journal par l\'archiviasion back-end "$1".',
+
+# Lock manager
+'lockmanager-notlocked' => 'Inposibiłe sblocar "$1"; nó \'l xe blocà.',
+'lockmanager-fail-closelock' => 'Nó riusia ła sarada del file de bloco par "$1".',
+'lockmanager-fail-deletelock' => 'Nó riusia ła scansełasion del file de bloco par "$1".',
+'lockmanager-fail-acquirelock' => 'Nó riusia acuixision bloco par "$1".',
+'lockmanager-fail-openlock' => 'Nó riusia l\'apertura del file de bloco par "$1".',
+'lockmanager-fail-releaselock' => 'Nó riusio rełaso del bloco par "$1".',
+'lockmanager-fail-db-bucket' => "Inposibiłe contatar i necesari database de bloco inte'l bucket $1.",
+'lockmanager-fail-db-release' => "Inposibiłe revocar i blochi so'l database $1.",
+'lockmanager-fail-svr-acquire' => "Inposibiłe acuixir blochi so'l server $1.",
+'lockmanager-fail-svr-release' => "Inposibiłe revocar i blochi so'l server $1.",
+
+# ZipDirectoryReader
+'zip-file-open-error' => "S'à verifegà un eror co se jera drio verxare el file pa' i controłi ZIP.",
+'zip-wrong-format' => "El file spesifegà no'l xe un file ZIP.",
+'zip-bad' => "El file el xe un file ZIP coroto o ilexibiłe.
+Nó 'l pol esar controłà par sicuresa.",
+'zip-unsupported' => "El file el xe un file ZIP che'l dopara carateristeghe ZIP nó suportae da MediaWiki.
+Nó 'l pol esar controła par sicuresa.",
+
+# Special:UploadStash
+'uploadstash' => 'Carga stash',
+'uploadstash-summary' => "Sta pàjina ła consente 'l aceso a i file che xe sta cargai (o i xe in faxe de cargamento) ma che nó xe stai ncora pùbicai so ła wiki. Sti file i xe vixibiłi soło che al utente che i ga cargai.",
+'uploadstash-clear' => 'Elimina i file in stash',
+'uploadstash-nofiles' => 'Nó te ghe file in stash.',
+'uploadstash-badtoken' => 'Sta asion nó ła ga vuo suceso, forsi parché łe to credeniałi de modifega łe xe scadue. Prova ncora.',
+'uploadstash-errclear' => 'Ła scansełasion de i file nó ła ga vù suceso.',
+'uploadstash-refresh' => "Axorna 'l elenco de i file",
+'invalid-chunk-offset' => 'Offset de ła parte nó vałido',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Acesso negà',
 'img-auth-nopathinfo' => "Manca el PATH_INFO.
-El to server no'l xe mia configurà par passar sta informassion.
+El to server no'l xe mia configurà par pasar sta informasion.
 Magari el xe basà su CGI e no'l suporta img_auth.
 Varda https://www.mediawiki.org/wiki/Manual:Image_Authorization.",
 'img-auth-notindir' => "El percorso richiesto no'l se cata in te la cartèla de caricamento configurà.",
@@ -1726,17 +1784,23 @@ De seguito xe elencà solo {{PLURAL:$1|la prima pagina che ponta|le prime $1 pag
 Se pode védar un [[Special:WhatLinksHere/$2|elenco par intiero]].',
 'nolinkstoimage' => 'Nissuna pàxena la punta a sto file.',
 'morelinkstoimage' => 'Varda i [[Special:WhatLinksHere/$1|altri colegamenti]] verso sto file.',
+'linkstoimage-redirect' => '$1 (rimando file) $2',
 'duplicatesoffile' => '{{PLURAL:$1|El file seguente el xe un dopion|I $1 file seguenti i xe dei dopioni}} de sto file ([[Special:FileDuplicateSearch/$2|ulteriori detagli]]):',
 'sharedupload' => 'Sto file el vien da $1 e se pole dopararlo anca su altri progeti.',
 'sharedupload-desc-there' => 'Sto file el vien da $1 e se pode dopararlo su altri projeti.
 Consulta la [$2 pàxena de descrission del file] par ulteriori informassion.',
 'sharedupload-desc-here' => 'Sto file el vien da $1 e se pode dopararlo su altri projeti.
 Qua soto vien mostrà la descrission presente in te la [$2 pàxena de descrission del file].',
+'sharedupload-desc-edit' => "Sto file el vien da $1 e 'l pol esar doparà da altri projeti.
+Probabilmente te vui modifegar ła descrision prexente inte ła [$2 pàjina de descrision del file].",
+'sharedupload-desc-create' => "Sto file el vien da $1 e 'l pol esar doparà da altri projeti.
+Probabilmente te vui modifegar ła descrision prexente inte ła [$2 pàjina de descrision del file].",
 'filepage-nofile' => 'No ghe xe nissun file co sto nome.',
 'filepage-nofile-link' => 'NO ghe xe un file co sto nome, ma te podi [$1 cargarlo su].',
 'uploadnewversion-linktext' => 'Carga na nova version de sto file',
 'shared-repo-from' => 'da $1',
 'shared-repo' => 'un archivio condiviso',
+'upload-disallowed-here' => 'Inposibiłe sovrascrivere sto file.',
 
 # File reversion
 'filerevert' => 'Ripristina $1',
@@ -1766,6 +1830,7 @@ Qua soto vien mostrà la descrission presente in te la [$2 pàxena de descrissio
 ** File duplicà',
 'filedelete-edit-reasonlist' => 'Modifica le motivazion par la scancelazion',
 'filedelete-maintenance' => 'La scancelassion e el riprìstino dei file i xe disabilità par un tocheto par manutension.',
+'filedelete-maintenance-title' => 'Inposibiłe scansełar el file.',
 
 # MIME search
 'mimesearch' => 'Serca in base al tipo MIME',
@@ -1979,10 +2044,6 @@ Protocołi suportadi: <code>$1</code> (no sta xontare nesuno de sti cuà inte ł
 'activeusers-hidesysops' => 'Scondi i aministradori',
 'activeusers-noresult' => 'Nissun utente catà.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Novi utenti',
-'newuserlogpagetext' => 'Sto qua el xè el registro dei novi utenti registrai.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Diriti dei grupi utenti',
 'listgrouprights-summary' => 'Sta qua la xe na lista dei grupi de utenti definìi su sta wiki, coi diriti asocià a ognuno.
@@ -2070,10 +2131,21 @@ I futuri canbiamenti a sta pagina e a la so pagina de discussion i se vedarà fo
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => "Taco a tegner d'ocio...",
 'unwatching' => "Desmeto de tegner d'ocio...",
+'watcherrortext' => 'S\'à verifegà un eror durante ła modifega de łe tegnùe d\'ocio par "$1".',
 
 'enotif_mailer' => 'Sistema de notifica via e-mail de {{SITENAME}}',
 'enotif_reset' => 'Segna tute le pagine come zà viste',
 'enotif_impersonal_salutation' => 'Utente de {{SITENAME}}',
+'enotif_subject_deleted' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta scansełà da {{gender:$2|$2}}',
+'enotif_subject_created' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta creà da {{gender:$2|$2}}',
+'enotif_subject_moved' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta spostà da {{gender:$2|$2}}',
+'enotif_subject_restored' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta ripristinà da {{gender:$2|$2}}',
+'enotif_subject_changed' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta canbià da {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta scansełà da {{gender:$2|$2}} el $PAGEEDITDATE (varda $3 par ła version atuałe).',
+'enotif_body_intro_created' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta creà da {{gender:$2|$2}} el $PAGEEDITDATE (varda $3 par ła version atuałe).',
+'enotif_body_intro_moved' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta spostà da {{gender:$2|$2}} el $PAGEEDITDATE (varda $3 par ła version atuałe).',
+'enotif_body_intro_restored' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta ripristinà da {{gender:$2|$2}} el $PAGEEDITDATE (varda $3 par ła version atuałe).',
+'enotif_body_intro_changed' => 'Ła pàjina $1 de {{SITENAME}} ła xe sta canbià da {{gender:$2|$2}} el $PAGEEDITDATE (varda $3 par ła version atuałe).',
 'enotif_lastvisited' => 'Varda $1 par tute le modifiche da la to ultima visita.',
 'enotif_lastdiff' => 'Varda $1 par visualizar la modifica.',
 'enotif_anon_editor' => 'utente anonimo $1',
@@ -2103,6 +2175,8 @@ $UNWATCHURL
 
 Par riscontri e ulteriore assistensa:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'creà',
+'changed' => 'canbià',
 
 # Delete
 'deletepage' => 'Scancela pagina',
@@ -2138,6 +2212,8 @@ Varda $2 par n'elenco de le ultime pagine scanselà.",
 'rollback' => 'Anuła łe modifighe',
 'rollback_short' => 'Rollback',
 'rollbacklink' => 'tira indrìo i canbiamenti',
+'rollbacklinkcount' => 'rollback de {{PLURAL:$1|na modifega|$1 modifeghe}}',
+'rollbacklinkcount-morethan' => 'rollback de pì de {{PLURAL:$1|na modifega|$1 modifeghe}}',
 'rollbackfailed' => 'Ripristino mìa riussìo',
 'cantrollback' => "No xè mia possibiłe tornar a na versión precedente: l'ultima modifica la xè stà aportà da l'unico utente che gà laorà a sto articoło.",
 'alreadyrolled' => "No xè mia possibile efetuar el ripristino de [[:$1]] da [[User:$2|$2]] ([[User talk:$2|discussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); qualcun altro gà xà modificà o efetuà el ripristino de sta voxe.
@@ -2163,6 +2239,10 @@ Vedi ła [[Special:ProtectedPages|lista dełe pajine protete]] pa l'elenco de ł
 'protect-title' => 'Canbia el livèl de protezion par "$1"',
 'protect-title-notallowed' => 'Varda el livelo de protesion de " $1 "',
 'prot_1movedto2' => '[[$1]] spostà a [[$2]]',
+'protect-badnamespace-title' => 'Namespace nò protexibiłe',
+'protect-badnamespace-text' => 'Łe pàjine in sto namespace nò łe pol esar protete.',
+'protect-norestrictiontypes-text' => 'Sta pàjina nò ła pol esar proteta parché nò ghe xe gnaun tipo de restrision disponibiłe.',
+'protect-norestrictiontypes-title' => 'Pàjina nò protexibiłe',
 'protect-legend' => 'Conferma la protezion',
 'protectcomment' => 'Motivassion:',
 'protectexpiry' => 'Scadensa:',
@@ -2182,6 +2262,7 @@ Le impostazion atuali par la pagina le xe '''$1''':",
 'protect-level-sysop' => 'Solo aministradori',
 'protect-summary-cascade' => 'ricorsiva',
 'protect-expiring' => 'scadensa: $1 (UTC)',
+'protect-expiring-local' => 'scade el $1',
 'protect-expiry-indefinite' => 'infinìo',
 'protect-cascade' => "Protezion ricorsiva (l'estende la protezion a tute le pagine incluse in sta qua).",
 'protect-cantedit' => 'No te pol canbiar i livèi de protezion par la pagina, parché no te ghè mìa i parmessi necessari par modifegar la pagina stessa.',
@@ -2247,6 +2328,7 @@ Se dopo ła scancełazion xè stà creà na nova pàxena col stesso titoło, łe
 
 Consulta el [[Special:Log/delete|registro de le scancełassion]] par vardare łe scancełassion e i recuperi pì reçenti.",
 'undelete-header' => 'Varda el [[Special:Log/delete|registro de le scancelazion]] par védar le scancelazion piassè reçenti.',
+'undelete-search-title' => 'Serca inte łe pàjine scanselae',
 'undelete-search-box' => 'Serca ne le pagine scancelà',
 'undelete-search-prefix' => 'Mostra le pagine el cui titolo scuminsia con:',
 'undelete-search-submit' => 'Serca',
@@ -2255,6 +2337,7 @@ Consulta el [[Special:Log/delete|registro de le scancełassion]] par vardare łe
 'undelete-bad-store-key' => "No se pol anular la scancelazion de la revision del file con data/ora $1: el file no'l xera disponibile prima de la scancelazion.",
 'undelete-cleanup-error' => 'Eror ne la scancelazion del file de archivio non doparà "$1".',
 'undelete-missing-filearchive' => "No se pol ripristinar l'ID $1 de l'archivio file in quanto no'l ghe xe mìà nel database. El podarìa èssar stà zà ripristinà.",
+'undelete-error' => "Eror inte'l ripristino de ła pàjina",
 'undelete-error-short' => 'Eror nel ripristino del file: $1',
 'undelete-error-long' => 'Se gà verificà dei erori nel tentativo de anular la scancelazion del file:
 
@@ -2265,6 +2348,9 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Namespace:',
 'invert' => 'Inverti la selession',
+'tooltip-invert' => "Sełesion sta caxeła par scondare łe modifeghe a łe pàjine drento del namespace sełesionà (e 'l rełativo namespace, se sełesionà)",
+'namespace_association' => 'Namespace asocià',
+'tooltip-namespace_association' => "Sełesiona sta caxeła pa' includare anca ła pàjina de discusion o 'l ogeto del namespace asocià cò 'n namespace sełesionà",
 'blanknamespace' => '(Prinsipale)',
 
 # Contributions
@@ -2351,6 +2437,9 @@ $1',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] xe stà blocà.<br />
 Varda [[Special:BlockList|lista IP blocadi]] par vedare tuti i blochi.',
 'ipb-blockingself' => 'Sito drio blocar te steso! Sito sicuro de voerlo fare?',
+'ipb-confirmhideuser' => 'Se sta par blocar un utente cò l\'opsion "Scondi utente" abiłità.
+In sto modo se evita che\'l nome utente el vegne fora inte łeliste e łe voxe del registro.
+Sito seguro de vołer continuar?',
 'ipb-edit-dropdown' => 'Motivi par el bloco',
 'ipb-unblock-addr' => 'Sbloca $1',
 'ipb-unblock' => 'Sbloca un utente o un indirizo IP',
@@ -2362,8 +2451,19 @@ Varda [[Special:BlockList|lista IP blocadi]] par vedare tuti i blochi.',
 'unblocked' => '[[User:$1|$1]] el xe stà sblocà',
 'unblocked-range' => '$1 xè stà sblocà',
 'unblocked-id' => 'El bloco $1 el xe stà cavà',
+'blocklist' => 'Utenti blocai',
 'ipblocklist' => 'Utenti blocà',
 'ipblocklist-legend' => 'Cata fora un utente blocà',
+'blocklist-userblocks' => 'Scondi i blochi de i account',
+'blocklist-tempblocks' => 'Scondi i blochi tenporanei',
+'blocklist-addressblocks' => 'Scondi i blochi de un IP ugnoło',
+'blocklist-rangeblocks' => 'Scondi i blochi de range',
+'blocklist-timestamp' => 'Date e ora',
+'blocklist-target' => 'Destinasion',
+'blocklist-expiry' => 'Scade',
+'blocklist-by' => 'Aministrador che ga blocà',
+'blocklist-params' => 'Parametri de bloco',
+'blocklist-reason' => 'Motivo',
 'ipblocklist-submit' => 'Serca',
 'ipblocklist-localblock' => 'Bloco local',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
@@ -2405,6 +2505,7 @@ Qua soto ghe xe el registro de le sopression:',
 'ipb_already_blocked' => 'L\'utente "$1" el xe zà blocà',
 'ipb-needreblock' => '$1 xe xà blocà. Vuto canbiar le inpostassion?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
+'unblock-hideuser' => "Nò te poi sblocar sto utente, parché el so nome utente 'l'è sta sconto.",
 'ipb_cant_unblock' => 'Eror: Inpossibile catar el bloco con ID $1. El bloco el podarìa èssar zà stà cavà.',
 'ipb_blocked_as_range' => "Eror: L'indirizo IP $1 no'l xe sogeto a bloco individual e no'l pol èssar sblocà. El bloco el xe invesse ativo a livel de l'intervalo $2, che el pol èssar sblocà.",
 'ip_range_invalid' => 'Intervało de indirissi IP mìa vałido.',
@@ -2510,13 +2611,14 @@ Par piaser, métighe un titolo difarente.",
 
 La voxe specificà come destinassion "[[:$1]]" l\'esiste xà. Vóto scancełarla par proseguir con ło spostamento?',
 'delete_and_move_confirm' => 'Sì, scancèla la pagina',
-'delete_and_move_reason' => "Scancelà par spostar n'altra pagina a sto titolo",
+'delete_and_move_reason' => 'Scancelà par rendar posibiłe el spostamento da "$1"',
 'selfmove' => 'No se pol spostar, el titolo novo el xe conpagno del vecio.',
 'immobile-source-namespace' => 'No te pol spostar pàxene in tel namespace "$1"',
 'immobile-target-namespace' => 'No te pol spostar pàxene \'ntel namespace "$1"',
 'immobile-target-namespace-iw' => "El colegamento interwiki no'l xe na valida destinassion in do spostar na pàxena.",
 'immobile-source-page' => 'Sta pàxena no la pol vegner spostà.',
 'immobile-target-page' => 'No te pol spostar a sto titolo.',
+'bad-target-model' => 'Ła destinasion dexiderà ła dopara un modèl de contegnui difarente. Nò xe posibiłe convertir da $1 a $2.',
 'imagenocrossnamespace' => 'No se pol spostar un file verso un namespace diverso da quelo dei file.',
 'nonfile-cannot-move-to-file' => 'Tuto quel che no xe un file, no se pode spostarlo al namespace dei file.',
 'imagetypemismatch' => "L'estension nova del file no la corisponde mìa al tipo de file",
@@ -2538,9 +2640,11 @@ Questo el pode in seguito vegner inportà in te n\'altro wiki che dòpara el sof
 Par esportar le pàxene, scrivi i tìtoli in te la casèla qua soto, un tìtolo par riga, e selessiona se te voli la version ùltima con tute le version preçedenti e el storico de le modìfeghe, opure la version ùltima con solo le informassion de l\'ùltima modìfega.
 
 Nel secondo caso te poli anca doparar un colegamento, par esenpio [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] par la pàxena "[[{{MediaWiki:Mainpage}}]]".',
+'exportall' => 'Esporta tute łe pàjine',
 'exportcuronly' => "Includi soło ła version attuałe, no l'intera cronołogia",
 'exportnohistory' => "----
 '''Ocio!''' Par motivi ligà a le prestazion del sistema xè stà disabiłità l'esportazion de tuta ła storia de łe pàxene fata co sto modulo.",
+'exportlistauthors' => "Includi 'l elenco conpleto de i contribudori pa' ogni pajina",
 'export-submit' => 'Esporta',
 'export-addcattext' => 'Zonta pagine da la categoria:',
 'export-addcat' => 'Zonta',
@@ -2573,6 +2677,8 @@ Par piaser visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
 'thumbnail_error' => 'Eror ne la creazion de la miniatura: $1',
 'djvu_page_error' => 'Nùmaro de pagina DjVu sbaglià',
 'djvu_no_xml' => "Inpossibile otegner l'XML par el file DjVu",
+'thumbnail-temp-create' => 'Inposibiłe crear el file tenporaneo de łe miniadure',
+'thumbnail-dest-create' => 'Inposibiłe salvar ła miniadura inte ła destinasion',
 'thumbnail_invalid_params' => 'Parametri anteprima mìa giusti',
 'thumbnail_dest_directory' => 'Inpossibile crear la directory de destinazion',
 'thumbnail_image-type' => 'Tipo de imagine mia suportà',
@@ -2590,6 +2696,7 @@ Tute łe operazion de inportazion trans-wiki łe xè notà nel [[Special:Log/imp
 'import-interwiki-templates' => 'Tira dentro tuti i modèi',
 'import-interwiki-submit' => 'Inporta',
 'import-interwiki-namespace' => 'Namespace de destinassion:',
+'import-interwiki-rootpage' => 'Pàjina prinsipałe de destinasion (opsionałe):',
 'import-upload-filename' => 'Nome del file:',
 'import-comment' => 'Comento:',
 'importtext' => "Se połe esportare el file da ła fonte wiki doparando ła [[Special:Export|funsion de esportasion]].
@@ -2617,6 +2724,11 @@ Salveło so'l to conpiuter e carghelo cuà.",
 'import-upload' => 'Carga dati XML',
 'import-token-mismatch' => "I dati relativi a la session i xe 'ndài persi. Par piaser, próa da novo.",
 'import-invalid-interwiki' => 'No se pode inportar da la wiki indicà.',
+'import-error-edit' => 'Ła pàjina "$1" nò ła xe sta inportà parché no te si autorixà a modifegarla.',
+'import-error-create' => 'Ła pàjina "$1" nò ła xe sta inportà parché no te si autorixà a crearla.',
+'import-error-interwiki' => 'Ła pàjina "$1" nò ła vien inportà parché el so nome el xe riservà pa\'l ligamento foresto (interwiki).',
+'import-error-special' => 'Ła pàjina "$1" nò ła vien inportà parché ła apartien a un namespace speciałe che nò \'l permete pàjine.',
+'import-error-invalid' => 'Ła pàjina "$1" nò ła vien inportà parché el so nome nò \'l xe vałido.',
 
 # Import log
 'importlogpage' => 'Inportassion',
@@ -3436,6 +3548,7 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
 'logentry-newusers-create2' => '$1 ga creà na utensa $3',
 'logentry-newusers-autocreate' => "L'utensa $1 xè stà creà automategamente",
 'newuserlog-byemail' => 'password spedìa par e-mail',
+'rightsnone' => '(nissun)',
 
 # Feedback
 'feedback-subject' => 'Ogeto:',
index 5a8164c..3980a0a 100644 (file)
@@ -1197,11 +1197,13 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'right-sendemail' => 'Oigeta e-počtad toižile kävutajile',
 'right-passwordreset' => 'Kacta e-kirjeižid peitsanan toižetandanke',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Kävutajiden registracijan aigkirj',
+'newuserlogpagetext' => 'Tantoi registriruidud kävutajiden nimikirjutez.',
+
 # User rights log
 'rightslog' => 'Kävutajan oiktusiden aigkirj',
 'rightslogtext' => 'Nece om kävutajan oiktusiden toižetusen aigkirj.',
-'rightslogentry' => 'toižetin $1-kävutajan ühtnend gruppiš - oli $2, linneb $3',
-'rightsnone' => '(ei ole)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => "lugeda necidä lehtpol't",
@@ -1688,10 +1690,6 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 'activeusers-hidesysops' => 'Peitta administratorid',
 'activeusers-noresult' => 'Kävutajad ei olgoi löutud.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Kävutajiden registracijan aigkirj',
-'newuserlogpagetext' => 'Tantoi registriruidud kävutajiden nimikirjutez.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Kävutajiden gruppiden oiktused',
 'listgrouprights-group' => 'Grupp',
@@ -1800,6 +1798,8 @@ $UNWATCHURL
 
 Pid\'oitelend da joksii abu:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'om sätud',
+'changed' => 'om toižetadud',
 
 # Delete
 'deletepage' => "Čuta lehtpol' poiš",
@@ -3058,6 +3058,7 @@ Kävutagat normaline ezikacund.',
 'revdelete-restricted' => 'kaidendused administratoriden täht',
 'revdelete-unrestricted' => 'kaidendused heittud administratoriden täht',
 'newuserlog-byemail' => 'peisana om oigetud e-počtadme',
+'rightsnone' => '(ei ole)',
 
 # Feedback
 'feedback-subject' => 'Tem:',
index 98e7448..0c258ec 100644 (file)
@@ -408,13 +408,13 @@ $messages = array(
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Thể loại|Thể loại}}',
 'category_header' => 'Các trang trong thể loại “$1”',
-'subcategories' => 'Tiểu thể loại',
+'subcategories' => 'Thể loại con',
 'category-media-header' => 'Các tập tin trong thể loại “$1”',
 'category-empty' => "''Thể loại này hiện không có trang hay tập tin nào.''",
 'hidden-categories' => '{{PLURAL:$1|Thể loại ẩn|Thể loại ẩn}}',
 'hidden-category-category' => 'Thể loại ẩn',
-'category-subcat-count' => 'Thể loại này gồm {{PLURAL:$2|tiểu thể loại sau|{{PLURAL:$1||$1}} tiểu thể loại sau, trên tổng số $2 tiểu thể loại}}.',
-'category-subcat-count-limited' => 'Thể loại này gồm {{PLURAL:$1|tiểu thể loại|$1 tiểu thể loại}} sau.',
+'category-subcat-count' => 'Thể loại này gồm {{PLURAL:$2|thể loại con sau|{{PLURAL:$1||$1}} thể loại con sau, trên tổng số $2 thể loại con}}.',
+'category-subcat-count-limited' => 'Thể loại này gồm {{PLURAL:$1|thể loại con|$1 thể loại con}} sau.',
 'category-article-count' => '{{PLURAL:$2|Thể loại này gồm trang sau.|{{PLURAL:$1|Trang|$1 trang}} sau nằm trong thể loại này, trên tổng số $2 trang.}}',
 'category-article-count-limited' => '{{PLURAL:$1|Trang|$1 trang}} sau nằm trong thể loại hiện hành.',
 'category-file-count' => '{{PLURAL:$2|Thể loại này gồm tập tin sau.|{{PLURAL:$1|Tập tin|$1 tập tin}} sau nằm trong thể loại này, trong tổng số $2 tập tin.}}',
@@ -429,6 +429,7 @@ $messages = array(
 'newwindow' => '(mở cửa sổ mới)',
 'cancel' => 'Hủy bỏ',
 'moredotdotdot' => 'Thêm nữa…',
+'morenotlisted' => 'Có nhiều hơn danh sách này…',
 'mypage' => 'Trang cá nhân',
 'mytalk' => 'Tin nhắn',
 'anontalk' => 'Thảo luận với IP này',
@@ -544,8 +545,8 @@ $1',
 'policy-url' => 'Project:Quy định và hướng dẫn',
 'portal' => 'Cộng đồng',
 'portal-url' => 'Project:Cộng đồng',
-'privacy' => 'Chính sách về sự riêng tư',
-'privacypage' => 'Project:Chính sách về sự riêng tư',
+'privacy' => 'Quy định quyền riêng tư',
+'privacypage' => 'Project:Quy định quyền riêng tư',
 
 'badaccess' => 'Lỗi về quyền truy cập',
 'badaccess-group0' => 'Bạn không được phép thực hiện thao tác này.',
@@ -788,6 +789,7 @@ Xin hãy đợi chốc lát rồi thử lại.',
 # E-mail sending
 'php-mail-error-unknown' => 'Lỗi không rõ trong hàm PHP mail()',
 'user-mail-no-addy' => 'Không có địa chỉ để gửi thư điện tử đến',
+'user-mail-no-body' => 'Không thể gửi thư điện tử rỗng hoặc có nội dung ngắn một cách vô lý.',
 
 # Change password dialog
 'resetpass' => 'Đổi mật khẩu',
@@ -1314,7 +1316,7 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'searchprofile-everything-tooltip' => 'Tìm tất cả nội dung (gồm cả các trang thảo luận)',
 'searchprofile-advanced-tooltip' => 'Tìm trong không gian tên tùy chọn',
 'search-result-size' => '$1 ({{PLURAL:$2|1 từ|$2 từ}})',
-'search-result-category-size' => '{{PLURAL:$1|1 trang thành viên|$1 trang thành viên}} ({{PLURAL:$2|1 tiểu thể loại|$2 tiểu thể loại}}, {{PLURAL:$3|1 tập tin|$3 tập tin}})',
+'search-result-category-size' => '$1 trang thành viên ($2 thể loại con, $3 tập tin)',
 'search-result-score' => 'Độ phù hợp: $1%',
 'search-redirect' => '(đổi hướng $1)',
 'search-section' => '(đề mục $1)',
@@ -1582,15 +1584,13 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'right-sendemail' => 'Gửi thư điện tử cho thành viên khác',
 'right-passwordreset' => 'Xem các thư điện tử đặt lại mật khẩu',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Nhật trình mở tài khoản',
+'newuserlogpagetext' => 'Đây là danh sách những tài khoản thành viên mở lên gần đây.',
+
 # User rights log
 'rightslog' => 'Nhật trình cấp quyền thành viên',
 'rightslogtext' => 'Đây là nhật trình lưu những thay đổi đối với các quyền hạn thành viên.',
-'rightslogentry' => 'đã đổi các nhóm liên kết của thành viên $1 từ $2 thành $3',
-'rightslogentry-autopromote' => 'được tự động phong cấp từ $2 đến $3',
-'logentry-rights-rights' => '$1 đã đổi các nhóm liên kết của $3 từ $4 đến $5',
-'logentry-rights-rights-legacy' => '$1 đã đổi các nhóm liên kết của $3',
-'logentry-rights-autopromote' => '$1 đã được tự động phong cấp từ $4 đến $5',
-'rightsnone' => '(không có)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'đọc trang này',
@@ -2145,7 +2145,7 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'movethispage' => 'Di chuyển trang này',
 'unusedimagestext' => 'Các tập tin sau tồn tại nhưng chưa được nhúng vào trang nào.
 Xin lưu ý là các trang Web bên ngoài có thể liên kết đến một tập tin ở đây qua một địa chỉ URL trực tiếp, do đó nhiều tập tin vẫn được liệt kê ở đây dù có thể nó đang được sử dụng.',
-'unusedcategoriestext' => 'Các trang thể loại này tồn tại mặc dù không có trang hay tiểu thể loại nào thuộc về nó.',
+'unusedcategoriestext' => 'Các trang thể loại này tồn tại mặc dù không có trang hay thể loại con nào thuộc về nó.',
 'notargettitle' => 'Chưa có mục tiêu',
 'notargettext' => 'Xin chỉ rõ trang hoặc thành viên cần thực hiện tác vụ.',
 'nopagetitle' => 'Không có trang đích nào như vậy',
@@ -2234,10 +2234,6 @@ Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
 'activeusers-hidesysops' => 'Ẩn bảo quản viên',
 'activeusers-noresult' => 'Không thấy thành viên.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Nhật trình mở tài khoản',
-'newuserlogpagetext' => 'Đây là danh sách những tài khoản thành viên mở lên gần đây.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Nhóm thành viên',
 'listgrouprights-summary' => 'Dưới đây là danh sách nhóm thành viên được định nghĩa tại wiki này, với mức độ truy cập của từng nhóm.
@@ -2372,6 +2368,8 @@ $UNWATCHURL
 
 Phản hồi và cần sự hỗ trợ:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'viết mới',
+'changed' => 'thay đổi',
 
 # Delete
 'deletepage' => 'Xóa trang',
@@ -2440,6 +2438,8 @@ quay về phiên bản cuối của $2.',
 'prot_1movedto2' => '[[$1]] đổi thành [[$2]]',
 'protect-badnamespace-title' => 'Không gian tên không thể khóa',
 'protect-badnamespace-text' => 'Không thể khóa các trang tại không gian tên này.',
+'protect-norestrictiontypes-text' => 'Không thể khóa trang này vì không có sẵn tác vụ nào để hạn chế.',
+'protect-norestrictiontypes-title' => 'Trang không khóa được',
 'protect-legend' => 'Xác nhận khóa',
 'protectcomment' => 'Lý do:',
 'protectexpiry' => 'Thời hạn:',
@@ -2972,10 +2972,10 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'tooltip-pt-anonlogin' => 'Không đăng nhập vẫn tham gia được, tuy nhiên đăng nhập sẽ lợi hơn.',
 'tooltip-pt-logout' => 'Đăng xuất',
 'tooltip-ca-talk' => 'Thảo luận về trang này',
-'tooltip-ca-edit' => 'Bạn có thể sửa được trang này. Xin xem thử trước khi lưu.',
+'tooltip-ca-edit' => 'Bạn có thể sửa được trang này! (Xin vui lòng xem thử trước khi lưu.)',
 'tooltip-ca-addsection' => 'Bắt đầu một đề mục mới',
 'tooltip-ca-viewsource' => 'Trang này được khóa. Bạn có thể xem mã nguồn.',
-'tooltip-ca-history' => 'Những phiên bản cũ của trang này.',
+'tooltip-ca-history' => 'Các phiên bản cũ của trang này',
 'tooltip-ca-protect' => 'Khóa trang này lại',
 'tooltip-ca-unprotect' => 'Thay đổi mức khóa của trang này',
 'tooltip-ca-delete' => 'Xóa trang này',
@@ -3120,7 +3120,8 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'pageinfo-recent-authors' => 'Số người dùng sửa đổi gần đây',
 'pageinfo-magic-words' => 'Từ thần chú ($1)',
 'pageinfo-hidden-categories' => 'Thể loại ẩn ($1)',
-'pageinfo-templates' => 'Bản mẫu được nhúng ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Bản mẫu|Các bản mẫu}} được nhúng ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Trang|Các trang}} nhúng ($1)',
 'pageinfo-toolboxlink' => 'Thông tin trang',
 'pageinfo-redirectsto' => 'Đổi hướng đến',
 'pageinfo-redirectsto-info' => 'thông tin',
@@ -3129,6 +3130,10 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'pageinfo-protect-cascading' => 'Khóa theo tầng từ đây',
 'pageinfo-protect-cascading-yes' => 'Có',
 'pageinfo-protect-cascading-from' => 'Khóa theo tầng từ',
+'pageinfo-category-info' => 'Thông tin về thể loại',
+'pageinfo-category-pages' => 'Số trang',
+'pageinfo-category-subcats' => 'Số thể loại con',
+'pageinfo-category-files' => 'Số tập tin',
 
 # Skin names
 'skinname-standard' => 'Cổ điển',
@@ -3220,6 +3225,8 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
 'minutes' => '$1 phút',
 'hours' => '$1 giờ',
 'days' => '$1 ngày',
+'months' => '$1 tháng',
+'years' => '$1 năm',
 'ago' => 'cách đây $1',
 'just-now' => 'hồi nãy',
 
@@ -4089,6 +4096,10 @@ Các hình ảnh được hiển thị ở kích thước tối đa, còn các l
 'logentry-newusers-create2' => '$1 đã mở tài khoản người dùng $3',
 'logentry-newusers-autocreate' => 'Tài khoản $1 đã được mở tự động',
 'newuserlog-byemail' => 'gửi mật khẩu qua thư điện tử',
+'logentry-rights-rights' => '$1 đã đổi các nhóm liên kết của $3 từ $4 đến $5',
+'logentry-rights-rights-legacy' => '$1 đã đổi các nhóm liên kết của $3',
+'logentry-rights-autopromote' => '$1 đã được tự động phong cấp từ $4 đến $5',
+'rightsnone' => '(không có)',
 
 # Feedback
 'feedback-bugornote' => 'Nếu bạn đã sẵn sàng để miêu tả các chi tiết của một vấn đề kỹ thuật, xin vui lòng [$1 báo cáo lỗi].
index 8060c4f..926cb12 100644 (file)
@@ -549,6 +549,9 @@ Hirmid sagsd, das Du den dhägsd '''selbâr gschriim''' hasd, das däär dhägsd
 
 'grouppage-sysop' => '{{ns:project}}:Adminisdradoorn',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Brodoghol iwâr dii naja bearbajdâr-ôômeldunga',
+
 # User rights log
 'rightslog' => 'Brodoghol fo rächde-dsuudaalung an bearbajdâr',
 
@@ -648,9 +651,6 @@ S'gajd awâr aa â [[Special:WhatLinksHere/$2|lisdn mid alâ fârwajs]].",
 # Special:LinkSearch
 'linksearch' => 'Linggs nach ausârhalb',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Brodoghol iwâr dii naja bearbajdâr-ôômeldunga',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(Lisdn fon dâ midgliidâr)',
 
index 0227917..b6774ea 100644 (file)
@@ -1138,11 +1138,13 @@ Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sä
 'right-siteadmin' => 'Lökofärmükön e maifükön nünodemi',
 'right-sendemail' => 'Sedön penedis leäktronik lü gebans votik',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Lised gebanijafamas',
+'newuserlogpagetext' => 'Is palisedons jafams gebanas nulik.',
+
 # User rights log
 'rightslog' => 'Jenotalised gebanagitätas',
 'rightslogtext' => 'Is palisedons votükams gebanagitätas.',
-'rightslogentry' => 'grupalimanam gebana: $1 pevotükon de $2 ad $3',
-'rightsnone' => '(nonik)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'reidön padi at',
@@ -1606,10 +1608,6 @@ Protoks pestütöl: <code>$1</code>',
 'activeusers-hidesysops' => 'Klänedolöd guvanis',
 'activeusers-noresult' => 'Geban nonik petuvon.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Lised gebanijafamas',
-'newuserlogpagetext' => 'Is palisedons jafams gebanas nulik.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gitäts gebanagrupa',
 'listgrouprights-summary' => 'Is palisedons gebanagrups in vük at dabinöls, sa gitäts tefik onsik.
@@ -1716,6 +1714,8 @@ Ad votükön parametami galädaliseda olik, loglös
 
 Küpets e yuf pluik:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'pejafon',
+'changed' => 'pevotüköl',
 
 # Delete
 'deletepage' => 'Moükolöd padi',
@@ -2810,6 +2810,7 @@ Magods pajonons ma fomät gudikün, ragivasots votik pamaifükons stedöfo kobü
 'revdelete-restricted' => 'miedükams pelonöfükons pro guvans',
 'revdelete-unrestricted' => 'miedükams pro guvans pemoükons',
 'newuserlog-byemail' => 'letavöd pesedon me pot leäktronik',
+'rightsnone' => '(nonik)',
 
 # Search suggestions
 'searchsuggest-search' => 'Suk',
index ea10aee..f02e1ba 100644 (file)
@@ -948,11 +948,12 @@ Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'right-ipblock-exempt' => 'Minnäq müüdä automaatsist kinniqpidämiisist ni aadrõsijao ja IP-kinniqpidämiisist',
 'right-proxyunbannable' => 'Minnäq müüdä automaatsist vaihõserveri kinniqpidämiisist',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Vahtsõq pruukjaq',
+
 # User rights log
 'rightslog' => 'Pruukmisõiguisi muutmisõ nimekiri',
 'rightslogtext' => 'Taa om pruukmisõiguisi muutmiisi nimekiri.',
-'rightslogentry' => 'Pruukja $1 õigusõq muudõti ümbre rühmäst $2 rühmä $3',
-'rightsnone' => '(olõ-i õiguisi)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'seod lehte toimõndaq',
@@ -1287,9 +1288,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Näütäq',
 'listusers-noresult' => 'Olõ-s pruukjit.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Vahtsõq pruukjaq',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Pruukjarühmi õigusõq',
 'listgrouprights-members' => '(liikmidõ nimekiri)',
@@ -1371,6 +1369,8 @@ Inämb seo lehe kotsilõ teedäqandmiisi saadõta-i. Võit ka kõik su perräkae
 Perräkaemisnimekirä säädmiisi saat muutaq lehe pääl: {{canonicalurl:Special:Watchlist/edit}}
 
 As\'a kotsilõ mano kaiaq ja küssü saat lehe päält: {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'lehe loonuq',
+'changed' => 'lehte muutnuq',
 
 # Delete
 'deletepage' => 'Kistudaq lehekülg ärq',
@@ -2262,4 +2262,7 @@ Prooviq harilikku kaehust.',
 'specialpages-group-wiki' => 'Vikiteedüseq ja tüüriistaq',
 'specialpages-group-redirects' => 'Ümbrenäütämistallitusleheq',
 
+# New logging system
+'rightsnone' => '(olõ-i õiguisi)',
+
 );
index abdee4b..3ba9d00 100644 (file)
@@ -1060,12 +1060,13 @@ Ciste infôrmacion serè publike po tertos.",
 'right-unblockself' => 'Si disbloker lu-minme',
 'right-protect' => "Candjî les liveas d' protedjaedje eyet candjî les pådjes protedjeyes",
 
+# Special:Log/newusers
+'newuserlogpage' => 'Djournå des noveas uzeus',
+'newuserlogpagetext' => "Chal pa dzo c' est ene djivêye des uzeus novelmint eredjîstrés.",
+
 # User rights log
 'rightslog' => 'Djournå des droets des uzeus',
 'rightslogtext' => "Çouchal, c' est on djournå des candjmints des droets des uzeus.",
-'rightslogentry' => "a candjî l' uzeu «$1» do groupe «$2» viè «$3»",
-'rightslogentry-autopromote' => 'a stî otomaticmint candjî di «$2» a «$3»',
-'rightsnone' => '(nouk)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'lére cisse pådje ci',
@@ -1423,10 +1424,6 @@ Protocoles ricnoxhous: <code>$1</code> (nelzès metoz nén dins vosse tchinne di
 '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)',
 
@@ -1519,6 +1516,8 @@ $UNWATCHURL
 
 Po pus d\' aidance:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'ahivêye',
+'changed' => 'candjeye',
 
 # Delete
 'deletepage' => "Disfacer l' pådje",
@@ -2341,6 +2340,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 '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",
+'rightsnone' => '(nouk)',
 
 # Feedback
 'feedback-subject' => 'Sudjet',
index 649e13f..2d9185d 100644 (file)
@@ -985,9 +985,12 @@ Diri ka gintutugotan pagliwat han mga katungod han gumaramit ha iba nga mga wiki
 'right-userrights-interwiki' => 'Igliwat an mga katungod han gumaramit han mga gumaramit ha iba nga mga wiki',
 'right-sendemail' => 'Padad-i hin e-mail ngada ha iba nga mga gumaramit',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Talaan han paghimo hin gumaramit',
+'newuserlogpagetext' => 'Ini an talaan han mga nagkahihimo nga mga gumaramit.',
+
 # User rights log
 'rightslog' => 'Talaan hin mga katungod han gumaramit',
-'rightsnone' => '(waray)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaha ini nga pakli',
@@ -1353,10 +1356,6 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 'activeusers-hidesysops' => 'Igtago an mga magdudumara',
 'activeusers-noresult' => 'Waray gumaramit nga nahiagian.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Talaan han paghimo hin gumaramit',
-'newuserlogpagetext' => 'Ini an talaan han mga nagkahihimo nga mga gumaramit.',
-
 # Special:ListGroupRights
 'listgrouprights-group' => 'Hugpo',
 'listgrouprights-rights' => 'Mga katungod',
@@ -1404,6 +1403,8 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 
 'enotif_impersonal_salutation' => 'gumaramit han {{SITENAME}}',
 'enotif_anon_editor' => 'waray magpakilala nga gumaramit $1',
+'created' => 'nahimo',
+'changed' => 'naliwanan',
 
 # Delete
 'deletepage' => 'Igpara an pakli',
@@ -2203,6 +2204,7 @@ An iba in daan nakatago.
 'logentry-newusers-create2' => '$1 in naghimo hin gumaramit nga akawnt $3',
 'logentry-newusers-autocreate' => 'An akawnt nga $1 in lugaring nga nahimo',
 'newuserlog-byemail' => 'Ginpadangat an tigaman-pagsulod pinaagi han e-mail',
+'rightsnone' => '(waray)',
 
 # Feedback
 'feedback-subject' => 'Himangrawon:',
index e89f6e0..192fc84 100644 (file)
@@ -1124,11 +1124,13 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'right-siteadmin' => 'Caabi walla caabeedi dàttub njoxe bi',
 'right-override-export-depth' => 'génne ay xët yu ëmbi xët yu lëkkaloo ba-ci xóotaay bu tolluwaayam àgg 5',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Jëfandikukat yu yees yi',
+'newuserlogpagetext' => 'Xët wii daf lay won limu sáq yi fi mujjee sosu.',
+
 # User rights log
 'rightslog' => 'Sañ-sañi jëfandikukat',
 'rightslogtext' => 'Lii di toftal limu jaar-jaaru coppitey sañ-sañi jëfandikukat yi.',
-'rightslogentry' => 'moo jële jëfandikukat bii di « $1 » ci mbooloo  $2  yóbb ko ci $3',
-'rightsnone' => '(menn)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'jàng wii xët',
@@ -1544,10 +1546,6 @@ Xoolal itam [[Special:WantedCategories|wàll yi ñuy laaj]].',
 'activeusers-from' => 'Wone jëfandikukat yi dalee ko ci:',
 'activeusers-noresult' => 'Benn jëfandikukat giseesu ko',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Jëfandikukat yu yees yi',
-'newuserlogpagetext' => 'Xët wii daf lay won limu sáq yi fi mujjee sosu.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Sañ-sañi mbooloom jëfandikukat mi',
 'listgrouprights-summary' => 'Lii di toftal mooy limu mboolooy jëfandikukat yi ne ci bii wiki, ak sañ-sañ yi ñu leen féetaleel.
@@ -1624,6 +1622,8 @@ Coppite yiy ñëw yu xët wi ak xëtu waxtaanuwaay wi mu àndal di nañu leen fa
 'enotif_lastvisited' => 'Nemmeekul $1 ngir gis bépp coppite dale ba sa nemmeku gu mujj.',
 'enotif_lastdiff' => 'Xoolal $1 ngir gis gii coppite.',
 'enotif_anon_editor' => 'Jëfandikukat bu binduwul $1',
+'created' => 'sosu na',
+'changed' => 'soppi',
 
 # Delete
 'deletepage' => 'Far xët wi',
@@ -2199,5 +2199,6 @@ Man nga tamit  [[Special:EditWatchlist/raw|soppi ko]].',
 'revdelete-restricted' => 'doxalub digal ngir yorkat yi',
 'revdelete-unrestricted' => 'digal ngir yorkat yi deñ na',
 'newuserlog-byemail' => 'baatujáll bi yónne nañu ko cib bataaxal',
+'rightsnone' => '(menn)',
 
 );
index cbba3a7..0dfb48e 100644 (file)
@@ -995,9 +995,11 @@ $1",
 'grouppage-sysop' => '{{ns:project}}:管理员',
 'grouppage-bureaucrat' => '{{ns:project}}:行政员',
 
+# Special:Log/newusers
+'newuserlogpage' => '用户创建日志',
+
 # User rights log
 'rightslog' => '用户权限日志',
-'rightsnone' => '(呒)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => '编辑箇只页面',
@@ -1187,9 +1189,6 @@ $1",
 # Special:ListUsers
 'listusers-submit' => '显示',
 
-# Special:Log/newusers
-'newuserlogpage' => '用户创建日志',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(成员列表)',
 
@@ -1224,6 +1223,9 @@ $1",
 'watching' => '监控……',
 'unwatching' => '解除监控……',
 
+'created' => '建立哉',
+'changed' => '改变哉',
+
 # Delete
 'deletepage' => '删脱页面',
 'confirm' => '确认',
@@ -1593,5 +1595,6 @@ Variants for Chinese language
 # New logging system
 'revdelete-restricted' => '已将限制应用到管理员',
 'revdelete-unrestricted' => '已移除对管理员个限制',
+'rightsnone' => '(呒)',
 
 );
index 69b64d2..a575bf4 100644 (file)
@@ -708,9 +708,11 @@ $1',
 'grouppage-sysop' => '{{ns:project}}:Закрачуд',
 'grouppage-bureaucrat' => '{{ns:project}}:Нойнчуд',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Бичгдлһнә сеткүл',
+
 # User rights log
 'rightslog' => 'Демнчна зөвәнә сеткүл',
-'rightsnone' => '(уга)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'эн халхиг чиклх',
@@ -853,9 +855,6 @@ $1',
 # Special:LinkSearch
 'linksearch' => 'Һаза заалһуд',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Бичгдлһнә сеткүл',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(мөчүдин сеткүл)',
 
@@ -901,6 +900,8 @@ e-mail\'ар $PAGEEDITOR_EMAIL
 
 Хәрү холва болн тус:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'бүтәв',
+'changed' => 'сольв',
 
 # Delete
 'deletepage' => 'Эн халхиг һарһҗ',
@@ -1265,4 +1266,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'htmlform-reset' => 'Сольлһиг уга кех',
 'htmlform-selectorother-other' => 'Талдан',
 
+# New logging system
+'rightsnone' => '(уга)',
+
 );
index 4f515b5..b11e2d0 100644 (file)
@@ -429,8 +429,8 @@ $1',
 'mainpage' => 'הויפט זייט',
 'mainpage-description' => 'הויפט זייט',
 'policy-url' => 'Project:פאליסי',
-'portal' => 'קאַווע שטיבל',
-'portal-url' => 'Project:קאַווע שטיבל',
+'portal' => 'קאַווע־שטיבל',
+'portal-url' => 'Project:קאַווע־שטיבל',
 'privacy' => 'פּריוואַטקייט פּאליסי',
 'privacypage' => 'Project:פּריוואַטקייט פאליסי',
 
@@ -791,9 +791,9 @@ $2
 'minoredit' => 'דאס איז א מינערדיגע ענדערונג',
 'watchthis' => 'טוט אױפֿפּאַסן דעם בלאט',
 'savearticle' => 'אױפֿהיטן בלאַט',
-'preview' => 'פאראויסדיגע ווייזונג',
-'showpreview' => 'פֿ×\90ָרױס×\93×\99×\92×¢ ×°×²Ö·×\96×\95× ×\92',
-'showlivepreview' => '×\9c×¢×\91×¢×\93×\99×\92×¢ ×¤×\90ר×\90×\95×\99ס×\93×\99×\92×¢ ×\95×\95×\99×\99×\96×\95× ×\92',
+'preview' => 'פֿאראויסקוק',
+'showpreview' => '×\95×\95ײַ×\96×\9f ×¤Ö¿×\90ָרױסק×\95ק',
+'showlivepreview' => '×\96×\90פֿ×\90ר×\98×\99×\92ער ×¤×\90ר×\90×\95×\99סק×\95ק',
 'showdiff' => 'ווײַז די ענדערונגען',
 'anoneditwarning' => "'''ווארענונג:''' איר זענט נישט אריינלאגירט אין אייער קאנטע. אייער איי פי אדרעס וועט ווערן דאקומענטירט אין דעם בלאטס היסטאריע פון ענדערונגען. אויב זארגט איר זיך פאר פריוואטקייטן, ביטע טוט זיך אריינלאגירן.",
 'anonpreviewwarning' => "''איר זענט נישט אַרײַנלאגירט. אויפֿהיטן וועט ארײַנשרײַבן אײַער IP אַדרעס אין דער רעדאַקטירונג היסטאריע פונעם בלאַט.''",
@@ -939,7 +939,7 @@ $2
 'titleprotectedwarning' => "'''אזהרה: דער בלאט איז פֿארשפאַרט טא דארף מען [[Special:ListGroupRights|ספעציפֿישע רעכטן]] צו שאפֿן אים.'''
 די פֿאַרגאַנגענע לאגבוך באשרײַבונג ווערט געוויזן דאָ:",
 'templatesused' => '{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אויף דעם בלאט:',
-'templatesusedpreview' => '{{PLURAL:$1|×\9e×\95ס×\98ער| ×\9e×\95ס×\98ער×\9f}}  ×\91×\90Ö·× ×\99צ×\98  ×\90×\99×\9f ×\93×¢×\9d ×¤Ö¿×\90ָר×\90ױס×\93×\99ק×\9f ×\90ױסק×\95ק:',
+'templatesusedpreview' => '{{PLURAL:$1|מוסטער| מוסטערן}}  באַניצט  אין דעם פֿאָראױסקוק:',
 'templatesusedsection' => '{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אין דעם אפטיילונג:',
 'template-protected' => '(באשיצט)',
 'template-semiprotected' => '(טיילווייז באשיצט)',
@@ -1478,15 +1478,13 @@ $1",
 'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
 'right-passwordreset' => 'באַקוקן פאַסווארט צוריקשטעלן ע־בריוו',
 
+# Special:Log/newusers
+'newuserlogpage' => 'נייע באַניצערס לאָג-בוך',
+'newuserlogpagetext' => 'דאס איז א לאג פון באַניצערס אײַנשרײַבונגען.',
+
 # User rights log
 'rightslog' => 'באַניצער רעכטן לאג',
 'rightslogtext' => 'דאָס איז אַ לאג פֿון ענדערונגען צו באַניצער רעכטן.',
-'rightslogentry' => 'געביטן די מיטגלידערשאַפֿט פֿאַר $1 פֿון $2 אויף $3',
-'rightslogentry-autopromote' => 'אויטאמאטיש פראמאווירט פון $2 צו $3',
-'logentry-rights-rights' => '$1 האט געביטן גרופע מיטגלידערשאַפֿט פֿאַר $3 פֿון $4 אויף $5',
-'logentry-rights-rights-legacy' => '$1 האט געביטן גרופע מיטגלידערשאפט פאר $3',
-'logentry-rights-autopromote' => '$1 אויטאמאטיש פראמאווירט פון $4 צו $5',
-'rightsnone' => '(גארנישט)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ליינען דעם בלאַט',
@@ -1709,6 +1707,7 @@ $1",
 'backend-fail-notexists' => 'נישט פֿאראן די טעקע $1.',
 'backend-fail-invalidpath' => '$1 איז נישט קיין גילטיקער שפייכלערן שטעג.',
 'backend-fail-delete' => 'קען נישט אויסמעקן טעקע $1.',
+'backend-fail-describe' => 'קען נישט ענדערן מעטאדאטן פאר דער טעקע "$1".',
 'backend-fail-alreadyexists' => 'די טעקע $1 עקזיסטירט שוין.',
 'backend-fail-store' => "מ'קען נישט שפייכלערן טעקע $1 בײַ $2.",
 'backend-fail-copy' => 'האט נישט געקענט קאפירן "$1" צו "$2".',
@@ -2065,10 +2064,6 @@ $1",
 'activeusers-hidesysops' => 'באַהאַלטן סיסאפן',
 'activeusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'נייע באַניצערס לאָג-בוך',
-'newuserlogpagetext' => 'דאס איז א לאג פון באַניצערס אײַנשרײַבונגען.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'באַניצער גרופע רעכטן',
 'listgrouprights-summary' => "פֿאלגנד איז א רשימה פֿון באַניצער גרופעס דעפֿינירט אויף דער דאָזיקער וויקי, מיט זײַערע אַסאציאירטע צוטריט רעכטן.
@@ -2135,9 +2130,9 @@ $1",
 'watchnologin' => 'איר זענט נישט אַרײַנלאגירט',
 'watchnologintext' => 'איר דארפֿט זיין [[Special:UserLogin|אריינגלאגירט]] צו מאדיפֿיצירן אייער אויפפַּאסונג־ליסטע.',
 'addwatch' => 'צולייגן צו דער אויפֿפאַסונג ליסטע',
-'addedwatchtext' => "דער בלאט \"[[:\$1]]\" איז צוגעלײגט געוואָרן צו אײַער [[Special:Watchlist|אויפֿפאַסונג ליסטע]].
+'addedwatchtext' => 'דער בלאט "[[:$1]]" איז צוגעלײגט געוואָרן צו אײַער [[Special:Watchlist|אויפֿפאַסונג ליסטע]].
 
\95×\95×\99×\99×\98ערע ×¢× ×\93ער×\95× ×\92×¢×\9f ×¦×\95 ×\93×¢×\9d ×\91×\9c×\90Ö·×\98 ×\90×\95×\9f ×¦×\95 ×\96ײַ×\9f ×¤×\90ר×\91×\99× ×\93×¢× ×¢×\9d ×¨×¢×\93×\9f ×\91×\9c×\90Ö·×\98 ×\95×\95×¢×\9c×\9f ×\96ײַ×\9f ×\90×\95×\99ס×\92ערע×\9b× ×\98 ×\93×\90ר×\98, ×\90×\95×\9f ×\93ער ×\91×\9c×\90×\98 ×\95×\95×¢×\98 ×\96×\99×\99×\9f '''×\93×\99ק''' ×\90×\99×\9f ×\93ער [[Special:RecentChanges|×\9c×\99ס×\98×¢ ×¤×\95×\9f ×\9cעצ×\98×¢ ×¢× ×\93ער×\95× ×\92×¢×\9f]] ×¦×\95 ×\92ר×\99× ×\92ער ×\9e×\90×\9b×\9f ×\93×\90ס ×\90×\95×\99פֿפ×\90ַס×\9f.",
\95×\95ײַ×\98ערע ×¢× ×\93ער×\95× ×\92×¢×\9f ×¦×\95 ×\93×¢×\9d ×\91×\9c×\90Ö·×\98 ×\90×\95×\9f ×¦×\95 ×\96ײַ×\9f ×¤×\90ר×\91×\99× ×\93×¢× ×¢×\9d ×¨×¢×\93×\9f ×\91×\9c×\90Ö·×\98 ×\95×\95×¢×\9c×\9f ×\96ײַ×\9f ×\90×\95×\99ס×\92ערע×\9b× ×\98 ×\93×\90ר×\98.',
 'removewatch' => 'אַראָפּנעמען פון דער אויפֿפאַסונג ליסטע',
 'removedwatchtext' => 'דער בלאַט "[[:$1]]" איז אָפּגעראַמט געוואָרן פון [[Special:Watchlist|אייער אױפֿפּאַסונג ליסטע]].',
 'watch' => 'אױפֿפּאַסן',
@@ -2206,6 +2201,8 @@ $UNWATCHURL
 
 פאר מער הילף:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'געשאַפֿן',
+'changed' => 'געטוישט',
 
 # Delete
 'deletepage' => 'מעק אויס בלאט',
@@ -2365,6 +2362,7 @@ $UNWATCHURL
 'undelete-search-prefix' => 'ווײַז בלעטער וואס הייבן אן מיט:',
 'undelete-search-submit' => 'זוכן',
 'undelete-no-results' => 'נישט געטראפן קיין צוגעפאסטע בלעטער אין אויסמעקונג ארכיוו.',
+'undelete-cleanup-error' => 'גרײַז בײַם אויסמעקן נישט געניצטע ארכיוו טעקע "$1".',
 'undelete-error' => 'גרייז ביים צוריקשטעלן בלאט',
 'undelete-error-short' => 'טעות ביים צוריקשטעלן טעקע: $1',
 'undelete-error-long' => 'גרײַזן געטראפֿן בײַם ווידערשטעלן די טעקע:
@@ -2619,7 +2617,7 @@ $1',
 'cant-move-to-user-page' => 'איר זענט נישט דערלויבט צו באַוועגן א בלאַט צו א באַניצער בלאַט (אַחוץ צו א באַניצער אונטערבלאַט).',
 'newtitle' => 'צו נייעם קעפל:',
 'move-watch' => 'אויפֿפאַסן אויף דעם בלאַט',
-'movepagebtn' => 'באוועגן',
+'movepagebtn' => 'באַוועגן בלאַט',
 'pagemovedsub' => 'באַוועגט מיט הצלחה',
 'movepage-moved' => 'דער בלאט "$1" איז אריבערגעפֿירט געווארן צו "$2".',
 'movepage-moved-redirect' => 'ווײַטערפֿירונג  געשאַפֿן.',
@@ -2854,7 +2852,7 @@ $1',
 'tooltip-recreate' => 'ווידערשאַפֿן דעם בלאַט כאטש ער איז אַמאל אויסגעמעקט',
 'tooltip-upload' => 'הייב אן אויפלאדן',
 'tooltip-rollback' => '"צוריקדרייען" דרײט צוריק רעדאַקטירונג(ען) צו דעם בלאַט פֿונעם לעצטן בײַשטײַערער מיט אײן קװעטש',
-'tooltip-undo' => 'עפֿנ×\98 ×\93×¢×\9d ×¨×¢×\93×\90Ö·×\92×\99ר־פֿענס×\98ער ×\90×\99×\9f ×\90Ö· ×¤Ö¿×\90ָרױס×\93×\99ק×\9f ×\90ױסק×\95ק ×\9bÖ¼×\93×\99 ×¦×\95ר×\99ק×\93רײע×\9f ×\93×\99 ×¨×¢×\93×\90ַקצ×\99×¢. ×¢×¡ ×\90×\99×\96 ×\9e×¢×\92×\9c×¢×\9a ×¦×\95צ×\95×\9cײ×\92×\9f ×\90Ö· ×¡×\99×\91×\94 ×\93ערװע×\92×\9f ×\90×\99×\9f ×\93×¢×\9d "ק×\95רץ ×°×\90ָר×\98" ×§×¢×¡×\98×\9c.',
+'tooltip-undo' => 'עפֿנט דעם רעדאַגיר־פֿענסטער אין אַ פֿאָראױסקוק כּדי צוריקדרײען די רעדאַקציע. עס איז מעגלעך צוצולײגן אַ סיבה דערװעגן אין דעם "קורץ װאָרט" קעסטל.',
 'tooltip-preferences-save' => 'היטן פרעפֿערענצן',
 'tooltip-summary' => 'אײַנגעבן א קורצע רעזומע',
 
@@ -2931,6 +2929,10 @@ $1',
 'pageinfo-contentpage' => 'געציילט ווי אן אינהאלט בלאט',
 'pageinfo-contentpage-yes' => 'יאָ',
 'pageinfo-protect-cascading-yes' => 'יאָ',
+'pageinfo-category-info' => 'קאטעגאריע אינפארמאציע',
+'pageinfo-category-pages' => 'צאָל בלעטער',
+'pageinfo-category-subcats' => 'צאָל אונטערקאטעגאריעס',
+'pageinfo-category-files' => 'צאָל טעקעס',
 
 # Skin names
 'skinname-standard' => 'קלאסיש',
@@ -3019,6 +3021,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 מינוט|$1 מינוט}}',
 'hours' => '{{PLURAL:$1|$1 שעה|$1 שעה}}',
 'days' => '{{PLURAL:$1|$1 טאג|$1 טעג}}',
+'months' => '{{PLURAL:$1|איין מאנאַט|$1 מאנאַטן}}',
+'years' => '{{PLURAL:$1|איין יאָר|$1 יאָר}}',
 'ago' => 'פֿאַר $1',
 'just-now' => 'גראדע יעצט',
 
@@ -3139,6 +3143,7 @@ $1',
 'exif-gpsdop' => 'מאס פוקנטליכקייט',
 'exif-gpsspeedref' => 'גיך איינהייט',
 'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
+'exif-gpstrack' => 'באוועגונג ריכטונג',
 'exif-gpsimgdirectionref' => 'רעפערענץ פאר ריכטונג פון בילד',
 'exif-gpsimgdirection' => 'ריכטונג פון בילד',
 'exif-gpsdestlatituderef' => 'רעפֿערענץ פֿאַר ברייט־ליניע פון ציל',
@@ -3174,6 +3179,7 @@ $1',
 'exif-urgency' => 'דרינגלעכקייט',
 'exif-locationdest' => 'געוויזענע לאקאציע',
 'exif-locationdestcode' => 'קאד פֿון געוויזענער לאקאציע',
+'exif-contact' => 'קאנטאקט אינפארמאציע',
 'exif-writer' => 'שרײַבער',
 'exif-languagecode' => 'שפראַך',
 'exif-iimversion' => 'IIM ווערסיע',
@@ -3477,6 +3483,10 @@ $5
 # Live preview
 'livepreview-loading' => 'לאדנדיג…',
 'livepreview-ready' => 'לאדנדיג… גרייט!',
+'livepreview-failed' => 'גיכער פֿאראויסקוק דורכגעפֿאלן.
+פרובירט נארמאלן פֿאראויסקוק.',
+'livepreview-error' => 'פֿארבינדונג נישט מעגלעך: $1 "$2".
+פרובירט נארמאלן פֿאראויסקוק.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'אײַער אויפֿפאַסונג ליסטע אַנטהאַלט {{PLURAL:$1|1 טיטל|$1 טיטלען}}, אויסשליסנדיק שמועסבלעטער.',
@@ -3626,7 +3636,7 @@ $5
 'tag-filter' => '[[Special:Tags|מאַרקירונג]] פֿילטער:',
 'tag-filter-submit' => 'פֿילטער',
 'tags-title' => 'טאַגן',
-'tags-intro' => 'דער בלאַט ווײַזט די טאַגן מיט וואס דאס ווייכווארג קען צייכענען אַן רעדאַגירונג, און זייער באַטייַט.',
+'tags-intro' => 'דער בלאַט ווײַזט די טאַגן מיט וואס דאס ווייכווארג קען צייכענען אַ רעדאַגירונג, און זייער באַטייַט.',
 'tags-tag' => 'טאַג נאָמען',
 'tags-display-header' => 'אויסזען אין ענדערונג רשימות',
 'tags-description-header' => 'פֿולי באַשרייַבונג פון באַטײַט',
@@ -3702,6 +3712,10 @@ $5
 'logentry-newusers-create2' => 'באניצער קאנטע $1 געשאפן געווארן דורך $3',
 'logentry-newusers-autocreate' => 'קאנטע $1 באשאפן אויטאמאטיש',
 'newuserlog-byemail' => 'פאַסווארט געשיקט דורך ע-פאסט',
+'logentry-rights-rights' => '$1 האט געביטן גרופע מיטגלידערשאַפֿט פֿאַר $3 פֿון $4 אויף $5',
+'logentry-rights-rights-legacy' => '$1 האט געביטן גרופע מיטגלידערשאפט פאר $3',
+'logentry-rights-autopromote' => '$1 אויטאמאטיש פראמאווירט פון $4 צו $5',
+'rightsnone' => '(גארנישט)',
 
 # Feedback
 'feedback-bugornote' => 'ווען איר זענט גרייט צו באשרייבן א טעכנישן פראבלעם ביטע [$1 מעלדט א פעלער].
index 0cc76da..444d03e 100644 (file)
@@ -1371,15 +1371,13 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'right-sendemail' => 'Fi e-mail ránṣẹ́ sí àwọn oníṣe míràn',
 'right-passwordreset' => 'Ìwo àwọn e-mail fún ìtúntò ọ̀rọ̀ìpamọ́',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Àkọsílẹ̀ ìdá oníṣe',
+'newuserlogpagetext' => 'Àkọọ́lẹ̀ àwọn ìdá oníṣe nì yí.',
+
 # User rights log
 'rightslog' => 'Àwọn ẹ̀tọ́ oníṣe',
 'rightslogtext' => 'Èyì ni àkọọ́lẹ̀ kan àwọn àtúnṣe sí àwọn ẹ̀tọ́ oníṣe.',
-'rightslogentry' => 'yí ẹgbẹ́ tí $1 wà kúrò láti $2 sí $3',
-'rightslogentry-autopromote' => 'jẹ́ gbígbéga láláraẹni láti $2 sí $3',
-'logentry-rights-rights' => '$1 yí ìjọ́mọ ẹgbẹ́ padà fún $3 láti $4 sí $5',
-'logentry-rights-rights-legacy' => '$1 yí ìjọ́mọ ẹgbẹ́ padà fún $3',
-'logentry-rights-autopromote' => '$1 jẹ́ gbígbéga nífúnraẹni láti $4 sí $5',
-'rightsnone' => '(kòsí)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'wo ojúewé yìí',
@@ -2027,10 +2025,6 @@ Orúkọ ibiàyè pọndandan, fún àpẹrẹ "*.org".<br />
 'activeusers-hidesysops' => 'Ìbòmọ́lẹ̀ àwọn olùmójútó',
 'activeusers-noresult' => 'Kò rí oníṣe kankan.',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Àkọsílẹ̀ ìdá oníṣe',
-'newuserlogpagetext' => 'Àkọọ́lẹ̀ àwọn ìdá oníṣe nì yí.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Àwọn ẹ̀tọ́ ẹgbẹ́ oníṣe',
 'listgrouprights-summary' => 'Nísàlẹ̀ ni àtòjọ àwọn ẹgbẹ́ oníṣe tó nítumọ̀ lórí wiki yìí, pẹ̀lú àwọn ẹ̀tọ́ lílò wọn.
@@ -2166,6 +2160,8 @@ $UNWATCHURL
 
 Fún ìrànwọ́ àti ìbérè:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => 'dídá',
+'changed' => 'títúnṣẹ',
 
 # Delete
 'deletepage' => 'Ìparẹ́ ojúewé',
@@ -3561,6 +3557,10 @@ Ibiìtakùn yìí únkojú ìsòro ìṣìṣẹ́ẹ̀rọ.',
 'logentry-newusers-create2' => 'Àpamọ́ oníṣe $3 jẹ́ dídá látọwọ́ $1',
 'logentry-newusers-autocreate' => 'Àkópamọ́ $1 jẹ́ dídá fúnrarẹ̀',
 'newuserlog-byemail' => 'ọ̀rọ̀ìpamọ́ jẹ́ fífiránṣẹ́ pẹ̀lú e-mail',
+'logentry-rights-rights' => '$1 yí ìjọ́mọ ẹgbẹ́ padà fún $3 láti $4 sí $5',
+'logentry-rights-rights-legacy' => '$1 yí ìjọ́mọ ẹgbẹ́ padà fún $3',
+'logentry-rights-autopromote' => '$1 jẹ́ gbígbéga nífúnraẹni láti $4 sí $5',
+'rightsnone' => '(kòsí)',
 
 # Feedback
 'feedback-bugornote' => 'Tí ẹ bá ti ṣetán láti ṣàlàyé ìsòrò iṣẹ́ẹ̀rọ́ lẹ́ẹ̀kúnrẹ́rẹ́ ẹ jọ̀wọ́ [$1 ẹ sọ irú ìsòro náà]
index 09e0737..181d94f 100644 (file)
@@ -1392,11 +1392,13 @@ $1",
 'right-override-export-depth' => '倒出包含有五層深連版嘅頁面',
 'right-sendemail' => '寄電郵畀其他用戶',
 
+# Special:Log/newusers
+'newuserlogpage' => '使用者開戶記錄',
+'newuserlogpagetext' => '呢個係一個使用者開戶嘅日誌',
+
 # User rights log
 'rightslog' => '用戶權限日誌',
 'rightslogtext' => '呢個係用戶權力嘅修改日誌。',
-'rightslogentry' => '已經將$1嘅組別從$2改到去$3',
-'rightsnone' => '(無)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '讀呢版',
@@ -1946,10 +1948,6 @@ Template:搞清楚',
 'activeusers-hidesysops' => '隱藏管理員',
 'activeusers-noresult' => '搵唔到用戶。',
 
-# Special:Log/newusers
-'newuserlogpage' => '使用者開戶記錄',
-'newuserlogpagetext' => '呢個係一個使用者開戶嘅日誌',
-
 # Special:ListGroupRights
 'listgrouprights' => '用戶組權限',
 'listgrouprights-summary' => '下面係一個響呢個wiki定義咗嘅用戶權限一覽,同埋佢哋嘅存取權。
@@ -2062,6 +2060,8 @@ wiki: $PAGEEDITOR_WIKI
 
 回饋及更多幫助:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '建立過',
+'changed' => '修改過',
 
 # Delete
 'deletepage' => '刪除頁面',
@@ -3363,6 +3363,7 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 'revdelete-restricted' => '已經應用限制到操作員',
 'revdelete-unrestricted' => '已經拎走對於操作員嘅限制',
 'newuserlog-byemail' => '密碼已由電郵寄出',
+'rightsnone' => '(無)',
 
 # Search suggestions
 'searchsuggest-search' => '搵嘢',
index dcef6df..78f4279 100644 (file)
@@ -942,11 +942,12 @@ Een nie anekruusd vienkvakje beteêken da de gebruker hin lid is van de hroep.",
 'grouppage-bureaucrat' => "{{ns:project}}:Bureaucraot'n",
 'grouppage-suppress' => '{{ns:project}}:Toezicht',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboek nuwe gebrukers',
+
 # User rights log
 'rightslog' => 'Gebrukersrechtenlogboek',
 'rightslogtext' => 'Ieronder staen de wiezigiengen in gebrukersrechen.',
-'rightslogentry' => 'wiezihen de gebrukersrechen voe $1 van $2 ni $3',
-'rightsnone' => '(hin)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'deêze bladzie te bewerken',
@@ -1115,9 +1116,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch-line' => "$1 ei 'n verwiezienge in $2",
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboek nuwe gebrukers',
-
 # Special:ListGroupRights
 'listgrouprights-members' => '(ledenlieste)',
 
@@ -1399,5 +1397,6 @@ Aorre veld'n worr'n verborr'n.
 # New logging system
 'revdelete-restricted' => 'ei beperkiengen an beheêrders opeleid',
 'revdelete-unrestricted' => 'ei beperkiengen voe beheêrders opeheven',
+'rightsnone' => '(hin)',
 
 );
diff --git a/languages/messages/MessagesZh_classical.php b/languages/messages/MessagesZh_classical.php
deleted file mode 100644 (file)
index a58df39..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/** Classical Chinese (文言)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- */
-
-# Inherit everything for now
-$fallback = 'lzh';
index 765eaaa..7d1ca57 100644 (file)
@@ -1570,15 +1570,13 @@ $1",
 'right-sendemail' => '电邮联系其他用户',
 'right-passwordreset' => '查看密码重置电子邮件',
 
+# Special:Log/newusers
+'newuserlogpage' => '用户创建日志',
+'newuserlogpagetext' => '这是用户创建的日志。',
+
 # User rights log
 'rightslog' => '用户权限日志',
 'rightslogtext' => '这是用户权限更改的日志。',
-'rightslogentry' => '将$1的用户组由$2更改为$3',
-'rightslogentry-autopromote' => '被自动提升自$2至$3',
-'logentry-rights-rights' => '$1将$3的用户组从$4改为$5',
-'logentry-rights-rights-legacy' => '$1更改$3的用户组',
-'logentry-rights-autopromote' => '$1的用户组已自动从$4改为$5',
-'rightsnone' => '(无)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '阅读本页',
@@ -2194,10 +2192,6 @@ $1',
 'activeusers-hidesysops' => '隐藏管理员',
 'activeusers-noresult' => '找不到用户。',
 
-# Special:Log/newusers
-'newuserlogpage' => '用户创建日志',
-'newuserlogpagetext' => '这是用户创建的日志。',
-
 # Special:ListGroupRights
 'listgrouprights' => '用户组权限',
 'listgrouprights-summary' => '以下面是一个在这个wiki中定义出来的用户权限列表,以及它们的访问权。
@@ -2329,6 +2323,8 @@ wiki: $PAGEEDITOR_WIKI
 $UNWATCHURL
 反馈与其他帮助:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '创建',
+'changed' => '更改',
 
 # Delete
 'deletepage' => '删除页面',
@@ -3927,6 +3923,10 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'logentry-newusers-create2' => '创建用户帐户 $3 由 $1',
 'logentry-newusers-autocreate' => '账户$1被自动创建',
 'newuserlog-byemail' => '密码已用电子邮件发送',
+'logentry-rights-rights' => '$1将$3的用户组从$4改为$5',
+'logentry-rights-rights-legacy' => '$1更改$3的用户组',
+'logentry-rights-autopromote' => '$1的用户组已自动从$4改为$5',
+'rightsnone' => '(无)',
 
 # Feedback
 'feedback-bugornote' => '如果你准备好详细描述一个技术问题,请[$1 报告bug]。或者你可以使用下面的简单表格。你的评论将被添加至页面“[$3 $2]”,附有你的用户名和使用的浏览器。',
index 2e7d1f4..63dc303 100644 (file)
@@ -216,7 +216,7 @@ $messages = array(
 'tog-hideminor' => '隱藏最近更改中的小修改',
 'tog-hidepatrolled' => '隱藏最近更改中巡查過的編輯',
 'tog-newpageshidepatrolled' => '隱藏新頁面清單中巡查過的頁面',
-'tog-extendwatchlist' => '展開監視清單以顯示所有更改,不只是最近的',
+'tog-extendwatchlist' => '展開監視列表以顯示所有更改,不只是最近的',
 'tog-usenewrc' => '在最近更改和監視列表中整合同一頁的修改 (需要JavaScript)',
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '顯示編輯工具欄 (需要JavaScript)',
@@ -243,7 +243,7 @@ $messages = array(
 'tog-externaleditor' => '預設使用外部編輯器 (進階者專用,需要在您的電腦上作出一些特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
 'tog-externaldiff' => '預設使用外部差異分析 (進階者專用,需要在您的電腦上作出一些特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
 'tog-showjumplinks' => '啟用「跳轉到」訪問連結',
-'tog-uselivepreview' => '使用實時預覽 (需要JavaScript) (試驗中)',
+'tog-uselivepreview' => '使用實時預覽 (需要JavaScript)(試驗中)',
 'tog-forceeditsummary' => '當沒有輸入摘要時提醒我',
 'tog-watchlisthideown' => '監視列表中隱藏我的編輯',
 'tog-watchlisthidebots' => '監視列表中隱藏機器人的編輯',
@@ -344,6 +344,7 @@ $messages = array(
 'newwindow' => '(以新視窗開啟)',
 'cancel' => '取消',
 'moredotdotdot' => '更多...',
+'morenotlisted' => '更多未列出的項目...',
 'mypage' => '頁面',
 'mytalk' => '討論',
 'anontalk' => '該IP的對話頁',
@@ -459,7 +460,7 @@ $1',
 'policy-url' => 'Project:方針',
 'portal' => '社群主頁',
 'portal-url' => 'Project:社區主頁',
-'privacy' => 'é\9a±ç§\81æ¬\8aæ\94¿ç­\96',
+'privacy' => '隱私政策',
 'privacypage' => 'Project:隱私權政策',
 
 'badaccess' => '權限錯誤',
@@ -541,18 +542,19 @@ $1',
 「$1」
 來自於函數「$2」。
 數據庫返回錯誤「$3: $4」。',
-'laggedslavemode' => '警告: 頁面可能不包含最近的更新。',
+'laggedslavemode' => "'''警告:'''頁面可能不包含最近的更新。",
 'readonly' => '資料庫禁止訪問',
 'enterlockreason' => '請輸入禁止訪問原因, 包括估計重新開放的時間',
 'readonlytext' => '資料庫目前禁止輸入新內容及更改,
 這很可能是由於資料庫正在維修,之後即可恢復。
-管理員有如下解釋: $1',
-'missing-article' => '資料庫找不到文字"$1" $2。
 
-<p>通常這是由於修訂歷史頁上過時的連結到已經被刪除的頁面所導致的。</p>
+管理員有如下解釋:$1',
+'missing-article' => '資料庫找不到文字「$1」 $2。
 
-<p>如果情況不是這樣,您可能找到了軟體內的一個臭蟲。
-請記錄下URL地址,並向[[Special:ListUsers/sysop|管理員]]報告。</p>',
+通常這是由於修訂歷史頁上過時的連結到已經被刪除的頁面所導致的。
+
+果情況不是這樣,您可能找到了軟體內的一個臭蟲。
+請記錄下URL地址,並向[[Special:ListUsers/sysop|管理員]]報告',
 'missingarticle-rev' => '(修訂#: $1)',
 'missingarticle-diff' => '(差異: $1, $2)',
 'readonly_lag' => '附屬資料庫伺服器正在將快取更新到主伺服器,資料庫已被自動鎖定',
@@ -586,7 +588,8 @@ $1',
 'viewsource' => '查看原始碼',
 'viewsource-title' => '查看$1的源代碼',
 'actionthrottled' => '動作已壓制',
-'actionthrottledtext' => '基於反垃圾的考量,您現在於這段短時間之中限制去作這一個動作,而您已經超過這個上限。請在數分鐘後再嘗試。',
+'actionthrottledtext' => '基於反垃圾的考量,您現在於這段短時間之中限制去作這一個動作,而您已經超過這個上限。
+請在數分鐘後再嘗試。',
 'protectedpagetext' => '該頁面已被保護以防止編輯或其他操作。',
 'viewsourcetext' => '{{GENDER:|你|妳|你}}可以檢視並複製本頁面的原始碼。',
 'viewyourtext' => "您可以查看並複製'''您對此頁面作出編輯後'''的源代碼:",
@@ -596,7 +599,7 @@ $1',
 改變此頁將影響其他在此wiki上的用戶介面外觀。
 如欲修改所有wiki的翻譯,請到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化計畫。",
 'sqlhidden' => '(隱藏SQL查詢)',
-'cascadeprotected' => '這個頁面已經被保護,因為這個頁面被以下已標註"聯鎖保護"的{{PLURAL:$1|一個|多個}}被保護頁面包含:
+'cascadeprotected' => '這個頁面已經被保護,因為這個頁面被以下已標註"聯鎖保護"的{{PLURAL:$1|一個|多個}}被保護頁面包含
 $2',
 'namespaceprotected' => "您並沒有權限編輯'''$1'''名字空間的頁面。",
 'customcssprotected' => '你並無權限編輯此CSS頁面,因為它包含了其他用戶的個人設置。',
@@ -625,10 +628,10 @@ $2',
 不要忘記設置[[Special:Preferences|{{SITENAME}}的個人參數]]。',
 'yourname' => '用戶名:',
 'yourpassword' => '您的密碼:',
-'yourpasswordagain' => '再次輸入密碼:',
+'yourpasswordagain' => '再次輸入密',
 'remembermypassword' => '在這個瀏覽器上記住我的登入資訊(可維持 $1 {{PLURAL:$1|天|天}})',
 'securelogin-stick-https' => '登入後繼續以HTTPS連接',
-'yourdomainname' => '您的網域:',
+'yourdomainname' => '您的網域',
 'password-change-forbidden' => '您不可更改此wiki上的密碼。',
 'externaldberror' => '這可能是由於驗證資料庫錯誤或您被禁止更新您的外部賬號。',
 'login' => '登入',
@@ -705,12 +708,13 @@ $2',
 'login-throttled' => '您已經嘗試多次的登入動作。
 請稍等多一會再試。',
 'login-abort-generic' => '登入錯誤 - 中止',
-'loginlanguagelabel' => '語言$1',
+'loginlanguagelabel' => '語言$1',
 'suspicious-userlogout' => '您登出的要求已經被拒絕,因為它可能是由已損壞的瀏覽器或者快取代理傳送。',
 
 # E-mail sending
 'php-mail-error-unknown' => '在 PHP 的 mail() 參數中的未知錯誤',
 'user-mail-no-addy' => '嘗試不帶電郵地址發送電郵。',
+'user-mail-no-body' => '試圖發送空的或主體不合理短的電子郵件。',
 
 # Change password dialog
 'resetpass' => '更改密碼',
@@ -797,10 +801,10 @@ $2
 
 # Edit pages
 'summary' => '摘要:',
-'subject' => '主題:',
+'subject' => '主題',
 'minoredit' => '這是一個小修改',
 'watchthis' => '監視本頁',
-'savearticle' => '儲存頁面',
+'savearticle' => '儲存本頁',
 'preview' => '預覽',
 'showpreview' => '顯示預覽',
 'showlivepreview' => '即時預覽',
@@ -812,7 +816,7 @@ $2
 'missingcommenttext' => '請在下面輸入評論。',
 'missingcommentheader' => "'''提示:''' 您沒有為此評論提供一個標題。如果您再次單擊「{{int:savearticle}}」,您的編輯將不帶標題儲存。",
 'summary-preview' => '摘要預覽:',
-'subject-preview' => '主題/標題預覽:',
+'subject-preview' => '主題/標題預覽:',
 'blockedtitle' => '用戶被查封',
 'blockedtext' => "'''您的用戶名或IP地址已被封禁。'''
 
@@ -852,10 +856,10 @@ $2
 'newarticle' => '(新)',
 'newarticletext' => '您進入了一個尚未建立的頁面。
 要建立該頁面,請在下面的編輯框中輸入內容(詳情參見[[{{MediaWiki:Helppage}}|幫助]])。
-如果您是不小心來到此頁面,直接點擊您瀏覽器中的“返回”按鈕返回。',
+如果您是不小心來到此頁面,直接點擊您瀏覽器中的「返回」按鈕返回。',
 'anontalkpagetext' => "---- ''這是一個還未建立賬號的匿名用戶的對話頁。我們因此只能用IP地址來與他/她聯絡。該IP地址可能由幾名用戶共享。如果您是一名匿名用戶並認為本頁上的評語與您無關,請[[Special:UserLogin/signup|創建新賬號]]或[[Special:UserLogin|登入]]以避免在未來於其他匿名用戶混淆。''",
-'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜此頁標題]],
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜有關日誌],
+'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜此頁標題]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜有關日誌],
 或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此頁]</span>。',
 'noarticletext-nopermission' => '此頁目前沒有內容。
 您可以在其它頁[[Special:Search/{{PAGENAME}}|搜尋此頁標題]],或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋有關日誌]</span>,但您沒有權限建立此頁。',
@@ -900,7 +904,7 @@ $2
 'token_suffix_mismatch' => "'''由於您用戶端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。'''
 這種情況通常出現於使用含有很多臭蟲、以網絡為主的匿名代理服務的時候。",
 'edit_form_incomplete' => '編輯表單的某些部分沒有到達伺服器 ;請檢查您的編輯內容是否完整並再試一次。',
-'editing' => '編輯“$1”',
+'editing' => '編輯「$1」',
 'creating' => '創建$1',
 'editingsection' => '編輯“$1”(段落)',
 'editingcomment' => '編輯“$1”(新段落)',
@@ -1015,8 +1019,8 @@ $2
 'viewpagelogs' => '查詢這個頁面的日誌',
 'nohistory' => '沒有本頁的修訂記錄。',
 'currentrev' => '最新修訂版本',
-'currentrev-asof' => '$1的最新修訂版本',
-'revisionasof' => '在$1所做的修訂版本',
+'currentrev-asof' => '$1的最新修訂版本',
+'revisionasof' => '$1的修訂版本',
 'revision-info' => '在$1由$2所做的修訂版本',
 'previousrevision' => '←上一修訂',
 'nextrevision' => '下一修訂→',
@@ -1158,7 +1162,7 @@ $1",
 'mergelogpagetext' => '以下是一個最近由一個頁面的修訂歷史合併到另一個頁面的列表。',
 
 # Diffs
-'history-title' => '$1:修訂歷史',
+'history-title' => '「$1」的修訂歷史',
 'difference-title' => '$1:修訂版本之間的差異',
 'difference-title-multipage' => '"$1"和"$2": 頁面之間的差異',
 'difference-multipage' => '(頁面間的差異)',
@@ -1204,13 +1208,13 @@ $1",
 'searchprofile-project-tooltip' => '在$1中搜尋',
 'searchprofile-images-tooltip' => '搜尋檔案',
 'searchprofile-everything-tooltip' => '搜尋全部(包括討論頁面)',
-'searchprofile-advanced-tooltip' => '在自定名字空間中搜尋',
+'searchprofile-advanced-tooltip' => '在自定名字空間中搜尋',
 'search-result-size' => '$1 ($2個字)',
 'search-result-category-size' => '$1個成員($2個子分類,$3個檔案)',
 'search-result-score' => '相關度: $1%',
 'search-redirect' => '(重定向 $1)',
 'search-section' => '(段落 $1)',
-'search-suggest' => '{{GENDER:|你|妳|你}}是否解: $1',
+'search-suggest' => '{{GENDER:|你|妳|你}}是不是要找:$1',
 'search-interwiki-caption' => '姊妹計劃',
 'search-interwiki-default' => '$1項結果:',
 'search-interwiki-more' => '(更多)',
@@ -1261,9 +1265,9 @@ $1",
 'prefs-personal' => '用戶資料',
 'prefs-rc' => '最近更改',
 'prefs-watchlist' => '監視列表',
-'prefs-watchlist-days' => '監視列表中顯示記錄的天數:',
+'prefs-watchlist-days' => '監視列表中顯示的天數:',
 'prefs-watchlist-days-max' => '最多$1{{PLURAL:$1|天}}',
-'prefs-watchlist-edits' => '在增強的監視列表中顯示的最多更改次數:',
+'prefs-watchlist-edits' => '擴展監視列表中顯示更改次數上限:',
 'prefs-watchlist-edits-max' => '最大數量:1000',
 'prefs-watchlist-token' => '監視列表密鑰:',
 'prefs-misc' => '雜項',
@@ -1295,7 +1299,7 @@ $1",
 'localtime' => '當地時間:',
 'timezoneuseserverdefault' => '使用預設($1)',
 'timezoneuseoffset' => '其他 (指定偏移)',
-'timezoneoffset' => '時差¹:',
+'timezoneoffset' => '時差¹',
 'servertime' => '伺服器時間:',
 'guesstimezone' => '從瀏覽器填寫',
 'timezoneregion-africa' => '非洲',
@@ -1341,10 +1345,10 @@ $1",
 'prefs-help-gender' => '可選:用於軟體中的性別指定。此項資料將會被公開。',
 'email' => '電子郵件',
 'prefs-help-realname' => '真實姓名是可選的。
-如果您選擇提供它,那它便用以對您的貢獻署名。',
+如果您選擇提供它,它會用於貢獻署名。',
 'prefs-help-email' => '電子郵件是可選的,但當您忘記您的密碼時需要將新密碼重設,就會用電郵寄回給您。',
 'prefs-help-email-others' => '您亦可以在您沒有公開自己的用戶身分時透過您的用戶頁或用戶討論頁與您聯繫。',
-'prefs-help-email-required' => 'é\9c\80è¦\81é\9b»å­\90é\83µä»¶å\9c°å\9d\80。',
+'prefs-help-email-required' => 'é\9b»å­\90é\83µä»¶å\9c°å\9d\80æ\98¯å¿\85å¡«é \85ç\9b®。',
 'prefs-info' => '基本資料',
 'prefs-i18n' => '國際化',
 'prefs-signature' => '簽名',
@@ -1372,9 +1376,9 @@ $1",
 'editinguser' => "更改用戶'''[[User:$1|$1]]''' 的用戶權限 $2",
 'userrights-editusergroup' => '編輯用戶群組',
 'saveusergroups' => '保存用戶群組',
-'userrights-groupsmember' => '屬於:',
-'userrights-groupsmember-auto' => '固有屬於:',
-'userrights-groups-help' => '您可以改動這位用戶所屬的群組:
+'userrights-groupsmember' => '屬於',
+'userrights-groupsmember-auto' => '固有屬於',
+'userrights-groups-help' => '您可以改動這位用戶所屬的群組
 * 已剔選的核取方塊代表該用戶屬於該群組。
 * 未剔選的核取方塊代表該用戶不是屬於該群組。
 * 有 * 項目表示一旦您加入該群組之後便不能移除它,反之亦然。',
@@ -1472,15 +1476,13 @@ $1",
 'right-sendemail' => '發電子郵件給其他用戶',
 'right-passwordreset' => '查看重置密碼郵件',
 
+# Special:Log/newusers
+'newuserlogpage' => '新進用戶名冊',
+'newuserlogpagetext' => '這是一個最近被創建用戶的新日誌',
+
 # User rights log
 'rightslog' => '用戶權限日誌',
 'rightslogtext' => '以下記錄了用戶權限的更改記錄。',
-'rightslogentry' => '將 $1 的權限從 $2 改為 $3',
-'rightslogentry-autopromote' => '自動由$2晉升至$3',
-'logentry-rights-rights' => '$1將$3的權限從$4改為$5',
-'logentry-rights-rights-legacy' => '$1更改$3的權限',
-'logentry-rights-autopromote' => '$1的權限自動從$4改為$5',
-'rightsnone' => '無',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => '閱讀這個頁面',
@@ -1512,7 +1514,7 @@ $1",
 'action-importupload' => '由一個檔案上載中匯入這個頁面',
 'action-patrol' => '標示其它的編輯為已巡查的',
 'action-autopatrol' => '將您的編輯標示為已巡查的',
-'action-unwatchedpages' => '檢視未被監視的頁面',
+'action-unwatchedpages' => '檢視未被監視的頁面',
 'action-mergehistory' => '合併這個頁面的歷史',
 'action-userrights' => '編輯所有的權限',
 'action-userrights-interwiki' => '編輯在其它wiki上用戶的權限',
@@ -1521,7 +1523,7 @@ $1",
 
 # Recent changes
 'nchanges' => '$1次更改',
-'recentchanges' => '近期變動',
+'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改選項',
 'recentchanges-summary' => '跟蹤這個wiki上的最新更改。',
 'recentchanges-feed-description' => '追蹤此訂閱在 wiki 上的最近更改。',
@@ -1546,7 +1548,7 @@ $1",
 'minoreditletter' => '小',
 'newpageletter' => '新',
 'boteditletter' => '機',
-'number_of_watching_users_pageview' => '[$1個關注用戶]',
+'number_of_watching_users_pageview' => '[$1位用戶在監視]',
 'rc_categories' => '分類界限(以"|"分割)',
 'rc_categories_any' => '任意',
 'rc-change-size-new' => '更改後$1字節',
@@ -1587,18 +1589,18 @@ $1",
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''使用檔案的完整版本
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|替換文字]]</nowiki></code>'''使用放置於左側的一個框內的 200 像素寬的圖片,同時使用「替換文字」作為描述
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>'''直接連結到檔案而不顯示檔案",
-'upload-permitted' => '准許的檔案類型$1。',
-'upload-preferred' => '建議的檔案類型$1。',
-'upload-prohibited' => '禁止的檔案類型$1。',
+'upload-permitted' => '准許的檔案類型$1。',
+'upload-preferred' => '建議的檔案類型$1。',
+'upload-prohibited' => '禁止的檔案類型$1。',
 'uploadlog' => '上載紀錄',
 'uploadlogpage' => '上載紀錄',
 'uploadlogpagetext' => '以下是最近上載的檔案的一覽表。
 檢視[[Special:NewFiles|新檔案畫廊]]去看更富圖片的總覽。',
 'filename' => '檔案名',
 'filedesc' => '檔案描述',
-'fileuploadsummary' => '檔案描述:',
+'fileuploadsummary' => '檔案描述',
 'filereuploadsummary' => '檔案更改說明:',
-'filestatus' => '版權狀態:',
+'filestatus' => '版權狀態',
 'filesource' => '來源:',
 'uploadedfiles' => '已上載檔案',
 'ignorewarning' => '忽略警告並儲存檔案',
@@ -1659,14 +1661,14 @@ $1",
 'php-uploaddisabledtext' => 'PHP 檔案上載已經停用。請檢查 file_uploads 設定。',
 'uploadscripted' => '該檔案包含可能被網路瀏覽器錯誤解釋的 HTML 或腳本代碼。',
 'uploadvirus' => '該檔案包含有病毒!
-詳情$1',
+詳情$1',
 'uploadjava' => '該檔案是 ZIP 檔案,其中包含 Java 的.class 檔案。
 不允許上傳 Java 檔案,是因為他們可能會跳過安全限制。',
 'upload-source' => '來源檔案',
 'sourcefilename' => '來源檔案名:',
 'sourceurl' => '來源網址:',
 'destfilename' => '目標檔案名:',
-'upload-maxfilesize' => '檔案最大限制大小$1',
+'upload-maxfilesize' => '檔案最大限制大小$1',
 'upload-description' => '檔案描述',
 'upload-options' => '上載選項',
 'watchthisupload' => '監視這個檔案',
@@ -1788,7 +1790,7 @@ $1',
 'upload-curl-error28' => '上傳超時',
 'upload-curl-error28-text' => '網站回應時間過長。請檢查此網站的訪問是否正常,過一會再進行嘗試。您可能需要在網路訪問空閒時間再次進行嘗試。',
 
-'license' => '授權:',
+'license' => '授權',
 'license-header' => '授權',
 'nolicense' => '未選定',
 'license-nopreview' => '(無預覽可用)',
@@ -2108,10 +2110,6 @@ Template:消除歧義',
 'activeusers-hidesysops' => '隱藏管理員',
 'activeusers-noresult' => '找不到用戶。',
 
-# Special:Log/newusers
-'newuserlogpage' => '新進用戶名冊',
-'newuserlogpagetext' => '這是一個最近被創建用戶的新日誌',
-
 # Special:ListGroupRights
 'listgrouprights' => '用戶群組權限',
 'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
@@ -2177,8 +2175,7 @@ Template:消除歧義',
 'nowatchlist' => '您的監視列表為空。',
 'watchlistanontext' => '請$1以檢視或編輯您的監視列表。',
 'watchnologin' => '未登入',
-'watchnologintext' => '您必須先[[Special:UserLogin|登入]]
-才能更改您的監視列表',
+'watchnologintext' => '您必須先[[Special:UserLogin|登入]],才能更改您的監視列表。',
 'addwatch' => '加至監視列表',
 'addedwatchtext' => '頁面「[[:$1]]」已加到您的[[Special:Watchlist|監視清單]]中。
 將來有關此頁面及其討論頁的任何修改將會在那裡列出。',
@@ -2250,6 +2247,8 @@ $UNWATCHURL
 
 回饋和其他幫助:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
+'created' => '建立了',
+'changed' => '更改',
 
 # Delete
 'deletepage' => '刪除頁面',
@@ -2317,6 +2316,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]]移動到[[$2]]',
 'protect-badnamespace-title' => '不可被保護的名字空間',
 'protect-badnamespace-text' => '這個名字空間內的頁面無法被保護。',
+'protect-norestrictiontypes-text' => '此頁不可被保護因沒有任何限制可用。',
+'protect-norestrictiontypes-title' => '不可保護的頁面',
 'protect-legend' => '確認保護',
 'protectcomment' => '理由:',
 'protectexpiry' => '到期:',
@@ -2884,7 +2885,7 @@ $1被封禁的理由是“$2”',
 'tooltip-ca-nstab-user' => '檢視使用者頁面',
 'tooltip-ca-nstab-media' => '檢視多媒體檔案資訊頁面',
 'tooltip-ca-nstab-special' => '本頁面會隨著資料庫的數據即時更新,任何人均不能直接編輯',
-'tooltip-ca-nstab-project' => '檢視項目頁面',
+'tooltip-ca-nstab-project' => '檢視計劃頁面',
 'tooltip-ca-nstab-image' => '檢視檔案頁面',
 'tooltip-ca-nstab-mediawiki' => '檢視系統資訊',
 'tooltip-ca-nstab-template' => '檢視模板',
@@ -2900,8 +2901,8 @@ $1被封禁的理由是“$2”',
 'tooltip-watchlistedit-raw-submit' => '更新監視列表',
 'tooltip-recreate' => '重建該頁面,無論是否被刪除。',
 'tooltip-upload' => '開始上傳',
-'tooltip-rollback' => '『反轉』可以一按恢復上一位貢獻者對這個頁面的編輯',
-'tooltip-undo' => 'ã\80\8e復å\8e\9fã\80\8f可以在編輯模式上開啟編輯表格以便復原。它容許在摘要中加入原因。',
+'tooltip-rollback' => '按「恢復」恢復上一位貢獻者對本頁面的編輯',
+'tooltip-undo' => 'ã\80\8c復å\8e\9fã\80\8d可以在編輯模式上開啟編輯表格以便復原。它容許在摘要中加入原因。',
 'tooltip-preferences-save' => '儲存使用偏好',
 'tooltip-summary' => '輸入一個簡短的摘要',
 
@@ -2991,7 +2992,8 @@ $1被封禁的理由是“$2”',
 'pageinfo-recent-authors' => '最近作者數目',
 'pageinfo-magic-words' => '魔術{{PLURAL:$1|字|字}}($1)',
 'pageinfo-hidden-categories' => '隱藏{{PLURAL:$1|分類|分類}}($1)',
-'pageinfo-templates' => '被引用的{{PLURAL:$1|模版|模版}}($1)',
+'pageinfo-templates' => '使用的模板($1)',
+'pageinfo-transclusions' => '使用的頁面($1)',
 'pageinfo-toolboxlink' => '頁面資訊',
 'pageinfo-redirectsto' => '重定向到',
 'pageinfo-redirectsto-info' => '資訊',
@@ -3000,6 +3002,10 @@ $1被封禁的理由是“$2”',
 'pageinfo-protect-cascading' => '從此開始連鎖保護',
 'pageinfo-protect-cascading-yes' => '是',
 'pageinfo-protect-cascading-from' => '從此連鎖保護',
+'pageinfo-category-info' => '分類資訊',
+'pageinfo-category-pages' => '頁面數量',
+'pageinfo-category-subcats' => '子分類數量',
+'pageinfo-category-files' => '編輯數量',
 
 # Skin names
 'skinname-standard' => '標準',
@@ -3083,6 +3089,8 @@ $1',
 'minutes' => '$1分鍾',
 'hours' => '$1小時',
 'days' => '$1天',
+'months' => '{{PLURAL:$1|$1個月|$1個月}}',
+'years' => '{{PLURAL:$1|$1年|$1年}}',
 'ago' => '$1前',
 'just-now' => '剛才',
 
@@ -3860,6 +3868,10 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'logentry-newusers-create2' => '用戶「$1」建立用戶「$3」',
 'logentry-newusers-autocreate' => '帳戶$1被自動創建',
 'newuserlog-byemail' => '密碼已由電子郵件寄出',
+'logentry-rights-rights' => '$1將$3的權限從$4改為$5',
+'logentry-rights-rights-legacy' => '$1更改$3的權限',
+'logentry-rights-autopromote' => '$1的權限自動從$4改為$5',
+'rightsnone' => '無',
 
 # Feedback
 'feedback-bugornote' => '如果您準備好了詳細描述一個技術問題,請[$1 報告一個bug]。或者,您可以使用下面的簡易表單。您的評論將被添加到頁面“[$3 $2]”,並帶有您的用戶名和使用的瀏覽器。',
diff --git a/languages/messages/MessagesZh_min_nan.php b/languages/messages/MessagesZh_min_nan.php
deleted file mode 100644 (file)
index 23b4f92..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/** Min Nan (Bân-lâm-gú/閩南話)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- */
-
-# Inherit everything for now
-$fallback = 'nan';
diff --git a/languages/messages/MessagesZh_yue.php b/languages/messages/MessagesZh_yue.php
deleted file mode 100644 (file)
index a2848f4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/** Cantonese (粵語/廣東話)
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- *
- */
-
-# Inherit everything for now
-$fallback = 'yue';
diff --git a/maintenance/archives/patch-ufg_group-length-increase-255.sql b/maintenance/archives/patch-ufg_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..4b7f0d3
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*_*/user_former_groups
+       MODIFY COLUMN ufg_group varbinary(255) NOT NULL default '';
diff --git a/maintenance/archives/patch-ufg_group-length-increase.sql b/maintenance/archives/patch-ufg_group-length-increase.sql
deleted file mode 100644 (file)
index e24cba0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-ALTER TABLE /*_*/user_former_groups
-       MODIFY COLUMN ufg_group varbinary(32) NOT NULL default '';
diff --git a/maintenance/archives/patch-ug_group-length-increase-255.sql b/maintenance/archives/patch-ug_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..79e17ac
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*_*/user_groups
+       MODIFY COLUMN ug_group varbinary(255) NOT NULL default '';
diff --git a/maintenance/archives/patch-ug_group-length-increase.sql b/maintenance/archives/patch-ug_group-length-increase.sql
deleted file mode 100644 (file)
index e944a85..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-ALTER TABLE /*_*/user_groups
-       MODIFY COLUMN ug_group varbinary(32) NOT NULL default '';
index 591c753..b043196 100644 (file)
@@ -3,7 +3,7 @@
 CREATE TABLE /*_*/user_former_groups (
   -- Key to user_id
   ufg_user int unsigned NOT NULL default 0,
-  ufg_group varbinary(32) NOT NULL default ''
+  ufg_group varbinary(255) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
index 8bf556f..ab7603d 100644 (file)
@@ -67,7 +67,7 @@ class FixSlaveDesync extends Maintenance {
                $dbw = wfGetDB( DB_MASTER );
                $masterIDs = array();
                $res = $dbw->select( 'page', array( 'page_id', 'page_latest' ), array( 'page_id<6054123' ), __METHOD__ );
-               $this->output( "Number of pages: " . $dbw->numRows( $res ) . "\n" );
+               $this->output( "Number of pages: " . $res->numRows() . "\n" );
                foreach ( $res as $row ) {
                        $masterIDs[$row->page_id] = $row->page_latest;
                        if ( !( ++$n % 10000 ) ) {
index d22070f..87bc1c2 100644 (file)
@@ -218,6 +218,8 @@ $wgIgnoredMessages = array(
        'newuserlog-create-entry',
        'newuserlog-create2-entry',
        'newuserlog-autocreate-entry',
+       'rightslogentry',
+       'rightslogentry-autopromote',
        'suppressedarticle',
        'deletedarticle',
        // 'uploadedimage',
@@ -365,6 +367,7 @@ $wgOptionalMessages = array(
        'exif-maxaperturevalue-value',
        'exif-subjectnewscode-value',
        'booksources-isbn',
+       'protect-summary-desc',
        'sp-contributions-explain',
        'sorbs',
        'video-dims',
@@ -480,6 +483,8 @@ $wgOptionalMessages = array(
        'categoryviewer-pagedlinks',
        'undelete-revisionrow',
        'pageinfo-redirects-value',
+       'created', // @deprecated. Remove in MediaWiki 1.23.
+       'changed', // @deprecated. Remove in MediaWiki 1.23.
 );
 
 /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
index 9021bef..50a6f2e 100644 (file)
@@ -167,6 +167,7 @@ $wgMessageStructure = array(
                'newwindow',
                'cancel',
                'moredotdotdot',
+               'morenotlisted',
                'mypage',
                'mytalk',
                'anontalk',
@@ -513,6 +514,7 @@ $wgMessageStructure = array(
                'php-mail-error',
                'php-mail-error-unknown',
                'user-mail-no-addy',
+               'user-mail-no-body',
        ),
        'resetpass' => array(
                'resetpass',
@@ -1188,15 +1190,13 @@ $wgMessageStructure = array(
                'right-sendemail',
                'right-passwordreset',
        ),
+       'newuserlog' => array(
+               'newuserlogpage',
+               'newuserlogpagetext',
+       ),
        'rightslog' => array(
                'rightslog',
                'rightslogtext',
-               'rightslogentry',
-               'rightslogentry-autopromote',
-               'logentry-rights-rights',
-               'logentry-rights-rights-legacy',
-               'logentry-rights-autopromote',
-               'rightsnone',
        ),
        'action' => array(
                'action-read',
@@ -1848,10 +1848,6 @@ $wgMessageStructure = array(
                'activeusers-submit',
                'activeusers-noresult',
        ),
-       'newuserlog' => array(
-               'newuserlogpage',
-               'newuserlogpagetext',
-       ),
        'listgrouprights' => array(
                'listgrouprights',
                'listgrouprights-summary',
@@ -1964,6 +1960,8 @@ $wgMessageStructure = array(
                'enotif_lastdiff',
                'enotif_anon_editor',
                'enotif_body',
+               'created',
+               'changed',
        ),
        'delete' => array(
                'deletepage',
@@ -2021,6 +2019,8 @@ $wgMessageStructure = array(
                'prot_1movedto2',
                'protect-badnamespace-title',
                'protect-badnamespace-text',
+               'protect-norestrictiontypes-text',
+               'protect-norestrictiontypes-title',
                'protect-legend',
                'protectcomment',
                'protectexpiry',
@@ -2036,6 +2036,7 @@ $wgMessageStructure = array(
                'protect-fallback',
                'protect-level-autoconfirmed',
                'protect-level-sysop',
+               'protect-summary-desc',
                'protect-summary-cascade',
                'protect-expiring',
                'protect-expiring-local',
@@ -2716,6 +2717,7 @@ $wgMessageStructure = array(
                'pageinfo-magic-words',
                'pageinfo-hidden-categories',
                'pageinfo-templates',
+               'pageinfo-transclusions',
                'pageinfo-footer',
                'pageinfo-toolboxlink',
                'pageinfo-redirectsto',
@@ -2725,6 +2727,10 @@ $wgMessageStructure = array(
                'pageinfo-protect-cascading',
                'pageinfo-protect-cascading-yes',
                'pageinfo-protect-cascading-from',
+               'pageinfo-category-info',
+               'pageinfo-category-pages',
+               'pageinfo-category-subcats',
+               'pageinfo-category-files'
        ),
        'skin' => array(
                'skinname-standard',
@@ -2816,6 +2822,8 @@ $wgMessageStructure = array(
                'minutes',
                'hours',
                'days',
+               'months',
+               'years',
                'ago',
                'just-now',
        ),
@@ -3729,6 +3737,10 @@ $wgMessageStructure = array(
                'logentry-newusers-create2',
                'logentry-newusers-autocreate',
                'newuserlog-byemail',
+               'logentry-rights-rights',
+               'logentry-rights-rights-legacy',
+               'logentry-rights-autopromote',
+               'rightsnone',
        ),
        'logging-irc' => array(
                'revdelete-logentry',
@@ -3757,6 +3769,8 @@ $wgMessageStructure = array(
                'deletedarticle',
                // 'uploadedimage',
                // 'overwroteimage',
+               'rightslogentry',
+               'rightslogentry-autopromote',
        ),
        'feedback' => array(
                'feedback-bugornote',
diff --git a/maintenance/language/zhtable/.gitignore b/maintenance/language/zhtable/.gitignore
new file mode 100644 (file)
index 0000000..c4cf2eb
--- /dev/null
@@ -0,0 +1,3 @@
+*.zip
+*.tar.gz
+*.tgz
diff --git a/maintenance/language/zhtable/Makefile b/maintenance/language/zhtable/Makefile
new file mode 100644 (file)
index 0000000..9d3637f
--- /dev/null
@@ -0,0 +1,2 @@
+../../../includes/ZhConversion.php: Makefile.py $(wildcard *.manual)
+       ./Makefile.py
diff --git a/maintenance/language/zhtable/Makefile.py b/maintenance/language/zhtable/Makefile.py
new file mode 100755 (executable)
index 0000000..7e19794
--- /dev/null
@@ -0,0 +1,391 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @author Philip
+import tarfile as tf
+import zipfile as zf
+import os, re, shutil, sys, platform
+
+pyversion = platform.python_version()
+islinux = platform.system().lower() == 'linux'
+
+if pyversion[:3] in ['2.6', '2.7']:
+    import urllib as urllib_request
+    import codecs
+    open = codecs.open
+    _unichr = unichr
+    if sys.maxunicode < 0x10000:
+        def unichr(i):
+            if i < 0x10000:
+                return _unichr(i)
+            else:
+                return _unichr( 0xD7C0 + ( i>>10 ) ) + _unichr( 0xDC00 + ( i & 0x3FF ) )
+elif pyversion[:2] == '3.':
+    import urllib.request as urllib_request
+    unichr = chr
+
+def unichr2( *args ):
+    return [unichr( int( i.split('<')[0][2:], 16 ) ) for i in args]
+
+def unichr3( *args ):
+    return [unichr( int( i[2:7], 16 ) ) for i in args if i[2:7]]
+
+# DEFINE
+UNIHAN_VER = '6.2.0'
+SF_MIRROR = 'dfn'
+SCIM_TABLES_VER = '0.5.11'
+SCIM_PINYIN_VER = '0.5.92'
+LIBTABE_VER = '0.2.3'
+# END OF DEFINE
+
+def download( url, dest ):
+    if os.path.isfile( dest ):
+        print( 'File %s is up to date.' % dest )
+        return
+    global islinux
+    if islinux:
+        # we use wget instead urlretrieve under Linux, 
+        # because wget could display details like download progress
+        os.system( 'wget %s -O %s' % ( url, dest ) )
+    else:
+        print( 'Downloading from [%s] ...' % url )
+        urllib_request.urlretrieve( url, dest )
+        print( 'Download complete.\n' )
+    return
+
+def uncompress( fp, member, encoding = 'U8' ):
+    name = member.rsplit( '/', 1 )[-1]
+    print( 'Extracting %s ...' % name )
+    fp.extract( member )
+    shutil.move( member, name )
+    if '/' in member:
+        shutil.rmtree( member.split( '/', 1 )[0] )
+    return open( name, 'rb', encoding, 'ignore' )
+
+unzip = lambda path, member, encoding = 'U8': \
+        uncompress( zf.ZipFile( path ), member, encoding )
+
+untargz = lambda path, member, encoding = 'U8': \
+        uncompress( tf.open( path, 'r:gz' ), member, encoding )
+
+def parserCore( fp, pos, beginmark = None, endmark = None ):
+    if beginmark and endmark:
+        start = False
+    else: start = True
+    mlist = set()
+    for line in fp:
+        if beginmark and line.startswith( beginmark ):
+            start = True
+            continue
+        elif endmark and line.startswith( endmark ):
+            break
+        if start and not line.startswith( '#' ):
+            elems = line.split()
+            if len( elems ) < 2:
+                continue
+            elif len( elems[0] ) > 1 and \
+                len( elems[pos] ) > 1: # words only
+                mlist.add( elems[pos] )
+    return mlist
+
+def tablesParser( path, name ):
+    """ Read file from scim-tables and parse it. """
+    global SCIM_TABLES_VER
+    src = 'scim-tables-%s/tables/zh/%s' % ( SCIM_TABLES_VER, name )
+    fp = untargz( path, src, 'U8' )
+    return parserCore( fp, 1, 'BEGIN_TABLE', 'END_TABLE' )
+
+ezbigParser = lambda path: tablesParser( path, 'EZ-Big.txt.in' )
+wubiParser = lambda path: tablesParser( path, 'Wubi.txt.in' )
+zrmParser = lambda path: tablesParser( path, 'Ziranma.txt.in' )
+
+def phraseParser( path ):
+    """ Read phrase_lib.txt and parse it. """
+    global SCIM_PINYIN_VER
+    src = 'scim-pinyin-%s/data/phrase_lib.txt' % SCIM_PINYIN_VER
+    dst = 'phrase_lib.txt'
+    fp = untargz( path, src, 'U8' )
+    return parserCore( fp, 0 )
+
+def tsiParser( path ):
+    """ Read tsi.src and parse it. """
+    src = 'libtabe/tsi-src/tsi.src'
+    dst = 'tsi.src'
+    fp = untargz( path, src, 'big5hkscs' )
+    return parserCore( fp, 0 )
+
+def unihanParser( path ):
+    """ Read Unihan_Variants.txt and parse it. """
+    fp = unzip( path, 'Unihan_Variants.txt', 'U8' )
+    t2s = dict()
+    s2t = dict()
+    for line in fp:
+        if line.startswith( '#' ):
+            continue
+        else:
+            elems = line.split()
+            if len( elems ) < 3:
+                continue
+            type = elems.pop( 1 )
+            elems = unichr2( *elems )
+            if type == 'kTraditionalVariant':
+                s2t[elems[0]] = elems[1:]
+            elif type == 'kSimplifiedVariant':
+                t2s[elems[0]] = elems[1:]
+    fp.close()
+    return ( t2s, s2t )
+
+def applyExcludes( mlist, path ):
+    """ Apply exclude rules from path to mlist. """
+    excludes = open( path, 'rb', 'U8' ).read().split()
+    excludes = [word.split( '#' )[0].strip() for word in excludes]
+    excludes = '|'.join( excludes )
+    excptn = re.compile( '.*(?:%s).*' % excludes )
+    diff = [mword for mword in mlist if excptn.search( mword )]
+    mlist.difference_update( diff )
+    return mlist
+
+def charManualTable( path ):
+    fp = open( path, 'rb', 'U8' )
+    ret = {}
+    for line in fp:
+        elems = line.split( '#' )[0].split( '|' )
+        elems = unichr3( *elems )
+        if len( elems ) > 1:
+            ret[elems[0]] = elems[1:]
+    return ret
+        
+def toManyRules( src_table ):
+    tomany = set()
+    for ( f, t ) in src_table.iteritems():
+        for i in range( 1, len( t ) ):
+            tomany.add( t[i] )
+    return tomany
+
+def removeRules( path, table ):
+    fp = open( path, 'rb', 'U8' )
+    texc = list()
+    for line in fp:
+        elems = line.split( '=>' )
+        f = t = elems[0].strip()
+        if len( elems ) == 2:
+            t = elems[1].strip()
+        f = f.strip('"').strip("'")
+        t = t.strip('"').strip("'")
+        if f:
+            try:
+                table.pop( f )
+            except:
+                pass
+        if t:
+            texc.append( t )
+    texcptn = re.compile( '^(?:%s)$' % '|'.join( texc ) )
+    for (tmp_f, tmp_t) in table.copy().iteritems():
+        if texcptn.match( tmp_t ):
+            table.pop( tmp_f )
+    return table
+
+def customRules( path ):
+    fp = open( path, 'rb', 'U8' )
+    ret = dict()
+    for line in fp:
+        elems = line.split( '#' )[0].split()
+        if len( elems ) > 1:
+            ret[elems[0]] = elems[1]
+    return ret
+
+def dictToSortedList( src_table, pos ):
+    return sorted( src_table.items(), key = lambda m: m[pos] )
+
+def translate( text, conv_table ):
+    i = 0
+    while i < len( text ):
+        for j in range( len( text ) - i, 0, -1 ):
+            f = text[i:][:j]
+            t = conv_table.get( f )
+            if t:
+                text = text[:i] + t + text[i:][j:]
+                i += len(t) - 1
+                break
+        i += 1
+    return text
+
+def manualWordsTable( path, conv_table, reconv_table ):
+    fp = open( path, 'rb', 'U8' )
+    reconv_table = {}
+    wordlist = [line.split( '#' )[0].strip() for line in fp]
+    wordlist = list( set( wordlist ) )
+    wordlist.sort( key = len, reverse = True )
+    while wordlist:
+        word = wordlist.pop()
+        new_word = translate( word, conv_table )
+        rcv_word = translate( word, reconv_table )
+        if word != rcv_word:
+            reconv_table[word] = word
+        reconv_table[new_word] = word
+    return reconv_table
+
+def defaultWordsTable( src_wordlist, src_tomany, char_conv_table, char_reconv_table ):
+    wordlist = list( src_wordlist )
+    wordlist.sort( key = len, reverse = True )
+    word_conv_table = {}
+    word_reconv_table = {}
+    conv_table = char_conv_table.copy()
+    reconv_table = char_reconv_table.copy()
+    tomanyptn = re.compile( '(?:%s)' % '|'.join( src_tomany ) )
+    while wordlist:
+        conv_table.update( word_conv_table )
+        reconv_table.update( word_reconv_table )
+        word = wordlist.pop()
+        new_word_len = word_len = len( word )
+        while new_word_len == word_len:
+            add = False
+            test_word = translate( word, reconv_table )
+            new_word = translate( word, conv_table )
+            if not reconv_table.get( new_word ) \
+               and ( test_word != word \
+               or ( tomanyptn.search( word ) \
+               and word != translate( new_word, reconv_table ) ) ):
+                word_conv_table[word] = new_word
+                word_reconv_table[new_word] = word
+            try:
+                word = wordlist.pop()
+            except IndexError:
+                break
+            new_word_len = len(word)
+    return word_reconv_table
+
+def PHPArray( table ):
+    lines = ['\'%s\' => \'%s\',' % (f, t) for (f, t) in table if f and t]
+    return '\n'.join(lines)
+
+def main():
+    #Get Unihan.zip:
+    url = 'http://www.unicode.org/Public/%s/ucd/Unihan.zip' % UNIHAN_VER
+    han_dest = 'Unihan.zip'
+    download( url, han_dest )
+    
+    # Get scim-tables-$(SCIM_TABLES_VER).tar.gz:
+    url  = 'http://%s.dl.sourceforge.net/sourceforge/scim/scim-tables-%s.tar.gz' % ( SF_MIRROR, SCIM_TABLES_VER )
+    tbe_dest = 'scim-tables-%s.tar.gz' % SCIM_TABLES_VER
+    download( url, tbe_dest )
+    
+    # Get scim-pinyin-$(SCIM_PINYIN_VER).tar.gz:
+    url  = 'http://%s.dl.sourceforge.net/sourceforge/scim/scim-pinyin-%s.tar.gz' % ( SF_MIRROR, SCIM_PINYIN_VER )
+    pyn_dest = 'scim-pinyin-%s.tar.gz' % SCIM_PINYIN_VER
+    download( url, pyn_dest )
+    
+    # Get libtabe-$(LIBTABE_VER).tgz:
+    url  = 'http://%s.dl.sourceforge.net/sourceforge/libtabe/libtabe-%s.tgz' % ( SF_MIRROR, LIBTABE_VER )
+    lbt_dest = 'libtabe-%s.tgz' % LIBTABE_VER
+    download( url, lbt_dest )
+    
+    # Unihan.txt
+    ( t2s_1tomany, s2t_1tomany ) = unihanParser( han_dest )
+
+    t2s_1tomany.update( charManualTable( 'trad2simp.manual' ) )
+    s2t_1tomany.update( charManualTable( 'simp2trad.manual' ) )
+    
+    t2s_1to1 = dict( [( f, t[0] ) for ( f, t ) in t2s_1tomany.iteritems()] )
+    s2t_1to1 = dict( [( f, t[0] ) for ( f, t ) in s2t_1tomany.iteritems()] )
+    
+    s_tomany = toManyRules( t2s_1tomany )
+    t_tomany = toManyRules( s2t_1tomany )
+
+    # noconvert rules
+    t2s_1to1 = removeRules( 'trad2simp_noconvert.manual', t2s_1to1 )
+    s2t_1to1 = removeRules( 'simp2trad_noconvert.manual', s2t_1to1 )
+    
+    # the supper set for word to word conversion
+    t2s_1to1_supp = t2s_1to1.copy()
+    s2t_1to1_supp = s2t_1to1.copy()
+    t2s_1to1_supp.update( customRules( 'trad2simp_supp_set.manual' ) )
+    s2t_1to1_supp.update( customRules( 'simp2trad_supp_set.manual' ) )
+    
+    # word to word manual rules
+    t2s_word2word_manual = manualWordsTable( 'simpphrases.manual', s2t_1to1_supp, t2s_1to1_supp )
+    t2s_word2word_manual.update( customRules( 'toSimp.manual' ) )
+    s2t_word2word_manual = manualWordsTable( 'tradphrases.manual', t2s_1to1_supp, s2t_1to1_supp )
+    s2t_word2word_manual.update( customRules( 'toTrad.manual' ) )
+
+    # word to word rules from input methods
+    t_wordlist = set()
+    s_wordlist = set()
+    t_wordlist.update( ezbigParser( tbe_dest ),
+                       tsiParser( lbt_dest ) )
+    s_wordlist.update( wubiParser( tbe_dest ),
+                       zrmParser( tbe_dest ),
+                       phraseParser( pyn_dest ) )
+
+    # exclude
+    s_wordlist = applyExcludes( s_wordlist, 'simpphrases_exclude.manual' )
+    t_wordlist = applyExcludes( t_wordlist, 'tradphrases_exclude.manual' )
+
+    s2t_supp = s2t_1to1_supp.copy()
+    s2t_supp.update( s2t_word2word_manual )
+    t2s_supp = t2s_1to1_supp.copy()
+    t2s_supp.update( t2s_word2word_manual )
+
+    # parse list to dict
+    t2s_word2word = defaultWordsTable( s_wordlist, s_tomany, s2t_1to1_supp, t2s_supp )
+    t2s_word2word.update( t2s_word2word_manual )
+    s2t_word2word = defaultWordsTable( t_wordlist, t_tomany, t2s_1to1_supp, s2t_supp )
+    s2t_word2word.update( s2t_word2word_manual )
+    
+    # Final tables
+    # sorted list toHans
+    t2s_1to1 = dict( [( f, t ) for ( f, t ) in t2s_1to1.iteritems() if f != t] )
+    toHans = dictToSortedList( t2s_1to1, 0 ) + dictToSortedList( t2s_word2word, 1 )
+    # sorted list toHant
+    s2t_1to1 = dict( [( f, t ) for ( f, t ) in s2t_1to1.iteritems() if f != t] )
+    toHant = dictToSortedList( s2t_1to1, 0 ) + dictToSortedList( s2t_word2word, 1 )
+    # sorted list toCN
+    toCN = dictToSortedList( customRules( 'toCN.manual' ), 1 )
+    # sorted list toHK
+    toHK = dictToSortedList( customRules( 'toHK.manual' ), 1 )
+    # sorted list toSG
+    toSG = dictToSortedList( customRules( 'toSG.manual' ), 1 )
+    # sorted list toTW
+    toTW = dictToSortedList( customRules( 'toTW.manual' ), 1 )
+    
+    # Get PHP Array
+    php = '''<?php
+/**
+ * Simplified / Traditional Chinese conversion tables
+ *
+ * Automatically generated using code and data in includes/zhtable/
+ * Do not modify directly!
+ *
+ * @file
+ */
+
+$zh2Hant = array(\n'''
+    php += PHPArray( toHant ) \
+        +  '\n);\n\n$zh2Hans = array(\n' \
+        +  PHPArray( toHans ) \
+        +  '\n);\n\n$zh2TW = array(\n' \
+        +  PHPArray( toTW ) \
+        +  '\n);\n\n$zh2HK = array(\n' \
+        +  PHPArray( toHK ) \
+        +  '\n);\n\n$zh2CN = array(\n' \
+        +  PHPArray( toCN ) \
+        +  '\n);\n\n$zh2SG = array(\n' \
+        +  PHPArray( toSG ) \
+        +  '\n);\n'
+    
+    f = open( os.path.join( '..', '..', '..', 'includes', 'ZhConversion.php' ), 'wb', encoding = 'utf8' )
+    print ('Writing ZhConversion.php ... ')
+    f.write( php )
+    f.close()
+    
+    # Remove temporary files
+    print ('Deleting temporary files ... ')
+    os.remove('EZ-Big.txt.in')
+    os.remove('phrase_lib.txt')
+    os.remove('tsi.src')
+    os.remove('Unihan_Variants.txt')
+    os.remove('Wubi.txt.in')
+    os.remove('Ziranma.txt.in')
+    
+
+if __name__ == '__main__':
+    main()
diff --git a/maintenance/language/zhtable/README b/maintenance/language/zhtable/README
new file mode 100644 (file)
index 0000000..7e3f87e
--- /dev/null
@@ -0,0 +1,33 @@
+The various .manual files contains special mappings not included in the
+unihan database, and phrases not included in the SCIM package. 
+
+- simp2trad.manual: Simplified to Traditional character mapping. Most
+  data adapted from
+
+   冯寿忠,“非对称繁简字”对照表, 《语文建设通讯》1997-9第53期.
+   /http://www.yywzw.com/jt/feng/fengb01.htm
+
+- trad2simp.manual: Traditional to Simplified character mapping.
+
+- simp2trad_noconvert.manual: Do not convert the chars as inapporiate.
+
+- trad2simp_noconvert.manual: Do not convert the chars as inapporiate.
+
+- tradphrases.manual: Phrases in Traditional Chinese. A portition is obtained
+  from the TongWen package (http://tongwen.mozdev.org/)
+
+- simpphrases.manual: Phrases in Simplified Chinese.
+
+- tradphrases_exclude.manual: Excluding several phrases from 
+  the SCIM phrases as inappoiated.
+
+- simpphrases_exclude.manual: Excluding several phrases from
+  the SCIM phrases as inapporated.
+
+- toTrad.manual, toSimp.manual: Special phrase mappings that 
+  tradphrases.manual or simphrases.manual cannot be handled.
+
+- toTW.manual, toCN.manual, toSG.manual and toHK.manual: Special phrase
+  mappings. 
+
+zhengzhu at gmail dot com & shinjiman at gmail dot com
diff --git a/maintenance/language/zhtable/simp2trad.manual b/maintenance/language/zhtable/simp2trad.manual
new file mode 100644 (file)
index 0000000..1b84f8e
--- /dev/null
@@ -0,0 +1,372 @@
+U+03CE0㳠|U+06FBE澾|
+U+0447D䑽|U+26A99𦪙|
+U+0497A䥺|U+091FE釾|
+U+0497D䥽|U+093FA鏺|
+U+04983䦃|U+0942F鐯|
+U+04985䦅|U+09425鐥|
+U+04B6A䭪|U+297AF𩞯|
+U+04C9F䲟|U+09BA3鮣|
+U+04CA0䲠|U+09C06鰆|
+U+04CA1䲡|U+09C0C鰌|
+U+04CA2䲢|U+09C27鰧|
+U+04CA3䲣|U+04C77䱷|
+U+04DAE䶮|U+09F91龑|
+U+04E07万|U+0842C萬|U+04E07万|
+U+04E0E与|U+08207與|U+04E0E与|
+U+04E11丑|U+04E11丑|U+0919C醜|
+U+04E2A个|U+0500B個|U+07B87箇|
+U+04E30丰|U+08C50豐|U+04E30丰|
+U+04E3A为|U+070BA為|U+07232爲|
+U+04E48么|U+04E48么|U+09EBD麽|U+05E7A幺|U+09EBC麼|
+U+04E86了|U+04E86了|U+077AD瞭|
+U+04E8E于|U+065BC於|U+04E8E于|
+U+04E91云|U+096F2雲|U+04E91云|
+U+04EA7产|U+07522產|U+07523産|
+U+04EC6仆|U+04EC6仆|U+050D5僕|
+U+04EC7仇|U+04EC7仇|U+08B8E讎|
+U+04ED1仑|U+04F96侖|U+05D19崙|
+U+04EF7价|U+050F9價|U+04EF7价|
+U+04F17众|U+0773E眾|U+08846衆|
+U+04F19伙|U+04F19伙|U+05925夥|
+U+04F2A伪|U+0507D偽|U+050DE僞|
+U+04F53体|U+09AD4體|U+04F53体|
+U+04F59余|U+04F59余|U+09918餘|
+U+04F63佣|U+04F63佣|U+050AD傭|
+U+0501F借|U+0501F借|U+085C9藉|
+U+0513F儿|U+05152兒|U+0513F儿|
+U+0514B克|U+0514B克|U+0524B剋|
+U+0515A党|U+09EE8黨|U+0515A党|
+U+051AC冬|U+051AC冬|U+09F15鼕|
+U+051B2冲|U+06C96沖|U+0885D衝|
+U+051C6准|U+051C6准|U+06E96準|
+U+051E0几|U+05E7E幾|U+051E0几|
+U+051EB凫|U+09CE7鳧|U+09CEC鳬|
+U+051FA出|U+051FA出|U+09F63齣|
+U+05212划|U+05283劃|U+05212划|
+U+0522B别|U+05225別|U+05F46彆|
+U+0522E刮|U+0522E刮|U+098B3颳|
+U+05236制|U+05236制|U+088FD製|
+U+05343千|U+05343千|U+097C6韆|
+U+05347升|U+05347升|U+06607昇|U+0965E陞|
+U+0535C卜|U+0535C卜|U+08514蔔|
+U+05360占|U+05360占|U+04F54佔|
+U+05364卤|U+09E75鹵|U+06EF7滷|
+U+05377卷|U+05377卷|U+06372捲|
+U+0537A卺|U+05DF9巹|
+U+05382厂|U+05EE0廠|U+05382厂|
+U+05386历|U+06B77歷|U+066C6曆|U+053A4厤|
+U+05395厕|U+05EC1廁|U+053A0厠|
+U+05398厘|U+05398厘|U+091D0釐|
+U+053D1发|U+0767C發|U+09AEE髮|
+U+053EA只|U+053EA只|U+096BB隻|
+U+053F0台|U+053F0台|U+081FA臺|U+06AAF檯|U+098B1颱|
+U+053F6叶|U+08449葉|U+053F6叶|
+U+05401吁|U+05401吁|U+07C72籲|
+U+05408合|U+05408合|U+095A4閤|
+U+0540A吊|U+0540A吊|U+05F14弔|
+U+0540C同|U+0540C同|U+08855衕|
+U+0540E后|U+05F8C後|U+0540E后|
+U+05411向|U+05411向|U+056AE嚮|U+066CF曏|
+U+0542F启|U+0555F啟|U+05553啓|
+U+05446呆|U+05446呆|U+07343獃|
+U+054B8咸|U+054B8咸|U+09E79鹹|
+U+054C4哄|U+054C4哄|U+09B28鬨|
+U+05582喂|U+05582喂|U+09935餵|
+U+056DE回|U+056DE回|U+08FF4迴|
+U+056E2团|U+05718團|U+07CF0糰|
+U+056F0困|U+056F0困|U+0774F睏|
+U+05742坂|U+05742坂|U+0962A阪|
+U+0574F坏|U+058DE壞|U+0574F坏|
+U+0575B坛|U+058C7壇|U+07F48罈|
+U+057FC埼|U+057FC埼|U+07895碕|
+U+05899墙|U+07246牆|U+058BB墻|
+U+058F3壳|U+06BBC殼|U+06BBB殻|
+U+0590D复|U+05FA9復|U+08907複|
+U+05956奖|U+0734E獎|U+0596C奬|
+U+05978奸|U+05978奸|U+059E6姦|
+U+059AB妫|U+05AAF媯|U+05B00嬀|
+U+059DC姜|U+059DC姜|U+08591薑|
+U+05B81宁|U+05BE7寧|U+05B81宁|
+U+05BB6家|U+05BB6家|U+050A2傢|
+U+05C3D尽|U+076E1盡|U+05118儘|
+U+05CB3岳|U+05CB3岳|U+05DBD嶽|
+U+05E03布|U+05E03布|U+04F48佈|
+U+05E18帘|U+07C3E簾|U+05E18帘|
+U+05E5E幞|U+08946襆|
+U+05E72干|U+05E72干|U+04E7E乾|U+05E79幹|U+069A6榦|
+U+05E76并|U+04E26並|U+04F75併|
+U+05E78幸|U+05E78幸|U+05016倖|
+U+05E7F广|U+05EE3廣|U+05E7F广|
+U+05E84庄|U+05E84庄|U+0838A莊|
+U+05EB5庵|U+05EB5庵|U+083F4菴|
+U+05F25弥|U+05F4C彌|U+07030瀰|
+U+05F53当|U+07576當|U+05679噹|
+U+05F55录|U+09304錄|U+09332録|
+U+05F69彩|U+05F69彩|U+07DB5綵|
+U+05F81征|U+05F81征|U+05FB5徵|
+U+05FA1御|U+05FA1御|U+079A6禦|
+U+05FD7志|U+05FD7志|U+08A8C誌|
+U+06076恶|U+060E1惡|U+05641噁|
+U+060AB悫|U+06128愨|U+06164慤|
+U+0613F愿|U+09858願|U+0613F愿|
+U+0621A戚|U+0621A戚|U+0617C慼|U+093DA鏚|
+U+0624D才|U+0624D才|U+07E94纔|
+U+0624E扎|U+0624E扎|U+07D2E紮|
+U+06258托|U+06258托|U+08A17託|
+U+06298折|U+06298折|U+0647A摺|
+U+062C5担|U+064D4擔|U+062C5担|
+U+062FC拼|U+062FC拼|U+062DA拚|
+U+06328挨|U+06328挨|U+06371捱|
+U+0633D挽|U+0633D挽|U+08F13輓|
+U+0636E据|U+064DA據|U+0636E据|
+U+06597斗|U+06597斗|U+09B25鬥|
+U+065CB旋|U+065CB旋|U+0955F镟|
+U+065D7旗|U+065D7旗|U+065C2旂|
+U+066F2曲|U+066F2曲|U+09EAF麯|U+09EB4麯|
+U+0672F术|U+08853術|U+0672E朮|
+U+06731朱|U+06731朱|U+07843硃|
+U+06734朴|U+06734朴|U+06A38樸|
+U+0676F杯|U+0676F杯|U+076C3盃|
+U+0677E松|U+0677E松|U+09B06鬆|
+U+0677F板|U+0677F板|U+095C6闆|
+U+06781极|U+06975極|U+06781极|
+U+067DC柜|U+06AC3櫃|U+067DC柜|
+U+06817栗|U+06817栗|U+06144慄|
+U+06881梁|U+06881梁|U+06A11樑|
+U+068F1棱|U+068F1棱|U+07A1C稜|
+U+06B32欲|U+06B32欲|U+0617E慾|
+U+06C47汇|U+0532F匯|U+06ED9滙|U+05F59彙|
+U+06C84沄|U+06C84沄|U+06F90澐|
+U+06C88沈|U+06C88沈|U+0700B瀋|
+U+06CA9沩|U+06E88溈|U+06F59潙|
+U+06CE8注|U+06CE8注|U+08A3B註|
+U+06D82涂|U+05857塗|U+06D82涂|
+U+06D8C涌|U+06D8C涌|U+06E67湧|
+U+06DC0淀|U+06DC0淀|U+06FB1澱|
+U+06E38游|U+06E38游|U+0904A遊|
+U+06EAF溯|U+06EAF溯|U+06CDD泝|
+U+06F13漓|U+06F13漓|U+07055灕|
+U+070BC炼|U+07149煉|U+0934A鍊|
+U+0753B画|U+0756B畫|U+07575畵|
+U+075C7症|U+075C7症|U+07665癥|
+U+07618瘘|U+0763A瘺|U+0763B瘻|
+U+0786E确|U+078BA確|U+0786E确|
+U+07877硷|U+07906礆|U+09E7C鹼|
+U+079CB秋|U+079CB秋|U+097A6鞦|
+U+079CD种|U+07A2E種|U+079CD种|
+U+07A57穗|U+07A57穗|U+07E50繐|
+U+07AD6竖|U+08C4E豎|U+07AEA竪|
+U+07B51筑|U+07BC9築|U+07B51筑|
+U+07B7E签|U+07C3D簽|U+07C64籤|
+U+07CFB系|U+07CFB系|U+07E6B繫|U+04FC2係|
+U+07D2F累|U+07D2F累|U+07E8D纍|
+U+07EA4纤|U+07E96纖|U+07E34縴|
+U+07EBF线|U+07DDA線|U+07DAB綫|
+U+07EDD绝|U+07D55絕|U+07D76絶|
+U+07EE3绣|U+07D89綉|U+07E61繡|
+U+07EE6绦|U+07D5B絛|U+07E27縧|
+U+07EF1绱|U+07DD4緔|U+0979D鞝|
+U+07EF7绷|U+07DB3綳|U+07E43繃|
+U+07EFF绿|U+07DA0綠|U+07DD1緑|
+U+07F30缰|U+097C1韁|U+07E6E繮|
+U+07FA1羡|U+07FA8羨|
+U+080DC胜|U+052DD勝|U+080DC胜|
+U+080E1胡|U+080E1胡|U+09B0D鬍|U+0885A衚|
+U+0810F脏|U+081DF臟|U+09AD2髒|
+U+0814A腊|U+081D8臘|U+0814A腊|
+U+081F4致|U+081F4致|U+07DFB緻|
+U+0820D舍|U+0820D舍|U+06368捨|
+U+082B8芸|U+082B8芸|U+08553蕓|
+U+082CE苎|U+082E7苧|
+U+082CF苏|U+08607蘇|U+056CC囌|U+07C64甦|
+U+082E7苧|U+085B4薴|
+U+082F9苹|U+0860B蘋|U+082F9苹|
+U+08303范|U+08303范|U+07BC4範|
+U+0836F药|U+0846F葯|U+085E5藥|
+U+083B7获|U+07372獲|U+07A6B穫|
+U+083BC莼|U+08493蒓|U+084F4蓴|
+U+08499蒙|U+08499蒙|U+077C7矇|U+06FDB濛|U+061DE懞|
+U+084D1蓑|U+084D1蓑|U+07C11簑|
+U+08511蔑|U+08511蔑|U+0884A衊|
+U+08574蕴|U+0860A蘊|U+085F4藴|
+U+0866B虫|U+087F2蟲|U+0866B虫|
+U+08721蜡|U+0881F蠟|U+08721蜡|
+U+0874E蝎|U+0880D蠍|
+U+08868表|U+08868表|U+09336錶|
+U+08BF4说|U+08AAA說|U+08AAC説|
+U+08C23谣|U+08B20謠|U+08B21謡|
+U+08C2B谫|U+08B7E譾|U+08B2D謭|
+U+08C37谷|U+08C37谷|U+07A40穀|
+U+08D43赃|U+08D13贓|U+08D1C贜|
+U+08D4D赍|U+09F4E齎|U+08CEB賫|
+U+08D5D赝|U+08D17贗|U+08D0B贋|
+U+08D5E赞|U+08D0A贊|U+08B9A讚|
+U+08F9F辟|U+08F9F辟|U+095E2闢|
+U+09002适|U+09069適|U+09002适|
+U+090C1郁|U+090C1郁|U+09B31鬱|
+U+0915D酝|U+0919E醞|U+09196醖|
+U+09170酰|U+09170酰|U+091AF醯|
+U+09178酸|U+09178酸|U+075E0痠|
+U+091C7采|U+091C7采|U+063A1採|U+057F0埰|
+U+091CC里|U+091CC里|U+088E1裡|U+088CF裏|
+U+093AD鎭|U+093AE鎮|
+U+0949F钟|U+0937E鍾|U+09418鐘|
+U+094A9钩|U+09264鉤|U+0920E鈎|
+U+094B5钵|U+07F3D缽|U+09262鉢|
+U+094F2铲|U+093DF鏟|U+05277剷|
+U+09508锈|U+092B9銹|U+093FD鏽|
+U+09510锐|U+092B3銳|U+092ED鋭|
+U+09528锨|U+06774杴|U+09341鍁|
+U+0954C镌|U+0942B鐫|U+093B8鎸|
+U+09562镢|U+09481钁|U+0941D鐝|
+U+09605阅|U+095B1閱|U+095B2閲|
+U+096C7雇|U+096C7雇|U+050F1僱|
+U+096D5雕|U+096D5雕|U+09D70鵰|
+U+09709霉|U+09709霉|U+09EF4黴|
+U+09762面|U+09762面|U+09EB5麵|U+09EAA麪|U+09EAB麫|
+U+097B2鞲|U+097DD韝|
+U+0987B须|U+09808須|U+09B1A鬚|
+U+09893颓|U+09839頹|U+0983D頽|
+U+0989C颜|U+0984F顏|U+09854顔|
+U+09965饥|U+098E2飢|U+09951饑|
+U+09980馀|U+09918餘|
+U+09986馆|U+09928館|U+08218舘|
+U+09A82骂|U+07F75罵|U+099E1駡|
+U+09C87鲇|U+09BF0鯰|U+09B8E鮎|
+U+09C9E鲞|U+09BD7鯗|U+09B9D鮝|
+U+09CC4鳄|U+09C77鱷|U+09C10鰐|
+U+09E21鸡|U+096DE雞|U+09DC4鷄|
+U+09E5A鹚|U+09DBF鶿|U+09DC0鷀|
+U+09E6E鹮|U+04D09䴉|
+U+09F44齄|U+09F47齇|
+U+20BB6𠮶|U+055F0嗰|
+U+26216𦈖|U+04308䌈|
+U+28C3E𨰾|U+093B7鎷|
+U+28C3F𨰿|U+091F3釳|
+U+28C40𨱀|U+2895B𨥛|
+U+28C41𨱁|U+09220鈠|
+U+28C42𨱂|U+0920B鈋|
+U+28C43𨱃|U+09232鈲|
+U+28C44𨱄|U+0922F鈯|
+U+28C45𨱅|U+09241鉁|
+U+28C47𨱇|U+092B6銶|
+U+28C48𨱈|U+092C9鋉|
+U+28C49𨱉|U+09344鍄|
+U+28C4A𨱊|U+289F1𨧱|
+U+28C4B𨱋|U+09302錂|
+U+28C4C𨱌|U+093C6鏆|
+U+28C4D𨱍|U+093AF鎯|
+U+28C4E𨱎|U+0936E鍮|
+U+28C4F𨱏|U+0939D鎝|
+U+28C50𨱐|U+28AD2𨫒|
+U+28C52𨱒|U+093C9鏉|
+U+28C53𨱓|U+0940E鐎|
+U+28C54𨱔|U+0940F鐏|
+U+28C55𨱕|U+28B82𨮂|
+U+28E02𨸂|U+0958D閍|
+U+28E03𨸃|U+09590閐|
+U+293FC𩏼|U+04A8F䪏|
+U+293FD𩏽|U+293EA𩏪|
+U+293FE𩏾|U+293A2𩎢|
+U+293FF𩏿|U+04A98䪘|
+U+29400𩐀|U+04A97䪗|
+U+29595𩖕|U+294E3𩓣|
+U+29596𩖖|U+09843顃|
+U+29597𩖗|U+04AF4䫴|
+U+29665𩙥|U+098B0颰|
+U+29666𩙦|U+295C0𩗀|
+U+29667𩙧|U+295E1𩗡|
+U+29668𩙨|U+29639𩘹|
+U+29669𩙩|U+29600𩘀|
+U+2966A𩙪|U+098B7颷|
+U+2966B𩙫|U+098BE颾|
+U+2966C𩙬|U+2963A𩘺|
+U+2966D𩙭|U+2961D𩘝|
+U+2966E𩙮|U+04B18䬘|
+U+2966F𩙯|U+04B1D䬝|
+U+29670𩙰|U+29648𩙈|
+U+29805𩠅|U+297D0𩟐|
+U+29806𩠆|U+29726𩜦|
+U+29807𩠇|U+04B40䭀|
+U+29808𩠈|U+04B43䭃|
+U+2980B𩠋|U+29754𩝔|
+U+2980C𩠌|U+09938餸|
+U+299E6𩧦|U+2987A𩡺|
+U+299E8𩧨|U+099CE駎|
+U+299E9𩧩|U+2990A𩤊|
+U+299EA𩧪|U+04BBE䮾|
+U+299EB𩧫|U+099DA駚|
+U+299EC𩧬|U+298A1𩢡|
+U+299ED𩧭|U+04B7F䭿|
+U+299EE𩧮|U+298BE𩢾|
+U+299EF𩧯|U+09A4B驋|
+U+299F0𩧰|U+04B9D䮝|
+U+299F1𩧱|U+29949𩥉|
+U+299F2𩧲|U+099E7駧|
+U+299F3𩧳|U+298B8𩢸|
+U+299F4𩧴|U+099E9駩|
+U+299F5𩧵|U+298B4𩢴|
+U+299F6𩧶|U+298CF𩣏|
+U+299FA𩧺|U+099F6駶|
+U+299FB𩧻|U+298F5𩣵|
+U+299FC𩧼|U+298FA𩣺|
+U+299FF𩧿|U+04BA0䮠|
+U+29A00𩨀|U+09A14騔|
+U+29A01𩨁|U+04B9E䮞|
+U+29A03𩨃|U+09A1D騝|
+U+29A04𩨄|U+09A2A騪|
+U+29A05𩨅|U+29938𩤸|
+U+29A06𩨆|U+29919𩤙|
+U+29A08𩨈|U+09A1F騟|
+U+29A09𩨉|U+29932𩤲|
+U+29A0A𩨊|U+09A1A騚|
+U+29A0B𩨋|U+29944𩥄|
+U+29A0C𩨌|U+29951𩥑|
+U+29A0D𩨍|U+29947𩥇|
+U+29A0F𩨏|U+04BB3䮳|
+U+29A10𩨐|U+299C6𩧆|
+U+29F79𩽹|U+09B65魥|
+U+29F7A𩽺|U+29D69𩵩|
+U+29F7B𩽻|U+29D79𩵹|
+U+29F7C𩽼|U+09BF6鯶|
+U+29F7D𩽽|U+29DB1𩶱|
+U+29F7E𩽾|U+09B9F鮟|
+U+29F7F𩽿|U+29DB0𩶰|
+U+29F80𩾀|U+09B95鮕|
+U+29F81𩾁|U+09BC4鯄|
+U+29F83𩾃|U+09BB8鮸|
+U+29F84𩾄|U+29DF0𩷰|
+U+29F85𩾅|U+29E03𩸃|
+U+29F86𩾆|U+29E26𩸦|
+U+29F87𩾇|U+09BF1鯱|
+U+29F88𩾈|U+04C59䱙|
+U+29F8A𩾊|U+04C6C䱬|
+U+29F8B𩾋|U+04C70䱰|
+U+29F8C𩾌|U+09C47鱇|
+U+29F8C𩾌|U+09C47鱇|
+U+29F8E𩾎|U+29F47𩽇|
+U+2A242𪉂|U+04CB0䲰|
+U+2A243𪉃|U+09CFC鳼|
+U+2A244𪉄|U+29FEA𩿪|
+U+2A245𪉅|U+2A026𪀦|
+U+2A246𪉆|U+09D32鴲|
+U+2A248𪉈|U+09D1C鴜|
+U+2A249𪉉|U+2A048𪁈|
+U+2A24A𪉊|U+09DE8鷨|
+U+2A24B𪉋|U+2A03E𪀾|
+U+2A24C𪉌|U+2A056𪁖|
+U+2A24D𪉍|U+09D5A鵚|
+U+2A24E𪉎|U+2A086𪂆|
+U+2A24F𪉏|U+2A0CF𪃏|
+U+2A250𪉐|U+2A0CD𪃍|
+U+2A251𪉑|U+09DD4鷔|
+U+2A252𪉒|U+2A115𪄕|
+U+2A254𪉔|U+2A106𪄆|
+U+2A255𪉕|U+2A1F3𪇳|
+U+2A388𪎈|U+04D2C䴬|
+U+2A389𪎉|U+09EB2麲|
+U+2A38A𪎊|U+09EA8麨|
+U+2A38B𪎋|U+04D34䴴|
+U+2A38C𪎌|U+09EB3麳|
+U+2A68F𪚏|U+2A600𪘀|
+U+2A690𪚐|U+2A62F𪘯|
diff --git a/maintenance/language/zhtable/simp2trad_noconvert.manual b/maintenance/language/zhtable/simp2trad_noconvert.manual
new file mode 100644 (file)
index 0000000..a46560a
--- /dev/null
@@ -0,0 +1,139 @@
+著
+竈
+彞
+=>"余"
+=>"𫗭"
+=>"𪨧"
+=>"𫚭"
+=>"𫔀"
+=>"𫊻"
+=>"𫋌"
+=>"蚃"
+=>"𩾂"
+=>"𫚜"
+=>"𫚢"
+=>"𧉰"
+=>"䙌"
+=>"𫊮"
+=>"𫋇"
+=>"𫉄"
+=>"𫘛"
+=>"𫘜"
+=>"𫘝"
+=>"𫘟"
+=>"𩧨"
+=>"𩧫"
+=>"𫘞"
+=>"𫘠"
+=>"𩧲"
+=>"𩧴"
+=>"𫘡"
+=>"𩧺"
+=>"𫘣"
+=>"𫘤"
+=>"𫘧"
+=>"𫘥"
+=>"𫘦"
+=>"𩨀"
+=>"𩨊"
+=>"𫘩"
+=>"𩨃"
+=>"𫘪"
+=>"𫘪"
+=>"𫘫"
+=>"𫘬"
+=>"𩨈"
+=>"𫘨"
+=>"𩨄"
+=>"𫘭"
+=>"𩧯"
+=>"𫘯"
+=>"𫘰"
+=>"𫘱"
+=>"𫘽"
+=>"𫚉"
+=>"𩽹"
+=>"𫚌"
+=>"𫚍"
+=>"𫚒"
+=>"𫚑"
+=>"𫚖"
+=>"𩽾"
+=>"䲟"
+=>"𫚓"
+=>"𫚗"
+=>"𫚔"
+=>"𫚛"
+=>"𩾃"
+=>"𫚚"
+=>"𩾁"
+=>"𫚙"
+=>"𫚡"
+=>"𫚞"
+=>"𩾇"
+=>"𩽼"
+=>"𫚣"
+=>"䲠"
+=>"䲡"
+=>"𫚊"
+=>"𫚥"
+=>"𫚕"
+=>"𫚤"
+=>"䲢"
+=>"𫚦"
+=>"𫚧"
+=>"𫚋"
+=>"𩾌"
+=>"𫚪"
+=>"𫚫"
+=>"𫚈"
+=>"𫚭"
+=>"𫛛"
+=>"𪉃"
+=>"𫛚"
+=>"𫛜"
+=>"𫛞"
+=>"𫛝"
+=>"𫛤"
+=>"𫛡"
+=>"𫁡"
+=>"𪉈"
+=>"𫛣"
+=>"𫛦"
+=>"𪉆"
+=>"𫛩"
+=>"𫛪"
+=>"𫛥"
+=>"𪉍"
+=>"𫛭"
+=>"𫛨"
+=>"𫛳"
+=>"𫛱"
+=>"𫛲"
+=>"𫛵"
+=>"𫛶"
+=>"𫛸"
+=>"𫛷"
+=>"𫛯"
+=>"𫛫"
+=>"𫛽"
+=>"𫜀"
+=>"𪉑"
+=>"𫜃"
+=>"𫛴"
+=>"𪉊"
+=>"𫜁"
+=>"𫜄"
+=>"𫛢"
+=>"𫛟"
+=>"𪎊"
+=>"𤿲"
+=>"𪎉"
+=>"𪎌"
+=>"𫜑"
+=>"𫜩"
+=>"𫜪"
+=>"𫜭"
+=>"𫜬"
+=>"𫜮"
+=>"𫜰"
diff --git a/maintenance/language/zhtable/simp2trad_supp_set.manual b/maintenance/language/zhtable/simp2trad_supp_set.manual
new file mode 100644 (file)
index 0000000..a5038a5
--- /dev/null
@@ -0,0 +1,2 @@
+余    餘
+着    著
\ No newline at end of file
diff --git a/maintenance/language/zhtable/simpphrases.manual b/maintenance/language/zhtable/simpphrases.manual
new file mode 100644 (file)
index 0000000..d8602fe
--- /dev/null
@@ -0,0 +1,2239 @@
+乾上乾下
+乾为天
+乾为阳
+乾九
+乾乾
+乾亨
+乾仪
+乾位
+乾健
+乾元
+乾光
+乾兴
+乾冈
+乾刘
+乾刚
+乾化
+乾卦
+乾县
+乾台
+乾吉
+乾启
+乾命
+乾和
+乾嘉
+乾图
+乾坤
+乾城
+乾基
+乾始
+乾姓
+乾宁
+乾宅
+乾宇
+乾安
+乾定
+乾封
+乾居
+乾岗
+乾巛
+乾州
+乾式
+乾录
+乾律
+乾德
+乾心
+乾文
+乾断
+乾方
+乾施
+乾旦
+乾明
+乾昧
+乾晖
+乾景
+乾晷
+乾曜
+乾构
+乾枢
+乾栋
+乾步
+乾氏
+乾泉
+乾清宫
+乾渥
+乾灵
+乾男
+乾皋
+乾盛世
+乾矢
+乾祐
+乾穹
+乾窦
+乾竺
+乾笃
+乾符
+乾策
+乾精
+乾红
+乾纲
+乾纽
+乾络
+乾统
+乾维
+乾罗
+乾花
+乾荫
+乾行
+乾衡
+乾覆
+乾象
+乾象历
+乾贞
+乾贶
+乾车
+乾轴
+乾造
+乾道
+乾鉴
+乾钧
+乾闼
+乾陀
+乾陵
+乾隆
+乾音
+乾顾
+乾风
+乾首
+乾马
+乾鹄
+乾鹊
+乾龙
+乾,健也
+乾,天也
+乾健也
+乾天也
+坤乾
+天道为乾
+尼乾陀
+康乾
+张法乾
+旋乾转坤
+易·乾
+《易乾
+周易乾
+易经·乾
+易经乾
+李乾德
+萧乾
+郭子乾
+雍乾
+乾务
+乾沓和
+乾沓婆
+乾通
+乾忠
+乾淳
+李乾顺
+黄润乾
+男性为乾
+男为乾
+阳为乾
+乾一组
+乾一坛
+陈乾生
+陈公乾生
+字乾生
+不着痕迹
+不着边际
+与着
+与著书
+与著作
+与著名
+与著录
+与著称
+与著者
+与著述
+丑着
+丑著书
+丑著作
+丑著名
+丑著录
+丑著称
+丑著者
+丑著述
+临着
+临著书
+临著作
+临著名
+临著录
+临著称
+临著者
+临著述
+丽着
+丽著书
+丽著作
+丽著名
+丽著录
+丽著称
+丽著者
+丽著述
+乐着
+乐著书
+乐著作
+乐著名
+乐著录
+乐著称
+乐著者
+乐著述
+乘着
+乘著书
+乘著作
+乘著名
+乘著录
+乘著称
+乘著者
+乘著述
+争着
+争著书
+争著作
+争著名
+争著录
+争著称
+争著者
+争著述
+亮着
+亮著书
+亮著作
+亮著名
+亮著录
+亮著称
+亮著者
+亮著述
+仗着
+仗著书
+仗著作
+仗著名
+仗著录
+仗著称
+仗著者
+仗著述
+代表着
+代表著书
+代表著作
+代表著名
+代表著录
+代表著称
+代表著者
+代表著述
+伴着
+伴著书
+伴著作
+伴著名
+伴著录
+伴著称
+伴著者
+伴著述
+低着
+低著书
+低著作
+低著名
+低著录
+低著称
+低著者
+低著述
+住着
+住著书
+住著作
+住著名
+住著录
+住著称
+住著者
+住著述
+侧着
+侧著书
+侧著作
+侧著名
+侧著录
+侧著称
+侧著者
+侧著述
+保障着
+保障著书
+保障著作
+保障著名
+保障著录
+保障著称
+保障著者
+保障著述
+信着
+信著书
+信著作
+信著名
+信著录
+信著称
+信著者
+信著述
+候着
+候著书
+候著作
+候著名
+候著录
+候著称
+候著者
+候著述
+借着
+借著书
+借著作
+借著名
+借著录
+借著称
+借著者
+借著述
+做着
+做著书
+做著作
+做著名
+做著录
+做著称
+做著者
+做著述
+偷着
+偷著书
+偷著作
+偷著名
+偷著录
+偷著称
+偷著者
+偷著述
+光着
+光著书
+光著作
+光著名
+光著录
+光著称
+光著者
+光著述
+关着
+关著书
+关著作
+关著名
+关著录
+关著称
+关著者
+关著述
+冀着
+冀著书
+冀著作
+冀著名
+冀著录
+冀著称
+冀著者
+冀著述
+冒着
+冒著书
+冒著作
+冒著名
+冒著录
+冒著称
+冒著者
+冒著述
+写着
+写著书
+写著作
+写著名
+写著录
+写著称
+写著者
+写著述
+凉着
+凉著书
+凉著作
+凉著名
+凉著录
+凉著称
+凉著者
+凉著述
+制着
+制著书
+制著作
+制著名
+制著录
+制著称
+制著者
+制著述
+刻着
+刻著书
+刻著作
+刻著名
+刻著录
+刻著称
+刻著者
+刻著述
+办着
+办著书
+办著作
+办著名
+办著录
+办著称
+办著者
+办著述
+动着
+动著书
+动著作
+动著名
+动著录
+动著称
+动著者
+动著述
+努力着
+努力著书
+努力著作
+努力著名
+努力著录
+努力著称
+努力著者
+努力著述
+努着
+努著书
+努著作
+努著名
+努著录
+努著称
+努著者
+努著述
+印着
+印著书
+印著作
+印著名
+印著录
+印著称
+印著者
+印著述
+压着
+压著书
+压著作
+压著名
+压著录
+压著称
+压著者
+压著述
+去着
+去著书
+去著作
+去著名
+去著录
+去著称
+去著者
+去著述
+受着
+受著书
+受著作
+受著名
+受著录
+受著称
+受著者
+受著述
+变着
+变著书
+变著作
+变著名
+变著录
+变著称
+变著者
+变著述
+叫着
+叫著书
+叫著作
+叫著名
+叫著录
+叫著称
+叫著者
+叫著述
+向着
+向著书
+向著作
+向著名
+向著录
+向著称
+向著者
+向著述
+含着
+含著书
+含著作
+含著名
+含著录
+含著称
+含著者
+含著述
+听得着
+听不着
+听着
+听著书
+听著作
+听著名
+听著录
+听著称
+听著者
+听著述
+吹着
+吹著书
+吹著作
+吹著名
+吹著录
+吹著称
+吹著者
+吹著述
+味着
+味著书
+味著作
+味著名
+味著录
+味著称
+味著者
+味著述
+响着
+响著书
+响著作
+响著名
+响著录
+响著称
+响著者
+响著述
+哭着
+哭著书
+哭著作
+哭著名
+哭著录
+哭著称
+哭著者
+哭著述
+唱着
+唱著书
+唱著作
+唱著名
+唱著录
+唱著称
+唱著者
+唱著述
+喝着
+喝著书
+喝著作
+喝著名
+喝著录
+喝著称
+喝著者
+喝著述
+嚷着
+嚷著书
+嚷著作
+嚷著名
+嚷著录
+嚷著称
+嚷著者
+嚷著述
+因着
+因著书
+因著作
+因著名
+因著录
+因著称
+因著者
+因著述
+困着
+困著书
+困著作
+困著名
+困著录
+困著称
+困著者
+困著述
+围着
+围著书
+围著作
+围著名
+围著录
+围著称
+围著者
+围著述
+在着
+在著书
+在著作
+在著名
+在著录
+在著称
+在著者
+在著述
+坐着
+坐著书
+坐著作
+坐著名
+坐著录
+坐著称
+坐著者
+坐著述
+备着
+备著书
+备著作
+备著名
+备著录
+备著称
+备著者
+备著述
+夹着
+夹著书
+夹著作
+夹著名
+夹著录
+夹著称
+夹著者
+夹著述
+孤着
+孤著书
+孤著作
+孤著名
+孤著录
+孤著称
+孤著者
+孤著述
+学着
+学著书
+学著作
+学著名
+学著录
+学著称
+学著者
+学著述
+守着
+守著书
+守著作
+守著名
+守著录
+守著称
+守著者
+守著述
+定着
+定著书
+定著作
+定著名
+定著录
+定著称
+定著者
+定著述
+对着
+对著书
+对著作
+对著名
+对著录
+对著称
+对著者
+对著述
+寻着
+寻著书
+寻著作
+寻著名
+寻著录
+寻著称
+寻著者
+寻著述
+展着
+展著书
+展著作
+展著名
+展著录
+展著称
+展著者
+展著述
+带着
+带著书
+带著作
+带著名
+带著录
+带著称
+带著者
+带著述
+帮着
+帮著书
+帮著作
+帮著名
+帮著录
+帮著称
+帮著者
+帮著述
+应着
+应著书
+应著作
+应著名
+应著录
+应著称
+应著者
+应著述
+康着
+康著书
+康著作
+康著名
+康著录
+康著称
+康著者
+康著述
+开着
+开著书
+开著作
+开著名
+开著录
+开著称
+开著者
+开著述
+当着
+当著书
+当著作
+当著名
+当著录
+当著称
+当著者
+当著述
+待着
+待著书
+待著作
+待著名
+待著录
+待著称
+待著者
+待著述
+得着
+得著书
+得著作
+得著名
+得著录
+得著称
+得著者
+得著述
+循着
+循著书
+循著作
+循著名
+循著录
+循著称
+循著者
+循著述
+心着
+心著书
+心著作
+心著名
+心著录
+心著称
+心著者
+心著述
+忍着
+忍著书
+忍著作
+忍著名
+忍著录
+忍著称
+忍著者
+忍著述
+志着
+志著书
+志著作
+志著名
+志著录
+志著称
+志著者
+志著述
+忙着
+忙著书
+忙著作
+忙著名
+忙著录
+忙著称
+忙著者
+忙著述
+怀着
+怀著书
+怀著作
+怀著名
+怀著录
+怀著称
+怀著者
+怀著述
+急着
+急著书
+急著作
+急著名
+急著录
+急著称
+急著者
+急著述
+性着
+性著书
+性著作
+性著名
+性著录
+性著称
+性著者
+性著述
+恋着
+恋著书
+恋著作
+恋著名
+恋著录
+恋著称
+恋著者
+恋著述
+悠着
+悠著书
+悠著作
+悠著名
+悠著录
+悠著称
+悠著者
+悠著述
+惯着
+惯著书
+惯著作
+惯著名
+惯著录
+惯著称
+惯著者
+惯著述
+想着
+想著书
+想著作
+想著名
+想著录
+想著称
+想著者
+想著述
+战着
+战著书
+战著作
+战著名
+战著录
+战著称
+战著者
+战著述
+戴着
+戴著书
+戴著作
+戴著名
+戴著录
+戴著称
+戴著者
+戴著述
+扎着
+扎著书
+扎著作
+扎著名
+扎著录
+扎著称
+扎著者
+扎著述
+打着
+打著书
+打著作
+打著名
+打著录
+打著称
+打著者
+打著述
+扛着
+扛著书
+扛著作
+扛著名
+扛著录
+扛著称
+扛著者
+扛著述
+找得着
+找不着
+抓着
+抓著作
+抓著名
+抓著录
+抓著称
+抓著者
+抓著述
+披着
+披著书
+披著作
+披著名
+披著录
+披著称
+披著者
+披著述
+抬着
+抬著作
+抬著名
+抬著录
+抬著称
+抬著者
+抬著述
+抱着
+抱著作
+抱著名
+抱著录
+抱著称
+抱著者
+抱著述
+拉着
+拉著书
+拉著作
+拉著名
+拉著录
+拉著称
+拉著者
+拉著述
+拎着
+拎著作
+拎著名
+拎著录
+拎著称
+拎著者
+拎著述
+拖着
+拖著作
+拖著名
+拖著录
+拖著称
+拖著者
+拖著述
+拼着
+拼著作
+拼著名
+拼著录
+拼著称
+拼著者
+拼著述
+拿着
+拿著作
+拿著名
+拿著录
+拿著称
+拿著者
+拿著述
+持着
+持著作
+持著名
+持著录
+持著称
+持著者
+持著述
+挑着
+挑著作
+挑著名
+挑著录
+挑著称
+挑著者
+挑著述
+挡着
+挡著作
+挡著名
+挡著录
+挡著称
+挡著者
+挡著述
+挣着
+挣著书
+挣著作
+挣著名
+挣著录
+挣著称
+挣著者
+挣著述
+挥着
+挥著作
+挥著名
+挥著录
+挥著称
+挥著者
+挥著述
+挨着
+挨著作
+挨著名
+挨著录
+挨著称
+挨著者
+挨著述
+捆着
+捆著作
+捆著名
+捆著录
+捆著称
+捆著者
+捆著述
+据着
+据著书
+据著作
+据著名
+据著录
+据著称
+据著者
+据著述
+掖着
+掖著作
+掖著名
+掖著录
+掖著称
+掖著者
+掖著述
+接着
+接著作
+接著名
+接著录
+接著称
+接著者
+接著述
+揉着
+揉著书
+揉著作
+揉著名
+揉著录
+揉著称
+揉著者
+揉著述
+提着
+提著作
+提著名
+提著录
+提著称
+提著者
+提著述
+搂着
+搂著作
+搂著名
+搂著录
+搂著称
+搂著者
+搂著述
+摆着
+摆著作
+摆著名
+摆著录
+摆著称
+摆著者
+摆著述
+撼着
+撼著书
+撼著作
+撼著名
+撼著录
+撼著称
+撼著者
+撼著述
+敞着
+敞著作
+敞著名
+敞著录
+敞著称
+敞著者
+敞著述
+数着
+数著作
+数著名
+数著录
+数著称
+数著者
+数著述
+斗着
+斗著书
+斗著作
+斗著名
+斗著录
+斗著称
+斗著者
+斗著述
+斥着
+斥著书
+斥著作
+斥著名
+斥著录
+斥著称
+斥著者
+斥著述
+昂着
+昂著书
+昂著作
+昂著名
+昂著录
+昂著称
+昂著者
+昂著述
+映着
+映著书
+映著作
+映著名
+映著录
+映著称
+映著者
+映著述
+晃着
+晃著作
+晃著名
+晃著录
+晃著称
+晃著者
+晃著述
+暗着
+暗著书
+暗著作
+暗著名
+暗著录
+暗著称
+暗著者
+暗著述
+有着
+有著书
+有著作
+有著名
+有著录
+有著称
+有著者
+有著述
+望着
+望著作
+望著名
+望著录
+望著称
+望著者
+望著述
+朝着
+朝著作
+朝著名
+朝著录
+朝著称
+朝著者
+朝著述
+本着
+本著书
+本著作
+本著名
+本著录
+本著称
+本著者
+本著述
+杀着
+杀著书
+杀著作
+杀著名
+杀著录
+杀著称
+杀著者
+杀著述
+杂着
+杂著书
+杂著作
+杂著名
+杂著录
+杂著称
+杂著者
+杂著述
+来着
+来著书
+来著作
+来著名
+来著录
+来著称
+来著者
+来著述
+枕着
+枕著作
+枕著名
+枕著录
+枕著称
+枕著者
+枕著述
+梦着
+梦著书
+梦著作
+梦著名
+梦著录
+梦著称
+梦著者
+梦著述
+梳着
+梳著作
+梳著名
+梳著录
+梳著称
+梳著者
+梳著述
+求着
+求著书
+求著作
+求著名
+求著录
+求著称
+求著者
+求著述
+沉着
+沉著书
+沉著作
+沉著名
+沉著录
+沉著称
+沉著者
+沉著述
+沿着
+沿著书
+沿著作
+沿著名
+沿著录
+沿著称
+沿著者
+沿著述
+活着
+活著书
+活著作
+活著名
+活著录
+活著称
+活著者
+活著述
+流着
+流著书
+流著作
+流著名
+流著录
+流著称
+流著者
+流著述
+浮着
+浮著书
+浮著作
+浮著名
+浮著录
+浮著称
+浮著者
+浮著述
+润着
+润著书
+润著作
+润著名
+润著录
+润著称
+润著者
+润著述
+涵着
+涵著书
+涵著作
+涵著名
+涵著录
+涵著称
+涵著者
+涵著述
+渴着
+渴著书
+渴著作
+渴著名
+渴著录
+渴著称
+渴著者
+渴著述
+溢着
+溢著书
+溢著作
+溢著名
+溢著录
+溢著称
+溢著者
+溢著述
+演着
+演著书
+演著作
+演著名
+演著录
+演著称
+演著者
+演著述
+漫着
+漫著书
+漫著作
+漫著名
+漫著录
+漫著称
+漫著者
+漫著述
+点着
+点著作
+点著名
+点著录
+点著称
+点著者
+点著述
+烧着
+烧著作
+烧著名
+烧著录
+烧著称
+烧著者
+烧著述
+照着
+照著书
+照著作
+照著名
+照著录
+照著称
+照著者
+照著述
+爱着
+爱著书
+爱著作
+爱著名
+爱著录
+爱著称
+爱著者
+爱著述
+牵着
+牵著书
+牵著作
+牵著名
+牵著录
+牵著称
+牵著者
+牵著述
+犯得着
+犯不着
+独着
+独著书
+独著作
+独著名
+独著录
+独著称
+独著者
+独著述
+猜着
+猜着书
+猜著作
+猜著名
+猜著录
+猜著称
+猜著者
+猜著述
+甜着
+甜著书
+甜著作
+甜著名
+甜著录
+甜著称
+甜著者
+甜著述
+用得着
+用不着
+用着
+用著书
+用著作
+用著名
+用著录
+用著称
+用著者
+用著述
+留着
+留着书
+留著作
+留著名
+留著录
+留著称
+留著者
+留著述
+疑着
+疑著书
+疑著作
+疑著名
+疑著录
+疑著称
+疑著者
+疑著述
+皱着
+皱著书
+皱著作
+皱著名
+皱著录
+皱著称
+皱著者
+皱著述
+盛着
+盛著书
+盛著作
+盛著名
+盛著录
+盛著称
+盛著者
+盛著述
+盯着
+盯着书
+盯著作
+盯著名
+盯著录
+盯著称
+盯著者
+盯著述
+盾着
+盾著书
+盾著作
+盾著名
+盾著录
+盾著称
+盾著者
+盾著述
+看得着
+看不着
+看着
+看着书
+看著作
+看著名
+看著录
+看著称
+看著者
+看著述
+瞧着
+瞧着书
+瞧著作
+瞧著名
+瞧著录
+瞧著称
+瞧著者
+瞧著述
+着业
+着丝
+着么
+着人
+着什么急
+着他
+着令
+着位
+着体
+着你
+着便
+着凉
+着力
+着劲
+着号
+着呢
+着哩
+着地
+着墨
+着声
+着处
+着她
+着妳
+着姓
+着它
+着定
+着实
+着己
+着帐
+着床
+着庸
+着式
+着录
+着心
+着志
+着忙
+着急
+着恼
+着惊
+着想
+着意
+着慌
+着我
+着手
+着抹
+着摸
+着撰
+着数
+着明
+着末
+着极
+着格
+着棋
+着槁
+着气
+着法
+着浅
+着火
+着然
+着甚
+着生
+着疑
+着白
+着相
+着眼
+着着
+着祂
+着积
+着稿
+着笔
+着籍
+着紧
+着緑
+着绊
+着绩
+着绯
+着绿
+着肉
+着脚
+着舰
+着色
+着节
+着花
+着莫
+着落
+着藁
+着衣
+着装
+着要
+着警
+着趣
+着边
+着迷
+着迹
+着重
+着録
+着闻
+着陆
+着雝
+着鞭
+着题
+着魔
+睡得着
+睡不着
+睡着
+睡著书
+睡著作
+睡著名
+睡著录
+睡著称
+睡著者
+睡著述
+瞒着
+瞒著书
+瞒著作
+瞒著名
+瞒著录
+瞒著称
+瞒著者
+瞒著述
+瞪着
+瞪著书
+瞪著作
+瞪著名
+瞪著录
+瞪著称
+瞪著者
+瞪著述
+福着
+福著书
+福著作
+福著名
+福著录
+福著称
+福著者
+福著述
+空着
+空著书
+空著作
+空著名
+空著录
+空著称
+空著者
+空著述
+穿着
+穿著书
+穿著作
+穿著名
+穿著录
+穿著称
+穿著者
+穿著述
+竖着
+竖著书
+竖著作
+竖著名
+竖著录
+竖著称
+竖著者
+竖著述
+站着
+站著书
+站著作
+站著名
+站著录
+站著称
+站著者
+站著述
+笑着
+笑著书
+笑著作
+笑著名
+笑著录
+笑著称
+笑著者
+笑著述
+管着
+管著书
+管著作
+管著名
+管著录
+管著称
+管著者
+管著述
+绑着
+绑著书
+绑著作
+绑著名
+绑著录
+绑著称
+绑著者
+绑著述
+绕着
+绕著书
+绕著作
+绕著名
+绕著录
+绕著称
+绕著者
+绕著述
+缠着
+缠著书
+缠著作
+缠著名
+缠著录
+缠著称
+缠著者
+缠著述
+罩着
+罩著书
+罩著作
+罩著名
+罩著录
+罩著称
+罩著者
+罩著述
+美着
+美著书
+美著作
+美著名
+美著录
+美著称
+美著者
+美著述
+耀着
+耀著书
+耀著作
+耀著名
+耀著录
+耀著称
+耀著者
+耀著述
+考着
+考著书
+考著作
+考著名
+考著录
+考著称
+考著者
+考著述
+背着
+背著书
+背著作
+背著名
+背著录
+背著称
+背著者
+背著述
+胶着
+胶著书
+胶著作
+胶著名
+胶著录
+胶著称
+胶著者
+胶著述
+艺着
+艺著书
+艺著作
+艺著名
+艺著录
+艺著称
+艺著者
+艺著述
+苦着
+苦著书
+苦著作
+苦著名
+苦著录
+苦著称
+苦著者
+苦著述
+获着
+获著书
+获著作
+获著名
+获著录
+获著称
+获著者
+获著述
+落着
+落著书
+落著作
+落著名
+落著录
+落著称
+落著者
+落著述
+蒙着
+蒙著书
+蒙著作
+蒙著名
+蒙著录
+蒙著称
+蒙著者
+蒙著述
+藏着
+藏著书
+藏著作
+藏著名
+藏著录
+藏著称
+藏著者
+藏著述
+蘸着
+蘸著书
+蘸著作
+蘸著名
+蘸著录
+蘸著称
+蘸著者
+蘸著述
+行着
+行著书
+行著作
+行著名
+行著录
+行著称
+行著者
+行著述
+衣着
+衣著书
+衣著作
+衣著名
+衣著录
+衣著称
+衣著者
+衣著述
+装着
+装著书
+装著作
+装著名
+装著录
+装著称
+装著者
+装著述
+裹着
+裹著书
+裹著作
+裹著名
+裹著录
+裹著称
+裹著者
+裹著述
+见着
+见著书
+见著作
+见著名
+见著录
+见著称
+见著者
+见著述
+记着
+记著书
+记著作
+记著名
+记著录
+记著称
+记著者
+记著述
+试着
+试著书
+试著作
+试著名
+试著录
+试著称
+试著者
+试著述
+语着
+语著书
+语著作
+语著名
+语著录
+语著称
+语著者
+语著述
+豫着
+豫著书
+豫著作
+豫著名
+豫著录
+豫著称
+豫著者
+豫著述
+贞着
+贞著书
+贞著作
+贞著名
+贞著录
+贞著称
+贞著者
+贞著述
+走着
+走著书
+走著作
+走著名
+走著录
+走著称
+走著者
+走著述
+赶着
+赶著书
+赶著作
+赶著名
+赶著录
+赶著称
+赶著者
+赶著述
+趴着
+趴著书
+趴著作
+趴著名
+趴著录
+趴著称
+趴著者
+趴著述
+跃着
+跃著书
+跃著作
+跃著名
+跃著录
+跃著称
+跃著者
+跃著述
+跑着
+跑著书
+跑著作
+跑著名
+跑著录
+跑著称
+跑著者
+跑著述
+跟着
+跟著书
+跟著作
+跟著名
+跟著录
+跟著称
+跟著者
+跟著述
+跪着
+跪著书
+跪著作
+跪著名
+跪著录
+跪著称
+跪著者
+跪著述
+跳着
+跳著书
+跳著作
+跳著名
+跳著录
+跳著称
+跳著者
+跳著述
+踏着
+踏著书
+踏著作
+踏著名
+踏著录
+踏著称
+踏著者
+踏著述
+踩着
+踩著书
+踩著作
+踩著名
+踩著录
+踩著称
+踩著者
+踩著述
+身着
+身著书
+身著作
+身著名
+身著录
+身著称
+身著者
+身著述
+躺着
+躺著书
+躺著作
+躺著名
+躺著录
+躺著称
+躺著者
+躺著述
+转着
+转著书
+转著作
+转著名
+转著录
+转著称
+转著者
+转著述
+载着
+载著书
+载著作
+载著名
+载著录
+载著称
+载著者
+载著述
+达着
+达著书
+达著作
+达著名
+达著录
+达著称
+达著者
+达著述
+远着
+远著书
+远著作
+远著名
+远著录
+远著称
+远著者
+远著述
+连着
+连著书
+连著作
+连著名
+连著录
+连著称
+连著者
+连著述
+追着
+追著书
+追著作
+追著名
+追著录
+追著称
+追著者
+追著述
+逆着
+逆著书
+逆著作
+逆著名
+逆著录
+逆著称
+逆著者
+逆著述
+逼着
+逼著书
+逼著作
+逼著名
+逼著录
+逼著称
+逼著者
+逼著述
+遇着
+遇著书
+遇著作
+遇著名
+遇著录
+遇著称
+遇著者
+遇著述
+配着
+配著书
+配著作
+配著名
+配著录
+配著称
+配著者
+配著述
+酿着
+酿著书
+酿著作
+酿著名
+酿著录
+酿著称
+酿著者
+酿著述
+铺着
+铺著书
+铺著作
+铺著名
+铺著录
+铺著称
+铺著者
+铺著述
+闭着
+闭著书
+闭著作
+闭著名
+闭著录
+闭著称
+闭著者
+闭著述
+闲着
+闲著书
+闲著作
+闲著名
+闲著录
+闲著称
+闲著者
+闲著述
+附着
+附著书
+附著作
+附著名
+附著录
+附著称
+附著者
+附著述
+陋着
+陋著书
+陋著作
+陋著名
+陋著录
+陋著称
+陋著者
+陋著述
+陪着
+陪著书
+陪著作
+陪著名
+陪著录
+陪著称
+陪著者
+陪著述
+随着
+随著书
+随著作
+随著名
+随著录
+随著称
+随著者
+随著述
+隔着
+隔著书
+隔著作
+隔著名
+隔著录
+隔著称
+隔著者
+隔著述
+雅着
+雅著书
+雅著作
+雅著名
+雅著录
+雅著称
+雅著者
+雅著述
+顶着
+顶著书
+顶著作
+顶著名
+顶著录
+顶著称
+顶著者
+顶著述
+顺着
+顺著书
+顺著作
+顺著名
+顺著录
+顺著称
+顺著者
+顺著述
+领着
+领著书
+领著作
+领著名
+领著录
+领著称
+领著者
+领著述
+飘着
+飘著书
+飘著作
+飘著名
+飘著录
+飘著称
+飘著者
+飘著述
+驾着
+驾著书
+驾著作
+驾著名
+驾著录
+驾著称
+驾著者
+驾著述
+骂着
+骂著书
+骂著作
+骂著名
+骂著录
+骂著称
+骂著者
+骂著述
+骑着
+骑著书
+骑著作
+骑著名
+骑著录
+骑著称
+骑著者
+骑著述
+骗着
+骗著书
+骗著作
+骗著名
+骗著录
+骗著称
+骗著者
+骗著述
+高着
+高著书
+高著作
+高著名
+高著录
+高著称
+高著者
+高著述
+髭着
+髭著书
+髭著作
+髭著名
+髭著录
+髭著称
+髭著者
+髭著述
+黏着
+黏著书
+黏著作
+黏著名
+黏著录
+黏著称
+黏著者
+黏著述
+新著龙虎门
+护着
+护著书
+护著作
+护著名
+护著录
+护著称
+护著者
+护著述
+保护着
+爱护着
+庇护着
+传着
+传著书
+传著作
+传著名
+传著录
+传著称
+传著者
+传著述
+标志着
+流露着
+靠着
+靠著作
+靠著名
+靠著录
+靠著称
+靠著者
+靠著述
+玩着
+迫着
+吃得着
+吃不着
+吃着
+闻得着
+闻不着
+闻着
+嗅得着
+嗅不着
+嗅着
+警戒着
+於乎
+於戏
+魏徵
+柳诒徵
+於姓
+於氏
+於夫罗
+於梨华
+卷舌
+樊於期
+於菟
+於潜县
+石碁镇
+因著《
+因著〈
+李泽钜
+於祥玉
+於崇文
+於世成
+於乙宇同
+於宇同
+朴於宇同
+於哲
+於除鞬
+於志贺
+覆蓋
+五箇山
+麽麽
+幺厮
+幺半群
+幺元
+幺爹
+幺叔
+幺舅
+幺爸
+幺妈
+幺姨
+幺娘
+幺妹
+幺小
+幺姓
+姓幺
+幺氏
+麽氏
+幺蛾子
+幺麽
+幺麽小丑
+幺凤
+幺二三
+幺篇
+幺谦
+麴义
+麴英
+麯崇裕
+阿部正瞭
+醯酱
+醯鸡
+醯醋
+醯醢
+醯壶
+苧烯
+近角聪信
+米泽瑠美
+峯岸南
+僧伽吒
+王道乾
+後姓
diff --git a/maintenance/language/zhtable/simpphrases_exclude.manual b/maintenance/language/zhtable/simpphrases_exclude.manual
new file mode 100644 (file)
index 0000000..3e9d3ec
--- /dev/null
@@ -0,0 +1,21 @@
+整飭
+後
+谘
+彷佛
+三番四复
+三复
+藉
+关於
+对於
+属於
+至於
+夥计
+薹
+嚇
+醣
+捱
+簑
+樑
+摺叠
+餗
+安甯
\ No newline at end of file
diff --git a/maintenance/language/zhtable/toCN.manual b/maintenance/language/zhtable/toCN.manual
new file mode 100644 (file)
index 0000000..243f61b
--- /dev/null
@@ -0,0 +1,275 @@
+」    ”
+「    “
+『    ‘
+』    ’
+記憶體      内存
+預設 默认
+串列 串行
+串列加速器        串列加速器
+乙太網      以太网
+點陣圖      位图
+常式 例程
+光碟 光盘
+光碟機      光驱
+全形 全角
+載入 加载
+半形 半角
+變數 变量
+雜訊 噪声
+因數 因子
+功能變數名稱     域名
+音效卡      声卡
+字型大小   字号
+字型檔      字库
+欄位 字段
+字元 字符
+字元济      字元济
+字元濟      字元济
+字元会      字元会
+字元會      字元会
+存檔 存盘
+定址 寻址
+章節附註   尾注
+非同步      异步
+匯流排      总线
+括弧 括号
+介面 接口
+控制項      控件
+許可權      权限
+碟片 盘片
+矽片 硅片
+矽谷 硅谷
+硬碟 硬盘
+磁碟 磁盘
+磁軌 磁道
+程式控制   程控
+遠程控制   远程控制
+远程控制   远程控制
+運算元      算子
+演算法      算法
+晶片 芯片
+晶元 芯片
+片語 词组
+軟碟機      软驱
+快閃記憶體        快闪存储器
+滑鼠 鼠标
+滑鼠蛇      滑鼠蛇
+二進位      二进制
+滿二進位   满二进位
+六進位      六进制
+滿六進位   满六进位
+滿十六進位        满十六进位
+八進位      八进制
+滿八進位   满八进位
+十進位      十进制
+滿十進位   满十进位
+16進位       16进位
+滿16進位    满16进位
+二進位制   二进位制
+六進位制   六进位制
+八進位制   八进位制
+十進位制   十进位制
+16進位制    16进位制
+互動式      交互式
+優先順序   优先级
+感測 传感
+攜帶型      便携式
+資訊理論   信息论
+迴圈 循环
+防寫 写保护
+解析度      分辨率
+伺服器      服务器
+等於 等于
+區域網      局域网
+巨集 宏
+掃瞄器      扫瞄仪
+寬頻 宽带
+資料庫      数据库
+萬曆 万历
+永曆 永历
+辭彙 词汇
+母音 元音
+字母 字母
+頭槌 头球
+進球 入球
+顆進球      粒入球
+射門 打门
+蓋火鍋      火锅盖帽
+印表機      打印机
+打印機      打印机
+位元組      字节
+字節 字节
+列印 打印
+打印 打印
+硬體 硬件
+二極體      二极管
+二極管      二极管
+三極體      三极管
+三極管      三极管
+軟體 软件
+軟件 软件
+網路 网络
+網絡 网络
+人工智慧   人工智能
+太空梭      航天飞机
+穿梭機      航天飞机
+網際網路   互联网
+互聯網      互联网
+機械人      机器人
+機器人      机器人
+行動電話   移动电话
+流動電話   移动电话
+調制解調器        调制解调器
+數據機      调制解调器
+短訊 短信
+簡訊 短信
+烏茲別克   乌兹别克斯坦
+葉門 也门
+伯利茲      伯利兹
+貝里斯      伯利兹
+維德角      佛得角
+克羅埃西亞        克罗地亚
+甘比亞      冈比亚
+幾內亞比索        几内亚比绍
+列支敦斯登        列支敦士登
+賴比瑞亞   利比里亚
+迦納 加纳
+加彭 加蓬
+波札那      博茨瓦纳
+盧安達      卢旺达
+瓜地馬拉   危地马拉
+厄瓜多爾   厄瓜多尔
+厄瓜多尔   厄瓜多尔
+厄瓜多      厄瓜多尔
+厄利垂亞   厄立特里亚
+吉布地      吉布提
+哈薩克      哈萨克斯坦
+哥斯大黎加        哥斯达黎加
+吐瓦魯      图瓦卢
+土庫曼      土库曼斯坦
+聖露西亞   圣卢西亚
+聖吉斯納域斯     圣基茨和尼维斯
+聖克里斯多福及尼維斯 圣基茨和尼维斯
+聖文森及格瑞那丁       圣文森特和格林纳丁斯
+聖馬利諾   圣马力诺
+蓋亞那      圭亚那
+坦尚尼亞   坦桑尼亚
+衣索匹亞   埃塞俄比亚
+衣索比亞   埃塞俄比亚
+吉里巴斯   基里巴斯
+塔吉克      塔吉克斯坦
+塞拉利昂   塞拉利昂
+塞普勒斯   塞浦路斯
+塞席爾      塞舌尔
+多米尼克   多米尼加国
+安地卡及巴布達  安提瓜和巴布达
+尼日利亞   尼日利亚
+尼日利亚   尼日利亚
+奈及利亞   尼日利亚
+尼日爾      尼日尔
+尼日尔      尼日尔
+巴貝多      巴巴多斯
+巴布亞紐幾內亞  巴布亚新几内亚
+布基納法索        布基纳法索
+布吉納法索        布基纳法索
+蒲隆地      布隆迪
+帛琉 帕劳
+義大利      意大利
+索羅門群島        所罗门群岛
+汶萊 文莱
+史瓦濟蘭   斯威士兰
+斯洛維尼亞        斯洛文尼亚
+紐西蘭      新西兰
+格瑞那達   格林纳达
+茅利塔尼亞        毛里塔尼亚
+毛里裘斯   毛里求斯
+模里西斯   毛里求斯
+沙地阿拉伯        沙特阿拉伯
+沙烏地阿拉伯     沙特阿拉伯
+波士尼亞赫塞哥維納    波斯尼亚和黑塞哥维那
+辛巴威      津巴布韦
+宏都拉斯   洪都拉斯
+千里達托貝哥     特立尼达和托巴哥
+諾魯 瑙鲁
+萬那杜      瓦努阿图
+溫納圖      瓦努阿图
+葛摩 科摩罗
+象牙海岸   科特迪瓦
+突尼西亞   突尼斯
+索馬利亞   索马里
+寮國 老挝
+肯雅 肯尼亚
+肯亞 肯尼亚
+蘇利南      苏里南
+莫三比克   莫桑比克
+賴索托      莱索托
+貝南 贝宁
+尚比亞      赞比亚
+亞塞拜然   阿塞拜疆
+阿拉伯聯合大公國       阿拉伯联合酋长国
+南韓 韩国
+馬爾地夫   马尔代夫
+馬爾他      马耳他
+馬利共和國        马里共和国
+即食麵      方便面
+快速面      方便面
+速食麵      方便面
+泡麵 方便面
+笨豬跳      蹦极跳
+绑紧跳      蹦极跳
+冷盤 凉菜
+冷菜 凉菜
+散钱 零钱
+谐星 笑星
+夜学 夜校
+华乐 民乐
+中樂 民乐
+軍中樂園    军中乐园
+华乐街      华乐街
+屋价 房价
+計程車      出租车
+單車 自行车
+節慶 节日
+芝士 乾酪
+狗隻 犬只
+士多啤梨   草莓
+忌廉 奶油
+桌球 台球
+撞球 台球
+衞生 卫生
+衛生 卫生
+賓士 奔驰
+平治 奔驰
+平治之亂   平治之乱
+平治之乱   平治之乱
+積架 捷豹
+福斯 大众
+福士 大众
+萬事得      马自达
+寶獅 标志
+拿破崙      拿破仑
+布殊 布什
+布希 布什
+布希亞      布希亚
+布希亚      布希亚
+柯林頓      克林顿
+海珊 侯赛因
+梵谷 凡高
+大衛碧咸   大卫·贝克汉姆
+米高奧雲   迈克尔·欧文
+卡佩雅蒂   珍妮弗·卡普里亚蒂
+沙芬 马拉特·萨芬
+舒麥加      迈克尔·舒马赫
+希特拉      希特勒
+黛安娜      戴安娜
+榴槤 榴莲
+榴梿 榴莲
+矽    硅
+矽肺 矽肺
+矽塵 矽尘
+矽尘 矽尘
+矽鋼 矽钢
+矽钢 矽钢
+侏儸紀      侏罗纪
+甚麽 什么
+甚麼 什么
diff --git a/maintenance/language/zhtable/toHK.manual b/maintenance/language/zhtable/toHK.manual
new file mode 100644 (file)
index 0000000..1f7fe7d
--- /dev/null
@@ -0,0 +1,2300 @@
+”    」
+“    「
+‘    『
+’    』
+鉤    鈎
+衛    衞
+凶殺 兇殺
+凶殘 兇殘
+緝凶 緝兇
+買凶 買兇
+印表機      打印機
+字节 位元組
+字節 位元組
+列印 打印
+硬件 硬件
+硬體 硬件
+二極體      二極管
+三極體      三極管
+軟體 軟件
+網路 網絡
+人工智慧   人工智能
+航天飞机   穿梭機
+太空梭      穿梭機
+因特网      互聯網
+網際網路   互聯網
+机器人      機械人
+機器人      機械人
+移动电话   流動電話
+行動電話   流動電話
+數據機      調制解調器
+短信 短訊
+簡訊 短訊
+查德 乍得
+葉門 也門
+貝里斯      伯利茲
+維德角      佛得角
+克羅埃西亞        克羅地亞
+甘比亞      岡比亞
+幾內亞比索        幾內亞比紹
+列支敦斯登        列支敦士登
+賴比瑞亞   利比里亞
+迦納 加納
+加彭 加蓬
+波札那      博茨瓦納
+盧安達      盧旺達
+瓜地馬拉   危地馬拉
+厄瓜多尔   厄瓜多爾
+厄瓜多爾   厄瓜多爾
+厄瓜多      厄瓜多爾
+厄利垂亞   厄立特里亞
+吉布地      吉布堤
+哥斯大黎加        哥斯達黎加
+吐瓦魯      圖瓦盧
+聖露西亞   聖盧西亞
+圣基茨和尼维斯  聖吉斯納域斯
+聖克里斯多福及尼維斯 聖吉斯納域斯
+聖文森及格瑞那丁       聖文森特和格林納丁斯
+聖馬利諾   聖馬力諾
+蓋亞那      圭亞那
+坦尚尼亞   坦桑尼亞
+衣索匹亞   埃塞俄比亞
+衣索比亞   埃塞俄比亞
+吉里巴斯   基里巴斯
+塞普勒斯   塞浦路斯
+塞席爾      塞舌爾
+安地卡及巴布達  安提瓜和巴布達
+尼日利亚   尼日利亞
+尼日利亞   尼日利亞
+奈及利亞   尼日利亞
+尼日尔      尼日爾
+尼日爾      尼日爾
+尼日 尼日爾
+巴貝多      巴巴多斯
+巴布亞紐幾內亞  巴布亞新畿內亞
+布吉納法索        布基納法索
+蒲隆地      布隆迪
+帕劳 帛琉
+義大利      意大利
+索羅門群島        所羅門群島
+文莱 汶萊
+史瓦濟蘭   斯威士蘭
+斯洛維尼亞        斯洛文尼亞
+紐西蘭      新西蘭
+格瑞那達   格林納達
+茅利塔尼亞        毛里塔尼亞
+毛里求斯   毛里裘斯
+模里西斯   毛里裘斯
+沙地阿拉伯        沙特阿拉伯
+沙烏地阿拉伯     沙特阿拉伯
+波士尼亞赫塞哥維納    波斯尼亞黑塞哥維那
+辛巴威      津巴布韋
+宏都拉斯   洪都拉斯
+千里達托貝哥     特立尼達和多巴哥
+諾魯 瑙魯
+萬那杜      瓦努阿圖
+葛摩 科摩羅
+索馬利亞   索馬里
+寮國 老撾
+肯尼亚      肯雅
+肯亞 肯雅
+莫三比克   莫桑比克
+賴索托      萊索托
+貝南 貝寧
+尚比亞      贊比亞
+亞塞拜然   阿塞拜疆
+阿拉伯聯合大公國       阿拉伯聯合酋長國
+馬爾地夫   馬爾代夫
+馬利共和國        馬里共和國
+方便面      即食麵
+快速面      即食麵
+速食麵      即食麵
+泡麵 即食麵
+土豆 馬鈴薯
+土豆网      土豆網
+土豆網      土豆網
+华乐 中樂
+民乐 中樂
+計程車      的士
+出租车      的士
+公車 巴士
+公車上書   公車上書
+自行车      單車
+犬只 狗隻
+台球 桌球
+撞球 桌球
+冰淇淋      雪糕
+賓士 平治
+捷豹 積架
+福斯 福士
+雪铁龙      先進
+雪鐵龍      先進
+沃尓沃      富豪
+马自达      萬事得
+馬自達      萬事得
+寶獅 標致
+布什 布殊
+布希 布殊
+布希亞      布希亞
+布希亚      布希亞
+柯林頓      克林頓
+萨达姆      薩達姆
+海珊 侯賽因
+大卫·贝克汉姆   大衛碧咸
+迈克尔·欧文      米高奧雲
+珍妮弗·卡普里亚蒂     卡佩雅蒂
+马拉特·萨芬      沙芬
+迈克尔·舒马赫   舒麥加
+希特勒      希特拉
+狄安娜      戴安娜
+黛安娜      戴安娜
+颁布 頒佈
+頒布 頒佈
+挨著 挨着
+愛著 愛着
+暗著 暗着
+昂著 昂着
+擺著 擺着
+伴著 伴着
+辦著 辦着
+幫著 幫着
+綁著 綁着
+抱著 抱着
+背著 背着
+備著 備着
+本著 本着
+逼著 逼着
+閉著 閉着
+變著 變着
+猜著 猜着
+踩著 踩着
+藏著 藏着
+側著 側着
+纏著 纏着
+敞著 敞着
+唱著 唱着
+朝著 朝着
+沉著 沉着
+乘著 乘着
+持著 持着
+斥著 斥着
+醜著 醜着
+穿著 穿着
+吹著 吹着
+達著 達着
+打著 打着
+待著 待着
+帶著 帶着
+戴著 戴着
+當著 當着
+擋著 擋着
+得著 得着
+瞪著 瞪着
+低著 低着
+點著 點着
+盯著 盯着
+頂著 頂着
+定著 定着
+動著 動着
+鬥著 鬥着
+獨著 獨着
+對著 對着
+盾著 盾着
+犯得著      犯得着
+犯不著      犯不着
+福著 福着
+趕著 趕着
+高著 高着
+隔著 隔着
+跟著 跟着
+孤著 孤着
+關著 關着
+管著 管着
+慣著 慣着
+光著 光着
+跪著 跪着
+裹著 裹着
+撼著 撼着
+喝著 喝着
+候著 候着
+懷著 懷着
+晃著 晃着
+揮著 揮着
+活著 活着
+獲著 獲着
+獲著 獲着
+急著 急着
+記著 記着
+冀著 冀着
+夾著 夾着
+駕著 駕着
+見著 見着
+閑著 閑着
+叫著 叫着
+接著 接着
+借著 借着
+借著 借着
+據著 據着
+開著 開着
+看得著      看得着
+看不著      看不着
+看著 看着
+康著 康着
+扛著 扛着
+考著 考着
+渴著 渴着
+刻著 刻着
+空著 空着
+哭著 哭着
+苦著 苦着
+捆著 捆着
+困著 困着
+拉著 拉着
+來著 來着
+樂著 樂着
+努力著      努力着
+麗著 麗着
+連著 連着
+戀著 戀着
+涼著 涼着
+亮著 亮着
+臨著 臨着
+拎著 拎着
+領著 領着
+流著 流着
+留著 留着
+摟著 摟着
+陋著 陋着
+落著 落着
+罵著 罵着
+瞞著 瞞着
+漫著 漫着
+忙著 忙着
+冒著 冒着
+美著 美着
+夢著 夢着
+蒙著 蒙着
+拿著 拿着
+逆著 逆着
+釀著 釀着
+努著 努着
+趴著 趴着
+跑著 跑着
+陪著 陪着
+配著 配着
+披著 披着
+騙著 騙着
+飄著 飄着
+拼著 拼着
+鋪著 鋪着
+騎著 騎着
+牽著 牽着
+求著 求着
+去著 去着
+嚷著 嚷着
+繞著 繞着
+忍著 忍着
+揉著 揉着
+潤著 潤着
+燒著 燒着
+身著 身着
+沉著 沉着
+盛著 盛着
+試著 試着
+守著 守着
+受著 受着
+梳著 梳着
+豎著 豎着
+數著 數着
+睡得著      睡得着
+睡不著      睡不着
+睡著 睡着
+順著 順着
+隨著 隨着
+踏著 踏着
+抬著 抬着
+躺著 躺着
+提著 提着
+甜著 甜着
+挑著 挑着
+跳著 跳着
+聽得著      聽得着
+聽不著      聽不着
+聽著 聽着
+偷著 偷着
+拖著 拖着
+望著 望着
+圍著 圍着
+味著 味着
+想著 想着
+響著 響着
+向著 向着
+笑著 笑着
+心著 心着
+信著 信着
+行著 行着
+性著 性着
+學著 學着
+尋著 尋着
+循著 循着
+壓著 壓着
+雅著 雅着
+沿著 沿着
+耀著 耀着
+掖著 掖着
+衣著 衣着
+疑著 疑着
+溢著 溢着
+藝著 藝着
+因著 因着
+印著 印着
+應著 應着
+映著 映着
+用得著      用得着
+用不著      用不着
+用著 用着
+悠著 悠着
+有著 有着
+與著 與着
+語著 語着
+豫著 豫着
+遠著 遠着
+躍著 躍着
+雜著 雜着
+載著 載着
+在著 在着
+紮著 紮着
+展著 展着
+站著 站着
+戰著 戰着
+蘸著 蘸着
+仗著 仗着
+找得著      找得着
+找不著      找不着
+照著 照着
+罩著 罩着
+貞著 貞着
+枕著 枕着
+爭著 爭着
+掙著 掙着
+制著 制着
+志著 志着
+皺著 皺着
+住著 住着
+抓著 抓着
+轉著 轉着
+裝著 裝着
+追著 追着
+髭著 髭着
+走著 走着
+坐著 坐着
+做著 做着
+含著 含着
+涵著 涵着
+演著 演着
+保障著      保障着
+黏著 黏着
+膠著 膠着
+附著 附着
+代表著      代表着
+浮著 浮着
+寫著 寫着
+遇著 遇着
+殺著 殺着
+著筆 着筆
+著鞭 着鞭
+著法 着法
+著火 着火
+著急 着急
+著艦 着艦
+著腳 着腳
+著她 着她
+著緊 着緊
+著力 着力
+著涼 着涼
+著陸 着陸
+著錄 着錄
+著落 着落
+著忙 着忙
+著迷 着迷
+著墨 着墨
+著妳 着妳
+著你 着你
+著色 着色
+著什麼急   着什麼急
+著實 着實
+著手 着手
+著數 着數
+著絲 着絲
+著他 着他
+著它 着它
+著祂 着祂
+著我 着我
+著想 着想
+著眼 着眼
+著衣 着衣
+著意 着意
+著重 着重
+著重 着重
+著裝 着裝
+著地 着地
+不著邊際   不着邊際
+不著痕跡   不着痕跡
+挨著作      挨著作
+挨著者      挨著者
+挨著名      挨著名
+挨著述      挨著述
+挨著稱      挨著稱
+挨著錄      挨著錄
+愛著作      愛著作
+愛著者      愛著者
+愛著名      愛著名
+愛著述      愛著述
+愛著稱      愛著稱
+愛著錄      愛著錄
+愛著書      愛著書
+暗著作      暗著作
+暗著者      暗著者
+暗著名      暗著名
+暗著述      暗著述
+暗著稱      暗著稱
+暗著錄      暗著錄
+暗著書      暗著書
+昂著作      昂著作
+昂著者      昂著者
+昂著名      昂著名
+昂著述      昂著述
+昂著稱      昂著稱
+昂著錄      昂著錄
+昂著書      昂著書
+擺著作      擺著作
+擺著者      擺著者
+擺著名      擺著名
+擺著述      擺著述
+擺著稱      擺著稱
+擺著錄      擺著錄
+伴著作      伴著作
+伴著者      伴著者
+伴著名      伴著名
+伴著述      伴著述
+伴著稱      伴著稱
+伴著錄      伴著錄
+伴著書      伴著書
+辦著作      辦著作
+辦著者      辦著者
+辦著名      辦著名
+辦著述      辦著述
+辦著稱      辦著稱
+辦著錄      辦著錄
+辦著書      辦著書
+幫著作      幫著作
+幫著者      幫著者
+幫著名      幫著名
+幫著述      幫著述
+幫著稱      幫著稱
+幫著錄      幫著錄
+幫著書      幫著書
+綁著作      綁著作
+綁著者      綁著者
+綁著名      綁著名
+綁著述      綁著述
+綁著稱      綁著稱
+綁著錄      綁著錄
+綁著書      綁著書
+抱著作      抱著作
+抱著者      抱著者
+抱著名      抱著名
+抱著述      抱著述
+抱著稱      抱著稱
+抱著錄      抱著錄
+背著作      背著作
+背著者      背著者
+背著名      背著名
+背著述      背著述
+背著稱      背著稱
+背著錄      背著錄
+背著書      背著書
+備著作      備著作
+備著者      備著者
+備著名      備著名
+備著述      備著述
+備著稱      備著稱
+備著錄      備著錄
+備著書      備著書
+本著作      本著作
+本著者      本著者
+本著名      本著名
+本著述      本著述
+本著稱      本著稱
+本著錄      本著錄
+本著書      本著書
+逼著作      逼著作
+逼著者      逼著者
+逼著名      逼著名
+逼著述      逼著述
+逼著稱      逼著稱
+逼著錄      逼著錄
+逼著書      逼著書
+閉著作      閉著作
+閉著者      閉著者
+閉著名      閉著名
+閉著述      閉著述
+閉著稱      閉著稱
+閉著錄      閉著錄
+閉著書      閉著書
+變著作      變著作
+變著者      變著者
+變著名      變著名
+變著述      變著述
+變著稱      變著稱
+變著錄      變著錄
+變著書      變著書
+猜著作      猜著作
+猜著者      猜著者
+猜著名      猜著名
+猜著述      猜著述
+猜著稱      猜著稱
+猜著錄      猜著錄
+猜著書      猜著書
+踩著作      踩著作
+踩著者      踩著者
+踩著名      踩著名
+踩著述      踩著述
+踩著稱      踩著稱
+踩著錄      踩著錄
+踩著書      踩著書
+藏著作      藏著作
+藏著者      藏著者
+藏著名      藏著名
+藏著述      藏著述
+藏著稱      藏著稱
+藏著錄      藏著錄
+藏著書      藏著書
+側著作      側著作
+側著者      側著者
+側著名      側著名
+側著述      側著述
+側著稱      側著稱
+側著錄      側著錄
+側著書      側著書
+纏著作      纏著作
+纏著者      纏著者
+纏著名      纏著名
+纏著述      纏著述
+纏著稱      纏著稱
+纏著錄      纏著錄
+纏著書      纏著書
+敞著作      敞著作
+敞著者      敞著者
+敞著名      敞著名
+敞著述      敞著述
+敞著稱      敞著稱
+敞著錄      敞著錄
+唱著作      唱著作
+唱著者      唱著者
+唱著名      唱著名
+唱著述      唱著述
+唱著稱      唱著稱
+唱著錄      唱著錄
+唱著書      唱著書
+朝著作      朝著作
+朝著者      朝著者
+朝著名      朝著名
+朝著述      朝著述
+朝著稱      朝著稱
+朝著錄      朝著錄
+沉著作      沉著作
+沉著者      沉著者
+沉著名      沉著名
+沉著述      沉著述
+沉著稱      沉著稱
+沉著錄      沉著錄
+沉著書      沉著書
+乘著作      乘著作
+乘著者      乘著者
+乘著名      乘著名
+乘著述      乘著述
+乘著稱      乘著稱
+乘著錄      乘著錄
+乘著書      乘著書
+持著作      持著作
+持著者      持著者
+持著名      持著名
+持著述      持著述
+持著稱      持著稱
+持著錄      持著錄
+斥著作      斥著作
+斥著者      斥著者
+斥著名      斥著名
+斥著述      斥著述
+斥著稱      斥著稱
+斥著錄      斥著錄
+斥著書      斥著書
+醜著作      醜著作
+醜著者      醜著者
+醜著名      醜著名
+醜著述      醜著述
+醜著稱      醜著稱
+醜著錄      醜著錄
+醜著書      醜著書
+穿著作      穿著作
+穿著者      穿著者
+穿著名      穿著名
+穿著述      穿著述
+穿著稱      穿著稱
+穿著錄      穿著錄
+穿著書      穿著書
+吹著作      吹著作
+吹著者      吹著者
+吹著名      吹著名
+吹著述      吹著述
+吹著稱      吹著稱
+吹著錄      吹著錄
+吹著書      吹著書
+達著作      達著作
+達著者      達著者
+達著名      達著名
+達著述      達著述
+達著稱      達著稱
+達著錄      達著錄
+達著書      達著書
+打著作      打著作
+打著者      打著者
+打著名      打著名
+打著述      打著述
+打著稱      打著稱
+打著錄      打著錄
+打著書      打著書
+待著作      待著作
+待著者      待著者
+待著名      待著名
+待著述      待著述
+待著稱      待著稱
+待著錄      待著錄
+待著書      待著書
+帶著作      帶著作
+帶著者      帶著者
+帶著名      帶著名
+帶著述      帶著述
+帶著稱      帶著稱
+帶著錄      帶著錄
+帶著書      帶著書
+戴著作      戴著作
+戴著者      戴著者
+戴著名      戴著名
+戴著述      戴著述
+戴著稱      戴著稱
+戴著錄      戴著錄
+戴著書      戴著書
+當著作      當著作
+當著者      當著者
+當著名      當著名
+當著述      當著述
+當著稱      當著稱
+當著錄      當著錄
+當著書      當著書
+擋著作      擋著作
+擋著者      擋著者
+擋著名      擋著名
+擋著述      擋著述
+擋著稱      擋著稱
+擋著錄      擋著錄
+得著作      得著作
+得著者      得著者
+得著名      得著名
+得著述      得著述
+得著稱      得著稱
+得著錄      得著錄
+得著書      得著書
+瞪著作      瞪著作
+瞪著者      瞪著者
+瞪著名      瞪著名
+瞪著述      瞪著述
+瞪著稱      瞪著稱
+瞪著錄      瞪著錄
+瞪著書      瞪著書
+低著作      低著作
+低著者      低著者
+低著名      低著名
+低著述      低著述
+低著稱      低著稱
+低著錄      低著錄
+低著書      低著書
+點著作      點著作
+點著者      點著者
+點著名      點著名
+點著述      點著述
+點著稱      點著稱
+點著錄      點著錄
+點著書      點著書
+盯著作      盯著作
+盯著者      盯著者
+盯著名      盯著名
+盯著述      盯著述
+盯著稱      盯著稱
+盯著錄      盯著錄
+盯著書      盯著書
+頂著作      頂著作
+頂著者      頂著者
+頂著名      頂著名
+頂著述      頂著述
+頂著稱      頂著稱
+頂著錄      頂著錄
+頂著書      頂著書
+定著作      定著作
+定著者      定著者
+定著名      定著名
+定著述      定著述
+定著稱      定著稱
+定著錄      定著錄
+定著書      定著書
+動著作      動著作
+動著者      動著者
+動著名      動著名
+動著述      動著述
+動著稱      動著稱
+動著錄      動著錄
+動著書      動著書
+鬥著作      鬥著作
+鬥著者      鬥著者
+鬥著名      鬥著名
+鬥著述      鬥著述
+鬥著稱      鬥著稱
+鬥著錄      鬥著錄
+鬥著書      鬥著書
+獨著作      獨著作
+獨著者      獨著者
+獨著名      獨著名
+獨著述      獨著述
+獨著稱      獨著稱
+獨著錄      獨著錄
+獨著書      獨著書
+對著作      對著作
+對著者      對著者
+對著名      對著名
+對著述      對著述
+對著稱      對著稱
+對著錄      對著錄
+對著書      對著書
+盾著作      盾著作
+盾著者      盾著者
+盾著名      盾著名
+盾著述      盾著述
+盾著稱      盾著稱
+盾著錄      盾著錄
+盾著書      盾著書
+犯不著作   犯不著作
+犯不著者   犯不著者
+犯不著名   犯不著名
+犯不著述   犯不著述
+犯不著稱   犯不著稱
+犯不著錄   犯不著錄
+犯不著書   犯不著書
+福著作      福著作
+福著者      福著者
+福著名      福著名
+福著述      福著述
+福著稱      福著稱
+福著錄      福著錄
+福著書      福著書
+趕著作      趕著作
+趕著者      趕著者
+趕著名      趕著名
+趕著述      趕著述
+趕著稱      趕著稱
+趕著錄      趕著錄
+趕著書      趕著書
+高著作      高著作
+高著者      高著者
+高著名      高著名
+高著述      高著述
+高著稱      高著稱
+高著錄      高著錄
+高著書      高著書
+隔著作      隔著作
+隔著者      隔著者
+隔著名      隔著名
+隔著述      隔著述
+隔著稱      隔著稱
+隔著錄      隔著錄
+隔著書      隔著書
+跟著作      跟著作
+跟著者      跟著者
+跟著名      跟著名
+跟著述      跟著述
+跟著稱      跟著稱
+跟著錄      跟著錄
+跟著書      跟著書
+孤著作      孤著作
+孤著者      孤著者
+孤著名      孤著名
+孤著述      孤著述
+孤著稱      孤著稱
+孤著錄      孤著錄
+孤著書      孤著書
+關著作      關著作
+關著者      關著者
+關著名      關著名
+關著述      關著述
+關著稱      關著稱
+關著錄      關著錄
+關著書      關著書
+管著作      管著作
+管著者      管著者
+管著名      管著名
+管著述      管著述
+管著稱      管著稱
+管著錄      管著錄
+管著書      管著書
+慣著作      慣著作
+慣著者      慣著者
+慣著名      慣著名
+慣著述      慣著述
+慣著稱      慣著稱
+慣著錄      慣著錄
+慣著書      慣著書
+光著作      光著作
+光著者      光著者
+光著名      光著名
+光著述      光著述
+光著稱      光著稱
+光著錄      光著錄
+光著書      光著書
+跪著作      跪著作
+跪著者      跪著者
+跪著名      跪著名
+跪著述      跪著述
+跪著稱      跪著稱
+跪著錄      跪著錄
+跪著書      跪著書
+裹著作      裹著作
+裹著者      裹著者
+裹著名      裹著名
+裹著述      裹著述
+裹著稱      裹著稱
+裹著錄      裹著錄
+裹著書      裹著書
+撼著作      撼著作
+撼著者      撼著者
+撼著名      撼著名
+撼著述      撼著述
+撼著稱      撼著稱
+撼著錄      撼著錄
+撼著書      撼著書
+喝著作      喝著作
+喝著者      喝著者
+喝著名      喝著名
+喝著述      喝著述
+喝著稱      喝著稱
+喝著錄      喝著錄
+喝著書      喝著書
+候著作      候著作
+候著者      候著者
+候著名      候著名
+候著述      候著述
+候著稱      候著稱
+候著錄      候著錄
+候著書      候著書
+懷著作      懷著作
+懷著者      懷著者
+懷著名      懷著名
+懷著述      懷著述
+懷著稱      懷著稱
+懷著錄      懷著錄
+懷著書      懷著書
+晃著作      晃著作
+晃著者      晃著者
+晃著名      晃著名
+晃著述      晃著述
+晃著稱      晃著稱
+晃著錄      晃著錄
+揮著作      揮著作
+揮著者      揮著者
+揮著名      揮著名
+揮著述      揮著述
+揮著稱      揮著稱
+揮著錄      揮著錄
+活著作      活著作
+活著者      活著者
+活著名      活著名
+活著述      活著述
+活著稱      活著稱
+活著錄      活著錄
+活著書      活著書
+獲著作      獲著作
+獲著者      獲著者
+獲著名      獲著名
+獲著述      獲著述
+獲著稱      獲著稱
+獲著錄      獲著錄
+獲著書      獲著書
+獲著作      獲著作
+獲著者      獲著者
+獲著名      獲著名
+獲著述      獲著述
+獲著稱      獲著稱
+獲著錄      獲著錄
+獲著書      獲著書
+急著作      急著作
+急著者      急著者
+急著名      急著名
+急著述      急著述
+急著稱      急著稱
+急著錄      急著錄
+急著書      急著書
+記著作      記著作
+記著者      記著者
+記著名      記著名
+記著述      記著述
+記著稱      記著稱
+記著錄      記著錄
+記著書      記著書
+冀著作      冀著作
+冀著者      冀著者
+冀著名      冀著名
+冀著述      冀著述
+冀著稱      冀著稱
+冀著錄      冀著錄
+冀著書      冀著書
+夾著作      夾著作
+夾著者      夾著者
+夾著名      夾著名
+夾著述      夾著述
+夾著稱      夾著稱
+夾著錄      夾著錄
+夾著書      夾著書
+駕著作      駕著作
+駕著者      駕著者
+駕著名      駕著名
+駕著述      駕著述
+駕著稱      駕著稱
+駕著錄      駕著錄
+駕著書      駕著書
+見著作      見著作
+見著者      見著者
+見著名      見著名
+見著述      見著述
+見著稱      見著稱
+見著錄      見著錄
+見著書      見著書
+閑著作      閑著作
+閑著者      閑著者
+閑著名      閑著名
+閑著述      閑著述
+閑著稱      閑著稱
+閑著錄      閑著錄
+閑著書      閑著書
+叫著作      叫著作
+叫著者      叫著者
+叫著名      叫著名
+叫著述      叫著述
+叫著稱      叫著稱
+叫著錄      叫著錄
+叫著書      叫著書
+接著作      接著作
+接著者      接著者
+接著名      接著名
+接著述      接著述
+接著稱      接著稱
+接著錄      接著錄
+借著作      借著作
+借著者      借著者
+借著名      借著名
+借著述      借著述
+借著稱      借著稱
+借著錄      借著錄
+借著書      借著書
+借著作      借著作
+借著者      借著者
+借著名      借著名
+借著述      借著述
+借著稱      借著稱
+借著錄      借著錄
+借著書      借著書
+據著作      據著作
+據著者      據著者
+據著名      據著名
+據著述      據著述
+據著稱      據著稱
+據著錄      據著錄
+據著書      據著書
+開著作      開著作
+開著者      開著者
+開著名      開著名
+開著述      開著述
+開著稱      開著稱
+開著錄      開著錄
+開著書      開著書
+看著作      看著作
+看著者      看著者
+看著名      看著名
+看著述      看著述
+看著稱      看著稱
+看著錄      看著錄
+看著書      看著書
+康著作      康著作
+康著者      康著者
+康著名      康著名
+康著述      康著述
+康著稱      康著稱
+康著錄      康著錄
+康著書      康著書
+扛著作      扛著作
+扛著者      扛著者
+扛著名      扛著名
+扛著述      扛著述
+扛著稱      扛著稱
+扛著錄      扛著錄
+扛著書      扛著書
+考著作      考著作
+考著者      考著者
+考著名      考著名
+考著述      考著述
+考著稱      考著稱
+考著錄      考著錄
+考著書      考著書
+渴著作      渴著作
+渴著者      渴著者
+渴著名      渴著名
+渴著述      渴著述
+渴著稱      渴著稱
+渴著錄      渴著錄
+渴著書      渴著書
+刻著作      刻著作
+刻著者      刻著者
+刻著名      刻著名
+刻著述      刻著述
+刻著稱      刻著稱
+刻著錄      刻著錄
+刻著書      刻著書
+空著作      空著作
+空著者      空著者
+空著名      空著名
+空著述      空著述
+空著稱      空著稱
+空著錄      空著錄
+空著書      空著書
+哭著作      哭著作
+哭著者      哭著者
+哭著名      哭著名
+哭著述      哭著述
+哭著稱      哭著稱
+哭著錄      哭著錄
+哭著書      哭著書
+苦著作      苦著作
+苦著者      苦著者
+苦著名      苦著名
+苦著述      苦著述
+苦著稱      苦著稱
+苦著錄      苦著錄
+苦著書      苦著書
+捆著作      捆著作
+捆著者      捆著者
+捆著名      捆著名
+捆著述      捆著述
+捆著稱      捆著稱
+捆著錄      捆著錄
+困著作      困著作
+困著者      困著者
+困著名      困著名
+困著述      困著述
+困著稱      困著稱
+困著錄      困著錄
+困著書      困著書
+拉著作      拉著作
+拉著者      拉著者
+拉著名      拉著名
+拉著述      拉著述
+拉著稱      拉著稱
+拉著錄      拉著錄
+拉著書      拉著書
+來著作      來著作
+來著者      來著者
+來著名      來著名
+來著述      來著述
+來著稱      來著稱
+來著錄      來著錄
+來著書      來著書
+樂著作      樂著作
+樂著者      樂著者
+樂著名      樂著名
+樂著述      樂著述
+樂著稱      樂著稱
+樂著錄      樂著錄
+樂著書      樂著書
+努力著作   努力著作
+努力著者   努力著者
+努力著名   努力著名
+努力著述   努力著述
+努力著稱   努力著稱
+努力著錄   努力著錄
+努力著書   努力著書
+麗著作      麗著作
+麗著者      麗著者
+麗著名      麗著名
+麗著述      麗著述
+麗著稱      麗著稱
+麗著錄      麗著錄
+麗著書      麗著書
+連著作      連著作
+連著者      連著者
+連著名      連著名
+連著述      連著述
+連著稱      連著稱
+連著錄      連著錄
+連著書      連著書
+戀著作      戀著作
+戀著者      戀著者
+戀著名      戀著名
+戀著述      戀著述
+戀著稱      戀著稱
+戀著錄      戀著錄
+戀著書      戀著書
+涼著作      涼著作
+涼著者      涼著者
+涼著名      涼著名
+涼著述      涼著述
+涼著稱      涼著稱
+涼著錄      涼著錄
+涼著書      涼著書
+亮著作      亮著作
+亮著者      亮著者
+亮著名      亮著名
+亮著述      亮著述
+亮著稱      亮著稱
+亮著錄      亮著錄
+亮著書      亮著書
+臨著作      臨著作
+臨著者      臨著者
+臨著名      臨著名
+臨著述      臨著述
+臨著稱      臨著稱
+臨著錄      臨著錄
+臨著書      臨著書
+拎著作      拎著作
+拎著者      拎著者
+拎著名      拎著名
+拎著述      拎著述
+拎著稱      拎著稱
+拎著錄      拎著錄
+領著作      領著作
+領著者      領著者
+領著名      領著名
+領著述      領著述
+領著稱      領著稱
+領著錄      領著錄
+領著書      領著書
+流著作      流著作
+流著者      流著者
+流著名      流著名
+流著述      流著述
+流著稱      流著稱
+流著錄      流著錄
+流著書      流著書
+留著作      留著作
+留著者      留著者
+留著名      留著名
+留著述      留著述
+留著稱      留著稱
+留著錄      留著錄
+留著書      留著書
+摟著作      摟著作
+摟著者      摟著者
+摟著名      摟著名
+摟著述      摟著述
+摟著稱      摟著稱
+摟著錄      摟著錄
+陋著作      陋著作
+陋著者      陋著者
+陋著名      陋著名
+陋著述      陋著述
+陋著稱      陋著稱
+陋著錄      陋著錄
+陋著書      陋著書
+落著作      落著作
+落著者      落著者
+落著名      落著名
+落著述      落著述
+落著稱      落著稱
+落著錄      落著錄
+落著書      落著書
+罵著作      罵著作
+罵著者      罵著者
+罵著名      罵著名
+罵著述      罵著述
+罵著稱      罵著稱
+罵著錄      罵著錄
+罵著書      罵著書
+瞞著作      瞞著作
+瞞著者      瞞著者
+瞞著名      瞞著名
+瞞著述      瞞著述
+瞞著稱      瞞著稱
+瞞著錄      瞞著錄
+瞞著書      瞞著書
+漫著作      漫著作
+漫著者      漫著者
+漫著名      漫著名
+漫著述      漫著述
+漫著稱      漫著稱
+漫著錄      漫著錄
+漫著書      漫著書
+忙著作      忙著作
+忙著者      忙著者
+忙著名      忙著名
+忙著述      忙著述
+忙著稱      忙著稱
+忙著錄      忙著錄
+忙著書      忙著書
+冒著作      冒著作
+冒著者      冒著者
+冒著名      冒著名
+冒著述      冒著述
+冒著稱      冒著稱
+冒著錄      冒著錄
+冒著書      冒著書
+美著作      美著作
+美著者      美著者
+美著名      美著名
+美著述      美著述
+美著稱      美著稱
+美著錄      美著錄
+美著書      美著書
+夢著作      夢著作
+夢著者      夢著者
+夢著名      夢著名
+夢著述      夢著述
+夢著稱      夢著稱
+夢著錄      夢著錄
+夢著書      夢著書
+蒙著作      蒙著作
+蒙著者      蒙著者
+蒙著名      蒙著名
+蒙著述      蒙著述
+蒙著稱      蒙著稱
+蒙著錄      蒙著錄
+蒙著書      蒙著書
+拿著作      拿著作
+拿著者      拿著者
+拿著名      拿著名
+拿著述      拿著述
+拿著稱      拿著稱
+拿著錄      拿著錄
+逆著作      逆著作
+逆著者      逆著者
+逆著名      逆著名
+逆著述      逆著述
+逆著稱      逆著稱
+逆著錄      逆著錄
+逆著書      逆著書
+釀著作      釀著作
+釀著者      釀著者
+釀著名      釀著名
+釀著述      釀著述
+釀著稱      釀著稱
+釀著錄      釀著錄
+釀著書      釀著書
+努著作      努著作
+努著者      努著者
+努著名      努著名
+努著述      努著述
+努著稱      努著稱
+努著錄      努著錄
+努著書      努著書
+趴著作      趴著作
+趴著者      趴著者
+趴著名      趴著名
+趴著述      趴著述
+趴著稱      趴著稱
+趴著錄      趴著錄
+趴著書      趴著書
+跑著作      跑著作
+跑著者      跑著者
+跑著名      跑著名
+跑著述      跑著述
+跑著稱      跑著稱
+跑著錄      跑著錄
+跑著書      跑著書
+陪著作      陪著作
+陪著者      陪著者
+陪著名      陪著名
+陪著述      陪著述
+陪著稱      陪著稱
+陪著錄      陪著錄
+陪著書      陪著書
+配著作      配著作
+配著者      配著者
+配著名      配著名
+配著述      配著述
+配著稱      配著稱
+配著錄      配著錄
+配著書      配著書
+披著作      披著作
+披著者      披著者
+披著名      披著名
+披著述      披著述
+披著稱      披著稱
+披著錄      披著錄
+披著書      披著書
+騙著作      騙著作
+騙著者      騙著者
+騙著名      騙著名
+騙著述      騙著述
+騙著稱      騙著稱
+騙著錄      騙著錄
+騙著書      騙著書
+飄著作      飄著作
+飄著者      飄著者
+飄著名      飄著名
+飄著述      飄著述
+飄著稱      飄著稱
+飄著錄      飄著錄
+飄著書      飄著書
+拼著作      拼著作
+拼著者      拼著者
+拼著名      拼著名
+拼著述      拼著述
+拼著稱      拼著稱
+拼著錄      拼著錄
+鋪著作      鋪著作
+鋪著者      鋪著者
+鋪著名      鋪著名
+鋪著述      鋪著述
+鋪著稱      鋪著稱
+鋪著錄      鋪著錄
+鋪著書      鋪著書
+騎著作      騎著作
+騎著者      騎著者
+騎著名      騎著名
+騎著述      騎著述
+騎著稱      騎著稱
+騎著錄      騎著錄
+騎著書      騎著書
+牽著作      牽著作
+牽著者      牽著者
+牽著名      牽著名
+牽著述      牽著述
+牽著稱      牽著稱
+牽著錄      牽著錄
+牽著書      牽著書
+求著作      求著作
+求著者      求著者
+求著名      求著名
+求著述      求著述
+求著稱      求著稱
+求著錄      求著錄
+求著書      求著書
+去著作      去著作
+去著者      去著者
+去著名      去著名
+去著述      去著述
+去著稱      去著稱
+去著錄      去著錄
+去著書      去著書
+嚷著作      嚷著作
+嚷著者      嚷著者
+嚷著名      嚷著名
+嚷著述      嚷著述
+嚷著稱      嚷著稱
+嚷著錄      嚷著錄
+嚷著書      嚷著書
+繞著作      繞著作
+繞著者      繞著者
+繞著名      繞著名
+繞著述      繞著述
+繞著稱      繞著稱
+繞著錄      繞著錄
+繞著書      繞著書
+忍著作      忍著作
+忍著者      忍著者
+忍著名      忍著名
+忍著述      忍著述
+忍著稱      忍著稱
+忍著錄      忍著錄
+忍著書      忍著書
+揉著作      揉著作
+揉著者      揉著者
+揉著名      揉著名
+揉著述      揉著述
+揉著稱      揉著稱
+揉著錄      揉著錄
+揉著書      揉著書
+潤著作      潤著作
+潤著者      潤著者
+潤著名      潤著名
+潤著述      潤著述
+潤著稱      潤著稱
+潤著錄      潤著錄
+潤著書      潤著書
+燒著作      燒著作
+燒著者      燒著者
+燒著名      燒著名
+燒著述      燒著述
+燒著稱      燒著稱
+燒著錄      燒著錄
+燒著書      燒著書
+身著作      身著作
+身著者      身著者
+身著名      身著名
+身著述      身著述
+身著稱      身著稱
+身著錄      身著錄
+身著書      身著書
+沉著作      沉著作
+沉著者      沉著者
+沉著名      沉著名
+沉著述      沉著述
+沉著稱      沉著稱
+沉著錄      沉著錄
+沉著書      沉著書
+盛著作      盛著作
+盛著者      盛著者
+盛著名      盛著名
+盛著述      盛著述
+盛著稱      盛著稱
+盛著錄      盛著錄
+盛著書      盛著書
+試著作      試著作
+試著者      試著者
+試著名      試著名
+試著述      試著述
+試著稱      試著稱
+試著錄      試著錄
+試著書      試著書
+守著作      守著作
+守著者      守著者
+守著名      守著名
+守著述      守著述
+守著稱      守著稱
+守著錄      守著錄
+守著書      守著書
+受著作      受著作
+受著者      受著者
+受著名      受著名
+受著述      受著述
+受著稱      受著稱
+受著錄      受著錄
+受著書      受著書
+梳著作      梳著作
+梳著者      梳著者
+梳著名      梳著名
+梳著述      梳著述
+梳著稱      梳著稱
+梳著錄      梳著錄
+豎著作      豎著作
+豎著者      豎著者
+豎著名      豎著名
+豎著述      豎著述
+豎著稱      豎著稱
+豎著錄      豎著錄
+豎著書      豎著書
+數著作      數著作
+數著者      數著者
+數著名      數著名
+數著述      數著述
+數著稱      數著稱
+數著錄      數著錄
+睡著作      睡著作
+睡著者      睡著者
+睡著名      睡著名
+睡著述      睡著述
+睡著稱      睡著稱
+睡著錄      睡著錄
+睡著書      睡著書
+順著作      順著作
+順著者      順著者
+順著名      順著名
+順著述      順著述
+順著稱      順著稱
+順著錄      順著錄
+順著書      順著書
+隨著作      隨著作
+隨著者      隨著者
+隨著名      隨著名
+隨著述      隨著述
+隨著稱      隨著稱
+隨著錄      隨著錄
+隨著書      隨著書
+踏著作      踏著作
+踏著者      踏著者
+踏著名      踏著名
+踏著述      踏著述
+踏著稱      踏著稱
+踏著錄      踏著錄
+抬著作      抬著作
+抬著者      抬著者
+抬著名      抬著名
+抬著述      抬著述
+抬著稱      抬著稱
+抬著錄      抬著錄
+躺著作      躺著作
+躺著者      躺著者
+躺著名      躺著名
+躺著述      躺著述
+躺著稱      躺著稱
+躺著錄      躺著錄
+躺著書      躺著書
+提著作      提著作
+提著者      提著者
+提著名      提著名
+提著述      提著述
+提著稱      提著稱
+提著錄      提著錄
+甜著作      甜著作
+甜著者      甜著者
+甜著名      甜著名
+甜著述      甜著述
+甜著稱      甜著稱
+甜著錄      甜著錄
+甜著書      甜著書
+挑著作      挑著作
+挑著者      挑著者
+挑著名      挑著名
+挑著述      挑著述
+挑著稱      挑著稱
+挑著錄      挑著錄
+跳著作      跳著作
+跳著者      跳著者
+跳著名      跳著名
+跳著述      跳著述
+跳著稱      跳著稱
+跳著錄      跳著錄
+跳著書      跳著書
+聽著作      聽著作
+聽著者      聽著者
+聽著名      聽著名
+聽著述      聽著述
+聽著稱      聽著稱
+聽著錄      聽著錄
+聽著書      聽著書
+偷著作      偷著作
+偷著者      偷著者
+偷著名      偷著名
+偷著述      偷著述
+偷著稱      偷著稱
+偷著錄      偷著錄
+偷著書      偷著書
+拖著作      拖著作
+拖著者      拖著者
+拖著名      拖著名
+拖著述      拖著述
+拖著稱      拖著稱
+拖著錄      拖著錄
+望著作      望著作
+望著者      望著者
+望著名      望著名
+望著述      望著述
+望著稱      望著稱
+望著錄      望著錄
+望著書      望著書
+圍著作      圍著作
+圍著者      圍著者
+圍著名      圍著名
+圍著述      圍著述
+圍著稱      圍著稱
+圍著錄      圍著錄
+圍著書      圍著書
+味著作      味著作
+味著者      味著者
+味著名      味著名
+味著述      味著述
+味著稱      味著稱
+味著錄      味著錄
+味著書      味著書
+想著作      想著作
+想著者      想著者
+想著名      想著名
+想著述      想著述
+想著稱      想著稱
+想著錄      想著錄
+想著書      想著書
+響著作      響著作
+響著者      響著者
+響著名      響著名
+響著述      響著述
+響著稱      響著稱
+響著錄      響著錄
+響著書      響著書
+向著作      向著作
+向著者      向著者
+向著名      向著名
+向著述      向著述
+向著稱      向著稱
+向著錄      向著錄
+向著書      向著書
+笑著作      笑著作
+笑著者      笑著者
+笑著名      笑著名
+笑著述      笑著述
+笑著稱      笑著稱
+笑著錄      笑著錄
+笑著書      笑著書
+心著作      心著作
+心著者      心著者
+心著名      心著名
+心著述      心著述
+心著稱      心著稱
+心著錄      心著錄
+心著書      心著書
+信著作      信著作
+信著者      信著者
+信著名      信著名
+信著述      信著述
+信著稱      信著稱
+信著錄      信著錄
+信著書      信著書
+行著作      行著作
+行著者      行著者
+行著名      行著名
+行著述      行著述
+行著稱      行著稱
+行著錄      行著錄
+行著書      行著書
+性著作      性著作
+性著者      性著者
+性著名      性著名
+性著述      性著述
+性著稱      性著稱
+性著錄      性著錄
+性著書      性著書
+學著作      學著作
+學著者      學著者
+學著名      學著名
+學著述      學著述
+學著稱      學著稱
+學著錄      學著錄
+學著書      學著書
+尋著作      尋著作
+尋著者      尋著者
+尋著名      尋著名
+尋著述      尋著述
+尋著稱      尋著稱
+尋著錄      尋著錄
+尋著書      尋著書
+循著作      循著作
+循著者      循著者
+循著名      循著名
+循著述      循著述
+循著稱      循著稱
+循著錄      循著錄
+循著書      循著書
+壓著作      壓著作
+壓著者      壓著者
+壓著名      壓著名
+壓著述      壓著述
+壓著稱      壓著稱
+壓著錄      壓著錄
+壓著書      壓著書
+雅著作      雅著作
+雅著者      雅著者
+雅著名      雅著名
+雅著述      雅著述
+雅著稱      雅著稱
+雅著錄      雅著錄
+雅著書      雅著書
+沿著作      沿著作
+沿著者      沿著者
+沿著名      沿著名
+沿著述      沿著述
+沿著稱      沿著稱
+沿著錄      沿著錄
+沿著書      沿著書
+耀著作      耀著作
+耀著者      耀著者
+耀著名      耀著名
+耀著述      耀著述
+耀著稱      耀著稱
+耀著錄      耀著錄
+耀著書      耀著書
+掖著作      掖著作
+掖著者      掖著者
+掖著名      掖著名
+掖著述      掖著述
+掖著稱      掖著稱
+掖著錄      掖著錄
+衣著作      衣著作
+衣著者      衣著者
+衣著名      衣著名
+衣著述      衣著述
+衣著稱      衣著稱
+衣著錄      衣著錄
+衣著書      衣著書
+疑著作      疑著作
+疑著者      疑著者
+疑著名      疑著名
+疑著述      疑著述
+疑著稱      疑著稱
+疑著錄      疑著錄
+疑著書      疑著書
+溢著作      溢著作
+溢著者      溢著者
+溢著名      溢著名
+溢著述      溢著述
+溢著稱      溢著稱
+溢著錄      溢著錄
+溢著書      溢著書
+藝著作      藝著作
+藝著者      藝著者
+藝著名      藝著名
+藝著述      藝著述
+藝著稱      藝著稱
+藝著錄      藝著錄
+藝著書      藝著書
+因著作      因著作
+因著者      因著者
+因著名      因著名
+因著述      因著述
+因著稱      因著稱
+因著錄      因著錄
+因著書      因著書
+印著作      印著作
+印著者      印著者
+印著名      印著名
+印著述      印著述
+印著稱      印著稱
+印著錄      印著錄
+印著書      印著書
+應著作      應著作
+應著者      應著者
+應著名      應著名
+應著述      應著述
+應著稱      應著稱
+應著錄      應著錄
+應著書      應著書
+映著作      映著作
+映著者      映著者
+映著名      映著名
+映著述      映著述
+映著稱      映著稱
+映著錄      映著錄
+映著書      映著書
+用著作      用著作
+用著者      用著者
+用著名      用著名
+用著述      用著述
+用著稱      用著稱
+用著錄      用著錄
+用著書      用著書
+悠著作      悠著作
+悠著者      悠著者
+悠著名      悠著名
+悠著述      悠著述
+悠著稱      悠著稱
+悠著錄      悠著錄
+悠著書      悠著書
+有著作      有著作
+有著者      有著者
+有著名      有著名
+有著述      有著述
+有著稱      有著稱
+有著錄      有著錄
+有著書      有著書
+與著作      與著作
+與著者      與著者
+與著名      與著名
+與著述      與著述
+與著稱      與著稱
+與著錄      與著錄
+與著書      與著書
+語著作      語著作
+語著者      語著者
+語著名      語著名
+語著述      語著述
+語著稱      語著稱
+語著錄      語著錄
+語著書      語著書
+豫著作      豫著作
+豫著者      豫著者
+豫著名      豫著名
+豫著述      豫著述
+豫著稱      豫著稱
+豫著錄      豫著錄
+豫著書      豫著書
+遠著作      遠著作
+遠著者      遠著者
+遠著名      遠著名
+遠著述      遠著述
+遠著稱      遠著稱
+遠著錄      遠著錄
+遠著書      遠著書
+躍著作      躍著作
+躍著者      躍著者
+躍著名      躍著名
+躍著述      躍著述
+躍著稱      躍著稱
+躍著錄      躍著錄
+躍著書      躍著書
+雜著作      雜著作
+雜著者      雜著者
+雜著名      雜著名
+雜著述      雜著述
+雜著稱      雜著稱
+雜著錄      雜著錄
+雜著書      雜著書
+載著作      載著作
+載著者      載著者
+載著名      載著名
+載著述      載著述
+載著稱      載著稱
+載著錄      載著錄
+載著書      載著書
+在著作      在著作
+在著者      在著者
+在著名      在著名
+在著述      在著述
+在著稱      在著稱
+在著錄      在著錄
+在著書      在著書
+紮著作      紮著作
+紮著者      紮著者
+紮著名      紮著名
+紮著述      紮著述
+紮著稱      紮著稱
+紮著錄      紮著錄
+紮著書      紮著書
+展著作      展著作
+展著者      展著者
+展著名      展著名
+展著述      展著述
+展著稱      展著稱
+展著錄      展著錄
+展著書      展著書
+站著作      站著作
+站著者      站著者
+站著名      站著名
+站著述      站著述
+站著稱      站著稱
+站著錄      站著錄
+站著書      站著書
+戰著作      戰著作
+戰著者      戰著者
+戰著名      戰著名
+戰著述      戰著述
+戰著稱      戰著稱
+戰著錄      戰著錄
+戰著書      戰著書
+蘸著作      蘸著作
+蘸著者      蘸著者
+蘸著名      蘸著名
+蘸著述      蘸著述
+蘸著稱      蘸著稱
+蘸著錄      蘸著錄
+蘸著書      蘸著書
+仗著作      仗著作
+仗著者      仗著者
+仗著名      仗著名
+仗著述      仗著述
+仗著稱      仗著稱
+仗著錄      仗著錄
+仗著書      仗著書
+照著作      照著作
+照著者      照著者
+照著名      照著名
+照著述      照著述
+照著稱      照著稱
+照著錄      照著錄
+照著書      照著書
+罩著作      罩著作
+罩著者      罩著者
+罩著名      罩著名
+罩著述      罩著述
+罩著稱      罩著稱
+罩著錄      罩著錄
+罩著書      罩著書
+貞著作      貞著作
+貞著者      貞著者
+貞著名      貞著名
+貞著述      貞著述
+貞著稱      貞著稱
+貞著錄      貞著錄
+貞著書      貞著書
+枕著作      枕著作
+枕著者      枕著者
+枕著名      枕著名
+枕著述      枕著述
+枕著稱      枕著稱
+枕著錄      枕著錄
+爭著作      爭著作
+爭著者      爭著者
+爭著名      爭著名
+爭著述      爭著述
+爭著稱      爭著稱
+爭著錄      爭著錄
+爭著書      爭著書
+掙著作      掙著作
+掙著者      掙著者
+掙著名      掙著名
+掙著述      掙著述
+掙著稱      掙著稱
+掙著錄      掙著錄
+掙著書      掙著書
+制著作      制著作
+制著者      制著者
+制著名      制著名
+制著述      制著述
+制著稱      制著稱
+制著錄      制著錄
+制著書      制著書
+志著作      志著作
+志著者      志著者
+志著名      志著名
+志著述      志著述
+志著稱      志著稱
+志著錄      志著錄
+志著書      志著書
+皺著作      皺著作
+皺著者      皺著者
+皺著名      皺著名
+皺著述      皺著述
+皺著稱      皺著稱
+皺著錄      皺著錄
+皺著書      皺著書
+住著作      住著作
+住著者      住著者
+住著名      住著名
+住著述      住著述
+住著稱      住著稱
+住著錄      住著錄
+住著書      住著書
+抓著作      抓著作
+抓著者      抓著者
+抓著名      抓著名
+抓著述      抓著述
+抓著稱      抓著稱
+抓著錄      抓著錄
+轉著作      轉著作
+轉著者      轉著者
+轉著名      轉著名
+轉著述      轉著述
+轉著稱      轉著稱
+轉著錄      轉著錄
+轉著書      轉著書
+裝著作      裝著作
+裝著者      裝著者
+裝著名      裝著名
+裝著述      裝著述
+裝著稱      裝著稱
+裝著錄      裝著錄
+裝著書      裝著書
+追著作      追著作
+追著者      追著者
+追著名      追著名
+追著述      追著述
+追著稱      追著稱
+追著錄      追著錄
+追著書      追著書
+髭著作      髭著作
+髭著者      髭著者
+髭著名      髭著名
+髭著述      髭著述
+髭著稱      髭著稱
+髭著錄      髭著錄
+髭著書      髭著書
+走著作      走著作
+走著者      走著者
+走著名      走著名
+走著述      走著述
+走著稱      走著稱
+走著錄      走著錄
+走著書      走著書
+坐著作      坐著作
+坐著者      坐著者
+坐著名      坐著名
+坐著述      坐著述
+坐著稱      坐著稱
+坐著錄      坐著錄
+坐著書      坐著書
+做著作      做著作
+做著者      做著者
+做著名      做著名
+做著述      做著述
+做著稱      做著稱
+做著錄      做著錄
+做著書      做著書
+含著作      含著作
+含著者      含著者
+含著名      含著名
+含著述      含著述
+含著稱      含著稱
+含著錄      含著錄
+含著書      含著書
+涵著作      涵著作
+涵著者      涵著者
+涵著名      涵著名
+涵著述      涵著述
+涵著稱      涵著稱
+涵著錄      涵著錄
+涵著書      涵著書
+演著作      演著作
+演著者      演著者
+演著名      演著名
+演著述      演著述
+演著稱      演著稱
+演著錄      演著錄
+演著書      演著書
+保障著作   保障著作
+保障著者   保障著者
+保障著名   保障著名
+保障著述   保障著述
+保障著稱   保障著稱
+保障著錄   保障著錄
+保障著書   保障著書
+黏著作      黏著作
+黏著者      黏著者
+黏著名      黏著名
+黏著述      黏著述
+黏著稱      黏著稱
+黏著錄      黏著錄
+黏著書      黏著書
+膠著作      膠著作
+膠著者      膠著者
+膠著名      膠著名
+膠著述      膠著述
+膠著稱      膠著稱
+膠著錄      膠著錄
+膠著書      膠著書
+附著作      附著作
+附著者      附著者
+附著名      附著名
+附著述      附著述
+附著稱      附著稱
+附著錄      附著錄
+附著書      附著書
+代表著作   代表著作
+代表著者   代表著者
+代表著名   代表著名
+代表著述   代表著述
+代表著稱   代表著稱
+代表著錄   代表著錄
+代表著書   代表著書
+浮著作      浮著作
+浮著者      浮著者
+浮著名      浮著名
+浮著述      浮著述
+浮著稱      浮著稱
+浮著錄      浮著錄
+浮著書      浮著書
+寫著作      寫著作
+寫著者      寫著者
+寫著名      寫著名
+寫著述      寫著述
+寫著稱      寫著稱
+寫著錄      寫著錄
+寫著書      寫著書
+遇著作      遇著作
+遇著者      遇著者
+遇著名      遇著名
+遇著述      遇著述
+遇著稱      遇著稱
+遇著錄      遇著錄
+遇著書      遇著書
+殺著作      殺著作
+殺著者      殺著者
+殺著名      殺著名
+殺著述      殺著述
+殺著稱      殺著稱
+殺著錄      殺著錄
+殺著書      殺著書
+標誌著      標誌着
+幹著 幹着
+干着 幹着
+干着急      干着急
+流露著      流露着
+靠著 靠着
+靠著作      靠著作
+靠著名      靠著名
+靠著錄      靠著錄
+靠著录      靠著錄
+靠著稱      靠著稱
+靠著称      靠著稱
+靠著者      靠著者
+靠著述      靠著述
+新著龍虎門        新著龍虎門
+迫著 迫着
+心繫著      心繫着
+藉著 藉着
+吃得著      吃得着
+吃不著      吃不着
+吃著 吃着
+聞得著      闻得着
+聞不著      闻不着
+聞著 闻着
+嗅得著      嗅得着
+嗅不著      嗅不着
+嗅著 嗅着
+警戒著      警戒着
+榴莲 榴槤
+榴蓮 榴槤
+发布 發佈
+發布 發佈
+掛鉤 掛鈎
+鉤心鬥角   鈎心鬥角
+咤    咤
+叱吒 叱咤
+叱咤 叱咤
+醯    酰
+醯醬 醯醬
+醯雞 醯雞
+醯酱 醯醬
+醯鸡 醯雞
+醯醋 醯醋
+醯醢 醯醢
+醯壶 醯壺
+醯壺 醯壺
+菸    煙
+雪裡紅      雪裏紅
+雪裡蕻      雪裏蕻
+雪里蕻      雪裏蕻
+雪里红      雪裏紅
+森林裡      森林裏
+森林里      森林裏
+日子裡      日子裏
+日子里      日子裏
+故事裡      故事裏
+故事里      故事裏
+領域裡      領域裏
+领域里      領域裏
+時間裡      時間裏
+时间里      時間裏
+深淵裡      深淵裏
+深渊里      深渊裏
+醫院裡      醫院裏
+医院里      医院裏
+春假裡      春假裏
+春假里      春假裏
+暑假裡      暑假裏
+暑假里      暑假裏
+秋假裡      秋假裏
+秋假里      秋假裏
+寒假裡      寒假裏
+寒假里      寒假裏
+春天裡      春天裏
+春天里      春天裏
+夏天裡      夏天裏
+夏天里      夏天裏
+秋天裡      秋天裏
+秋天里      秋天裏
+冬天裡      冬天裏
+冬天里      冬天裏
+春日裡      春日裏
+夏日裡      夏日裏
+秋日裡      秋日裏
+冬日裡      冬日裏
+春日里      春日裏
+夏日里      夏日裏
+秋日里      秋日裏
+冬日里      冬日裏
+嘴裡 嘴裏
+嘴里 嘴裏
+心裡 心裏
+心里 心裏
+皮裡陽秋   皮裏陽秋
+皮里阳秋   皮裏陽秋
+肚裡 肚裏
+肚里 肚裏
+苦裡 苦裏
+苦里 苦裏
+裡勾外連   裏勾外連
+里勾外连   裏勾外連
+裡面 裏面
+里面 裏面
+這裡 這裏
+這里 這裏
+點裡 點裏
+点里 點裏
+中文裡      中文裏
+中文里      中文裏
+山洞里      山洞裏
+山洞裡      山洞裏
+近角聪信   近角聰信
+近角聰信   近角聰信
+世界里      世界裏
+世界裡      世界裏
+眼睛里      眼睛裏
+眼睛裡      眼睛裏
+百科裡      百科裏
+百科里      百科裏
+歷史裡      歷史裏
+历史里      歷史裏
+戲裡 戲裏
+戏里 戲裏
+作品裡      作品裏
+作品里      作品裏
+專輯裡      專輯裏
+专辑里      專輯裏
+年代裡      年代裏
+年代里      年代裏
+棺材裡      棺材裏
+棺材里      棺材裏
+學裡 學裏
+学里 學裏
+獄裡 獄裏
+狱里 獄裏
+館裡 館裏
+馆里 館裏
+系列裡      系列裏
+系列里      系列裏
+村子裡      村子裏
+村子里      村子裏
+分布 分佈
+分布于      分佈於
+分布於      分佈於
+想象 想像
+無線電視   無綫電視
+无线电视   無綫電視
+無線收費   無綫收費
+无线收费   無綫收費
+無線節目   無綫節目
+无线节目   無綫節目
+無線劇集   無綫劇集
+无线剧集   無綫劇集
+東鐵線      東鐵綫
+东铁线      東鐵綫
+觀塘線      觀塘綫
+观塘线      觀塘綫
+荃灣線      荃灣綫
+荃湾线      荃灣綫
+港島線      港島綫
+港岛线      港島綫
+東涌線      東涌綫
+东涌线      東涌綫
+將軍澳線   將軍澳綫
+将军澳线   將軍澳綫
+西鐵線      西鐵綫
+西铁线      西鐵綫
+馬鞍山線   馬鞍山綫
+马鞍山线   馬鞍山綫
+迪士尼線   迪士尼綫
+迪士尼线   迪士尼綫
+沙田至中環線     沙田至中環綫
+沙田至中环线     沙田至中環綫
+沙中線      沙中綫
+沙中线      沙中綫
+北環線      北環綫
+北环线      北環綫
+機場快線   機場快綫
+机场快线   機場快綫
+505線 505綫
+505线 505綫
+507線 507綫
+507线 507綫
+610線 610綫
+610线 610綫
+614線 614綫
+614线 614綫
+614P線        614P綫
+614P线        614P綫
+615線 615綫
+615线 615綫
+615P線        615P綫
+615P线        615P綫
+705線 705綫
+705线 705綫
+706線 706綫
+706线 706綫
+751線 751綫
+751线 751綫
+751P線        751P綫
+751P线        751P綫
+761P線        761P綫
+761P线        761P綫
diff --git a/maintenance/language/zhtable/toSG.manual b/maintenance/language/zhtable/toSG.manual
new file mode 100644 (file)
index 0000000..2d39aa3
--- /dev/null
@@ -0,0 +1,21 @@
+」    ”
+「    “
+『    ‘
+』    ’
+方便面      快速面
+速食麵      快速面
+即食麵      快速面
+泡麵 快速面
+蹦极跳      绑紧跳
+笨豬跳      绑紧跳
+凉菜 冷菜
+冷盤 冷菜
+零钱 散钱
+散紙 散钱
+笑星 谐星
+夜校 夜学
+民乐 华乐
+住房 住屋
+房价 屋价
+榴莲 榴梿
+榴蓮 榴梿
\ No newline at end of file
diff --git a/maintenance/language/zhtable/toSimp.manual b/maintenance/language/zhtable/toSimp.manual
new file mode 100644 (file)
index 0000000..e22447a
--- /dev/null
@@ -0,0 +1,166 @@
+乾县 乾县
+萧乾 萧乾
+乾断 乾断
+乾图 乾图
+乾纲 乾纲
+乾红 乾红
+乾清宫      乾清宫
+乾仪 乾仪
+乾兴 乾兴
+乾冈 乾冈
+乾刘 乾刘
+乾刚 乾刚
+乾启 乾启
+乾宁 乾宁
+乾岗 乾岗
+乾录 乾录
+乾晖 乾晖
+乾构 乾构
+乾枢 乾枢
+乾栋 乾栋
+乾灵 乾灵
+乾窦 乾窦
+乾笃 乾笃
+乾纽 乾纽
+乾络 乾络
+乾统 乾统
+乾维 乾维
+乾罗 乾罗
+乾荫 乾荫
+乾象历      乾象历
+乾贞 乾贞
+乾贶 乾贶
+乾车 乾车
+乾轴 乾轴
+乾鉴 乾鉴
+乾钧 乾钧
+乾闼 乾闼
+乾顾 乾顾
+乾风 乾风
+乾马 乾马
+乾鹄 乾鹄
+乾鹊 乾鹊
+乾龙 乾龙
+张法乾      张法乾
+旋乾转坤   旋乾转坤
+天道为乾   天道为乾
+易经·乾    易经·乾
+易经乾      易经乾
+乾务 乾务
+黄润乾      黄润乾
+男性为乾   男性为乾
+男为乾      男为乾
+阳为乾      阳为乾
+男性为乾   男性为乾
+男性爲乾   男性为乾
+男为乾      男为乾
+男爲乾      男为乾
+阳为乾      阳为乾
+陽爲乾      阳为乾
+乾一组      乾一组
+乾一坛      乾一坛
+陈乾生      陈乾生
+陈公乾生   陈公乾生
+柳诒徵      柳诒徵
+於夫罗      於夫罗
+於梨华      於梨华
+於潜县      於潜县
+於志贺      於志贺
+憑藉 凭借
+藉端 借端
+藉故 借故
+藉口 借口
+藉助 借助
+藉手 借手
+藉詞 借词
+藉機 借机
+藉此 借此
+藉由 借由
+藉著 借着
+藉着 借着
+沈積 沉积
+沈船 沉船
+沈默 沉默
+沈沒 沉没
+彷彿 仿佛
+項鍊 项链
+肘手鍊足   肘手链足
+鍊子 链子
+鍊條 链条
+拉鍊 拉链
+鉸鍊 铰链
+鍊鎖 链锁
+鎖鍊 锁链
+鐵鍊 铁链
+金鍊 金链
+銀鍊 银链
+鍊錘 链锤
+洗鍊 洗练
+石碁镇      石碁镇
+反覆 反复
+回覆 回复
+答覆 答复
+反反覆覆   反反复复
+重覆 重复
+覆核 复核
+覆查 复查
+鬱姓 鬱姓
+鬱氏 鬱氏
+侏儸紀      侏罗纪
+夥計 伙计
+吳其濬      吴其濬
+吴其濬      吴其濬
+乾泉水      干泉水
+么半群      幺半群
+么元 幺元
+么爹 幺爹
+么叔 幺叔
+么舅 幺舅
+么爸 幺爸
+么媽 幺妈
+么姨 幺姨
+么娘 幺娘
+么孃 幺娘
+幺孃 幺娘
+么妹 幺妹
+么小 幺小
+么姓 幺姓
+么氏 幺氏
+么蛾子      幺蛾子
+幺厮 幺厮
+睪丸 睾丸
+附睪 附睾
+隱睪 隱睾
+麼麼 麽麽
+么麼 幺麽
+么麼小丑   幺麽小丑
+么鳳 幺凤
+么二三      幺二三
+么篇 幺篇
+么謙 幺谦
+这么 这么
+麴义 麴义
+乾乾淨淨   干干净净
+乾乾脆脆   干干脆脆
+肉乾乾      肉干干
+魚乾乾      鱼干干
+於于同      於于同
+於乙于同   於乙于同
+閻懷禮      闫怀礼
+醯酱 醯酱
+醯鸡 醯鸡
+醯壶 醯壶
+苧烯 苧烯
+李乾顺      李乾顺
+幹著 干着
+氾濫 泛滥
+显著 显著
+顯著 显著
+標誌著      标志着
+近角聪信   近角聪信
+修鍊 修炼
+米泽瑠美   米泽瑠美
+太閤 太阁
+候覆 候复
+待覆 待复
+批覆 批复
diff --git a/maintenance/language/zhtable/toTW.manual b/maintenance/language/zhtable/toTW.manual
new file mode 100644 (file)
index 0000000..1a14e99
--- /dev/null
@@ -0,0 +1,411 @@
+”    」
+“    「
+‘    『
+’    』
+着    著
+鈎    鉤
+钩    鉤
+衞 衛
+元凶 元凶
+元兇 元凶
+凶器 凶器
+兇器 凶器
+凶徒 凶徒
+兇徒 凶徒
+凶手 凶手
+兇手 凶手
+凶案 凶案
+兇案 凶案
+凶残 凶殘
+凶殘 凶殘
+兇殘 凶殘
+凶杀 凶殺
+凶殺 凶殺
+兇殺 凶殺
+疑凶 疑凶
+疑兇 疑凶
+真凶 真凶
+真兇 真凶
+缉凶 緝凶
+緝凶 緝凶
+緝兇 緝凶
+行凶 行凶
+行兇 行凶
+行凶后      行凶後
+行凶後      行凶後
+行兇後      行凶後
+买凶 買凶
+買凶 買凶
+買兇 買凶
+追凶 追凶
+追兇 追凶
+逞凶斗狠   逞凶鬥狠
+逞凶鬥狠   逞凶鬥狠
+逞兇鬥狠   逞凶鬥狠
+复苏 復甦
+復蘇 復甦
+缺省 預設
+串行 串列
+串列加速器        串列加速器
+以太网      乙太網
+位图 點陣圖
+例程 常式
+光标 游標
+光盘 光碟
+光驱 光碟機
+全角 全形
+加载 載入
+半角 半形
+变量 變數
+噪声 雜訊
+脱机 離線
+声卡 音效卡
+老字号      老字號
+连字号      連字號
+字号 字型大小
+字库 字型檔
+字段 欄位
+字符 字元
+字符集      字符集
+存盘 存檔
+寻址 定址
+尾注 章節附註
+异步 非同步
+总线 匯流排
+括号 括弧
+接口 介面
+控件 控制項
+权限 許可權
+盘片 碟片
+硅片 矽片
+硅谷 矽谷
+硬盘 硬碟
+磁盘 磁碟
+磁道 磁軌
+程控 程式控制
+远程控制   遠程控制
+遠程控制   遠程控制
+行程控制   行程控制
+流程控制   流程控制
+端口 埠
+算子 運算元
+算法 演算法
+芯片 晶片
+芯片 晶元
+词组 片語
+译码 解碼
+软驱 軟碟機
+快闪存储器        快閃記憶體
+闪存 快閃記憶體
+鼠标 滑鼠
+进制 進位
+交互式      互動式
+仿真 模擬
+优先级      優先順序
+传感 感測
+便携式      攜帶型
+信息论      資訊理論
+写保护      防寫
+分辨率      解析度
+服务器      伺服器
+等于 等於
+局域网      區域網
+扫瞄仪      掃瞄器
+宽带 寬頻
+数据库      資料庫
+奶酪 乳酪
+手电 手電筒
+手电筒      手電筒
+万历 萬曆
+永历 永曆
+词汇 辭彙
+习用 慣用
+元音 母音
+新纪元      新紀元
+新紀元      新紀元
+宋元 宋元
+头球 頭槌
+入球 進球
+粒入球      顆進球
+打门 射門
+火锅盖帽   蓋火鍋
+打印机      印表機
+打印機      印表機
+字节 位元組
+字節 位元組
+打印 列印
+打印 列印
+硬件 硬體
+硬件 硬體
+二极管      二極體
+二極管      二極體
+三极管      三極體
+三極管      三極體
+软件 軟體
+軟件 軟體
+网络 網路
+網絡 網路
+人工智能   人工智慧
+航天飞机   太空梭
+航天大学   航天大學
+穿梭機      太空梭
+因特网      網際網路
+互聯網      網際網路
+机器人      機器人
+機械人      機器人
+移动电话   行動電話
+流動電話   行動電話
+调制解调器        數據機
+調制解調器        數據機
+短信 簡訊
+短訊 簡訊
+乌兹别克斯坦     烏茲別克
+乍得 查德
+乍得 查德
+也门 葉門
+也門 葉門
+伯利兹      貝里斯
+伯利茲      貝里斯
+佛得角      維德角
+克罗地亚   克羅埃西亞
+克羅地亞   克羅埃西亞
+冈比亚      甘比亞
+岡比亞      甘比亞
+几内亚比绍        幾內亞比索
+幾內亞比紹        幾內亞比索
+列支敦士登        列支敦斯登
+列支敦士登        列支敦斯登
+利比里亚   賴比瑞亞
+利比里亞   賴比瑞亞
+加纳 迦納
+加納 迦納
+加蓬 加彭
+加蓬 加彭
+博茨瓦纳   波札那
+博茨瓦納   波札那
+卡塔尔      卡達
+卡塔爾      卡達
+卢旺达      盧安達
+盧旺達      盧安達
+危地马拉   瓜地馬拉
+危地馬拉   瓜地馬拉
+厄瓜多尔   厄瓜多
+厄瓜多爾   厄瓜多
+厄立特里亚        厄利垂亞
+厄立特里亞        厄利垂亞
+吉布提      吉布地
+吉布堤      吉布地
+哈萨克斯坦        哈薩克
+哥斯达黎加        哥斯大黎加
+哥斯達黎加        哥斯大黎加
+图瓦卢      吐瓦魯
+圖瓦盧      吐瓦魯
+土库曼斯坦        土庫曼
+圣卢西亚   聖露西亞
+聖盧西亞   聖露西亞
+圣基茨和尼维斯  聖克里斯多福及尼維斯
+聖吉斯納域斯     聖克里斯多福及尼維斯
+圣文森特和格林纳丁斯 聖文森及格瑞那丁
+聖文森特和格林納丁斯 聖文森及格瑞那丁
+圣马力诺   聖馬利諾
+聖馬力諾   聖馬利諾
+圭亚那      蓋亞那
+圭亞那      蓋亞那
+坦桑尼亚   坦尚尼亞
+坦桑尼亞   坦尚尼亞
+埃塞俄比亚        衣索比亞
+埃塞俄比亞        衣索比亞
+基里巴斯   吉里巴斯
+基里巴斯   吉里巴斯
+塔吉克斯坦        塔吉克
+塞拉利昂   獅子山
+塞拉利昂   獅子山
+塞浦路斯   塞普勒斯
+塞浦路斯   塞普勒斯
+塞舌尔      塞席爾
+塞舌爾      塞席爾
+多米尼加共和国  多明尼加
+多米尼加共和國  多明尼加
+多明尼加共和國  多明尼加
+多米尼加国        多米尼克
+多明尼加國        多米尼克
+安提瓜和巴布达  安地卡及巴布達
+安提瓜和巴布達  安地卡及巴布達
+尼日利亚   奈及利亞
+尼日利亞   奈及利亞
+尼日尔      尼日
+尼日爾      尼日
+巴巴多斯   巴貝多
+巴布亚新几内亚  巴布亞紐幾內亞
+巴布亞新畿內亞  巴布亞紐幾內亞
+布基纳法索        布吉納法索
+布基納法索        布吉納法索
+布隆迪      蒲隆地
+布隆迪      蒲隆地
+帕劳 帛琉
+意大利      義大利
+所罗门群岛        索羅門群島
+所羅門群島        索羅門群島
+文莱 汶萊
+斯威士兰   史瓦濟蘭
+斯威士蘭   史瓦濟蘭
+斯洛文尼亚        斯洛維尼亞
+斯洛文尼亞        斯洛維尼亞
+新西兰      紐西蘭
+新西蘭      紐西蘭
+格林纳达   格瑞那達
+格林納達   格瑞那達
+格鲁吉亚   喬治亞
+格魯吉亞   喬治亞
+佐治亚      喬治亞
+佐治亞      喬治亞
+毛里塔尼亚        茅利塔尼亞
+毛里塔尼亞        茅利塔尼亞
+毛里求斯   模里西斯
+毛里裘斯   模里西斯
+沙特阿拉伯        沙烏地阿拉伯
+沙地阿拉伯        沙烏地阿拉伯
+波斯尼亚和黑塞哥维那 波士尼亞赫塞哥維納
+波斯尼亞黑塞哥維那    波士尼亞赫塞哥維納
+津巴布韦   辛巴威
+津巴布韋   辛巴威
+洪都拉斯   宏都拉斯
+洪都拉斯   宏都拉斯
+特立尼达和托巴哥       千里達托貝哥
+特立尼達和多巴哥       千里達托貝哥
+瑙鲁 諾魯
+瑙魯 諾魯
+瓦努阿图   萬那杜
+瓦努阿圖   萬那杜
+溫納圖萬   那杜
+科摩罗      葛摩
+科摩羅      葛摩
+科特迪瓦   象牙海岸
+突尼斯      突尼西亞
+索马里      索馬利亞
+索馬里      索馬利亞
+老挝 寮國
+老撾 寮國
+肯尼亚      肯亞
+肯雅 肯亞
+苏里南      蘇利南
+莫桑比克   莫三比克
+莱索托      賴索托
+萊索托      賴索托
+贝宁 貝南
+貝寧 貝南
+赞比亚      尚比亞
+贊比亞      尚比亞
+阿塞拜疆   亞塞拜然
+阿拉伯联合酋长国       阿拉伯聯合大公國
+阿拉伯聯合酋長國       阿拉伯聯合大公國
+马尔代夫   馬爾地夫
+馬爾代夫   馬爾地夫
+马耳他      馬爾他
+马里共和国        馬利共和國
+馬里共和國        馬利共和國
+方便面      速食麵
+快速面      速食麵
+即食麵      速食麵
+薯仔 土豆
+土豆网      土豆網
+土豆網      土豆網
+蹦极跳      笨豬跳
+绑紧跳      笨豬跳
+冷菜 冷盤
+凉菜 冷盤
+出租车      計程車
+台球 撞球
+桌球 撞球
+卫生 衛生
+衞生 衛生
+平治之亂   平治之亂
+平治之乱   平治之亂
+平治 賓士
+奔驰 賓士
+積架 捷豹
+雪铁龙      雪鐵龍
+萬事得      馬自達
+拿破仑      拿破崙
+拿破侖      拿破崙
+布什 布希
+布殊 布希
+克林顿      柯林頓
+克林頓      柯林頓
+侯赛因      海珊
+侯賽因      海珊
+凡高 梵谷
+狄安娜      黛安娜
+戴安娜      黛安娜
+颁布 頒布
+頒佈 頒布
+彩带 彩帶
+彩排 彩排
+彩楼 彩樓
+彩牌楼      彩牌樓
+彩球 綵球
+彩绸 綵綢
+彩线 綵線
+彩船 綵船
+彩衣 綵衣
+结彩 結綵
+戏彩娱亲   戲綵娛親
+剪彩 剪綵
+榴莲 榴槤
+榴蓮 榴槤
+掛鈎 掛鉤
+挂钩 掛鉤
+鈎心鬥角   鉤心鬥角
+钩心斗角   鉤心鬥角
+酰    醯
+雪裏紅      雪裡紅
+雪裏蕻      雪裡蕻
+森林裏      森林裡
+日子裏      日子裡
+故事裏      故事裡
+領域裏      領域裡
+時間裏      時間裡
+深淵裏      深淵裡
+醫院裏      醫院裡
+春假裏      春假裡
+暑假裏      暑假裡
+秋假裏      秋假裡
+寒假裏      寒假裡
+春天裏      春天裡
+夏天裏      夏天裡
+秋天裏      秋天裡
+冬天裏      冬天裡
+春日裏      春日裡
+夏日裏      夏日裡
+秋日裏      秋日裡
+冬日裏      冬日裡
+百科裏      百科裡
+歷史裏      歷史裡
+戲裏 戲裡
+作品裏      作品裡
+專輯裏      專輯裡
+年代裏      年代裡
+棺材裏      棺材裡
+嘴裏 嘴裡
+心裏 心裡
+皮裏陽秋   皮裡陽秋
+肚裏 肚裡
+苦裏 苦裡
+裏勾外連   裡勾外連
+裏面 裡面
+這裏 這裡
+點裏 點裡
+中文裏      中文裡
+山洞裏      山洞裡
+世界裏      世界裡
+眼睛裏      眼睛裡
+學裏 學裡
+獄裏 獄裡
+館裏 館裡
+系列裏      系列裡
+村子裏      村子裡
+青霉素      青黴素
+想象 想像
+锎    鉲
+信道 信道
+綫    線
diff --git a/maintenance/language/zhtable/toTrad.manual b/maintenance/language/zhtable/toTrad.manual
new file mode 100644 (file)
index 0000000..b0efd28
--- /dev/null
@@ -0,0 +1,186 @@
+手塚治虫   手塚治虫
+校仇 校讎
+仇校 讎校
+仇夷 讎夷
+仇問 讎問
+無言不仇   無言不讎
+視如寇仇   視如寇讎
+往日無仇   往日無讎
+近日無仇   近日無讎
+李連杰      李連杰
+周杰倫      周杰倫
+寶曆 寶曆
+涂謹申      涂謹申
+涂鴻欽      涂鴻欽
+涂壯勳      涂壯勳
+於姓 於姓
+於氏 於氏
+於夫羅      於夫羅
+於梨華      於梨華
+鄭凱云      鄭凱云
+筑陽 筑陽
+筑後 筑後
+采石磯      采石磯
+采石之戰   采石之戰
+張三丰      張三丰
+丰韻 丰韻
+丰儀 丰儀
+丰標不凡   丰標不凡
+干細胞      幹細胞
+干熱 乾熱
+二里頭      二里頭
+水里鄉      水里鄉
+蒙胧 朦朧
+酒曲 酒麴
+呆里呆气   呆裡呆氣
+拜托 拜託
+委托书      委託書
+委托 委託
+挽詞 輓詞
+挽聯 輓聯
+挽詩 輓詩
+於夫罗      於夫羅
+府干預      府干預
+府干擾      府干擾
+分布圖      分布圖
+頁面 頁面
+面條目      面條目
+黃鈺筑      黃鈺筑
+仿佛 彷彿
+凶殘 兇殘
+凶殺 兇殺
+緝凶 緝兇
+行凶後      行兇後
+買凶 買兇
+逞凶鬥狠   逞兇鬥狠
+合著者      合著者
+答复 答覆
+反复 反覆
+索馬里      索馬里
+洗练 洗鍊
+朝乾夕惕   朝乾夕惕
+乾象曆      乾象曆
+乾象历      乾象曆
+不好干預   不好干預
+不干預      不干預
+不干擾      不干擾
+不干牠      不干牠
+矽谷 矽谷
+范文瀾      范文瀾
+發表 發表
+機械系      機械系
+頂多 頂多
+馬占山      馬占山
+叱咤樂壇   叱咤樂壇
+闫怀礼      閆懷禮
+变髒 變髒
+薴烯 薴烯
+后豐 后豐
+于謙 于謙
+詩云 詩云
+鄭凱云      鄭凱云
+云為 云為
+古書云      古書云
+古語云      古語云
+經有云      經有云
+語有云      語有云
+显著标志   顯著標志
+占領 佔領
+采納 採納
+風采 風采
+于樂 于樂
+于軍 于軍
+于堅 于堅
+于帥 于帥
+于濤 于濤
+于贈 于贈
+于會泳      于會泳
+于偉國      于偉國
+于光遠      于光遠
+于鳳至      于鳳至
+于台煙      于台煙
+于國楨      于國楨
+于大寶      于大寶
+于學忠      于學忠
+于小偉      于小偉
+于山國      于山國
+于幼軍      于幼軍
+于廣洲      于廣洲
+于從濂      于從濂
+于志寧      于志寧
+于成龍      于成龍
+于明濤      于明濤
+于根偉      于根偉
+于樹潔      于樹潔
+于正昇      于正昇
+于漢超      于漢超
+于洪區      于洪區
+于湘蘭      于湘蘭
+于蔭霖      于蔭霖
+于遠偉      于遠偉
+于都縣      于都縣
+于震寰      于震寰
+于震環      于震環
+于非闇      于非闇
+于風政      于風政
+于鳳桐      于鳳桐
+于默奧      于默奧
+于爾岑      于爾岑
+于默奧      于默奧
+于貝爾      于貝爾
+于爾根      于爾根
+于雙戈      于雙戈
+于澤爾      于澤爾
+于斯達爾   于斯達爾
+于爾里克   于爾里克
+于奇庫杜克        于奇庫杜克
+于韋斯屈萊        于韋斯屈萊
+于克-蘭多縣       于克-蘭多縣
+于斯納爾斯貝里  于斯納爾斯貝里
+夏于喬      夏于喬
+涂澤民      涂澤民
+涂長望      涂長望
+涂敏恆      涂敏恆
+台历 枱曆
+艷后 艷后
+廢后 廢后
+后髮座      后髮座
+后髮星系團        后髮星系團
+后髮FK型星 后髮FK型星
+后海灣      后海灣
+賈后 賈后
+賢后 賢后
+呂后 呂后
+蟻后 蟻后
+馬格里布   馬格里布
+佳里鎮      佳里鎮
+埔裡社撫墾局     埔裏社撫墾局
+埔裏社撫墾局     埔裏社撫墾局
+有只採      有只採
+任何表達   任何表達
+會干擾      會干擾
+党項 党項
+余三勝      余三勝
+簡筑翎      簡筑翎
+楊雅筑      楊雅筑
+杰威爾音樂        杰威爾音樂
+尸羅精舍   尸羅精舍
+索馬里      索馬里
+騰格里      騰格里
+村里長      村里長
+進制 進制
+模范三軍   模范三軍
+黃詩杰      黃詩杰
+陳冲 陳冲
+劉佳怜      劉佳怜
+范賢惠      范賢惠
+于國治      于國治
+于楓 于楓
+黎吉雲      黎吉雲
+于飛島      于飛島
+鄉愿 鄉愿
+奇迹 奇蹟
+候复 候覆
+待复 待覆
+批复 批覆
+划槳 划槳
diff --git a/maintenance/language/zhtable/trad2simp.manual b/maintenance/language/zhtable/trad2simp.manual
new file mode 100644 (file)
index 0000000..747a240
--- /dev/null
@@ -0,0 +1,153 @@
+U+04E99亙|U+04E98亘|
+U+04F48佈|U+05E03布|
+U+04F48佈|U+05E03布|
+U+04F54佔|U+05360占|
+U+05016倖|U+05E78幸|
+U+050A2傢|U+05BB6家|
+U+050F1僱|U+096C7雇|
+U+05138儸|U+03469㑩|U+07F57罗|
+U+05147兇|U+051F6凶|
+U+05277剷|U+094F2铲|
+U+052F3勳|U+052CB勋|
+U+0537D卽|U+05373即|
+U+053A4厤|U+05386历|
+U+055AB喫|U+05403吃|
+U+05641噁|U+06076恶|
+U+05690嚐|U+05C1D尝|
+U+056A5嚥|U+054BD咽|
+U+056AE嚮|U+05411向|
+U+056CC囌|U+082CF苏|
+U+0585A塚|U+051A2冢|
+U+058B0墰|U+0575B坛|
+U+058DC壜|U+0575B坛|
+U+05925夥|U+04F19伙|
+U+05BC0寀|U+091C7采|
+U+05D11崑|U+06606昆|
+U+05D19崙|U+04ED1仑|
+U+05D57嵗|U+05C81岁|
+U+05DBD嶽|U+05CB3岳|
+U+05DD6巖|U+05CA9岩|
+U+05DF9巹|U+0537A卺|
+U+05F14弔|U+0540A吊|
+U+05F46彆|U+0522B别|
+U+0617C慼|U+0621A戚|
+U+0617E慾|U+06B32欲|
+U+061DE懞|U+08499蒙|
+U+062DA拚|U+062FC拼|
+U+06331挱|U+06332挲|
+U+06371捱|U+06328挨|
+U+06372捲|U+05377卷|
+U+0647A摺|U+06298折|
+U+065C2旂|U+065D7旗|
+U+065E3旣|U+065E2既|
+U+06607昇|U+05347升|
+U+0672E朮|U+0672F术|
+U+068CA棊|U+068CB棋|
+U+069A6榦|U+05E72干|
+U+069D3槓|U+06760杠|
+U+06A11樑|U+06881梁|
+U+06B05欅|U+06989榉|
+U+06B4E歎|U+053F9叹|
+U+06BAD殭|U+050F5僵|
+U+06C59汙|U+06C61污|
+U+06CDD泝|U+06EAF溯|
+U+06D29洩|U+06CC4泄|
+U+06DD2淒|U+051C4凄|
+U+06DE8淨|U+051C0净|
+U+06DE9淩|U+051CC凌|
+U+06E67湧|U+06D8C涌|
+U+06ED9滙|U+06C47汇|
+U+06F90澐|U+06C84沄|
+U+06FBE澾|U+03CE0㳠|
+U+06FDB濛|U+06FDB濛|U+08499蒙|
+U+07030瀰|U+05F25弥|
+U+071EC燬|U+06BC1毁|
+U+07232爲|U+04E3A为|
+U+07343獃|U+05446呆|
+U+07515甕|U+074EE瓮|
+U+07526甦|U+082CF苏|
+U+0752F甯|U+05B81宁|
+U+0756B畫|U+0753B画|U+05212划|
+U+07575畵|U+0753B画|U+05212划|
+U+075E0痠|U+09178酸|
+U+07652癒|U+06108愈|
+U+07661癡|U+075F4痴|
+U+076C3盃|U+0676F杯|
+U+0771E眞|U+0771F真|
+U+077AD瞭|U+04E86了|
+U+077C7矇|U+08499蒙|
+U+07843硃|U+06731朱|
+U+07895碕|U+057FC埼|
+U+07958祘|U+07B97算|
+U+07A1C稜|U+068F1棱|
+U+07B87箇|U+04E2A个|
+U+07C11簑|U+084D1蓑|
+U+07C64籤|U+07B7E签|
+U+07C72籲|U+05401吁|
+U+07CF0糰|U+056E2团|
+U+07D2E紮|U+0624E扎|
+U+07DAB綫|U+07EBF线|
+U+07DB5綵|U+05F69彩|U+0433D䌽|
+U+07E34縴|U+07EA4纤|
+U+07E50繐|U+07A57穗|
+U+07E94纔|U+0624D才|
+U+07F4E罎|U+0575B坛|
+U+07FA8羨|U+07FA1羡|
+U+08123脣|U+05507唇|
+U+081E5臥|U+05367卧|
+U+08218舘|U+09986馆|
+U+083F4菴|U+05EB5庵|
+U+08457著|U+08457著|U+07740着|
+U+08518蔘|U+053C2参|
+U+08591薑|U+059DC姜|
+U+085C9藉|U+085C9藉|U+0501F借|
+U+0880D蠍|U+0874E蝎|
+U+0884A衊|U+08511蔑|
+U+088CF裏|U+091CC里|
+U+08946襆|U+05E5E幞|
+U+08986覆|U+08986覆|U+0590D复|
+U+08A17託|U+06258托|U+08BAC讬|
+U+08AEE諮|U+054A8咨|U+08C18谘|
+U+08B6D譭|U+06BC1毁|
+U+08B8E讎|U+04EC7仇|
+U+08B9A讚|U+08D5E赞|
+U+08C54豔|U+08273艳|
+U+08FF4迴|U+056DE回|
+U+09031週|U+05468周|
+U+0904A遊|U+06E38游|
+U+09061遡|U+06EAF溯|
+U+091A3醣|U+07CD6糖|
+U+091AF醯|U+09170酰|
+U+0934A鍊|U+070BC炼|U+094FE链|
+U+0938C鎌|U+09570镰|
+U+093AD鎭|U+093AE镇|
+U+093DA鏚|U+0621A戚|
+U+09451鑑|U+09274鉴|
+U+0955F镟|U+065CB旋|
+U+09592閒|U+095F2闲|
+U+095A4閤|U+05408合|
+U+095E2闢|U+08F9F辟|
+U+0962A阪|U+0962A阪|U+05742坂|
+U+0965E陞|U+05347升|
+U+097A6鞦|U+079CB秋|U+097A7鞧|
+U+097C6韆|U+05343千|
+U+097DD韝|U+097B2鞲|
+U+09858願|U+0613F愿|
+U+098F1飱|U+098E7飧|
+U+09918餘|U+04F59余|U+09980馀|
+U+09931餱|U+07CC7糇|
+U+09935餵|U+05582喂|
+U+09B28鬨|U+054C4哄|
+U+09D70鵰|U+096D5雕|U+05F6B彫|
+U+09E7C鹼|U+078B1碱|U+07877硷|
+U+09EAA麪|U+09762面|
+U+09EAB麫|U+09762面|
+U+09EAF麯|U+066F2曲|
+U+09EB4麴|U+066F2曲|U+09EB4麴|
+U+09EF4黴|U+09709霉|
+U+09F15鼕|U+051AC冬|
+U+09F47齇|U+09F44齄|
+U+09F63齣|U+051FA出|
+U+09F91龑|U+04DAE䶮|
+U+21ED5𡻕|U+05C81岁|
+U+298F5𩣵|U+299FB𩧻|
diff --git a/maintenance/language/zhtable/trad2simp_noconvert.manual b/maintenance/language/zhtable/trad2simp_noconvert.manual
new file mode 100644 (file)
index 0000000..052bab6
--- /dev/null
@@ -0,0 +1,5 @@
+"余"=>
+碁
+藉
+=>"獃"
+𫚭
diff --git a/maintenance/language/zhtable/trad2simp_supp_set.manual b/maintenance/language/zhtable/trad2simp_supp_set.manual
new file mode 100644 (file)
index 0000000..d1728f0
--- /dev/null
@@ -0,0 +1,3 @@
+著    着
+藉    借
+濛    蒙
\ No newline at end of file
diff --git a/maintenance/language/zhtable/trad2simp_supp_unset.manual b/maintenance/language/zhtable/trad2simp_supp_unset.manual
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/maintenance/language/zhtable/tradphrases.manual b/maintenance/language/zhtable/tradphrases.manual
new file mode 100644 (file)
index 0000000..e20ca05
--- /dev/null
@@ -0,0 +1,4311 @@
+零隻
+〇隻
+一隻
+二隻
+兩隻
+三隻
+四隻
+五隻
+六隻
+七隻
+八隻
+九隻
+0隻
+1隻
+2隻
+3隻
+4隻
+5隻
+6隻
+7隻
+8隻
+9隻
+0隻
+1隻
+2隻
+3隻
+4隻
+5隻
+6隻
+7隻
+8隻
+9隻
+0只支援
+1只支援
+2只支援
+3只支援
+4只支援
+5只支援
+6只支援
+7只支援
+8只支援
+9只支援
+0只支持
+1只支持
+2只支持
+3只支持
+4只支持
+5只支持
+6只支持
+7只支持
+8只支持
+9只支持
+百隻
+千隻
+萬隻
+億隻
+最多
+至多
+頂多
+多隻
+0多隻
+0多隻
+零多隻
+十多隻
+百多隻
+千多隻
+萬多隻
+億多隻
+這只能
+這只可
+這只在
+這只是
+這只需
+這只會
+這只用
+那只能
+那只可
+那只在
+那只是
+那只需
+那只會
+那只用
+多只能
+多只可
+多只在
+多只有
+多只是
+多只需
+多只會
+多只用
+大只能
+大只可
+大只在
+大只有
+大只是
+大只需
+大只會
+小只能
+小只可
+小只在
+小只有
+小只是
+小只需
+小只會
+隻身
+形單影隻
+首隻
+數天後
+幾天後
+多天後
+零天後
+一天後
+二天後
+兩天後
+三天後
+四天後
+五天後
+六天後
+七天後
+八天後
+九天後
+十天後
+百天後
+千天後
+萬天後
+億天後
+0天後
+1天後
+2天後
+3天後
+4天後
+5天後
+6天後
+7天後
+8天後
+9天後
+0天後
+1天後
+2天後
+3天後
+4天後
+5天後
+6天後
+7天後
+8天後
+9天後
+天後來
+天後天
+天後半
+後印
+萬象
+並存著
+乾絲
+乾著急
+乾魚
+魚乾
+乾梅
+糕乾
+黃乾黑瘦
+馬乾
+香乾
+趲幹
+謀幹
+詞幹
+蟶乾
+薄幹
+腦幹
+營幹
+老乾
+老幹部
+管幹
+盲幹
+煨乾
+海乾
+乾漆
+淚乾
+沒幹
+沒乾沒淨
+枝不得大於榦
+杯乾
+打幹
+打乾噦
+徐幹
+府幹
+乾館
+乾顙
+幹革命
+乾霍亂
+乾雷
+乾阿奶
+乾量
+乾醋
+乾逼
+乾貨
+乾衣
+幹蠱
+乾虔
+乾落
+幹營生
+乾茶錢
+乾茨臘
+乾苔
+乾花
+乾肥
+乾耗
+幹缺
+乾繃
+乾結
+乾餱
+乾篾片
+乾稿
+乾禮
+乾瞪眼
+乾白兒
+乾疥
+乾生子
+乾生受
+幹父之蠱
+乾熬
+乾燈盞
+乾濕
+乾澀
+幹濟
+乾沒
+乾死
+乾村沙
+乾暖
+乾料
+乾敲梆子不賣油
+乾支支
+乾支剌
+乾擦
+乾撇下
+乾撂台
+乾折
+乾急
+幹當
+乾式
+乾屎橛
+幹家
+乾奴才
+幹頭
+乾塢
+乾圓潔淨
+乾回付
+乾啼
+乾哭
+乾噦
+乾咽
+乾和
+幹吏
+乾吊著下巴
+乾號
+乾颱
+乾卦
+乾剝剝
+乾刻版
+乾芻
+幹人
+乾產
+乾喬
+夯幹
+大目乾連
+國之楨榦
+唇乾
+單幹
+勾幹
+豆乾
+果乾
+如果幹
+乾麵
+乾柴
+枯乾
+晒乾
+顛乾倒坤
+強幹
+乾著
+乾眼
+幹的停當
+乾巴
+偎乾
+眼乾
+偷雞不著
+几絲
+划著
+划著走
+別著
+刮著
+千絲萬縷
+參合
+參考價值
+參與
+參與人員
+參與制
+參與感
+參與者
+參觀團
+參觀團體
+參閱
+吃著不盡
+合著
+吊帶褲
+吊掛著
+吊著
+吊褲
+吊褲帶
+向著
+嚴絲合縫
+回絲
+回著
+塗著
+壟斷價格
+壟斷資產
+壟斷集團
+姜絲
+帶團參加
+干著急
+幾絲
+彆著
+怎麼著
+憑藉著
+憑藉
+接著說
+擔著
+擔負著
+敘說著
+斗轉參橫
+旋繞著
+板著臉
+正當著
+沈著
+沖著
+派團參加
+涂著
+湊合著
+瀰漫著
+為著
+煙斗絲
+率團參加
+畫著
+當著
+發著
+直接參与
+睡著了
+秋褲
+積极參与
+積极參加
+簽著
+系著
+絕對參照
+絲來線去
+絲布
+絲板
+絲瓜布
+絲絨布
+絲線
+絲織廠
+絲蟲
+緊繃著
+繃著
+繃著臉
+繃著臉兒
+繫著
+罵著
+肉絲麵
+背向著
+菌絲體
+著兒
+著書立說
+著色軟體
+著重指出
+著錄
+著錄規則
+薑絲
+藉著
+蘊含著
+蘊涵著
+衝著
+被覆著
+覆著
+覆蓋著
+反覆
+訴說著
+說著
+請參閱
+謝絕參觀
+豎著
+豐濱
+豐濱鄉
+豐度
+象徵著
+這麼著
+那麼著
+配合著
+醞釀著
+錄著
+鍛鍊出
+關係著
+雞絲
+雞絲麵
+面朝著
+面臨著
+颳著
+髮絲
+斷髮
+不斷發
+判斷發
+評斷發
+買斷發
+賣斷發
+打斷發
+披頭散髮
+髮禁
+鬥著
+鬧著玩兒
+鯰魚
+世界盃
+其次辟地
+開闢
+闢地
+精闢
+別闢
+另闢
+闢佛
+闢田
+闢築
+闢謠
+闢辟
+透闢
+墾闢
+翕闢
+軒闢
+闢建
+闢室
+各闢
+增闢
+闢邪以律
+錶盤
+錶板
+錶帶
+錶針
+錶蒙子
+袋錶
+腕錶
+碼錶
+錶冠
+魔錶
+彆口氣
+彆強
+皺彆
+一彆頭
+并州
+併兼
+併產
+併骨
+併網
+併線
+併流
+逼併
+併名
+併當
+併火
+併肩子
+併除
+併疊
+忙併
+打併
+簡併
+並發表
+並發現
+並發展
+並發動
+並發布
+火並非
+舉手表
+揮手表
+併一不二
+連三併四
+相併
+撤併
+數罪併罰
+催併
+狂併潮
+薝蔔
+提摩太後書
+當家纔知柴米價
+剛纔一載
+裏海
+骨頭裡掙出來的錢纔做得肉
+恰纔
+遠縣纔至
+別日南鴻纔北去
+然身死纔數月耳
+纔得兩年
+纔則
+纔此
+你纔子發昏
+纔可容顏十五餘
+不採
+披榛採蘭
+謬採虛聲
+採樵人
+回採
+觀採
+開採
+揪採
+樵採
+採訪
+採辦
+採補
+採買
+採風問俗
+採納
+採獵
+採蓮
+採錄
+採購
+採光
+採礦
+採花
+採集
+採擷
+採掘
+採芹人
+採取
+採選
+採摭
+採摘
+採珠
+採種
+採茶
+採石
+採拾
+採收
+採生折割
+採樹種
+採擇
+採藥
+採薇
+採用
+盜採
+採信
+採行
+採證
+採菊
+博採
+採空採穗
+採挖
+採鐵
+採金
+採氣
+採油
+採煤
+採鹽
+採區
+採運
+採風
+官地為寀
+寮寀
+蔘綏
+個人# “個人參數”不是“個人蔘數”
+人蔘
+蕭蔘
+人參與
+人參選
+人參觀
+人參考
+人參展
+人參加
+人參議
+人參謀
+人參酌
+人參照
+人參政
+人參戰
+人參拜
+人參閱
+人參禪
+人參贊
+人參見
+人參透
+人參看
+東衝西突
+天克地衝
+六衝
+撞陣衝軍
+衝波
+衝風
+衝頭陣
+衝堅陷陣
+衝陷
+衝心
+衝州撞府
+衝殺
+衝然
+衝盹
+左衝右突
+虫部
+手塚治虫
+群醜
+百拙千醜
+大醜
+地醜德齊
+丟醜
+亮醜
+揭醜
+倛醜
+嫌好道醜
+醜巴怪
+醜末
+醜婦
+醜地
+醜頭怪臉
+醜女效顰
+醜剌剌
+醜話
+醜媳
+醜吒
+醜聲遠播
+醜夷
+弄醜
+露醜
+摧堅獲醜
+謷醜
+不嫌母醜
+一爭兩醜
+惡直醜正
+很醜
+醜男
+醜斃了
+醜奴兒
+醜言
+醜徒
+醜雜
+醜儕
+醜沮
+醜辭
+醜比
+醜辱
+醜逆
+醜史
+醜賊生
+醜婆子
+出乖弄醜
+出乖露醜
+獲匪其醜
+乙丑
+丁丑
+己丑
+辛丑
+癸丑
+丑時
+丑日
+丑月
+丑年
+文丑
+武丑
+女丑
+小丑
+大丑
+丑婆子
+丑旦
+丑角
+丑三
+丑表功
+公孫丑
+么麼小丑
+齣電影
+齣電視
+齣動畫
+齣節目
+齣卡通
+齣戲
+齣劇
+平平當當
+滿滿當當
+當當丁丁
+丁丁當當
+停停當當
+快快當當
+咯噹
+啷噹
+党參
+党進
+党太尉
+党項
+撲鼕
+洗髮
+牽一髮
+白發其事
+后髮座
+后髮星系團
+后髮FK型星
+波髮藻
+辮髮
+逋髮
+抿髮
+髮漂
+髮匪
+髮腳
+髮癬
+髮釵
+髮飾
+髮紗
+髮上指冠
+髮上沖冠
+髮乳
+髮引千鈞
+髮踴沖冠
+董氏封髮
+胎髮
+禿妃之髮
+捉髮
+綠髮
+括髮
+髡髮
+鵠髮
+截髮
+解髮佯狂
+淨髮
+秋髮
+噙齒戴髮
+青山一髮
+晞髮
+細不容髮
+心細如髮
+祝髮
+擢髮
+齒髮
+齒危髮秀
+沖冠髮怒
+甩髮
+絲髮
+絲恩髮怨
+蒜髮
+算髮
+有髮頭陀寺
+髮箋
+髮屋
+櫛髮工
+鬒髮
+模范棒棒堂
+模范三軍
+模范七棒
+模范14棒
+模范21棒
+顏範
+儀範
+典範
+坤範
+壼範
+容範
+懿範
+明範
+格範
+模範
+樣範
+母範
+洪範
+淑範
+遺範
+科範
+立範
+貽範
+道範
+閨範
+閫範
+雅範
+霽範
+鴻範
+沒樣範
+錢範
+銅範
+金範
+範金
+垂範
+範性形變
+範字
+有事之無範
+置言成範
+吾爲之範我馳驅
+天地為範
+範數
+丰采
+丰標不凡
+丰神
+丰茸
+丰儀
+丰度
+丰情
+丰韵
+子之丰兮
+艸木丰丰
+張三丰
+復始
+複分析
+複輔音
+複元音
+複平面
+複函數
+複流
+反複製
+複對數
+顛覆
+答覆
+覆沒
+覆亡
+覆水難收
+翻雲覆雨
+覆雨翻雲
+覆轍
+覆巢之下無完卵
+覆蓋
+覆命
+天翻地覆
+天覆地載
+撥穀
+扁擬穀盜蟲
+不穀
+辟穀
+米穀
+田穀
+脫穀機
+年穀
+礱穀機
+孤寡不穀
+穀米
+穀旦
+穀圭
+穀貴餓農
+穀食
+穀日
+館穀
+禾穀
+積穀
+嘉穀
+嚼穀
+九穀
+戩穀
+錢穀
+息穀
+殖穀
+川穀
+曬穀
+臧穀亡羊
+種穀
+颳雪
+刮風下雪倒便宜
+广部
+亂鬨不過來
+斗鬨
+亂鬨
+開鬨
+花鬨
+鬨動
+交鬨
+喧鬨
+起鬨
+內鬨
+於後
+猜三划五
+划龍舟
+南迴線
+南迴鐵路
+北迴線
+北迴鐵路
+文匯報
+河流匯集
+品彙
+博彙
+滙豐
+伙頭
+方几
+伏几
+高几
+雪窗螢几
+燕几
+隱几
+饑饉
+乾薑
+毛薑
+薑母
+薑湯
+薑桂
+薑是老的辣
+吃薑
+薑老辣
+野薑
+咬薑呷醋
+薑蓉
+薑黃
+狐藉虎威
+滑藉
+藉寇兵
+藉箸代籌
+藉手
+藉此
+龍捲
+捲舌
+夸父
+夸克
+夸特
+夸毗
+夸麗
+夸姣
+夸人
+夸容
+大言非夸
+言大而夸
+睏覺
+愛睏
+纍堆
+纍紲
+纍臣
+纍瓦結繩
+湘纍
+印纍綬若
+灕湘
+灕然
+澤滲灕而下降
+裏勾外連
+裏手
+水里鄉
+水里溪
+水里濁水溪
+二里頭
+年歷史
+西歷史
+國歷史
+國歷代
+國歷任
+國歷屆
+國歷經
+國歷來
+新歷史
+夏歷史
+百花曆
+寶曆
+穆罕默德曆
+大明曆
+大曆
+台曆
+太初曆
+通曆
+曆本
+曆命
+曆紀
+曆始
+曆室
+曆日
+曆尾
+曆元
+律曆志
+官曆
+回曆
+巧曆
+慶曆
+朱理安曆
+長曆
+藏曆
+四分曆
+三統曆
+額我略曆
+埃及曆
+伊斯蘭教曆
+合曆
+玉曆
+農民曆
+桌曆
+商曆
+周曆
+大衍曆
+皇極曆
+儒略改革曆
+希伯來曆
+格里曆
+格里高利曆
+共和曆
+掛曆
+曆獄
+天文曆表
+日心曆表
+地心曆表
+復活節曆表
+月球曆表
+伊爾汗曆表
+延曆
+共和歷史
+厤物之意
+爰定祥厤
+白黴
+黴黧
+黴黑
+麴黴
+蒙霧露
+懞懞懂懂
+懞直
+老懞
+放懞掙
+矇著
+矇聵
+矇瞍
+矇事
+矇頭轉
+矇松雨
+藏矇歌兒
+矇著鍋兒
+朦朧
+濛濛細雨
+濛汜
+冥濛
+溟濛
+淡濛濛
+凌濛初
+涳濛
+灰濛濛
+澒濛
+瀰山遍野
+瀰瀰
+冷麵
+撈麵
+煮麵
+炆麵
+煎麵
+泡麵
+食麵
+公仔麵
+方便麵
+白粉麵
+棒子麵
+麵缸
+麵坯兒
+麵碼兒
+麵坊
+麵湯
+麵疙瘩
+麵館
+麵漿
+甜水麵
+麵人兒
+麵塑
+捏麵人
+趕麵棍
+擀麵
+過水麵
+蕎麥麵
+巧婦做不得無麵餺飥
+削麵
+小米麵
+壯麵
+吃板刀麵
+吃辣麵
+扯麵
+搋麵
+重羅麵
+雜麵
+雜合麵兒
+溲麵
+索麵
+一鍋麵
+伊府麵
+藥麵兒
+意大利麵
+湯下麵
+茶麵
+麵糰
+冷面相
+糞穢衊面
+湟潦生苹
+食野之苹
+苹縈
+青苹
+青蘋果
+僕僕
+有僕
+冉有僕
+屢顧爾僕
+僕少
+僕雖罷駑
+僕夫
+僕僮
+僕吏
+僕姑
+僕固懷恩
+僕程
+僕使
+僕憎
+僕歐
+僕射
+太僕
+僮僕
+金僕姑
+僕婢
+樸實
+樸訥
+樸念仁
+白樸
+抱素懷樸
+抱朴而長吟兮
+樸鄙
+樸馬
+樸父
+樸陋
+樸魯
+樸厚
+樸學
+樸質
+樸拙
+樸重
+樸素
+樸樕
+樸野
+反樸
+古樸
+胡樸安
+返樸
+渾樸
+儉樸
+簡樸
+拙樸
+斫雕為樸
+斲雕為樸
+質樸
+誠樸
+純樸
+曾樸
+郁樸
+棫樸
+敦樸
+樸鈍
+樸直
+見素抱樸
+掣籤
+標籤
+書籤
+發籤
+粉籤子
+路籤
+更籤
+好籤
+火籤
+籤幐
+籤押
+照入籤
+制籤
+抽公籤
+瑤籤
+藥籤
+萬籤插架
+雲笈七籤
+上簽名
+上簽字
+上簽收
+上簽寫
+下簽名
+下簽字
+下簽收
+下簽寫
+犖确
+磽确
+确瘠
+言辯而确
+數與虜确
+關弓與我确
+拚捨
+廣捨
+齊王捨牛
+捨墮
+捨實
+棄捨
+捨安就危
+施舍之道
+瀋河
+瀋水
+瀋州
+瀋山線
+瀋吉線
+墨沈
+瀋海鐵路
+遼瀋
+胜肽
+胜鍵
+雙胜類
+兀朮
+白朮
+蒼朮
+赤朮
+朮赤
+髼鬆
+皮鬆
+濛鬆雨
+發鬆
+翻鬆
+浮鬆
+弄鬆
+精鬆
+懈鬆
+鬆蛋
+鬆寬
+鬆氣
+鬆一口氣
+鬆元音
+鬆喉
+囉囉囌囌
+囉囌
+骨罈
+罈騞
+餵驢
+剪牡丹喂牛
+鹹粥
+鹹食
+鹹潟
+鹹嘴淡舌
+鹽打怎麼鹹
+鹹派
+鹹批
+錦綉花園
+籲天
+勃鬱
+怫鬱
+氣鬱
+沉鬱
+神荼鬱壘
+躁鬱
+蒼鬱
+漚鬱
+伊鬱
+壹鬱
+悒鬱
+氤鬱
+湮鬱
+陰鬱
+泱鬱
+坱鬱
+滃鬱
+蓊鬱
+紆鬱
+鬱勃
+鬱陶
+鬱律
+鬱壘
+鬱火
+鬱積
+鬱金
+鬱江
+鬱血
+鬱蒸
+鬱症
+鬱沉沉
+鬱熱
+鬱塞
+鬱伊
+鬱邑
+鬱挹
+鬱堙不偶
+鬱泱
+鬱蓊
+鬱紆
+鬱燠
+肝鬱
+鬱卒
+鬱鬱不平
+鬱鬱不樂
+鬱鬱寡歡
+鬱鬱蔥蔥
+鬱鬱而終
+愿樸
+愿而恭
+許愿起經
+北嶽
+嶽麓
+但云
+胡云
+詩云
+注云
+鄭凱云
+云乎
+云然
+云為
+對摺
+網誌
+標標致致
+澄澹精致
+呆緻緻
+光緻緻
+工緻
+功緻
+縝緻
+堅緻
+种放
+种師道
+种師中
+後庄
+舊庄
+正官庄
+龜山庄
+寶山庄
+冬山庄
+員山庄
+松山庄
+厂部
+閤府
+佈道
+剪綵
+衝量
+衝車
+書獃子
+相干
+府干預
+府干涉
+府干政
+府干擾
+府干犯
+府干卿
+一干人
+未乾
+未干涉
+抹乾
+餅乾
+拭乾
+擦乾
+晾乾
+烘乾
+肉乾
+菜乾
+腐乾
+乾脆
+乾淨
+乾燥
+乾旱
+乾涸
+乾洗
+乾女
+乾等
+乾糧
+乾枯
+乾薪
+乾爹
+乾粉
+乾爽
+乾兒
+乾子
+乾渴
+乾股
+乾果
+乾草
+乾菜
+乾笑
+乾餾
+乾電
+乾飯
+乾冰
+乾嘔
+乾材
+乾媽
+乾季
+葡萄乾
+提子乾
+蘿蔔乾
+蘋果乾
+芒果乾
+菠蘿乾
+鳳梨乾
+豆腐乾
+果子乾
+龍眼乾
+乾乾淨淨
+乾柴烈火
+乾乾兒的
+桑乾
+撈乾
+搭乾鋪
+揩乾
+敢幹
+幹探
+幹事
+幹什麼
+幹細胞
+悶著頭兒幹
+配水幹管
+繐幃飄井幹
+站乾岸兒
+秋陰入井幹
+沒梢幹
+楨幹
+據榦而窺井底
+井榦摧敗
+杰特
+李連杰
+周杰倫
+杰倫
+姜文杰
+稜鏡
+稜角
+稜台
+稜錐
+觚稜
+稜子
+稜層
+稜柱
+盧稜伽
+波稜菜
+菠稜菜
+稜縫
+稜等登
+稜稜
+嶒稜
+蹭稜子
+稜體
+二不稜登
+有稜有角
+威稜
+負債纍纍
+傷痕纍纍
+儒略曆
+伊斯蘭曆
+酒麴
+昇平
+爾冬陞
+澹臺
+拜託
+委託
+輓曲
+敬輓
+万俟
+万旗
+鬚鯨
+鬚鯊
+兇手
+兇徒
+兇案
+兇器
+兇殺
+兇殘
+行兇
+緝兇
+追兇
+真兇
+疑兇
+買兇
+元兇
+叶韻
+叶音
+叶恭弘
+叶 恭弘
+叶 恭弘
+於1
+於2
+於3
+於4
+於5
+於6
+於7
+於8
+於9
+於0
+於1
+於2
+於3
+於4
+於5
+於6
+於7
+於8
+於9
+於0
+於一
+於二
+於三
+於四
+於五
+於六
+於七
+於八
+於九
+於十
+於半
+於夫羅
+於梨華
+置於
+佈於
+散於
+播於
+國於
+敗於
+於一役
+畢於
+畢業於
+寒於
+任於
+拘於
+插於
+中於
+於市
+於野
+敏於
+聽於
+短於
+成於
+樊於期
+淡於
+於陸
+於密
+於盡
+禍於
+格於
+猛於
+施於
+於牆
+於物
+於己
+於你
+於我
+於他
+於她
+於它
+於祂
+拒人於
+拒於
+潰於
+窮於
+相於
+形於
+半於
+於始
+於終
+詢於
+美於
+醜於
+好於
+坏於
+強於
+弱於
+差於
+劣於
+於美
+於醜
+於好
+於坏
+於強
+於弱
+於差
+於劣
+於垂
+染指於
+於火
+存十一於千百
+存於
+於勤
+隱於
+藏於
+嚴於
+寬於
+於幕
+給於
+於穆
+於呼哀哉
+於時
+於該
+危於
+於伏
+於何
+於家
+於國
+於潛縣
+於焉
+於徵
+離於
+於畢
+麗於
+下於
+亞於
+同於
+屑於
+絕於
+致於
+於行
+遜於
+任教於
+教於
+自於
+來於
+附於
+於人
+於世
+阻於
+於民
+於盲
+於色
+囿於
+直於
+建於
+都於
+於農
+於樂
+於前
+役於
+於心
+於法
+於事
+助於
+害於
+損於
+益於
+從於
+隨於
+順於
+汲於
+溺於
+迷於
+醉於
+行於
+泥於
+身於
+足於
+溢於
+於衷
+畏於
+視於
+衷於
+狃於
+疲於
+通於
+於途
+老於
+耿於
+於懷
+服於
+臻於
+匿於
+因於
+似於
+遷於
+怒於
+心於
+集於
+容於
+髒詞
+髒心
+新紮
+紙紮
+紮鐵
+紮寨
+一紮
+兩紮
+三紮
+四紮
+五紮
+六紮
+七紮
+八紮
+九紮
+十紮
+百紮
+千紮
+萬紮
+佔1
+佔2
+佔3
+佔4
+佔5
+佔6
+佔7
+佔8
+佔9
+佔0
+佔1
+佔2
+佔3
+佔4
+佔5
+佔6
+佔7
+佔8
+佔9
+佔0
+佔零
+佔〇
+佔一
+佔二
+佔兩
+佔三
+佔四
+佔五
+佔六
+佔七
+佔八
+佔九
+佔十
+佔百
+佔千
+佔万
+佔億
+佔超過
+佔不足
+佔至少
+佔少
+佔至多
+佔半
+佔多
+佔大
+佔小
+佔中
+佔東
+佔西
+佔南
+佔北
+佔平均
+佔總
+獨佔鰲頭
+所佔
+市佔
+佔率
+市佔率
+佔市場
+佔世界
+佔全
+佔國內
+佔美
+佔台
+佔香
+佔澳
+佔加
+佔新
+佔馬
+佔印
+佔英
+佔法
+佔德
+佔葡
+佔俄
+佔蘇
+佔缺
+佔A
+佔B
+佔C
+佔D
+佔E
+佔F
+佔G
+佔H
+佔I
+佔J
+佔K
+佔L
+佔M
+佔N
+佔O
+佔P
+佔Q
+佔R
+佔S
+佔T
+佔U
+佔V
+佔W
+佔X
+佔Y
+佔Z
+佔a
+佔b
+佔c
+佔d
+佔e
+佔f
+佔g
+佔h
+佔i
+佔j
+佔k
+佔l
+佔m
+佔n
+佔o
+佔p
+佔q
+佔r
+佔s
+佔t
+佔u
+佔v
+佔w
+佔x
+佔y
+佔z
+佔A
+佔B
+佔C
+佔D
+佔E
+佔F
+佔G
+佔H
+佔I
+佔J
+佔K
+佔L
+佔M
+佔N
+佔O
+佔P
+佔Q
+佔R
+佔S
+佔T
+佔U
+佔V
+佔W
+佔X
+佔Y
+佔Z
+佔a
+佔b
+佔c
+佔d
+佔e
+佔f
+佔g
+佔h
+佔i
+佔j
+佔k
+佔l
+佔m
+佔n
+佔o
+佔p
+佔q
+佔r
+佔s
+佔t
+佔u
+佔v
+佔w
+佔x
+佔y
+佔z
+佔不佔
+不佔
+佔了
+佔穩
+佔資源
+佔人便宜
+佔頭
+佔道
+佔屋
+佔網
+佔床
+佔座
+佔分
+佔飯
+佔個位
+佔後
+佔著
+佔山
+馬占山
+佔比
+佔停車
+佔哺乳
+佔下風
+少佔
+多佔
+費佔
+佔查
+佔壓
+佔優
+佔劣
+穩佔
+佔整體
+佔局部
+日佔
+美佔
+英佔
+德佔
+法佔
+俄佔
+葡佔
+西佔
+奧佔
+意佔
+義佔
+地佔
+佔場
+佔耕
+狂佔
+徵佔
+圈佔
+已佔
+佔囁
+佔主
+佔次
+寡佔
+佔去
+將佔
+將占卜
+要佔
+要占卜
+會佔
+會占卜
+占卜
+夢有五不占
+占有五不驗
+誌異
+筑前
+筑後
+筑紫
+筑波
+筑州
+筑肥
+筑西
+筑北
+肥筑方言
+筑邦
+筑陽
+南筑
+批准的
+核准的
+為準
+準直
+擺鐘
+編鐘
+碰鐘
+鳴鐘
+晨鐘
+鐘體
+飯後鐘
+盜鐘
+一天鐘
+撞鐘
+殿鐘自鳴
+天文鐘
+天文學鐘
+洛鐘東應
+亮鐘
+郘鐘
+歌鐘
+鐘不撞不鳴
+毀鐘為鐸
+洪鐘
+擊鐘
+警世鐘
+竊鐘掩耳
+琴鐘
+見鐘不打
+釁鐘
+朝鐘
+木鐘
+鐘不扣不鳴
+鐘鳴
+鐘塔
+鐘漏
+鐘琴
+鐘磬
+鐘形蟲
+鐘乳洞
+鐘乳石
+鐘在寺裡
+詩鐘
+懸鐘
+山崩鐘應
+坐鐘
+宗周鐘
+塞耳盜鐘
+二缶鐘惑
+口鐘
+鐘的
+的鐘
+這鐘
+叩鐘
+音聲如鐘
+應鐘
+原子鐘
+泳氣鐘
+電子鐘
+電子鐘錶
+石英鐘錶
+石英鐘
+鐘錶王
+鐘律
+看鐘
+看錶
+看表面
+鐵鐘
+看下鐘
+看下錶
+瞅下鐘
+瞅下錶
+拿下鐘
+拿下錶
+鐘不敲不響
+對準鐘
+對準鐘錶
+對準錶
+鐘錶快
+鐘快
+錶快
+鐘錶慢
+鐘慢
+錶慢
+響鐘
+鐘敲
+大本鐘敲
+大笨鐘敲
+世紀鐘錶
+世紀鐘
+錶王
+鐘王
+鐘錶
+古鐘
+古鐘錶
+鐘面
+鐘表面
+南京鐘
+南京鐘錶
+造鐘錶
+造鐘
+九龍表行
+鐘錶行
+鐘行
+錶行
+小型鐘表面
+小型鐘面
+小型鐘錶
+小型鐘
+中型鐘表面
+中型鐘面
+中型鐘錶
+中型鐘
+大型鐘表面
+大型鐘面
+大型鐘錶
+大型鐘
+鐘匠
+深山何處鐘
+下課鐘
+上課鐘
+老爺鐘
+萬年曆錶
+個鐘
+個鐘錶
+喜歡鐘
+喜歡鐘錶
+喜歡錶
+大鐘
+佛鐘
+鐘壁
+鐘腰
+鐘口
+鐘身
+鐘模
+鐘頂
+鐘紐
+鐘座
+他鐘
+寺鐘
+座鐘
+盜鐘
+大笨鐘
+大本鐘
+鐘錶歷史
+錶的歷史
+鐘錶的歷史
+點多鐘
+點半鐘
+分多鐘
+刻多鐘
+分半鐘
+刻半鐘
+教學鐘
+操作鐘
+南屏晚鐘
+敲鐘
+瞧著鐘
+瞧著鐘錶
+瞧著錶
+警報鐘
+猶如鐘
+猶如鐘錶
+猶如錶
+舊鐘錶
+繁鐘
+四面鐘
+更鐘
+警示鐘
+鐘差
+任何鐘錶
+任何鐘
+任何錶
+任何表示
+任何表達
+任何表演
+選手表現
+選手表達
+選手表示
+選手表明
+選手表決
+分子鐘
+飛行鐘
+鐘罩
+主鐘差
+花鐘
+磬鐘
+主鐘曲線
+鐘速
+紅鐘
+各類鐘
+打著鐘
+鐘意
+衛星鐘
+該鐘
+錶轉
+鐘調
+調鐘錶
+調錶
+原鐘
+鐘錶速
+件鐘
+鐘發音
+逆鐘
+拂鐘無聲
+鐘不空則啞
+看著鐘錶
+看著鐘
+看著錶
+晚鐘
+潛水鐘錶
+潛水鐘
+潛水錶
+樂器鐘
+鐘左右
+埋頭尋鐘錶
+埋頭尋鐘
+埋頭尋錶
+鐘陳列
+驚鐘
+望著鐘錶
+望著鐘
+望著錶
+鐘錶停
+鐘停
+銫鐘
+數字鐘錶
+數字鐘
+顯示鐘錶
+顯示鐘
+顯示錶
+坐如鐘
+錶停
+西周鐘
+東周鐘
+錶速
+機械鐘錶
+機械鐘
+機械錶
+之鐘
+鐘形
+架鐘
+順鐘向
+逆鐘向
+遺傳鐘
+鬧錶
+華嚴鐘
+懷鐘
+生物鐘
+鐘錶的
+錶的嘀嗒
+的鐘錶
+嘀嗒的錶
+鐘好
+鐘太
+鐘不
+鐘有
+鐘盤
+鐘錶盤
+鐘沒
+鐘被
+制鐘
+布穀鳥鐘
+咕咕鐘
+拉克施爾德鐘
+鐘上
+鐘下
+摸鐘
+舊鐘
+舊錶
+台鐘
+鐘響
+叩鐘
+計時錶
+防水錶
+射鵰
+神鵰
+神雕像
+采石磯
+采石之戰
+采石之役
+聊齋志異
+部落發
+角落發
+村落發
+蛇髮女妖
+畢生發展
+對華發動
+中美發表
+尸魂界
+樹樑
+屋樑
+樑柱
+柱樑
+下樑
+上梁山
+昇陽
+僥倖
+夏遊
+秋遊
+冬遊
+黑奴籲天錄
+林郁方
+讚歌
+編餘
+餘墨
+唾餘
+餘韻
+歸餘
+公餘
+寬餘
+餘糧
+餘慶
+餘殃
+餘燼
+劫餘
+結餘
+燼餘
+淨餘
+餕餘
+餘暉
+餘輝
+羨餘
+餘悸
+心餘
+刑餘
+緒餘
+血餘
+朱慶餘
+諸餘
+餘論
+茶餘
+廚餘
+餘裕
+餘氣
+詩餘
+詞餘
+餘僇
+餘辜
+餘責
+餘罪
+無餘
+耳餘
+餘烈
+餘思
+鹽餘
+嬴餘
+贏餘
+王餘魚
+紆餘
+餘波
+餘杯
+餘步
+餘妙
+餘音
+餘聲
+餘明
+餘風
+餘黨
+餘毒
+餘桃
+餘桶
+餘利
+餘瀝
+餘膏
+餘光
+餘杭
+餘竅
+餘缺
+餘暇
+餘閒
+餘羨
+餘響
+餘興
+餘蓄
+餘緒
+餘珍
+餘眾
+餘酲
+餘喘
+餘食
+餘熱
+餘刃
+餘閏
+餘存
+餘業
+餘姚
+餘蔭
+餘映
+餘外
+餘威
+餘味
+餘溫
+餘勇
+多餘
+剩餘
+餘生
+餘歡
+有餘
+一餘
+二餘
+兩餘
+三餘
+四餘
+五餘
+六餘
+七餘
+八餘
+九餘
+十餘
+百餘
+千餘
+萬餘
+億餘
+兆餘
+0餘
+1餘
+2餘
+3餘
+4餘
+5餘
+6餘
+7餘
+8餘
+9餘
+0餘
+1餘
+2餘
+3餘
+4餘
+5餘
+6餘
+7餘
+8餘
+9餘
+余姓
+余光生
+余光中
+余思敏
+余威德
+余子明
+余三勝
+崑山
+崑曲
+崑腔
+崑調
+崑劇
+崑蘇
+蘇崑
+分布圖
+一干家中
+星期後
+不准你
+不准我
+不准他
+不准她
+不准它
+不准誰
+不准許
+准不准你
+准不准我
+准不准他
+准不准她
+准不准它
+准不准誰
+准不准許
+依依不捨
+戀戀不捨
+窮追不捨
+緊追不捨
+鍥而不捨
+稜登
+前言不答後語
+繃扒弔拷
+不弔
+不通弔慶
+陪弔
+盆弔
+屁股大弔了心
+撇弔
+憑弔
+門弔兒
+伐罪弔民
+打出弔入
+搗鬼弔白
+弔膀子
+弔民
+弔民伐罪
+弔奠
+弔頭
+弔古
+弔古尋幽
+弔詭
+弔詭矜奇
+弔客
+弔拷
+弔拷繃扒
+弔扣
+弔賀迎送
+弔鶴
+弔喉
+弔謊
+弔祭
+弔腳兒事
+弔頸
+弔橋
+弔取
+弔孝
+弔紙
+弔者大悅
+弔場
+弔書
+弔詞
+弔死問孤
+弔死問疾
+弔撒
+弔喪
+弔喪問疾
+弔腰撒跨
+弔唁
+弔宴
+弔喭
+弔影
+弔慰
+弔文
+弔問
+頭巾弔在水裡
+提心弔膽
+弄鬼弔猴
+管人弔腳兒事
+開弔
+鶴弔
+昊天不弔
+花馬弔嘴
+會弔
+吉凶慶弔
+蟣蝨相弔
+祭弔
+祭弔文
+青蠅弔客
+慶弔
+形影相弔
+哀弔
+一弔
+唁弔
+於水
+安於
+迫於
+罷於
+蹪於
+於敝
+於過
+甚於
+等於
+定於
+利於
+對於
+推舟於陸
+退藏於密
+歸於
+難於
+移禍於
+生於
+立於
+多於
+勝於
+傳於
+流於
+過於
+關於
+毀於
+基於
+急於
+嫁禍於
+借聽於聾
+見於
+鑒於
+謹於心
+求道於盲
+始於
+於藍
+出於
+輕於
+行百里者半於九十
+幸於
+怠於
+詢於芻蕘
+止於
+至於
+拙於
+忠於
+終於
+重於
+垂於
+善於
+死於
+屬於
+浮於
+在於
+厝薪於火
+易於
+精於
+由於
+於此
+燕巢於幕
+於菟
+於乎
+於戲
+於邑
+補於
+位於
+於今
+於是
+於是乎
+於斯
+寓於
+月離於畢
+月麗於箕
+源於
+且於
+長於
+短於
+現於
+較於
+於之
+分布於
+分散於
+優於
+早於
+晚於
+感於
+鬼谷子
+于美人
+緊緻
+冗餘
+曰云
+若干
+徵婚
+鬥鬨
+事有鬥巧
+歹鬥
+鬥茶
+鬥鴨
+爭奇鬥妍
+誇能鬥智
+春香鬥學
+鬥引
+鬥彩
+鬥武
+鬥悶
+鬥牙拌齒
+鬥幌子
+鬥腳
+雞吵鵝鬥
+辯鬥
+廝鬥
+誇多鬥靡
+臨潼鬥寶
+鬥趣
+撩鬥
+傲霜鬥雪
+賭鬥
+搬鬥
+鬥爭鬥合
+鬥疊
+鬥文
+耍鬥
+鬥巧
+油鬥
+蚊動牛鬥
+卵與石鬥
+挑鬥
+爭奇鬥異
+鬥葉子
+鬥分子
+爭妍鬥奇
+不鬥
+鬥心眼
+鬥頭
+挌鬥
+好鬥
+鬥合
+拚鬥
+兩虎共鬥
+兩鼠鬥穴
+鬥犀臺
+鬥牙鬥齒
+惡鬥
+鬥勝
+鬥富
+鬥艦
+鬥葉兒
+鬥彆氣
+鬥話
+鬥牌
+鬥百草
+鬥打
+鬥犬
+鬥風
+鬥雪紅
+鬥暴
+鬥閑氣
+龍鬥虎傷
+殷師牛鬥
+二虎相鬥
+鬥力
+爭紅鬥紫
+鬥麗
+鬥狠
+鬥飣
+虎鬥
+引鬥
+爭妍鬥豔
+轉鬥千里
+鬥而鑄兵
+困鬥
+好勇鬥狠
+爭奇鬥豔
+使其鬥
+鬥地主
+石樑
+木樑
+藏歷史
+頁面
+方面
+表面
+面條目
+課餘
+節餘
+盈餘
+病餘
+餘地
+餘力
+餘子
+餘事
+扶餘國
+腐餘
+富餘
+之餘
+餘澤
+流風餘俗
+流風餘韻
+淋餘土
+餘一
+餘二
+餘三
+餘四
+餘五
+餘六
+餘七
+餘八
+餘九
+餘十
+零餘
+〇餘
+餘零
+餘〇
+餘1
+餘2
+餘3
+餘4
+餘5
+餘6
+餘7
+餘8
+餘9
+餘0
+餘1
+餘2
+餘3
+餘4
+餘5
+餘6
+餘7
+餘8
+餘9
+餘0
+餘數
+其餘
+尸居餘氣
+賸餘
+餘孽
+殘餘
+業餘
+餘割
+餘款
+餘角
+餘切
+餘霞
+餘下
+餘弦
+餘震
+餘貾
+餘額
+禹餘糧
+餘人
+編余
+病余
+餘俗
+餘倍
+同餘
+大讚
+唄讚
+褒讚
+謬讚
+誄讚
+祝讚
+詩讚
+賞讚
+讚唄
+飛紮
+紮裹
+紮腳
+紮詐
+紮囮
+住紮
+佔畢
+佔頭籌
+佔高枝兒
+隱佔
+憑摺
+沒摺至
+大摺兒
+大週摺
+火摺子
+裝摺
+變徵
+談徵
+納徵
+流徵
+柳詒徵
+固徵
+貴徵
+考徵
+咎徵
+杞宋無徵
+休徵
+徵辟
+徵名責實
+徵發
+徵風召雨
+徵答
+徵啟
+徵選
+徵招
+徵士
+徵庸
+之徵
+瑞徵
+三徵七辟
+額徵
+有徵
+有征服
+有征戰
+有征伐
+有征討
+無徵不信
+文徵明
+徵跡
+徵車
+徵效
+徵怪
+徵聖
+徵咎
+徵吏
+徵令
+本徵
+船鐘
+黃鈺筑
+齊莊
+鴻案相莊
+項莊
+韋莊
+鍋莊
+鄭莊公
+通莊
+蒙莊
+端莊
+票莊
+矜莊
+楚莊問鼎
+楚莊絕纓
+整莊
+打路莊板
+莊騷
+莊語
+莊舄越吟
+莊房
+莊客
+莊農
+平泉莊
+布莊
+香山庄
+寶莊
+坐莊
+周莊王
+發莊
+卞莊
+包莊
+剔莊貨
+劉克莊
+冷莊子
+石家莊
+卞莊子
+新莊市
+當準
+憑準
+沒準
+蜂準
+推情準理
+寇準
+合準
+準保
+準譜
+準分子
+準點
+一個準
+準擬
+準貨幣
+準軍事
+準式
+認準
+三準
+鵝準
+有準
+崑崙
+鎌倉
+請君入甕
+甕安
+痊癒
+治癒
+病癒
+大病初癒
+癒合
+槓桿
+宣洩
+圖鑑
+諮詢
+勳章
+張勳
+趙治勳
+殭屍
+有栖川
+兇惡
+兇狠
+兇猛
+兇橫
+兇悍
+兇險
+兇相
+兇犯
+嫌兇
+兇嫌
+兇疑
+兇刀
+兇槍
+很兇
+兇巴巴
+行兇前
+凝鍊
+鍊貧
+鍊度
+鍊形
+鍊師
+鍊石
+鍊字
+鍊冶
+細鍊
+陳鍊
+闖鍊
+鍊汞
+淬鍊
+鋼之鍊金術師
+索馬里
+范登堡
+世田谷
+製漿
+三統歷史
+伊斯蘭教歷史
+伊斯蘭歷史
+儒略改革歷史
+儒略歷史
+公歷史
+台歷史
+合歷史
+周歷史
+商歷史
+四分歷史
+回歷史
+埃及歷史
+大明歷史
+大歷史
+大衍歷史
+太初歷史
+官歷史
+寶歷史
+巧歷史
+希伯來歷史
+弘歷史
+慶歷史
+日歷史
+星歷史
+月歷史
+朱理安歷史
+桌歷史
+永歷史
+玉歷史
+百花歷史
+皇歷史
+皇極歷史
+穆罕默德歷史
+算歷史
+紀歷史
+舊歷史
+航海歷史
+萬歷史
+行事歷史
+農歷史
+農民歷史
+通歷史
+長歷史
+陰歷史
+陽歷史
+額我略歷史
+黃歷史
+天曆
+天歷史
+美醜
+獻醜
+出醜
+家醜
+遮醜
+醜八怪
+醜名
+醜詆
+醜態
+醜女
+醜類
+醜陋
+醜虜
+醜化
+醜劇
+醜媳婦
+醜小鴨
+醜行
+醜事
+醜聲
+醜人
+醜惡
+醜丫頭
+醜聞
+醜語
+母醜
+一齣子
+齣兒
+賣獃
+發獃
+大獃
+獃獃
+獃等
+獃頭
+獃腦
+獃根
+獃磕
+獃憨獃
+獃話
+獃氣
+獃想
+獃性
+獃滯
+獃著
+獃痴
+獃串了皮
+獃事
+獃人
+獃子
+好獃
+占便宜的是獃
+阿獃
+丰標
+丰姿
+丰韻
+鵰翎
+鵰心雁爪
+鵰鶚
+雙鵰
+撲鼕鼕
+普鼕鼕
+鼕鼕鼓
+令人髮指
+爆發指數
+開發
+剪其髮
+吐哺捉髮
+吐哺握髮
+含齒戴髮
+大金髮苔
+寸髮千金
+心長髮短
+戴髮含齒
+拔髮
+拔鬚
+揪髮
+揪鬚
+整髮用品
+斷髮文身
+滿頭洋髮
+燙一個髮
+燙一次髮
+燙個髮
+燙完髮
+燙次髮
+理一個髮
+理一次髮
+理個髮
+理完髮
+理次髮
+細如髮
+繫於一髮
+膚髮
+皮膚
+生華髮
+蒼髮
+被髮佯狂
+被髮入山
+被髮左衽
+被髮纓冠
+被髮陽狂
+身體髮膚
+髒髮
+髮光可鑑
+髮已霜白
+髮油
+髮為血之本
+髮網
+髮踊沖冠
+髮際
+黃髮
+齒落髮白
+剷頭
+剷刈
+口燥唇乾
+舌乾唇焦
+花菴詞選
+渾箇
+箇中原因
+箇中理由
+箇中高手
+箇中好手
+箇中強手
+箇中滋味
+箇中奧秘
+箇中奧妙
+箇中玄機
+箇中消息
+箇中資訊
+箇中訊息
+對表達
+對表現
+對表演
+對表揚
+對表中
+對表明
+不準確
+並不準確
+一伙頭
+一伙食
+一半只
+一干弟兄
+一干弟子
+一干部下
+一斗斗
+一面食
+萬一只
+上面糊
+不克自制
+不准沒
+不加自制
+不占凶吉
+不占卜
+不占吉凶
+不占算
+不好干涉
+不好干預
+不干預
+不干涉
+不干休
+不干犯
+不干擾
+不干你
+不干我
+不干他
+不干她
+不干它
+不干事
+不斗膽
+不每只
+不采聲
+專向往
+丰容
+之一只
+之二只
+之八九只
+也斗了膽
+事情干脆
+事都干脆
+二只得
+亦云
+人云
+以自制
+們斗了膽
+你斗了膽
+其一只
+其二只
+其八九只
+內面包
+內面包的
+准保護
+准保釋
+几上
+几淨窗明
+几凳
+几子
+几旁
+几椅
+几榻
+几面上
+出征收
+擊扑
+划一槳
+划了一會
+划到岸
+划到江心
+前面店
+千只可
+千只夠
+千只怕
+千只能
+千只足夠
+半只可
+半只夠
+占了卜
+口干冒
+口干政
+口干涉
+口干犯
+口干預
+古書云
+古語云
+只占卜
+只占吉
+只占神問卜
+只占算
+只身上已
+只身上無
+只身上有
+只身上沒
+只身上的
+只身世
+只身為
+只身份
+只身體
+只身前
+只身受
+只身後
+只身子
+只身形
+只身影
+只身心
+只身旁
+只身材
+只身段
+只身邊
+只身首
+只身高
+只采聲
+可自制
+台子女
+台子孫
+台布景
+台面前
+合府上
+後面店
+向往常
+向往日
+向往時
+向往來
+唯一只
+喂了一聲
+喜向往
+四出徵收
+四面包
+多半只
+好斗大
+好斗室
+好斗笠
+好斗篷
+好斗膽
+好斗蓬
+家具體
+家具備
+家具有
+小几
+尸利
+尸祿
+尸臣
+尸鳩
+已占卜
+已占算
+并迭
+所云
+所云云
+所占卜
+所占星
+所占算
+手表決
+手表態
+手表明
+手表演
+手表現
+手表示
+手表達
+手表露
+手表面
+才干休
+才干戈
+才干擾
+才干政
+才干涉
+才干預
+扎好底子
+扎好根
+扑撻
+打吨
+折向往
+拉面上
+拉面具
+拉面前
+拉面巾
+拉面無
+拉面皮
+拉面罩
+拉面色
+拉面部
+捉奸黨
+捉奸徒
+捉奸細
+捉奸賊
+敢情欲
+敢斗了膽
+敲扑
+方向往
+望了望
+桌几
+每每只
+法自制
+洒滌
+洒淅
+洒濯
+洒然
+灘涂
+特制住
+特制定
+特制止
+特制訂
+百只可
+百只夠
+百只怕
+百只足夠
+皮制服
+相克制
+相克服
+短几
+石几
+秒表明
+秒表示
+窗明几亮
+竹几
+精制伏
+精制住
+精制服
+經有云
+給我干脆
+編制法
+能干休
+能干戈
+能干擾
+能干政
+能干涉
+能干預
+能自制
+自制一下
+自制下來
+自制不
+自制之力
+自制之能
+自制他
+自制伏
+自制你
+自制地
+自制她
+自制情
+自制我
+自制服
+自制的能
+自制能力
+船只得
+船只有
+船只能
+草荐
+荐居
+荐臻
+荐饑
+要自制
+語有云
+跌扑
+轉向往
+酒帘
+裡面包
+金表態
+金表情
+金表揚
+金表明
+金表演
+金表現
+金表示
+金表達
+金表露
+金表面
+長几
+隆准許
+雄斗斗
+面包住
+面包辦
+面包廂
+面包含
+面包圍
+面包容
+面包庇
+面包紮
+面包抄
+面包括
+面包攬
+面包涵
+面包管
+面包羅
+面包著
+面包藏
+面包裝
+面包裹
+面包起
+面店舖
+面粉碎
+面粉紅
+面食麵
+面食飯
+顛顛仆仆
+高干擾
+高干預
+高度自制
+黃金表
+天后宮
+一吊錢
+不食乾腊
+傳位于四太子
+儉确之教
+党懷英
+八蜡
+憑几
+南宮适
+大蜡
+子云
+分子雲
+小价
+歲聿云暮
+崖广
+恕乏价催
+悲筑
+折子戲
+揮杆
+搤肮拊背
+文采郁郁
+木杆
+洪适
+球杆
+腊之以為餌
+腊毒
+蜡月
+蜡祭
+言云
+宜云
+貴价
+郁郁菲菲
+馬杆
+造麯
+麴生
+麴秀才
+麴塵
+麴櫱
+大麴
+黃麴毒素
+酒醴麴櫱
+麴道士
+麴錢
+麴車
+麴院
+鼠麴草
+不乾不淨
+生發生
+必須
+須根據
+·范
+、剋制
+,剋制
+。剋制
+!剋制
+?剋制
+;剋制
+:剋制
+不剋制
+也剋制
+了剋制
+他剋制
+們剋制
+剋制不了
+剋制不住
+力剋制
+力求剋制
+可以剋制
+和剋制
+在剋制
+地剋制
+夠剋制
+她剋制
+你剋制
+您剋制
+就剋制
+彼此剋制
+得剋制
+快剋制
+想剋制
+意剋制
+應剋制
+我剋制
+才剋制
+於剋制
+易剋制
+無法剋制
+的剋制
+盡量剋制
+而剋制
+能剋制
+與剋制
+著剋制
+要剋制
+軍隊剋制
+空投佈雷
+火箭佈雷
+海灣佈雷
+空中佈雷
+海上佈雷
+佈雷的
+佈雷,
+佈雷、
+佈雷。
+佈雷;
+佈雷艦
+佈雷艇
+佈雷速度
+佈雷封鎖
+滿拚自盡
+拚生盡死
+拚卻
+拚老命
+拚絕
+成於思
+單單於
+積澱
+澱積
+澱北片
+澱解物
+澱謂之滓
+淺澱
+堙澱
+茂都澱
+並曰入澱
+澱乃不耕之地
+藍澱
+皆可作澱
+澱山
+海淀山後
+澱澱
+掛鈎
+薴悴
+絡腮鬍
+落腮鬍
+山羊鬍
+幸運鬍
+刮鬍
+剃鬍
+吹鬍
+蓄鬍
+白鬍
+長鬍
+鬍髯
+髯鬍
+髭鬍
+鬚鬍
+范文瀾
+范文同
+范文正公
+范文程
+范文芳
+范文藤
+范文虎
+范文照
+發表
+乾重
+若干
+鈎心鬥角
+若干
+乾重
+全面包圍
+全面包裹
+機械系
+體系
+心理
+複分解
+鹰鵰
+叱咤903
+叱咤MY903
+叱咤My903
+叱咤樂壇
+叱咤咤
+叱咤叱咤叱咤咤
+叱咤叱叱咤
+正在叱咤
+空餘
+變髒
+天地志狼
+薴烯
+阿斯圖里亞斯
+雙折射
+心繫家
+心繫國
+心繫祖
+心繫北
+心繫京
+心繫南
+心繫西
+心繫東
+心繫四
+心繫川
+心繫浙
+心繫汶
+心繫廣
+心繫湖
+心繫山
+心繫台
+心繫江
+心繫昌
+心繫香
+心繫澳
+心繫港
+心繫泰
+心繫健
+心繫天
+心繫地
+心繫大
+心繫小
+心繫全
+心繫眾
+心繫奧
+心繫世
+心繫中
+心繫高
+心繫災
+心繫非
+心繫群
+心繫新
+心繫沈
+心繫唐
+心繫黃
+心繫乔
+心繫阮
+心繫父
+心繫母
+心繫病
+心繫故
+心繫哪
+心繫中
+心繫英
+心繫美
+心繫日
+心繫德
+心繫功
+心繫曉
+心繫神
+心繫萬
+心繫的
+心繫在
+心繫兩
+心繫社
+心繫曼
+心繫彼
+心繫風
+心繫募
+心繫一
+心繫何
+心繫困
+心繫輸
+心繫人
+心繫民
+心繫十
+心繫百
+心繫千
+心繫和
+心繫選
+心繫囑
+心繫我
+心繫你
+心繫您
+心繫他
+心繫她
+心繫它
+心繫伊
+心繫長
+心繫舞
+心繫蘭
+心繫五
+心繫生
+心繫婦
+心繫幼
+心繫茶
+心繫動
+心繫沙
+心繫林
+心繫摩
+心繫农
+心繫慈
+心繫麥
+心繫貧
+心繫富
+心繫遠
+心繫近
+心繫宣
+心繫傳
+心繫紅
+心繫老
+心繫重
+心繫震
+心繫妻
+心繫夫
+心繫女
+心繫子
+心繫著
+重回
+挑大樑
+扛大樑
+后豐
+製得
+限制
+控制
+製取
+第四出局
+心臟
+肝臟
+脾臟
+肺臟
+腎臟
+參與
+浮誇
+星巴克
+于謙
+于寘
+淳于
+于禁
+于敏中
+註:# 不作“注:”
+呆呆獸
+劃為# 不作“划為”
+併為一體
+併為一家
+一個# 避免“個裡”的錯誤
+兩個
+二個
+三個
+四個
+五個
+六個
+七個
+八個
+九個
+十個
+百個
+千個
+萬個
+億個
+兆個
+零個
+云:# 不作“雲:”
+電子表格
+雪裡紅
+雪裡蕻
+森林裡
+日子裡
+故事裡
+領域裡
+時間裡
+深淵裡
+醫院裡
+春假裡
+暑假裡
+秋假裡
+寒假裡
+春天裡
+夏天裡
+秋天裡
+冬天裡
+春日裡
+夏日裡
+秋日裡
+冬日裡
+嘴裡
+心裡
+皮裡陽秋
+肚裡
+苦裡
+裡勾外連
+裡面
+這裡
+中文裡
+山洞裡
+世界裡
+眼睛裡
+首發
+夸脫
+誰幹的
+鐘螺
+風采
+代碼表
+編碼表
+字碼表
+電碼表
+科斗
+佔領
+灕水
+點裡
+這只是
+這只不
+這只容
+這只允
+這只採
+這只用
+有只是
+有只不
+有只容
+有只允
+有只採
+有只用
+葉叶琹
+胡子昂
+包括
+特别致
+分别致
+會上簽訂
+會上簽署
+周一 # (及以下)避免“周一齣版”的錯誤
+周二
+周三
+周四
+周五
+周六
+韶山沖
+總裁制
+于丹
+于樂
+于冕
+于軍
+于吉
+于堅
+于姓
+于氏
+于娜
+于娟
+于山
+于帥
+于慧
+于振
+于敏
+于斌
+于晴
+于波
+于濤
+于衡
+于贈
+于越
+于靖
+于勒
+于格
+于仁泰
+于會泳
+于偉國
+于佳卉
+于光遠
+于克勒
+于凌奎
+于鳳至
+于化虎
+于占元
+于台煙
+于品海
+于國楨
+于大寶
+于天仁
+于子千
+于孔兼
+于學忠
+于家堡
+于小偉
+于小彤
+于山國
+于幼軍
+于廣洲
+于康震
+于式枚
+于從濂
+于德海
+于志寧
+于慎行
+于成龍
+于振武
+于明濤
+于是之
+于晨楠
+于根偉
+于樹潔
+于欣源
+于正昇
+于正昌
+于永波
+于漢超
+于江震
+于洪區
+于浩威
+于海洋
+于湘蘭
+于特森
+于玉立
+于秀敏
+于素秋
+于若木
+于蔭霖
+于西翰
+于遠偉
+于道泉
+于都縣
+于震寰
+于震環
+于非闇
+于風政
+于鳳桐
+于默奧
+于家堡
+于爾岑
+于默奧
+于貝爾
+于爾根
+于雙戈
+于里察
+于澤爾
+于斯塔德
+于斯達爾
+于爾里克
+于奇庫杜克
+于韋斯屈萊
+于克-蘭多縣
+于斯納爾斯貝里
+夏于喬
+涂姓
+涂坤
+涂天相
+涂序瑄
+涂澤民
+涂紹煃
+涂羽卿
+涂逢年
+涂長望
+涂謹申
+涂鴻欽
+涂壯勳
+涂醒哲
+涂善妮
+涂敏恆
+總裁制
+故云
+強制作用
+鬱南
+西米谷
+一出生
+二出生
+三出生
+四出生
+五出生
+六出生
+七出生
+八出生
+九出生
+十出生
+一出版
+二出版
+三出版
+四出版
+五出版
+六出版
+七出版
+八出版
+九出版
+十出版
+一出刊
+二出刊
+三出刊
+四出刊
+五出刊
+六出刊
+七出刊
+八出刊
+九出刊
+十出刊
+一出逃
+二出逃
+三出逃
+四出逃
+五出逃
+六出逃
+七出逃
+八出逃
+九出逃
+十出逃
+一出口
+二出口
+三出口
+四出口
+五出口
+六出口
+七出口
+八出口
+九出口
+十出口
+一出祁山
+二出祁山
+三出祁山
+四出祁山
+五出祁山
+六出祁山
+七出祁山
+八出祁山
+九出祁山
+十出祁山
+鬱林
+饑荒
+免徵
+亞美尼亞曆
+百科裡
+歷史裡
+戲裡
+作品裡
+專輯裡
+年代裡
+棺材裡
+注釋
+月面
+路面
+修杰楷
+修杰麟
+學裡
+獄裡
+館裡
+系列裡
+村子裡
+艷后
+廢后
+妖后
+后海灣
+仙后
+賈后
+賢后
+蜂后
+皇后
+王后
+王侯后
+母后
+武后
+歌后
+影后
+封后
+太后
+天后
+呂后
+后里
+后街
+后羿
+后稷
+后座
+后平路
+后安路
+后土
+后北街
+后冠
+望后石
+后角
+蟻后
+后妃
+大周后
+小周后
+染殿后
+准三后
+風后
+后母戊
+風後,
+人如風後入江雲
+中風後
+屏風後
+颱風後
+颳風後
+整風後
+打風後
+遇風後
+聞風後
+逆風後
+順風後
+大風後
+馬格里布
+伊里布
+劃入
+中庄子
+埔裏社撫墾局
+懸掛
+僱傭
+四捨六入
+宿舍
+會干擾
+代表
+高清愿
+瓷製
+竹製
+絲製
+莜麵
+劃入
+簡筑翎
+楊雅筑
+魔杰座
+杰威爾音樂
+彭于晏
+尸羅精舍
+索馬里 # (及以下)避免里海=>裏海的轉換
+西西里
+騰格里
+阿里
+村里長
+進制
+黃詩杰
+陳冲
+何杰
+劉佳怜
+于小惠
+于品海
+于耘婕
+于洋
+于澄
+于光新
+范賢惠
+于國治
+于楓
+于熙珍
+涂善妮
+邱于庭
+熊杰
+卜云吉
+黎吉雲
+于飛島
+代表
+水無怜奈
+傲遊 # 浏览器名
+夏于喬
+賭后
+后海灣
+立后綜
+甲后路
+劉芸后
+謝華后
+趙惠后
+趙威后
+聖后
+陳有后
+許虬
+網遊
+狄志杰
+伊適杰
+于冠華
+于台煙
+于雲鶴
+于忠肅集
+于友澤
+于和偉
+于來山
+于樂
+于天龍
+于謹
+于榮光
+電波鐘
+余三勝
+掛名
+啟發式
+舞后
+甄后
+郭后
+0年 # 協助分詞
+1年
+2年
+3年
+4年
+5年
+6年
+7年
+8年
+9年
+0年
+1年
+2年
+3年
+4年
+5年
+6年
+7年
+8年
+9年
+〇年
+零年
+一年
+兩年
+二年
+三年
+四年
+五年
+六年
+七年
+八年
+九年
+十年
+百年
+千年
+萬年
+億年
+周后
+0周後
+1周後
+2周後
+3周後
+4周後
+5周後
+6周後
+7周後
+8周後
+9周後
+0周後
+1周後
+2周後
+3周後
+4周後
+5周後
+6周後
+7周後
+8周後
+9周後
+零周後
+〇周後
+一周後
+二周後
+兩周後
+三周後
+四周後
+五周後
+六周後
+七周後
+八周後
+九周後
+十周後
+百周後
+千周後
+萬周後
+億周後
+幾周後
+多周後
+前往
+后瑞站
+帝后臺
+新井里美
+樗里子
+伊達里子
+濱田里佳子
+尊后
+叶志穗
+叶不二子
+于立成
+山谷道
+李志喜
+于欣
+于少保
+于海
+於海邊
+於海上
+于凌辰
+于魁智
+于鬯
+于仲文
+于再清
+于震
+於震前
+於震后
+於震中
+固定制
+毗婆尸佛
+尸棄佛
+划船
+划不來
+划拳
+划槳
+划動
+划艇
+划行
+划算
+總裁制
+恒生
+嚴云農
+手裏劍
+秦莊襄王
+伊東怜
+衛後莊公
+餘量
+並行
+郁郁青青
+協防
+對表格
+對表示
+對表達
+對表演
+對表明
+了然後
+戴表元
+張樂于張徐
+余力為
+葉叶琴
+万俟
+幾個
+澀谷區
+協調
+選手
+併發症
+併發重症
+併發模式
+併發型模式
+金色長髮
+紅色長髮
+一頭長髮
+的長髮
+黑色長髮
+前天
+昨天
+今天
+明天
+後天
+數學家
+科學家
+物理學家
+化學家
+生物學家
+天文學家
+游離
+子晳
+紅后假說
+書面
+不只
+高涌泉
+請求
+考試
+測試
+筆試
+口試
+冰冷
+王田里
+后姓
+台州
+田庄英雄
+計劃
+抑制劑
diff --git a/maintenance/language/zhtable/tradphrases_exclude.manual b/maintenance/language/zhtable/tradphrases_exclude.manual
new file mode 100644 (file)
index 0000000..e6abb4e
--- /dev/null
@@ -0,0 +1,330 @@
+三國誌
+聊齋誌異
+北迴
+南迴
+併排
+併進
+併在
+併成
+衝衝
+臺
+著
+佈
+纔
+采
+着
+借
+甦
+荐
+担
+可憐虫
+一齣
+上弔
+弔車
+弔橋
+弔嗓子
+弔床
+弔架
+弔桶
+弔桿
+弔橋
+弔燈
+弔環
+弔籃
+弔胃口
+弔臂
+弔銷
+形影相弔
+被髮
+散髮
+長髮
+髮毛
+髮端
+周而複始
+答複
+複興
+複舊
+顛複
+修複
+報複
+複活
+反複
+迴首
+彙總
+饑餓
+饑不擇食
+饑荒
+憑藉
+藉故
+藉口
+藉端
+藉詞
+藉酒
+蛋捲
+行李捲
+克裡
+纍纍
+華裡
+裡海
+瞭解
+明瞭
+發黴
+矇蔽
+矇住
+濛濛
+矇矇
+下麵
+白麵
+切麵
+和麵
+過水麵
+復甦
+複蘇
+甦醒
+体
+繫數
+遊擊
+馥鬱
+鬱鬱
+改製
+獃住
+獃氣
+獃子
+獃頭獃腦
+儘量
+希腊
+腊肉
+瞭如
+昇
+武鬆
+赤鬆
+黑鬆
+鬆林
+鬆科
+鬆濤
+鬆毛蟲
+鬆節油
+濕地鬆
+尼克鬆
+紮伊爾
+阿布紮比
+阿紮尼亞
+利比裡亞
+斯裡蘭卡
+烏蘇裡江
+加裡寧
+歐幾裡得
+格裡
+巴裡
+居裡
+卡裡
+墨索裡尼
+底裡
+裡人
+裡加
+裡裡
+馬裡
+裡拉
+阿裡
+裡斯
+鄰裡
+鄉裡
+百裡
+特裡
+海裡
+三元裡
+漏鬥
+春捲
+採邑
+嚮日
+佔城
+水錶
+名錶
+錶面
+彆腳
+併力
+併列
+併為
+豐富多採
+採採
+尼採
+小醜
+辛醜
+整齣
+嚴複
+枯幹
+干著急
+單於
+攻剋
+剋服
+闢邪
+釐米
+後樑
+石樑
+木樑
+舊莊
+介係詞
+介繫詞
+餘年
+大阪
+阪田
+豪杰
+七拚八湊
+一捲
+十捲
+上捲
+下捲
+加捲
+不捨
+不識檯舉
+稜登
+半弔子
+分布圖
+星鬥
+筋鬥
+斗鬨
+料鬥
+煙鬥
+熨鬥
+笆鬥
+箕鬥
+金鬥
+門鬥
+風鬥
+鬥子
+鬥笠
+老板娘
+剋制
+洋麵
+病癥
+製裁
+台製
+石家庄
+酒盃
+積极
+殭尸
+上梁不正
+項鍊
+鍊子
+鍊條
+拉鍊
+鉸鍊
+鍊鎖
+鐵鍊
+鍛鍊
+鍊乳
+鍊丹
+至于
+浮于
+附于
+次于
+于人
+助于
+行于
+于衷
+于事
+低于
+大于
+高于
+等于
+位于
+用于
+答覆
+複蓋
+反覆
+藉藉
+蘊藉
+蹈藉
+醞藉
+氆氌
+慰藉
+文藉
+枕藉
+狼藉
+別隻
+鼕鼕
+矇松雨
+佈雷
+丰度
+剪彩
+脣
+菴
+公裡
+箇中
+樑子
+樑書
+讚成
+讚同
+鐘表店
+精採
+鞭尸
+尸身
+尸首
+行尸走肉
+裹尸
+慼慼
+痠
+簑
+捱
+朝乾夕惕
+大曲酒
+神麴
+便于
+偏于
+勇于
+居于
+常見于
+強加于
+從事于
+忙于
+敢于
+服務于
+服從于
+樂于
+歸罪于
+歸諸于
+活動于
+瀕于
+苦于
+莫過于
+處于
+適于
+乾和
+鉤
+高陞
+大胆
+託福
+繫系
+酰
+醯
+大樑
+光採
+鍾錶
+複原
+參与
+浮夸
+剋日
+羡
+旅游
+穀風
+復讎
+避暑山庄
+遊牧
+烟草
+征
+占領
+入夥
+懸挂
+註釋
+浮遊
+冶鍊
+裡子
+裡外
+單隻
+聯係
+那裏
+殺虫藥
+好家伙
+姦污
+併發
+衚衕
index e07e62d..6090a93 100644 (file)
 /** */
 require_once( __DIR__ . '/commandLine.inc' );
 
-$mcc = new MWMemcached( array( 'persistent' => true/*, 'debug' => true*/ ) );
-$mcc->set_servers( $wgMemCachedServers );
-# $mcc->set_debug( true );
+$mcc = new MWMemcached( array( 'persistent' => true ) );
+
+if ( $wgMainCacheType === CACHE_MEMCACHED ) {
+       $mcc->set_servers( $wgMemCachedServers );
+} elseif( isset( $wgObjectCaches[$wgMainCacheType] ) ) {
+       $mcc->set_servers( $wgObjectCaches[$wgMainCacheType]['servers'] );
+} else {
+       print "MediaWiki isn't configured for Memcached usage\n";
+       exit( 1 );
+}
 
 function mccShowHelp( $command ) {
        $commandList = array(
@@ -73,7 +80,7 @@ do {
                case 'help':
                        // show an help message
                        mccShowHelp( array_shift( $args ) );
-               break;
+                       break;
 
                case 'get':
                        $sub = '';
@@ -93,7 +100,7 @@ do {
                        } else {
                                var_dump( $res );
                        }
-               break;
+                       break;
 
                case 'getsock':
                        $res = $mcc->get( $args[0] );
index 691b832..42461c5 100644 (file)
@@ -40,14 +40,21 @@ class mcTest extends Maintenance {
        }
 
        public function execute() {
-               global $wgMemCachedServers, $wgMemCachedTimeout;
+               global $wgMainCacheType, $wgMemCachedTimeout, $wgObjectCaches;
 
                $iterations = $this->getOption( 'i', 100 );
                if ( $this->hasArg() ) {
-                       $wgMemCachedServers = array( $this->getArg() );
+                       $servers = array( $this->getArg() );
+               } elseif ( $wgMainCacheType === CACHE_MEMCACHED ) {
+                       global $wgMemCachedServers;
+                       $servers = $wgMemCachedServers ;
+               } elseif( isset( $wgObjectCaches[$wgMainCacheType] ) ) {
+                       $servers = $wgObjectCaches[$wgMainCacheType]['servers'];
+               } else {
+                       $this->error( "MediaWiki isn't configured for Memcached usage", 1 );
                }
 
-               foreach ( $wgMemCachedServers as $server ) {
+               foreach ( $servers as $server ) {
                        $this->output( $server . " ", $server );
                        $mcc = new MemCachedClientforWiki( array(
                                'persistant' => true,
diff --git a/maintenance/oracle/archives/patch-ufg_group-length-increase-255.sql b/maintenance/oracle/archives/patch-ufg_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..6a4a751
--- /dev/null
@@ -0,0 +1,9 @@
+define mw_prefix='{$wgDBprefix}';
+
+/*$mw$*/
+BEGIN
+       EXECUTE IMMEDIATE 'ALTER TABLE &mw_prefix.user_former_groups MODIFY ufg_group VARCHAR2(255) NOT NULL';
+EXCEPTION WHEN OTHERS THEN
+       IF (SQLCODE = -01442) THEN NULL; ELSE RAISE; END IF;
+END;
+/*$mw$*/
diff --git a/maintenance/oracle/archives/patch-ufg_group-length-increase.sql b/maintenance/oracle/archives/patch-ufg_group-length-increase.sql
deleted file mode 100644 (file)
index a48b8bf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-define mw_prefix='{$wgDBprefix}';
-
-/*$mw$*/
-BEGIN
-       EXECUTE IMMEDIATE 'ALTER TABLE &mw_prefix.user_former_groups MODIFY ufg_group VARCHAR2(32) NOT NULL';
-EXCEPTION WHEN OTHERS THEN
-       IF (SQLCODE = -01442) THEN NULL; ELSE RAISE; END IF;
-END;
-/*$mw$*/
diff --git a/maintenance/oracle/archives/patch-ug_group-length-increase-255.sql b/maintenance/oracle/archives/patch-ug_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..00a5e7b
--- /dev/null
@@ -0,0 +1,9 @@
+define mw_prefix='{$wgDBprefix}';
+
+/*$mw$*/
+BEGIN
+       EXECUTE IMMEDIATE 'ALTER TABLE &mw_prefix.user_groups MODIFY ug_group VARCHAR2(255) NOT NULL';
+EXCEPTION WHEN OTHERS THEN
+       IF (SQLCODE = -01442) THEN NULL; ELSE RAISE; END IF;
+END;
+/*$mw$*/
diff --git a/maintenance/oracle/archives/patch-ug_group-length-increase.sql b/maintenance/oracle/archives/patch-ug_group-length-increase.sql
deleted file mode 100644 (file)
index 89e5532..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-define mw_prefix='{$wgDBprefix}';
-
-/*$mw$*/
-BEGIN
-       EXECUTE IMMEDIATE 'ALTER TABLE &mw_prefix.user_groups MODIFY ug_group VARCHAR2(32) NOT NULL';
-EXCEPTION WHEN OTHERS THEN
-       IF (SQLCODE = -01442) THEN NULL; ELSE RAISE; END IF;
-END;
-/*$mw$*/
index 59147eb..c14824e 100644 (file)
@@ -2,7 +2,7 @@ define mw_prefix='{$wgDBprefix}';
 
 CREATE TABLE &mw_prefix.user_former_groups (
   ufg_user   NUMBER      DEFAULT 0 NOT NULL,
-  ufg_group  VARCHAR2(16)     NOT NULL
+  ufg_group  VARCHAR2(255)     NOT NULL
 );
 ALTER TABLE &mw_prefix.user_former_groups ADD CONSTRAINT &mw_prefix.user_former_groups_fk1 FOREIGN KEY (ufg_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 CREATE UNIQUE INDEX &mw_prefix.user_former_groups_u01 ON &mw_prefix.user_former_groups (ufg_user,ufg_group);
index c3c3df9..b5b3b07 100644 (file)
@@ -31,7 +31,7 @@ INSERT INTO &mw_prefix.mwuser
 
 CREATE TABLE &mw_prefix.user_groups (
   ug_user   NUMBER      DEFAULT 0 NOT NULL,
-  ug_group  VARCHAR2(32)     NOT NULL
+  ug_group  VARCHAR2(255)     NOT NULL
 );
 ALTER TABLE &mw_prefix.user_groups ADD CONSTRAINT &mw_prefix.user_groups_fk1 FOREIGN KEY (ug_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 CREATE UNIQUE INDEX &mw_prefix.user_groups_u01 ON &mw_prefix.user_groups (ug_user,ug_group);
@@ -39,7 +39,7 @@ CREATE INDEX &mw_prefix.user_groups_i01 ON &mw_prefix.user_groups (ug_group);
 
 CREATE TABLE &mw_prefix.user_former_groups (
   ufg_user   NUMBER      DEFAULT 0 NOT NULL,
-  ufg_group  VARCHAR2(16)     NOT NULL
+  ufg_group  VARCHAR2(255)     NOT NULL
 );
 ALTER TABLE &mw_prefix.user_former_groups ADD CONSTRAINT &mw_prefix.user_former_groups_fk1 FOREIGN KEY (ufg_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 CREATE UNIQUE INDEX &mw_prefix.user_former_groups_u01 ON &mw_prefix.user_former_groups (ufg_user,ufg_group);
index 78f98f5..3b1a9b0 100644 (file)
@@ -87,7 +87,7 @@ class Orphans extends Maintenance {
                        FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id
                        WHERE page_id IS NULL
                " );
-               $orphans = $dbw->numRows( $result );
+               $orphans = $result->numRows();
                if ( $orphans > 0 ) {
                        global $wgContLang;
                        $this->output( "$orphans orphan revisions...\n" );
@@ -139,7 +139,7 @@ class Orphans extends Maintenance {
                        FROM $page LEFT OUTER JOIN $revision ON page_latest=rev_id
                        WHERE rev_id IS NULL
                " );
-               $widows = $dbw->numRows( $result );
+               $widows = $result->numRows();
                if ( $widows > 0 ) {
                        $this->output( "$widows childless pages...\n" );
                        $this->output( sprintf( "%10s %11s %2s %s\n", 'page_id', 'page_latest', 'ns', 'page_title' ) );
index 4b3c382..58fe880 100644 (file)
@@ -86,7 +86,7 @@ class PurgeList extends Maintenance {
                );
 
                $start   = 0;
-               $end = $dbr->numRows( $result );
+               $end = $result->numRows();
                $this->output( "Will purge $end pages from namespace $ns\n" );
 
                # Do remaining chunk
index 83849de..db77564 100644 (file)
@@ -53,6 +53,15 @@ class RebuildLocalisationCache extends Maintenance {
                return '1000M';
        }
 
+       public function finalSetup() {
+               # This script needs to be run to build the inital l10n cache. But if
+               # $wgLanguageCode is not 'en', it won't be able to run because there is
+               # no l10n cache. Break the cycle by forcing $wgLanguageCode = 'en'.
+               global $wgLanguageCode;
+               $wgLanguageCode = 'en';
+               return parent::finalSetup();
+       }
+
        public function execute() {
                global $wgLocalisationCacheConf;
 
index 9ba8682..fe03f51 100644 (file)
@@ -105,7 +105,7 @@ class RefreshLinks extends Maintenance {
                                array(),
                                array( 'redirect' => array( "LEFT JOIN", "page_id=rd_from" ) )
                        );
-                       $num = $dbr->numRows( $res );
+                       $num = $res->numRows();
                        $this->output( "Refreshing $num old redirects from $start...\n" );
 
                        $i = 0;
@@ -126,7 +126,7 @@ class RefreshLinks extends Maintenance {
                                        "page_id >= $start" ),
                                __METHOD__
                        );
-                       $num = $dbr->numRows( $res );
+                       $num = $res->numRows();
                        $this->output( "$num new articles...\n" );
 
                        $i = 0;
@@ -215,7 +215,7 @@ class RefreshLinks extends Maintenance {
                }
 
                $content = $page->getContent( Revision::RAW );
-               if ( null === false ) {
+               if ( $content === null ) {
                        return;
                }
 
index f06e6b0..d401dec 100644 (file)
@@ -74,7 +74,7 @@ class RunJobs extends Maintenance {
                $group = JobQueueGroup::singleton();
                do {
                        $job = ( $type === false )
-                               ? $group->pop() // job from any queue
+                               ? $group->pop( JobQueueGroup::TYPE_DEFAULT, JobQueueGroup::USE_CACHE )
                                : $group->get( $type )->pop(); // job from a single queue
                        if ( $job ) { // found a job
                                // Perform the job (logging success/failure and runtime)...
index 1dceb79..8b49517 100644 (file)
@@ -39,21 +39,24 @@ class ShowJobs extends Maintenance {
                $this->mDescription = "Show number of jobs waiting in master database";
                $this->addOption( 'group', 'Show number of jobs per job type' );
        }
+
        public function execute() {
-               $dbw = wfGetDB( DB_MASTER );
+               $group = JobQueueGroup::singleton();
                if ( $this->hasOption( 'group' ) ) {
-                       $res = $dbw->select(
-                               'job',
-                               array( 'job_cmd', 'count(*) as count' ),
-                               array(),
-                               __METHOD__,
-                               array( 'GROUP BY' => 'job_cmd' )
-                       );
-                       foreach ( $res as $row ) {
-                               $this->output( $row->job_cmd . ': ' . $row->count . "\n" );
+                       foreach ( $group->getQueueTypes() as $type ) {
+                               $queue   = $group->get( $type );
+                               $pending = $queue->getSize();
+                               $claimed = $queue->getAcquiredCount();
+                               if ( ( $pending + $claimed ) > 0 ) {
+                                       $this->output( "{$type}: $pending queued; $claimed acquired\n" );
+                               }
                        }
                } else {
-                       $this->output( $dbw->selectField( 'job', 'count(*)', '', __METHOD__ ) . "\n" );
+                       $count = 0;
+                       foreach ( $group->getQueueTypes() as $type ) {
+                               $count += $group->get( $type )->getSize();
+                       }
+                       $this->output( "$count\n" );
                }
        }
 }
diff --git a/maintenance/sqlite/archives/patch-ufg_group-length-increase-255.sql b/maintenance/sqlite/archives/patch-ufg_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..edd0a3d
--- /dev/null
@@ -0,0 +1,15 @@
+ CREATE TABLE /*_*/user_former_groups_tmp (
+  ufg_user int unsigned NOT NULL default 0,
+  ufg_group varbinary(255) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+INSERT INTO /*_*/user_former_groups_tmp
+       SELECT ufg_user, ufg_group
+               FROM /*_*/user_former_groups;
+
+DROP TABLE /*_*/user_former_groups;
+
+ALTER TABLE /*_*/user_former_groups_tmp RENAME TO /*_*/user_former_groups;
+
+CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
+
diff --git a/maintenance/sqlite/archives/patch-ufg_group-length-increase.sql b/maintenance/sqlite/archives/patch-ufg_group-length-increase.sql
deleted file mode 100644 (file)
index c6dcea5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-CREATE TABLE /*_*/user_former_groups_tmp (
-  ug_user int unsigned NOT NULL default 0,
-  ug_group varbinary(32) NOT NULL default ''
-) /*$wgDBTableOptions*/;
-
-INSERT INTO /*_*/user_former_groups_tmp
-       SELECT ug_user, ug_group
-               FROM /*_*/user_groups;
-
-DROP TABLE /*_*/user_former_groups;
-
-ALTER TABLE /*_*/user_former_groups_tmp RENAME TO /*_*/user_former_groups;
-
-CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
-
diff --git a/maintenance/sqlite/archives/patch-ug_group-length-increase-255.sql b/maintenance/sqlite/archives/patch-ug_group-length-increase-255.sql
new file mode 100644 (file)
index 0000000..3daeb7c
--- /dev/null
@@ -0,0 +1,15 @@
+CREATE TABLE /*_*/user_groups_tmp (
+  ug_user int unsigned NOT NULL default 0,
+  ug_group varbinary(255) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+INSERT INTO /*_*/user_groups_tmp
+       SELECT ug_user, ug_group
+               FROM /*_*/user_groups;
+
+DROP TABLE /*_*/user_groups;
+
+ALTER TABLE /*_*/user_groups_tmp RENAME TO /*_*/user_groups;
+
+CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
+CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
diff --git a/maintenance/sqlite/archives/patch-ug_group-length-increase.sql b/maintenance/sqlite/archives/patch-ug_group-length-increase.sql
deleted file mode 100644 (file)
index 5e81093..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-CREATE TABLE /*_*/user_groups_tmp (
-  ug_user int unsigned NOT NULL default 0,
-  ug_group varbinary(32) NOT NULL default ''
-) /*$wgDBTableOptions*/;
-
-INSERT INTO /*_*/user_groups_tmp
-       SELECT ug_user, ug_group
-               FROM /*_*/user_groups;
-
-DROP TABLE /*_*/user_groups;
-
-ALTER TABLE /*_*/user_groups_tmp RENAME TO /*_*/user_groups;
-
-CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
-CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
index 951ab1a..d636283 100644 (file)
@@ -115,7 +115,7 @@ class CompressOld extends Maintenance {
                do {
                        $res = $dbw->select( 'text', array( 'old_id','old_flags','old_text' ),
                                "old_id>=$start", __METHOD__, array( 'ORDER BY' => 'old_id', 'LIMIT' => $chunksize, 'FOR UPDATE' ) );
-                       if( $dbw->numRows( $res ) == 0 ) {
+                       if( $res->numRows() == 0 ) {
                                break;
                        }
                        $last = $start;
@@ -256,7 +256,7 @@ class CompressOld extends Maintenance {
                        $pageRes = $dbr->select( 'page',
                                array('page_id', 'page_namespace', 'page_title','page_latest'),
                                $pageConds + array('page_id' => $pageId), __METHOD__ );
-                       if ( $dbr->numRows( $pageRes ) == 0 ) {
+                       if ( $pageRes->numRows() == 0 ) {
                                continue;
                        }
                        $pageRow = $dbr->fetchObject( $pageRes );
index c9a188b..14d7422 100644 (file)
@@ -152,7 +152,7 @@ CREATE TABLE /*_*/user_groups (
   -- with particular permissions. A user will have the combined
   -- permissions of any group they're explicitly in, plus
   -- the implicit '*' and 'user' groups.
-  ug_group varbinary(32) NOT NULL default ''
+  ug_group varbinary(255) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
@@ -164,7 +164,7 @@ CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
 CREATE TABLE /*_*/user_former_groups (
   -- Key to user_id
   ufg_user int unsigned NOT NULL default 0,
-  ufg_group varbinary(32) NOT NULL default ''
+  ufg_group varbinary(255) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
index 9987ee1..8a760ac 100644 (file)
@@ -97,6 +97,7 @@ return array(
                        'common/commonInterface.css' => array( 'media' => 'screen' ),
                        'vector/screen.css' => array( 'media' => 'screen' ),
                        'vector/screen-hd.css' => array( 'media' => 'screen and (min-width: 982px)' ),
+                       'vector/print.css' => array( 'media' => 'print' ),
                ),
                'scripts' => 'vector/vector.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
index cddf6cc..602aadb 100644 (file)
        }
 
        $( document ).ready( function () {
+               // Do not enable on user .js/.css pages, as there's no sane way of "previewing"
+               // the scripts or styles without reloading the page.
+               if ( $( '#mw-userjsyoucanpreview' ).length || $( '#mw-usercssyoucanpreview' ).length ) {
+                       return;
+               }
+
                // The following elements can change in a preview but are not output
                // by the server when they're empty until the preview reponse.
                // TODO: Make the server output these always (in a hidden state), so we don't
index 7a9ceee..c15fa0d 100644 (file)
@@ -2,13 +2,9 @@
  * This module enables double-click-to-edit functionality
  */
 ( function ( mw, $ ) {
-       $( function () {
-               var url = $( '#ca-edit a' ).attr( 'href' );
-               if ( url ) {
-                       mw.util.$content.dblclick( function ( e ) {
-                               e.preventDefault();
-                               window.location = url;
-                       } );
-               }
+       mw.util.$content.dblclick( function ( e ) {
+               e.preventDefault();
+               // Trigger native HTMLElement click instead of opening URL (bug 43052)
+               $( '#ca-edit a' ).get( 0 ).click();
        } );
 }( mediaWiki, jQuery ) );
index d02d432..61d9d15 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/**
  * JavaScript to enable right click edit functionality.
  * When the user right-clicks in a heading, it will open the
  * edit screen.
@@ -8,23 +8,19 @@ jQuery( function ( $ ) {
        // Don't use the ":has:(.editsection a)" selector because it performs very bad.
        // http://jsperf.com/jq-1-7-2-vs-jq-1-8-1-performance-of-mw-has/2
        $( document ).on( 'contextmenu', 'h1, h2, h3, h4, h5, h6', function ( e ) {
-               var $edit, href;
-
-               $edit = $( this ).find( '.editsection a' );
+               var $edit = $( this ).find( '.editsection a' );
                if ( !$edit.length ) {
                        return;
                }
 
-               // Get href of the editsection link
-               href = $edit.prop( 'href' );
-
                // Headings can contain rich text.
                // Make sure to not block contextmenu events on (other) anchor tags
                // inside the heading (e.g. to do things like copy URL, open in new tab, ..).
                // e.target can be the heading, but it can also be anything inside the heading.
-               if ( href && e.target.nodeName.toLowerCase() !== 'a' ) {
-                       window.location = href;
+               if ( e.target.nodeName.toLowerCase() !== 'a' ) {
+                       // Trigger native HTMLElement click instead of opening URL (bug 43052)
                        e.preventDefault();
+                       $edit.get( 0 ).click();
                }
        } );
 } );
index 6e2d3b4..c599f4b 100644 (file)
                                regularLiteral, regularLiteralWithoutBar, regularLiteralWithoutSpace, backslash, anyCharacter,
                                escapedOrLiteralWithoutSpace, escapedOrLiteralWithoutBar, escapedOrRegularLiteral,
                                whitespace, dollar, digits,
-                               openExtlink, closeExtlink, openLink, closeLink, templateName, pipe, colon,
+                               openExtlink, closeExtlink, wikilinkPage, wikilinkContents, openLink, closeLink, templateName, pipe, colon,
                                templateContents, openTemplate, closeTemplate,
                                nonWhitespaceExpression, paramExpression, expression, result;
 
                                 var result = nOrMore( 1, escapedOrLiteralWithoutBar )();
                                 return result === null ? null : result.join('');
                        }
+
+                       // Used for wikilink page names.  Like literalWithoutBar, but
+                       // without allowing escapes.
+                       function unescapedLiteralWithoutBar() {
+                               var result = nOrMore( 1, regularLiteralWithoutBar )();
+                               return result === null ? null : result.join('');
+                       }
+
                        function literal() {
                                 var result = nOrMore( 1, escapedOrRegularLiteral )();
                                 return result === null ? null : result.join('');
                        }
                        openLink = makeStringParser( '[[' );
                        closeLink = makeStringParser( ']]' );
+                       pipe = makeStringParser( '|' );
+
+                       function template() {
+                               var result = sequence( [
+                                       openTemplate,
+                                       templateContents,
+                                       closeTemplate
+                               ] );
+                               return result === null ? null : result[1];
+                       }
+
+                       wikilinkPage = choice( [
+                               unescapedLiteralWithoutBar,
+                               template
+                       ] );
+
+                       function pipedWikilink() {
+                               var result = sequence( [
+                                       wikilinkPage,
+                                       pipe,
+                                       expression
+                               ] );
+                               return result === null ? null : [ result[0], result[2] ];
+                       }
+
+                       wikilinkContents = choice( [
+                               pipedWikilink,
+                               wikilinkPage // unpiped link
+                       ] );
+
                        function link() {
-                               var result, parsedResult;
+                               var result, parsedResult, parsedLinkContents;
                                result = null;
+
                                parsedResult = sequence( [
                                        openLink,
-                                       expression,
+                                       wikilinkContents,
                                        closeLink
                                ] );
                                if ( parsedResult !== null ) {
-                                        result = [ 'WLINK', parsedResult[1] ];
+                                       parsedLinkContents = parsedResult[1];
+                                       result = [ 'WLINK' ].concat( parsedLinkContents );
                                }
                                return result;
                        }
                                // use a CONCAT operator if there are multiple nodes, otherwise return the first node, raw.
                                return expr.length > 1 ? [ 'CONCAT' ].concat( expr ) : expr[0];
                        }
-                       pipe = makeStringParser( '|' );
+
                        function templateWithReplacement() {
                                var result = sequence( [
                                        templateName,
                        ] );
                        openTemplate = makeStringParser('{{');
                        closeTemplate = makeStringParser('}}');
-                       function template() {
-                               var result = sequence( [
-                                       openTemplate,
-                                       templateContents,
-                                       closeTemplate
-                               ] );
-                               return result === null ? null : result[1];
-                       }
                        nonWhitespaceExpression = choice( [
                                template,
                                link,
                                replacement,
                                literalWithoutBar
                        ] );
+
                        expression = choice( [
                                template,
                                link,
                                replacement,
                                literal
                        ] );
+
                        function start() {
                                var result = nOrMore( 0, expression )();
                                if ( result === null ) {
 
                /**
                 * Transform wiki-link
-                * TODO unimplemented
+                *
+                * TODO:
+                * It only handles basic cases, either no pipe, or a pipe with an explicit
+                * anchor.
+                *
+                * It does not attempt to handle features like the pipe trick.
+                * However, the pipe trick should usually not be present in wikitext retrieved
+                * from the server, since the replacement is done at save time.
+                * It may, though, if the wikitext appears in extension-controlled content.
+                *
                 * @param nodes
                 */
-               wlink: function () {
-                       return 'unimplemented';
+               wlink: function ( nodes ) {
+                       var page, anchor, url;
+
+                       page = nodes[0];
+                       url = mw.util.wikiGetlink( page );
+
+                       // [[Some Page]] or [[Namespace:Some Page]]
+                       if ( nodes.length === 1 ) {
+                               anchor = page;
+                       }
+
+                       /*
+                        * [[Some Page|anchor text]] or
+                        * [[Namespace:Some Page|anchor]
+                        */
+                       else {
+                               anchor = nodes[1];
+                       }
+
+                       return $( '<a />' ).attr( {
+                               title: page,
+                               href: url
+                       } ).text( anchor );
                },
 
                /**
                        var form = nodes[0],
                                word = nodes[1];
                        return word && form && this.language.convertGrammar( word, form );
+               },
+
+               /**
+                * Tranform parsed structure into a int: (interface language) message include
+                * Invoked by putting {{MediaWiki:othermessage}} into a message
+                * @param {Array} of nodes
+                * @return {string} Other message
+                */
+               int: function ( nodes ) {
+                       return mw.jqueryMsg.getMessageFunction()( nodes[0].toLowerCase() );
                }
        };
        // Deprecated! don't rely on gM existing.
                // Caching is somewhat problematic, because we do need different message functions for different maps, so
                // we'd have to cache the parser as a member of this.map, which sounds a bit ugly.
                // Do not use mw.jqueryMsg unless required
-               if ( this.map.get( this.key ).indexOf( '{{' ) < 0 ) {
+               if ( !/\{\{|\[/.test(this.map.get( this.key ) ) ) {
                        // Fall back to mw.msg's simple parser
                        return oldParser.apply( this );
                }
index e059ed1..7879d6f 100644 (file)
@@ -37,6 +37,7 @@ templateParam
 templateName
   = tn:[A-Za-z_]+ { return tn.join('').toUpperCase() }
 
+/* TODO: Update to reflect separate piped and unpiped handling */
 link
   = "[[" w:expression "]]" { return [ 'WLINK', w ]; }
 
index 66b2a15..21b07f7 100644 (file)
@@ -290,7 +290,7 @@ class CologneBlueTemplate extends BaseTemplate {
                <div id="siteNotice"><?php echo $this->getSkin()->getSiteNotice() ?></div>
                <?php } ?>
                <h1 id="firstHeading" lang="<?php
-                       $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+                       $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageViewLanguage()->getCode();
                        $this->html( 'pageLanguage' );
                ?>"><span dir="auto"><?php echo $this->data['title'] ?></span></h1>
                <?php if ( $this->translator->translate( 'tagline' ) ) { ?>
index 466d16b..9dbefb1 100644 (file)
@@ -66,7 +66,7 @@ class ModernTemplate extends MonoBookTemplate {
 
        <!-- heading -->
        <div id="mw_header"><h1 id="firstHeading" lang="<?php
-               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageViewLanguage()->getCode();
                $this->html( 'pageLanguage' );
        ?>"><span dir="auto"><?php $this->html('title') ?></span></h1></div>
 
index 1b262a6..f03d31b 100644 (file)
@@ -85,7 +85,7 @@ class MonoBookTemplate extends BaseTemplate {
        <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
 
        <h1 id="firstHeading" class="firstHeading" lang="<?php
-               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageViewLanguage()->getCode();
                $this->html( 'pageLanguage' );
        ?>"><span dir="auto"><?php $this->html('title') ?></span></h1>
        <div id="bodyContent" class="mw-body">
index b1f9a32..c4349c6 100644 (file)
@@ -166,7 +166,7 @@ class VectorTemplate extends BaseTemplate {
                        <?php endif; ?>
                        <!-- firstHeading -->
                        <h1 id="firstHeading" class="firstHeading" lang="<?php
-                               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+                               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageViewLanguage()->getCode();
                                $this->html( 'pageLanguage' );
                        ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
                        <!-- /firstHeading -->
index 25c6068..6cb213f 100644 (file)
@@ -126,7 +126,8 @@ li#privacy,
 tr.mw-metadata-show-hide-extended,
 span.mw-filepage-other-resolutions,
 #filetoc,
-.usermessage {
+.usermessage,
+#mw-navigation {
        /* Hides all the elements irrelevant for printing */
        display: none;
 }
diff --git a/skins/vector/print.css b/skins/vector/print.css
new file mode 100644 (file)
index 0000000..1bc0146
--- /dev/null
@@ -0,0 +1,3 @@
+div#footer {
+       margin-left: 0;
+}
index 1a3e5bb..bed5c24 100644 (file)
@@ -1207,6 +1207,23 @@ c
 
 !!end
 
+!!test
+2c. Indent-Pre and tables (bug 42252)
+!!input
+{|
+ |+ foo
+ !  | bar
+|}
+!!result
+<table>
+<caption> foo
+</caption>
+<tr>
+<th> bar
+</th></tr></table>
+
+!!end
+
 !!test
 3a. Indent-Pre and block tags (single-line html)
 !!input
@@ -2724,6 +2741,45 @@ A table with nothing but a caption
 
 !! end
 
+!! test
+A table with caption with default-spaced attributes and a table row
+!! input
+{|
+|+ style="color: red;" | caption1
+|-
+| foo
+|}
+!! result
+<table>
+<caption style="color: red;"> caption1
+</caption>
+<tr>
+<td> foo
+</td></tr></table>
+
+!! end
+
+!! test
+A table with captions with non-default spaced attributes and a table row
+!! input
+{|
+|+style="color: red;"|caption2
+|+ style="color: red;"| caption3
+|-
+| foo
+|}
+!! result
+<table>
+<caption style="color: red;">caption2
+</caption>
+<caption style="color: red;"> caption3
+</caption>
+<tr>
+<td> foo
+</td></tr></table>
+
+!! end
+
 !! test
 Table td-cell syntax variations
 !! input
@@ -3232,6 +3288,28 @@ Link with suffix
 </p>
 !! end
 
+!! article
+prefixed article
+!! text
+Some text
+!! endarticle
+
+!! test
+Bug 43661: Piped links with identical prefixes
+!! input
+[[prefixed article|prefixed articles with spaces]]
+
+[[prefixed article|prefixed articlesaoeu]]
+
+[[Main Page|Main Page test]]
+!! result
+<p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articles with spaces</a>
+</p><p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articlesaoeu</a>
+</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page test</a>
+</p>
+!! end
+
+
 !! test
 Link with HTML entity in suffix / tail
 !! input
@@ -4912,8 +4990,14 @@ Main Page
 Template as link source
 !! input
 [[{{linktest2}}]]
+
+[[{{linktest2}}|Main Page]]
+
+[[{{linktest2}}]]Page
 !! result
 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
+</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
+</p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>Page
 </p>
 !! end
 
@@ -5427,8 +5511,23 @@ Templates: Links: 2. Generation of link href
 Templates: Links: 3. Generation of part of a link href
 !!input
 [[Fo{{echo|o}}|bar]]
+
+[[Foo{{echo|bar}}]]
+
+[[Foo{{echo|bar}}baz]]
+
+[[Foo{{echo|bar}}|bar]]
+
+[[:Foo{{echo|bar}}]]
+
+[[:Foo{{echo|bar}}|bar]]
 !!result
 <p><a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+</p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
+</p><p><a href="/index.php?title=Foobarbaz&amp;action=edit&amp;redlink=1" class="new" title="Foobarbaz (page does not exist)">Foobarbaz</a>
+</p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
+</p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
+</p><p><a href="/index.php?title=Foobar&amp;action=edit&amp;redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
 </p>
 !!end
 
@@ -7744,6 +7843,15 @@ I always thought &eacute; was a cute letter.
 </p>
 !! end
 
+!! test
+text with entity-escaped character entity-like string: eacute
+!! input
+I always thought &amp;eacute; was a cute letter.
+!! result
+<p>I always thought &amp;eacute; was a cute letter.
+</p>
+!! end
+
 !! test
 text with undefined character entity: xacute
 !! input
@@ -10895,6 +11003,29 @@ language=sr cat
 !! end
 
 
+!! article
+Category:分类
+!! text
+blah
+!! endarticle
+
+!! article
+Category:分類
+!! text
+blah
+!! endarticle
+
+!! test
+Don't convert blue categorylinks to another variant (bug 33210)
+!! options
+language=zh cat
+!! input
+[[A]][[Category:分类]]
+!! result
+<a href="/wiki/Category:%E5%88%86%E7%B1%BB" title="Category:分类">分类</a>
+!! end
+
+
 !! test
 Stripping -{}- tags (language variants)
 !! options
@@ -10967,6 +11098,20 @@ language=zh variant=zh-tw
 !! end
 
 
+!! test
+Conversion around HTML tags
+!! options
+language=sr variant=sr-ec
+!! input
+-{H|span=>sr-ec:script;title=>sr-ec:src;}-
+<span title="La-{sr-el:L;sr-ec:C;}-tin">ski</span>
+!! result
+<p>
+<span title="ЛаCтин">ски</span>
+</p>
+!! end
+
+
 !! test
 Explicit session-wise language variant mapping (A flag and - flag)
 !! options
@@ -11021,6 +11166,20 @@ China
 </p>
 !! end
 
+!! test
+Recursive conversion of alt and title attrs shouldn't clear converter state
+!! options
+language=zh variant=zh-cn showtitle
+!! input
+-{H|zh-cn:Exclamation;zh-tw:exclamation;}-
+Should be stripped-{T|zh-cn:China;zh-tw:Taiwan}-<span title="exclamation">!</span>
+!! result
+China
+<p>
+Should be stripped<span title="Exclamation">!</span>
+</p>
+!! end
+
 !! test
 Bug 24072: more test on conversion rule for title
 !! options
@@ -13293,6 +13452,23 @@ disabled
 </p>
 !! end
 
+!! test
+HTML tag with necessary entities in attributes
+!! input
+<span title="&amp;amp;">foo</span>
+!! result
+<p><span title="&amp;amp;">foo</span>
+</p>
+!! end
+
+!! test
+HTML tag with 'unnecessary' entity encoding in attributes
+!! input
+<span title="&amp;">foo</span>
+!! result
+<p><span title="&amp;">foo</span>
+</p>
+!! end
 
 TODO:
 more images
index 8a55dae..c3e2a30 100644 (file)
@@ -2,7 +2,7 @@
 .DEFAULT: warning
 
 SHELL = /bin/sh
-CONFIG_FILE = $(shell pwd)/suite.xml
+CONFIG_FILE = ${PWD}/suite.xml
 PHP = php
 PU = ${PHP} phpunit.php --configuration ${CONFIG_FILE} ${FLAGS}
 
index b675000..3894435 100644 (file)
@@ -6,6 +6,7 @@ class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
                'regex=' => false,
                'file=' => false,
                'use-filebackend=' => false,
+               'use-bagostuff=' => false,
                'keep-uploads' => false,
                'use-normal-tables' => false,
                'reuse-db' => false,
index 03b94ae..a793bab 100644 (file)
@@ -23,6 +23,7 @@ class TemplateCategoriesTest extends MediaWikiLangTestCase {
                $status = $template->doEditContent( new WikitextContent( '[[Category:Solved bugs]]' ), 'Add a category through a template', 0, false, $user );
 
                // Run the job queue
+               JobQueueGroup::destroySingletons();
                $jobs = new RunJobs;
                $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
                $jobs->execute();
index 6352160..d7da0db 100644 (file)
@@ -55,6 +55,10 @@ class TimestampTest extends MediaWikiTestCase {
        function testHumanOutput() {
                $timestamp = new MWTimestamp( time() - 3600 );
                $this->assertEquals( "1 hour ago", $timestamp->getHumanTimestamp()->inLanguage( 'en' )->text() );
+               $timestamp = new MWTimestamp( time() - 5184000 );
+               $this->assertEquals( "2 months ago", $timestamp->getHumanTimestamp()->inLanguage( 'en' )->text() );
+               $timestamp = new MWTimestamp( time() - 31536000 );
+               $this->assertEquals( "1 year ago", $timestamp->getHumanTimestamp()->inLanguage( 'en' )->text() );
        }
 
        /**
diff --git a/tests/phpunit/includes/api/ApiAccountCreationTest.php b/tests/phpunit/includes/api/ApiAccountCreationTest.php
new file mode 100644 (file)
index 0000000..a764e9d
--- /dev/null
@@ -0,0 +1,144 @@
+<?php
+
+/**
+ * @group Database
+ * @group API
+ */
+class ApiCreateAccountTest extends ApiTestCase {
+       function setUp() {
+               parent::setUp();
+               LoginForm::setCreateaccountToken();
+       }
+
+       /**
+        * Test the account creation API with a valid request. Also
+        * make sure the new account can log in and is valid.
+        *
+        * This test does multiple API requests so it might end up being
+        * a bit slow. Raise the default timeout.
+        * @group medium
+        */
+       function testValid() {
+               global $wgServer;
+
+               if ( !isset( $wgServer ) ) {
+                       $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
+               }
+
+               $password = User::randomPassword();
+
+               $ret = $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'name' => 'Apitestnew',
+                       'password' => $password,
+                       'email' => 'test@example.com',
+                       'realname' => 'Test Name'
+               ) );
+
+               $result = $ret[0];
+               $this->assertNotInternalType( 'bool', $result );
+               $this->assertNotInternalType( 'null', $result['createaccount'] );
+
+               // Should first ask for token.
+               $a = $result['createaccount'];
+               $this->assertEquals( 'needtoken', $a['result'] );
+               $token = $a['token'];
+
+               // Finally create the account
+               $ret = $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'name' => 'Apitestnew',
+                       'password' => $password,
+                       'token' => $token,
+                       'email' => 'test@domain.test',
+                       'realname' => 'Test Name' ), $ret[2]
+               );
+
+               $result = $ret[0];
+               $this->assertNotInternalType( 'bool', $result );
+               $this->assertEquals( 'success', $result['createaccount']['result'] );
+
+               // Try logging in with the new user.
+               $ret = $this->doApiRequest( array(
+                       'action' => 'login',
+                       'lgname' => 'Apitestnew',
+                       'lgpassword' => $password,
+                       )
+               );
+
+               $result = $ret[0];
+               $this->assertNotInternalType( 'bool', $result );
+               $this->assertNotInternalType( 'null', $result['login'] );
+
+               $a = $result['login']['result'];
+               $this->assertEquals( 'NeedToken', $a );
+               $token = $result['login']['token'];
+
+               $ret = $this->doApiRequest( array(
+                       'action' => 'login',
+                       'lgtoken' => $token,
+                       'lgname' => 'Apitestnew',
+                       'lgpassword' => $password,
+                       ), $ret[2]
+               );
+
+               $result = $ret[0];
+
+               $this->assertNotInternalType( 'bool', $result );
+               $a = $result['login']['result'];
+
+               $this->assertEquals( 'Success', $a );
+       }
+
+       /**
+        * Make sure requests with no names are invalid.
+        * @expectedException UsageException
+        */
+       function testNoName() {
+               $ret = $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'token' => LoginForm::getCreateaccountToken(),
+                       'password' => 'password',
+               ) );
+       }
+
+       /**
+        * Make sure requests with no password are invalid.
+        * @expectedException UsageException
+        */
+       function testNoPassword() {
+               $ret = $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'name' => 'testName',
+                       'token' => LoginForm::getCreateaccountToken(),
+               ) );
+       }
+
+       /**
+        * Make sure requests with existing users are invalid.
+        * @expectedException UsageException
+        */
+       function testExistingUser() {
+               $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'name' => 'Apitestsysop',
+                       'token' => LoginForm::getCreateaccountToken(),
+                       'password' => 'password',
+                       'email' => 'test@domain.test',
+               ) );
+       }
+
+       /**
+        * Make sure requests with invalid emails are invalid.
+        * @expectedException UsageException
+        */
+       function testInvalidEmail() {
+               $this->doApiRequest( array(
+                       'action' => 'createaccount',
+                       'name' => 'Test User',
+                       'token' => LoginForm::getCreateaccountToken(),
+                       'password' => 'password',
+                       'email' => 'sjlfsjklj',
+               ) );
+       }
+}
index c564403..2331459 100644 (file)
@@ -22,7 +22,11 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
 
                // Set up groups
                $this->mUserMock->expects( $this->any() )
-                       ->method( 'getEffectiveGroups' )->will( $this->returnValue( array( '*', 'user')) );
+                       ->method( 'getEffectiveGroups' )->will( $this->returnValue( array( '*', 'user' ) ) );
+
+               // Set up callback for User::getOptionKinds
+               $this->mUserMock->expects( $this->any() )
+                       ->method( 'getOptionKinds' )->will( $this->returnCallback( array( $this, 'getOptionKinds' ) ) );
 
                // Create a new context
                $this->mContext = new DerivativeContext( new RequestContext() );
@@ -56,6 +60,8 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
        }
 
        public function hookGetPreferences( $user, &$preferences ) {
+               $preferences = array();
+
                foreach ( array( 'name', 'willBeNull', 'willBeEmpty', 'willBeHappy' ) as $k ) {
                        $preferences[$k] = array(
                                'type' => 'text',
@@ -83,6 +89,36 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                return true;
        }
 
+       public function getOptionKinds( IContextSource $context, $options = null ) {
+               // Match with above.
+               $kinds = array(
+                       'name' => 'registered',
+                       'willBeNull' => 'registered',
+                       'willBeEmpty' => 'registered',
+                       'willBeHappy' => 'registered',
+                       'testmultiselect-opt1' => 'registered-multiselect',
+                       'testmultiselect-opt2' => 'registered-multiselect',
+                       'testmultiselect-opt3' => 'registered-multiselect',
+                       'testmultiselect-opt4' => 'registered-multiselect',
+               );
+
+               if ( $options === null ) {
+                       return $kinds;
+               }
+
+               $mapping = array();
+               foreach ( $options as $key => $value ) {
+                       if ( isset( $kinds[$key] ) ) {
+                               $mapping[$key] = $kinds[$key];
+                       } elseif ( substr( $key, 0, 7 ) === 'userjs-' ) {
+                               $mapping[$key] = 'userjs';
+                       } else {
+                               $mapping[$key] = 'unused';
+                       }
+               }
+               return $mapping;
+       }
+
        private function getSampleRequest( $custom = array() ) {
                $request = array(
                        'token' => '123ABC',
@@ -216,24 +252,24 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->mUserMock->expects( $this->never() )
                        ->method( 'resetOptions' );
 
-               $this->mUserMock->expects( $this->at( 1 ) )
+               $this->mUserMock->expects( $this->at( 2 ) )
                        ->method( 'getOptions' );
 
-               $this->mUserMock->expects( $this->at( 2 ) )
+               $this->mUserMock->expects( $this->at( 3 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'willBeNull' ), $this->equalTo( null ) );
 
-               $this->mUserMock->expects( $this->at( 3 ) )
+               $this->mUserMock->expects( $this->at( 4 ) )
                        ->method( 'getOptions' );
 
-               $this->mUserMock->expects( $this->at( 4 ) )
+               $this->mUserMock->expects( $this->at( 5 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'willBeEmpty' ), $this->equalTo( '' ) );
 
-               $this->mUserMock->expects( $this->at( 5 ) )
+               $this->mUserMock->expects( $this->at( 6 ) )
                        ->method( 'getOptions' );
 
-               $this->mUserMock->expects( $this->at( 6 ) )
+               $this->mUserMock->expects( $this->at( 7 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) );
 
@@ -251,17 +287,17 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->mUserMock->expects( $this->once() )
                        ->method( 'resetOptions' );
 
-               $this->mUserMock->expects( $this->at( 2 ) )
+               $this->mUserMock->expects( $this->at( 3 ) )
                        ->method( 'getOptions' );
 
-               $this->mUserMock->expects( $this->at( 3 ) )
+               $this->mUserMock->expects( $this->at( 4 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'willBeHappy' ), $this->equalTo( 'Happy' ) );
 
-               $this->mUserMock->expects( $this->at( 4 ) )
+               $this->mUserMock->expects( $this->at( 5 ) )
                        ->method( 'getOptions' );
 
-               $this->mUserMock->expects( $this->at( 5 ) )
+               $this->mUserMock->expects( $this->at( 6 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'name' ), $this->equalTo( 'value' ) );
 
@@ -284,19 +320,19 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->mUserMock->expects( $this->never() )
                        ->method( 'resetOptions' );
 
-               $this->mUserMock->expects( $this->at( 1 ) )
+               $this->mUserMock->expects( $this->at( 2 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'testmultiselect-opt1' ), $this->equalTo( true ) );
 
-               $this->mUserMock->expects( $this->at( 2 ) )
+               $this->mUserMock->expects( $this->at( 3 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'testmultiselect-opt2' ), $this->equalTo( false ) );
 
-               $this->mUserMock->expects( $this->at( 3 ) )
+               $this->mUserMock->expects( $this->at( 4 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'testmultiselect-opt3' ), $this->equalTo( false ) );
 
-               $this->mUserMock->expects( $this->at( 4 ) )
+               $this->mUserMock->expects( $this->at( 5 ) )
                        ->method( 'setOption' )
                        ->with( $this->equalTo( 'testmultiselect-opt4' ), $this->equalTo( false ) );
 
@@ -311,4 +347,47 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
 
                $this->assertEquals( self::$Success, $response );
        }
+
+       public function testUnknownOption() {
+               $this->mUserMock->expects( $this->never() )
+                       ->method( 'resetOptions' );
+
+               $this->mUserMock->expects( $this->never() )
+                       ->method( 'saveSettings' );
+
+               $request = $this->getSampleRequest( array(
+                       'change' => 'unknownOption=1'
+               ) );
+
+               $response = $this->executeQuery( $request );
+
+               $this->assertEquals( array(
+                       'options' => 'success',
+                       'warnings' => array(
+                               'options' => array(
+                                       '*' => "Validation error for 'unknownOption': not a valid preference"
+                               )
+                       )
+               ), $response );
+       }
+
+       public function testUserjsOption() {
+               $this->mUserMock->expects( $this->never() )
+                       ->method( 'resetOptions' );
+
+               $this->mUserMock->expects( $this->at( 2 ) )
+                       ->method( 'setOption' )
+                       ->with( $this->equalTo( 'userjs-option' ), $this->equalTo( '1' ) );
+
+               $this->mUserMock->expects( $this->once() )
+                       ->method( 'saveSettings' );
+
+               $request = $this->getSampleRequest( array(
+                       'change' => 'userjs-option=1'
+               ) );
+
+               $response = $this->executeQuery( $request );
+
+               $this->assertEquals( self::$Success, $response );
+       }
 }
index 7958a8a..a391fc5 100644 (file)
@@ -232,7 +232,7 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
         * @todo: currently only checks list of tables
         */
        public function testUpgrades() {
-               global $IP, $wgVersion;
+               global $IP, $wgVersion, $wgProfileToDatabase;
 
                // Versions tested
                $versions = array(
@@ -251,6 +251,9 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
 
                $currentDB = new DatabaseSqliteStandalone( ':memory:' );
                $currentDB->sourceFile( "$IP/maintenance/tables.sql" );
+               if ( $wgProfileToDatabase ) {
+                       $currentDB->sourceFile( "$IP/maintenance/sqlite/archives/patch-profiling.sql" );
+               }
                $currentTables = $this->getTables( $currentDB );
                sort( $currentTables );
 
index 2ed3dd3..4cadf31 100644 (file)
  * @ingroup Test
  *
  * @group ORM
+ * @group Database
  *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @author Daniel Kinzler
  */
-abstract class ORMTableTest extends MediaWikiTestCase {
+class ORMTableTest extends MediaWikiTestCase {
 
        /**
         * @since 1.21
         * @return string
         */
-       protected abstract function getTableClass();
+       protected function getTableClass() {
+               return 'PageORMTableForTesting';
+       }
 
        /**
         * @since 1.21
@@ -62,4 +66,81 @@ abstract class ORMTableTest extends MediaWikiTestCase {
                $this->assertTrue( $class::singleton() === $class::singleton() );
        }
 
+       /**
+        * @since 1.21
+        */
+       public function testIgnoreErrorsOverride() {
+               $table = $this->getTable();
+
+               $db = $table->getReadDbConnection();
+               $db->ignoreErrors( true );
+
+               try {
+                       $table->rawSelect( "this is invalid" );
+                       $this->fail( "An invalid query should trigger a DBQueryError even if ignoreErrors is enabled." );
+               } catch ( DBQueryError $ex ) {
+                       $this->assertTrue( true, "just making phpunit happy" );
+               }
+
+               $db->ignoreErrors( false );
+       }
+
+}
+
+/**
+ * Dummy ORM table for testing, reading Title objects from the page table.
+ *
+ * @since 1.21
+ */
+
+class PageORMTableForTesting extends ORMTable {
+
+       /**
+        * @see ORMTable::getName
+        *
+        * @return string
+        */
+       public function getName() {
+               return 'page';
+       }
+
+       /**
+        * @see ORMTable::getRowClass
+        *
+        * @return string
+        */
+       public function getRowClass() {
+               return 'Title';
+       }
+
+       /**
+        * @see ORMTable::newRow
+        *
+        * @return IORMRow
+        */
+       public function newRow( array $data, $loadDefaults = false ) {
+               return Title::makeTitle( $data['namespace'], $data['title'] );
+       }
+
+       /**
+        * @see ORMTable::getFields
+        *
+        * @return array
+        */
+       public function getFields() {
+               return array(
+                       'id' => 'int',
+                       'namespace' => 'int',
+                       'title' => 'str',
+               );
+       }
+
+       /**
+        * @see ORMTable::getFieldPrefix
+        *
+        * @return string
+        */
+       protected function getFieldPrefix() {
+               return 'page_';
+       }
 }
diff --git a/tests/phpunit/includes/objectcache/BagOStuffTest.php b/tests/phpunit/includes/objectcache/BagOStuffTest.php
new file mode 100644 (file)
index 0000000..ab3d811
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * This class will test BagOStuff.
+ *
+ * @author     Matthias Mullie <mmullie@wikimedia.org>
+ */
+class BagOStuffTest extends MediaWikiTestCase {
+       private $cache;
+
+       protected function setUp() {
+               parent::setUp();
+
+               // type defined through parameter
+               if ( $this->getCliArg( 'use-bagostuff=' ) ) {
+                       $name = $this->getCliArg( 'use-bagostuff=' );
+
+                       $this->cache = ObjectCache::newFromId( $name );
+
+               // no type defined - use simple hash
+               } else {
+                       $this->cache = new HashBagOStuff;
+               }
+
+               $this->cache->delete( wfMemcKey( 'test' ) );
+       }
+
+       protected function tearDown() {
+       }
+
+       public function testMerge() {
+               $key = wfMemcKey( 'test' );
+
+               $usleep = 0;
+
+               /**
+                * Callback method: append "merged" to whatever is in cache.
+                *
+                * @param BagOStuff $cache
+                * @param string $key
+                * @param int $existingValue
+                * @use int $usleep
+                * @return int
+                */
+               $callback = function( BagOStuff $cache, $key, $existingValue ) use ( &$usleep ) {
+                       // let's pretend this is an expensive callback to test concurrent merge attempts
+                       usleep( $usleep );
+
+                       if ( $existingValue === false ) {
+                               return 'merged';
+                       }
+
+                       return $existingValue . 'merged';
+               };
+
+               // merge on non-existing value
+               $merged = $this->cache->merge( $key, $callback, 0 );
+               $this->assertTrue( $merged );
+               $this->assertEquals( $this->cache->get( $key ), 'merged' );
+
+               // merge on existing value
+               $merged = $this->cache->merge( $key, $callback, 0 );
+               $this->assertTrue( $merged );
+               $this->assertEquals( $this->cache->get( $key ), 'mergedmerged' );
+
+               /*
+                * Test concurrent merges by forking this process, if:
+                * - not manually called with --use-bagostuff
+                * - pcntl_fork is supported by the system
+                * - cache type will correctly support calls over forks
+                */
+               $fork = (bool) $this->getCliArg( 'use-bagostuff=' );
+               $fork &= function_exists( 'pcntl_fork' );
+               $fork &= !$this->cache instanceof HashBagOStuff;
+               $fork &= !$this->cache instanceof EmptyBagOStuff;
+               $fork &= !$this->cache instanceof MultiWriteBagOStuff;
+               if ( $fork ) {
+                       // callback should take awhile now so that we can test concurrent merge attempts
+                       $usleep = 5000;
+
+                       $pid = pcntl_fork();
+                       if ( $pid == -1 ) {
+                               // can't fork, ignore this test...
+                       } elseif ( $pid ) {
+                               // wait a little, making sure that the child process is calling merge
+                               usleep( 3000 );
+
+                               // attempt a merge - this should fail
+                               $merged = $this->cache->merge( $key, $callback, 0, 1 );
+
+                               // merge has failed because child process was merging (and we only attempted once)
+                               $this->assertFalse( $merged );
+
+                               // make sure the child's merge is completed and verify
+                               usleep( 3000 );
+                               $this->assertEquals( $this->cache->get( $key ), 'mergedmergedmerged' );
+                       } else {
+                               $this->cache->merge( $key, $callback, 0, 1 );
+
+                               // Note: I'm not even going to check if the merge worked, I'll
+                               // compare values in the parent process to test if this merge worked.
+                               // I'm just going to exit this child process, since I don't want the
+                               // child to output any test results (would be rather confusing to
+                               // have test output twice)
+                               exit;
+                       }
+               }
+       }
+}
diff --git a/tests/phpunit/languages/LanguageBhTest.php b/tests/phpunit/languages/LanguageBhTest.php
deleted file mode 100644 (file)
index 5af7adb..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * @author Santhosh Thottingal
- * @copyright Copyright © 2012, Santhosh Thottingal
- * @file
- */
-
-/** Tests for MediaWiki languages/LanguageBh.php */
-class LanguageBhTest extends LanguageClassesTestCase {
-
-       /** @dataProvider providePlural */
-       function testPlural( $result, $value ) {
-               $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
-       }
-
-       function providePlural() {
-               return array (
-                       array( 'one', 0 ),
-                       array( 'one', 1 ),
-                       array( 'other', 2 ),
-                       array( 'other', 200 ),
-               );
-       }
-
-}
diff --git a/tests/phpunit/languages/LanguageBhoTest.php b/tests/phpunit/languages/LanguageBhoTest.php
new file mode 100644 (file)
index 0000000..5bbd4fe
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * @author Santhosh Thottingal
+ * @copyright Copyright © 2012, Santhosh Thottingal
+ * @file
+ */
+
+/** Tests for MediaWiki languages/LanguageBho.php */
+class LanguageBhoTest extends LanguageClassesTestCase {
+
+       /** @dataProvider providePlural */
+       function testPlural( $result, $value ) {
+               $forms =  array( 'one', 'other' );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
+       }
+
+       function providePlural() {
+               return array (
+                       array( 'one', 0 ),
+                       array( 'one', 1 ),
+                       array( 'other', 2 ),
+                       array( 'other', 200 ),
+               );
+       }
+
+}
index fa66055..785c21c 100644 (file)
@@ -1142,5 +1142,18 @@ class LanguageTest extends LanguageClassesTestCase {
                        array( 1000000.0001, '1,000,000.0001' ),
                );
        }
+
+       function testListToText() {
+               $lang = $this->getLang();
+               $and = $lang->getMessageFromDB( 'and' );
+               $s = $lang->getMessageFromDB( 'word-separator' );
+               $c = $lang->getMessageFromDB( 'comma-separator' );
+
+               $this->assertEquals( '', $lang->listToText( array( ) ) );
+               $this->assertEquals( 'a', $lang->listToText( array( 'a' ) ) );
+               $this->assertEquals( "a{$and}{$s}b", $lang->listToText( array( 'a', 'b' ) ) );
+               $this->assertEquals( "a{$c}b{$and}{$s}c", $lang->listToText( array( 'a', 'b', 'c' ) ) );
+               $this->assertEquals( "a{$c}b{$c}c{$and}{$s}d", $lang->listToText( array( 'a', 'b', 'c', 'd' ) ) );
+       }
 }
 
index bce7bd7..0ec584f 100644 (file)
@@ -1,16 +1,27 @@
 ( function ( mw, $ ) {
 
+var mwLanguageCache = {}, oldGetOuterHtml;
+
 QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
        setup: function () {
                this.orgMwLangauge = mw.language;
                mw.language = $.extend( true, {}, this.orgMwLangauge );
+               oldGetOuterHtml = $.fn.getOuterHtml;
+               $.fn.getOuterHtml = function () {
+                       var $div = $( '<div>' ), html;
+                       $div.append( $( this ).eq( 0 ).clone() );
+                       html = $div.html();
+                       $div.empty();
+                       $div = undefined;
+                       return html;
+               };
        },
        teardown: function () {
                mw.language = this.orgMwLangauge;
+               $.fn.getOuterHtml = oldGetOuterHtml;
        }
 }) );
 
-var mwLanguageCache = {};
 function getMwLanguage( langCode, cb ) {
        if ( mwLanguageCache[langCode] !== undefined ) {
                mwLanguageCache[langCode].add( cb );
@@ -154,4 +165,168 @@ QUnit.test( 'Output matches PHP parser', mw.libs.phpParserData.tests.length, fun
        } );
 });
 
+QUnit.test( 'Links', 6, function ( assert ) {
+       var parser = mw.jqueryMsg.getMessageFunction(),
+               expectedListUsers,
+               expectedDisambiguationsText,
+               expectedMultipleBars,
+               expectedSpecialCharacters,
+               specialCharactersPageName;
+
+       /*
+        The below three are all identical to or based on real messages.  For disambiguations-text,
+        the bold was removed because it is not yet implemented.
+       */
+
+       mw.messages.set( 'statistics-users', '注册[[Special:ListUsers|用户]]' );
+
+       expectedListUsers = '注册' + $( '<a>' ).attr( {
+               title: 'Special:ListUsers',
+               href: mw.util.wikiGetlink( 'Special:ListUsers' )
+       } ).text( '用户' ).getOuterHtml();
+
+       assert.equal(
+               parser( 'statistics-users' ),
+               expectedListUsers,
+               'Piped wikilink'
+       );
+
+       expectedDisambiguationsText = 'The following pages contain at least one link to a disambiguation page.\nThey may have to link to a more appropriate page instead.<br>\nA page is treated as a disambiguation page if it uses a template that is linked from ' +
+               $( '<a>' ).attr( {
+                       title: 'MediaWiki:Disambiguationspage',
+                       href: mw.util.wikiGetlink( 'MediaWiki:Disambiguationspage' )
+               } ).text( 'MediaWiki:Disambiguationspage' ).getOuterHtml() + '.';
+       mw.messages.set( 'disambiguations-text', 'The following pages contain at least one link to a disambiguation page.\nThey may have to link to a more appropriate page instead.<br />\nA page is treated as a disambiguation page if it uses a template that is linked from [[MediaWiki:Disambiguationspage]].' );
+       assert.equal(
+               parser( 'disambiguations-text' ),
+               expectedDisambiguationsText,
+               'Wikilink without pipe'
+       );
+
+       mw.messages.set( 'version-entrypoints-index-php', '[https://www.mediawiki.org/wiki/Manual:index.php index.php]' );
+       assert.equal(
+               parser( 'version-entrypoints-index-php' ),
+               '<a href="https://www.mediawiki.org/wiki/Manual:index.php">index.php</a>',
+               'External link'
+       );
+
+       // Pipe trick is not supported currently, but should not parse as text either.
+       mw.messages.set( 'pipe-trick', '[[Tampa, Florida|]]' );
+       assert.equal(
+               parser( 'pipe-trick' ),
+               'pipe-trick: Parse error at position 0 in input: [[Tampa, Florida|]]',
+               'Pipe trick should return error string.'
+       );
+
+       expectedMultipleBars = $( '<a>' ).attr( {
+               title: 'Main Page',
+               href: mw.util.wikiGetlink( 'Main Page' )
+       } ).text( 'Main|Page' ).getOuterHtml();
+       mw.messages.set( 'multiple-bars', '[[Main Page|Main|Page]]' );
+       assert.equal(
+               parser( 'multiple-bars' ),
+               expectedMultipleBars,
+               'Bar in anchor'
+       );
+
+       specialCharactersPageName = '"Who" wants to be a millionaire & live on \'Exotic Island\'?';
+       expectedSpecialCharacters = $( '<a>' ).attr( {
+               title: specialCharactersPageName,
+               href: mw.util.wikiGetlink( specialCharactersPageName )
+       } ).text( specialCharactersPageName ).getOuterHtml();
+
+       mw.messages.set( 'special-characters', '[[' + specialCharactersPageName + ']]' );
+       assert.equal(
+               parser( 'special-characters' ),
+               expectedSpecialCharacters,
+               'Special characters'
+       );
+});
+
+QUnit.test( 'Int magic word', 4, function ( assert ) {
+       var parser = mw.jqueryMsg.getMessageFunction(),
+           newarticletextSource = 'You have followed a link to a page that does not exist yet. To create the page, start typing in the box below (see the [[{{Int:Helppage}}|help page]] for more info). If you are here by mistake, click your browser\'s back button.',
+               expectedNewarticletext;
+
+       mw.messages.set( 'helppage', 'Help:Contents' );
+
+       expectedNewarticletext = 'You have followed a link to a page that does not exist yet. To create the page, start typing in the box below (see the ' +
+               $( '<a>' ).attr( {
+                       title: mw.msg( 'helppage' ),
+                       href: mw.util.wikiGetlink( mw.msg( 'helppage' ) )
+               } ).text( 'help page' ).getOuterHtml() + ' for more info). If you are here by mistake, click your browser\'s back button.';
+
+       mw.messages.set( 'newarticletext', newarticletextSource );
+
+       assert.equal(
+               parser( 'newarticletext' ),
+               expectedNewarticletext,
+               'Link with nested message'
+       );
+
+       mw.messages.set( 'portal-url', 'Project:Community portal' );
+       mw.messages.set( 'see-portal-url', '{{Int:portal-url}} is an important community page.' );
+       assert.equal(
+               parser( 'see-portal-url' ),
+               'Project:Community portal is an important community page.',
+               'Nested message'
+       );
+
+       mw.messages.set( 'newarticletext-lowercase',
+               newarticletextSource.replace( 'Int:Helppage', 'int:helppage' ) );
+
+       assert.equal(
+               parser( 'newarticletext-lowercase' ),
+               expectedNewarticletext,
+               'Link with nested message, lowercase include'
+       );
+
+       mw.messages.set( 'uses-missing-int', '{{int:doesnt-exist}}' );
+
+       assert.equal(
+               parser( 'uses-missing-int' ),
+               '[doesnt-exist]',
+               'int: where nested message does not exist'
+       );
+});
+
+// Tests that getMessageFunction is used for messages with curly braces or square brackets,
+// but not otherwise.
+QUnit.test( 'Calls to mw.msg', 8, function ( assert ) {
+       // Should be
+       var map, oldGMF, outerCalled, innerCalled;
+
+       map = new mw.Map();
+       map.set( {
+               'curly-brace': '{{int:message}}',
+               'single-square-bracket': '[https://www.mediawiki.org/ MediaWiki]',
+               'double-square-bracket': '[[Some page]]',
+               'regular': 'Other message'
+       } );
+
+       oldGMF = mw.jqueryMsg.getMessageFunction;
+
+       mw.jqueryMsg.getMessageFunction = function() {
+               outerCalled = true;
+               return function() {
+                       innerCalled = true;
+               };
+       };
+
+       function verifyGetMessageFunction( key, shouldCall ) {
+               outerCalled = false;
+               innerCalled = false;
+               ( new mw.Message( map, key ) ).parser();
+               assert.strictEqual( outerCalled, shouldCall, 'Outer function called for ' + key );
+               assert.strictEqual( innerCalled, shouldCall, 'Inner function called for ' + key );
+       }
+
+       verifyGetMessageFunction( 'curly-brace', true );
+       verifyGetMessageFunction( 'single-square-bracket', true );
+       verifyGetMessageFunction( 'double-square-bracket', true );
+       verifyGetMessageFunction( 'regular', false );
+
+       mw.jqueryMsg.getMessageFunction = oldGMF;
+} );
+
 }( mediaWiki, jQuery ) );